diff --git a/.gitignore b/.gitignore index 0d5946e45a2e..480177bb10e7 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ /Services/UICore/artifacts/ctrl_security.php /Services/Component/artifacts/* /Services/EventHandling/artifacts/* +/Services/Object/artifacts/* # Directories /data diff --git a/Modules/Exercise/Submission/class.ilExerciseSubmissionTableGUI.php b/Modules/Exercise/Submission/class.ilExerciseSubmissionTableGUI.php index a30d43b6afcd..dde0d0a9dcec 100644 --- a/Modules/Exercise/Submission/class.ilExerciseSubmissionTableGUI.php +++ b/Modules/Exercise/Submission/class.ilExerciseSubmissionTableGUI.php @@ -129,6 +129,10 @@ public function __construct( $this->addMultiCommand("sendMembers", $this->lng->txt("exc_send_assignment")); + if ($this->mode == self::MODE_BY_ASSIGNMENT) { + $this->addMultiCommand("sendGradingNotification", $this->lng->txt("exc_send_grading_notification")); + } + if ($this->mode == self::MODE_BY_ASSIGNMENT && $this->ass && $this->ass->hasTeam()) { @@ -483,7 +487,9 @@ protected function parseRow( } } - if ($this->ass_type != null && $this->ass_type->supportsWebDirAccess() && $a_row['submission_obj']->hasSubmittedPrintVersion()) { + $ass_type = $this->ass_type ?: ilExAssignmentTypes::getInstance()->getById($a_ass->getType()); + + if ($ass_type->supportsWebDirAccess() && $a_row['submission_obj']->hasSubmittedPrintVersion()) { $url = $ilCtrl->getLinkTarget($this->getParentObject(), "openSubmissionView"); $items[] = $this->ui_factory->link()->standard($this->lng->txt("exc_tbl_action_open_submission"), $url)->withOpenInNewViewport(true); if ($a_row['submission_obj']->hasSubmittedPrintVersion()) { diff --git a/Modules/Exercise/classes/class.ilExerciseMailNotification.php b/Modules/Exercise/classes/class.ilExerciseMailNotification.php index 83de667ecfa7..b68c778a2695 100644 --- a/Modules/Exercise/classes/class.ilExerciseMailNotification.php +++ b/Modules/Exercise/classes/class.ilExerciseMailNotification.php @@ -24,6 +24,8 @@ class ilExerciseMailNotification extends ilMailNotification public const TYPE_FEEDBACK_FILE_ADDED = 20; public const TYPE_SUBMISSION_UPLOAD = 30; public const TYPE_FEEDBACK_TEXT_ADDED = 40; + public const TYPE_GRADING_DONE = 70; + protected \ILIAS\Exercise\InternalDomainService $domain; protected ilObjUser $user; protected int $ass_id; @@ -33,6 +35,7 @@ public function __construct() global $DIC; $this->user = $DIC->user(); + $this->domain = $DIC->exercise()->internal()->domain(); parent::__construct(); } @@ -46,6 +49,23 @@ public function getAssignmentId(): int return $this->ass_id; } + protected function addOpenSubmission(): void + { + $ass = new ilExAssignment($this->getAssignmentId()); + $types = ilExAssignmentTypes::getInstance(); + $type = $types->getById($ass->getType()); + if ($type->supportsWebDirAccess()) { + $submission = new ilExSubmission($ass, $this->user->getId()); + if ($submission->hasSubmittedPrintVersion()) { + $this->appendBody("\n\n"); + $this->appendBody(sprintf( + $this->getLanguageText('exc_submission_open_notification_link'), + $this->createPermanentLink(array(), "_" . $this->getAssignmentId() . "_" . $this->user->getId() . "_opensubmission") + )); + } + } + } + public function send(): bool { $ilUser = $this->user; @@ -141,6 +161,7 @@ public function send(): bool // $this->getLanguageText("exc_submission_no_new_files"))); //} } + $this->addOpenSubmission(); $this->appendBody("\n\n"); $this->appendBody(sprintf( @@ -189,6 +210,45 @@ public function send(): bool $this->sendMail(array($rcp)); } break; + + case self::TYPE_GRADING_DONE: + + foreach ($this->getRecipients() as $rcp) { + $this->initLanguage($rcp); + $this->initMail(); + $this->setSubject( + sprintf( + $this->getLanguageText('exc_msg_grading_done'), + $this->getObjectTitle(true) + ) + ); + $this->setBody(ilMail::getSalutation($rcp, $this->getLanguage())); + $this->appendBody("\n\n"); + $this->appendBody( + sprintf( + $this->getLanguageText('exc_msg_grading_done_body'), + $this->getObjectTitle(false) + ) + ); + $this->appendBody("\n"); + $this->appendBody( + $this->getLanguageText('obj_exc') . ": " . $this->getObjectTitle(true) + ); + $this->appendBody("\n"); + $this->appendBody( + $this->getLanguageText('exc_assignment') . ": " . + ilExAssignment::lookupTitle($this->getAssignmentId()) + ); + $this->appendBody("\n\n"); + $this->appendBody($this->getLanguageText('exc_mail_permanent_link')); + $this->appendBody("\n"); + $this->appendBody($this->createPermanentLink(array(), '_' . $this->getAssignmentId()) . + '#fb' . $this->getAssignmentId()); + $this->getMail()->appendInstallationSignature(true); + + $this->sendMail(array($rcp)); + } + break; } return true; } diff --git a/Modules/Exercise/classes/class.ilExerciseManagementGUI.php b/Modules/Exercise/classes/class.ilExerciseManagementGUI.php index ec276ee213b2..e0d50616d9b8 100644 --- a/Modules/Exercise/classes/class.ilExerciseManagementGUI.php +++ b/Modules/Exercise/classes/class.ilExerciseManagementGUI.php @@ -2320,4 +2320,31 @@ public function collectFeedbackDataFromPeer( return $data; } + + public function sendGradingNotificationObject(): void + { + + $ass_id = $this->request->getAssId(); + $selected_users = $this->request->getSelectedParticipants(); + + $graded_users = array_filter($selected_users, function ($user_id) { + return $this->assignment->getMemberStatus($user_id)->getStatus() !== "notgraded"; + }); + + if (count($graded_users) === 0) { + $this->tpl->setOnScreenMessage("failure", $this->lng->txt("exc_no_graded_mem_selected"), true); + $this->ctrl->redirect($this, $this->getViewBack()); + } + + $not = new ilExerciseMailNotification(); + $not->setType(ilExerciseMailNotification::TYPE_GRADING_DONE); + $not->setAssignmentId($ass_id); + $not->setObjId($this->exercise->getId()); + $not->setRefId($this->exercise->getRefId()); + $not->setRecipients($graded_users); + $not->send(); + $this->tpl->setOnScreenMessage("success", $this->lng->txt("exc_graded_mem_notified"), true); + $this->ctrl->redirect($this, $this->getViewBack()); + } + } diff --git a/Modules/Exercise/classes/class.ilObjExerciseGUI.php b/Modules/Exercise/classes/class.ilObjExerciseGUI.php index f233eb0d10e1..0b7b640407b6 100755 --- a/Modules/Exercise/classes/class.ilObjExerciseGUI.php +++ b/Modules/Exercise/classes/class.ilObjExerciseGUI.php @@ -855,6 +855,7 @@ public static function _goto( switch (end($parts)) { case "download": case "setdownload": + case "opensubmission": $action = $parts[3]; $member = $parts[2]; $ass_id = $parts[1]; @@ -897,6 +898,14 @@ public static function _goto( ); break; + case "opensubmission": + $ilCtrl->setParameterByClass("ilExerciseHandlerGUI", "member_id", $member); + $ilCtrl->redirectByClass( + array("ilExerciseHandlerGUI", "ilObjExerciseGUI", "ilExerciseManagementGUI"), + "openSubmissionView" + ); + break; + default: if (($parts[1] ?? "") != "") { $ilCtrl->setParameterByClass("ilExerciseHandlerGUI", "ass_id", $parts[1]); diff --git a/Modules/File/classes/ObjectProperties/FileObjectProperties.php b/Modules/File/classes/ObjectProperties/FileObjectProperties.php new file mode 100644 index 000000000000..1d29763feb61 --- /dev/null +++ b/Modules/File/classes/ObjectProperties/FileObjectProperties.php @@ -0,0 +1,45 @@ +providers === null) { + $this->providers = new FileObjectPropertyProviders(); + } + return $this->providers; + } + + public function preload(array $object_ids): void + { + return; + } +} diff --git a/Modules/File/classes/ObjectProperties/FileObjectPropertyProviders.php b/Modules/File/classes/ObjectProperties/FileObjectPropertyProviders.php new file mode 100644 index 000000000000..f6e5d717a882 --- /dev/null +++ b/Modules/File/classes/ObjectProperties/FileObjectPropertyProviders.php @@ -0,0 +1,102 @@ +crop_definition = new CropToSquare($this->persist, $this->max_size); + $this->extract_definition = new PagesToExtract($this->persist, $this->max_size, 1, true); + } + + public function getObjectTypeSpecificTileImage( + int $obj_id, + ImageFactory $factory, + StorageService $irss + ): ?Image { + if (($flavour_path = $this->getCardImageFallbackPath( + $obj_id, + $irss + )) !== '') { + return $factory->responsive($flavour_path, ''); + } + + return null; + } + + /** + * @description Can be used to take preview flavours as card images + */ + protected function getCardImageFallbackPath( + int $obj_id, + StorageService $irss + ): string { + $rid = $irss->manage()->find(ilObjFileAccess::getListGUIData($obj_id)['rid'] ?? ''); + if ($rid === null) { + return ''; + } + if ($irss->flavours()->possible($rid, $this->crop_definition)) { + $url = $irss->consume()->flavourUrls( + $irss->flavours()->get( + $rid, + $this->crop_definition + ) + )->getURLs(false)->current(); + if ($url !== null) { + return $url; + } + } + if ($irss->flavours()->possible($rid, $this->extract_definition)) { + $url = $irss->consume()->flavourUrls( + $irss->flavours()->get( + $rid, + $this->extract_definition + ) + )->getURLs(false)->current(); + if ($url !== null) { + return $url; + } + } + return ''; + } + + public function getObjectTypeSpecificCustomIcon( + int $obj_id, + IconFactory $icon_factory, + StorageService $irss + ): ?Icon { + return null; + } +} diff --git a/Modules/File/classes/class.ilObjFileListGUI.php b/Modules/File/classes/class.ilObjFileListGUI.php index f9963c225e9c..51ff4e56b0c8 100644 --- a/Modules/File/classes/class.ilObjFileListGUI.php +++ b/Modules/File/classes/class.ilObjFileListGUI.php @@ -16,7 +16,6 @@ * *********************************************************************/ -use ILIAS\FileUpload\MimeType; use ILIAS\File\Icon\IconDatabaseRepository; use ILIAS\ResourceStorage\Flavour\Definition\CropToSquare; use ILIAS\ResourceStorage\Flavour\Definition\FlavourDefinition; @@ -114,7 +113,6 @@ protected function getCardImageFallbackPath(int $obj_id, string $type): string return ''; } - /** * initialisation */ diff --git a/Modules/Portfolio/Exercise/class.ilPortfolioExerciseGUI.php b/Modules/Portfolio/Exercise/class.ilPortfolioExerciseGUI.php index 21e4730002a9..924adf2d493d 100644 --- a/Modules/Portfolio/Exercise/class.ilPortfolioExerciseGUI.php +++ b/Modules/Portfolio/Exercise/class.ilPortfolioExerciseGUI.php @@ -347,12 +347,15 @@ public function getActionButtons(): array $pe = new ilPortfolioExercise($this->user_id, $this->obj_id); $buttons = []; + $pages = ilPortfolioPage::getAllPortfolioPages($this->obj_id); foreach ($pe->getAssignmentsOfPortfolio() as $exercise) { $ass_id = $exercise["ass_id"]; $buttons[$ass_id] = []; - $submit_button = $this->getSubmitButton($ass_id); - if ($submit_button) { - $buttons[$ass_id][] = $submit_button; + if (count($pages) > 0) { + $submit_button = $this->getSubmitButton($ass_id); + if ($submit_button) { + $buttons[$ass_id][] = $submit_button; + } } $download_button = $this->getDownloadSubmissionButton($ass_id); if ($download_button) { diff --git a/Modules/Portfolio/Notification/SharedNotification.php b/Modules/Portfolio/Notification/SharedNotification.php new file mode 100644 index 000000000000..872310759c8f --- /dev/null +++ b/Modules/Portfolio/Notification/SharedNotification.php @@ -0,0 +1,112 @@ +user = $DIC->user(); + parent::__construct(); + } + + public function setSharedToObjectIds(array $a_val): void + { + $this->shared_to_obj_ids = $a_val; + } + + public function send(): bool + { + $rcp = $this->user->getId(); + + $this->initLanguage($rcp); + $this->initMail(); + $this->setSubject( + sprintf( + $this->getLanguageText('prtf_successfully_shared_prtf'), + $this->getObjectTitle(true) + ) + ); + $this->setBody(\ilMail::getSalutation($rcp, $this->getLanguage())); + $this->appendBody("\n\n"); + $this->appendBody( + sprintf( + $this->getLanguageText('prtf_successfully_shared_prtf_body'), + $this->getObjectTitle(false) + ) + ); + $this->appendObjectInformation(); + $this->appendBody("\n\n"); + $this->appendBody($this->getLanguageText('prtf_permanent_link')); + $this->appendBody("\n"); + $this->appendBody(\ilLink::_getStaticLink($this->getObjId(), "prtf")); + $this->getMail()->appendInstallationSignature(true); + + $this->sendMail(array($rcp)); + + return true; + } + + protected function appendObjectInformation(): void + { + $users = []; + foreach ($this->shared_to_obj_ids as $obj_id) { + $type = \ilObject::_lookupType($obj_id); + switch ($type) { + case "crs": + case "grp": + $this->appendBody("\n\n" . $this->getLanguage()->txt("obj_" . $type) . ": " . + \ilObject::_lookupTitle($obj_id)); + break; + case "usr": + $users[] = \ilUserUtil::getNamePresentation($obj_id); + break; + } + } + if (count($users) > 1) { + $this->appendBody("\n\n" . $this->getLanguage()->txt("users") . ": "); + $this->appendBody("\n" . implode("\n", $users)); + } + if (count($users) === 1) { + $this->appendBody("\n\n" . $this->getLanguage()->txt("user") . ": " . current($users)); + } + if (in_array(\ilWorkspaceAccessGUI::PERMISSION_REGISTERED, $this->shared_to_obj_ids, true)) { + $this->appendBody("\n\n" . $this->getLanguage()->txt("wsp_set_permission_registered")); + } + if (in_array(\ilWorkspaceAccessGUI::PERMISSION_ALL, $this->shared_to_obj_ids, true)) { + $this->appendBody("\n\n" . $this->getLanguage()->txt("wsp_set_permission_all")); + } + if (in_array(\ilWorkspaceAccessGUI::PERMISSION_ALL_PASSWORD, $this->shared_to_obj_ids, true)) { + $this->appendBody("\n\n" . $this->getLanguage()->txt("wsp_set_permission_all_password")); + } + } + + protected function initLanguage(int $a_usr_id): void + { + parent::initLanguage($a_usr_id); + $this->getLanguage()->loadLanguageModule('prtf'); + $this->getLanguage()->loadLanguageModule('wsp'); + } +} diff --git a/Modules/Portfolio/classes/class.StandardGUIRequest.php b/Modules/Portfolio/classes/class.StandardGUIRequest.php index fabae56dfdc1..e3733766699c 100644 --- a/Modules/Portfolio/classes/class.StandardGUIRequest.php +++ b/Modules/Portfolio/classes/class.StandardGUIRequest.php @@ -219,4 +219,9 @@ public function getExerciseRefId(): int { return $this->int("exc_id"); } + + public function getOwnerId(): int + { + return $this->int("owner_id"); + } } diff --git a/Modules/Portfolio/classes/class.ilObjPortfolioBaseGUI.php b/Modules/Portfolio/classes/class.ilObjPortfolioBaseGUI.php index ba190ea80577..6a93a8afa832 100644 --- a/Modules/Portfolio/classes/class.ilObjPortfolioBaseGUI.php +++ b/Modules/Portfolio/classes/class.ilObjPortfolioBaseGUI.php @@ -328,6 +328,7 @@ public function view(): void $this->tabs_gui->activateTab("pages"); + $pages = ilPortfolioPage::getAllPortfolioPages($this->getObject()->getId()); $this->gui->link( $this->lng->txt("prtf_add_page"), @@ -344,7 +345,7 @@ public function view(): void // #16571 $modal_html = ""; - if ($this->getType() === "prtf") { + if ($this->getType() === "prtf" && count($pages) > 0) { $ilToolbar->addSeparator(); $ui = $this->ui; diff --git a/Modules/Portfolio/classes/class.ilObjPortfolioGUI.php b/Modules/Portfolio/classes/class.ilObjPortfolioGUI.php index e78dbf6dfe92..804ead4a6e6c 100644 --- a/Modules/Portfolio/classes/class.ilObjPortfolioGUI.php +++ b/Modules/Portfolio/classes/class.ilObjPortfolioGUI.php @@ -303,7 +303,29 @@ public function create(): void if ($this->port_request->getCopyFormProcess() && isset($forms[self::CFORM_CLONE])) { $forms = array(self::CFORM_CLONE => $forms[self::CFORM_CLONE]); } - $tpl->setContent($this->getCreateInfoMessage() . $this->getCreationFormsHTML($forms)); + $tpl->setContent($this->getCreationFormsHTML($forms)); + } + } + + public function createFromTemplate(): void + { + $tpl = $this->tpl; + $ilErr = $this->error; + + $new_type = $this->port_request->getNewType(); + + // add new object to custom parent container + $this->ctrl->saveParameter($this, "crtptrefid"); + // use forced callback after object creation + $this->ctrl->saveParameter($this, "crtcb"); + + if (!$this->checkPermissionBool("create", "", $new_type)) { + $ilErr->raiseError($this->lng->txt("permission_denied"), $ilErr->MESSAGE); + } else { + $this->lng->loadLanguageModule($new_type); + $this->ctrl->setParameter($this, "new_type", $new_type); + $form = $this->initCreateFromTemplateForm(); + $tpl->setContent($form->getHTML()); } } @@ -371,98 +393,46 @@ protected function initCreateForm(string $new_type): ilPropertyFormGUI $ti->setRequired(true); $form->addItem($ti); - $main = new ilRadioGroupInputGUI($this->lng->txt("prtf_creation_mode"), "mode"); - $main->setValue("mode_scratch"); - $form->addItem($main); - - $opt_scratch = new ilRadioOption($this->lng->txt("prtf_creation_mode_scratch"), "mode_scratch"); - $main->addOption($opt_scratch); - - - // 1st page - - $type = new ilRadioGroupInputGUI($this->lng->txt("prtf_first_page_title"), "ptype"); - $type->setRequired(true); - $opt_scratch->addSubItem($type); + $form->setTitle($this->lng->txt("prtf_create_portfolio")); + $form->addCommandButton("save", $this->lng->txt("create")); + $form->addCommandButton("toRepository", $this->lng->txt("cancel")); - $type_page = new ilRadioOption($this->lng->txt("page"), "page"); - $type->addOption($type_page); + return $form; + } - // page type: page - $tf = new ilTextInputGUI($this->lng->txt("title"), "fpage"); - $tf->setMaxLength(128); - $tf->setSize(40); - $tf->setRequired(true); - $type_page->addSubItem($tf); - - // page templates - $templates = ilPageLayout::activeLayouts(ilPageLayout::MODULE_PORTFOLIO); - if ($templates) { - $options = array(0 => $this->lng->txt("none")); - foreach ($templates as $templ) { - $templ->readObject(); - $options[$templ->getId()] = $templ->getTitle(); - } + protected function initCreateFromTemplateForm(): ilPropertyFormGUI + { + $ilSetting = $this->settings; - $use_template = new ilSelectInputGUI($this->lng->txt("prtf_use_page_layout"), "tmpl"); - $use_template->setRequired(true); - $use_template->setOptions($options); - $type_page->addSubItem($use_template); - } + $this->ctrl->setParameter($this, "new_type", $this->getType()); - // page type: blog - if (!$ilSetting->get('disable_wsp_blogs')) { - $options = array(); - $tree = new ilWorkspaceTree($this->user_id); - $root = $tree->readRootId(); - if ($root) { - $root = $tree->getNodeData($root); - foreach ($tree->getSubTree($root) as $node) { - if ($node["type"] == "blog") { - $options[$node["obj_id"]] = $node["title"]; - } - } - asort($options); - } - if (count($options)) { - $type_blog = new ilRadioOption($this->lng->txt("obj_blog"), "blog"); - $type->addOption($type_blog); - - $obj = new ilSelectInputGUI($this->lng->txt("obj_blog"), "blog"); - $obj->setRequired(true); - $obj->setOptions(array("" => $this->lng->txt("please_select")) + $options); - $type_blog->addSubItem($obj); - } else { - $type->setValue("page"); - } - } + $form = new ilPropertyFormGUI(); + $form->setFormAction($this->ctrl->getFormAction($this)); + // title + $ti = new ilTextInputGUI($this->lng->txt("title"), "title"); + $ti->setSize(min(40, ilObject::TITLE_LENGTH)); + $ti->setMaxLength(ilObject::TITLE_LENGTH); + $ti->setRequired(true); + $form->addItem($ti); // portfolio templates - - $opt_tmpl = new ilRadioOption($this->lng->txt("prtf_creation_mode_template"), "mode_tmpl"); - $main->addOption($opt_tmpl); - $templates = ilObjPortfolioTemplate::getAvailablePortfolioTemplates(); - if (!count($templates)) { - $opt_tmpl->setDisabled(true); - } else { + if (count($templates)) { $tmpl = new ilSelectInputGUI($this->lng->txt("obj_prtt"), "prtt"); $tmpl->setRequired(true); $tmpl->setOptions(array("" => $this->lng->txt("please_select")) + $templates); - $opt_tmpl->addSubItem($tmpl); + $form->addItem($tmpl); // incoming from repository $template_id = $this->port_request->getPortfolioTemplateId(); if ($template_id > 0) { $tmpl->setValue($template_id); - $main->setValue("mode_tmpl"); } } - - $form->setTitle($this->lng->txt("prtf_create_portfolio")); - $form->addCommandButton("save", $this->lng->txt("create")); + $form->setTitle($this->lng->txt("prtf_add_portfolio_from_template")); + $form->addCommandButton("saveFromTemplate", $this->lng->txt("create")); $form->addCommandButton("toRepository", $this->lng->txt("cancel")); return $form; @@ -471,38 +441,27 @@ protected function initCreateForm(string $new_type): ilPropertyFormGUI public function save(): void { $form = $this->initCreateForm("prtf"); + parent::save(); + } + + public function saveFromTemplate(): void + { + $form = $this->initCreateFromTemplateForm(); // trigger portfolio template "import" process - if ($form->checkInput() && $form->getInput("mode") == "mode_tmpl") { + if ($form->checkInput()) { $this->createFromTemplateDirect( $form->getInput("title"), $this->port_request->getPortfolioTemplate() ); return; + } else { + $form->setValuesByPost(); + $this->tpl->setContent($form->getHTML()); } - - parent::save(); } protected function afterSave(ilObject $new_object): void { - // create 1st page / blog - $page = $this->getPageInstance(null, $new_object->getId()); - if ($this->port_request->getPageType() === "page") { - $page->setType(ilPortfolioPage::TYPE_PAGE); - $page->setTitle($this->port_request->getPageTitle()); - - // use template as basis - $layout_id = $this->port_request->getTemplateId(); - if ($layout_id) { - $layout_obj = new ilPageLayout($layout_id); - $page->setXMLContent($layout_obj->getXMLContent()); - } - } else { - $page->setType(ilPortfolioPage::TYPE_BLOG); - $page->setTitle($this->port_request->getBlogTitle()); - } - $page->create(); - $this->tpl->setOnScreenMessage('success', $this->lng->txt("prtf_portfolio_created"), true); $this->ctrl->setParameter($this, "prt_id", $new_object->getId()); $this->ctrl->redirect($this, "view"); @@ -535,14 +494,6 @@ protected function initEditForm(): ilPropertyFormGUI $ti->setValue($this->object->getTitle()); $form->addItem($ti); - /* description - $ta = new ilTextAreaInputGUI($this->lng->txt("description"), "desc"); - $ta->setCols(40); - $ta->setRows(2); - $ta->setValue($this->object->getDescription()); - $form->addItem($ta); - */ - // :TODO: online $online = new ilCheckboxInputGUI($this->lng->txt("online"), "online"); $online->setChecked($this->object->isOnline()); diff --git a/Modules/Portfolio/classes/class.ilPortfolioAccessHandler.php b/Modules/Portfolio/classes/class.ilPortfolioAccessHandler.php index 631268d49277..c3029f41ec81 100644 --- a/Modules/Portfolio/classes/class.ilPortfolioAccessHandler.php +++ b/Modules/Portfolio/classes/class.ilPortfolioAccessHandler.php @@ -421,7 +421,6 @@ public function findSharedObjects( $ilDB = $this->db; $ilUser = $this->user; $obj_ids = []; - if (!$a_filter["acl_type"]) { $obj_ids = self::getPossibleSharedTargets(); } else { @@ -489,7 +488,7 @@ public function findSharedObjects( $sql .= " AND acl.tstamp > " . $ilDB->quote($dt->get(IL_CAL_UNIX), "integer"); } - if ($a_filter["crsgrp"]) { + if ($a_filter["crsgrp"] ?? false) { $part = ilParticipants::getInstanceByObjId($a_filter['crsgrp']); $part = $part->getParticipants(); if (!count($part)) { @@ -622,4 +621,31 @@ public function editPortfolios(): bool { return (bool) $this->settings->get('user_portfolios'); } + + public function addMissingPermissionForObjects(int $node_id, array $objects): bool + { + $existing = $this->getPermissions($node_id); + $added_obj_ids = []; + foreach ($objects as $object_id) { + if (!in_array($object_id, $existing)) { + $added_obj_ids[] = $object_id; + $this->addPermission($node_id, $object_id); + $added = true; + } + } + $this->sendSharedNotification($node_id, $added_obj_ids); + return (count($added_obj_ids) > 0); + } + + protected function sendSharedNotification(int $node_id, array $object_ids): void + { + if (count($object_ids) === 0) { + return; + } + $not = new \ILIAS\Portfolio\Notification\SharedNotification(); + $not->setObjId($node_id); + $not->setSharedToObjectIds($object_ids); + //$not->setRecipients($user_ids); + $not->send(); + } } diff --git a/Modules/Portfolio/classes/class.ilPortfolioRepositoryGUI.php b/Modules/Portfolio/classes/class.ilPortfolioRepositoryGUI.php index 865593e462fb..3c884ecd431e 100644 --- a/Modules/Portfolio/classes/class.ilPortfolioRepositoryGUI.php +++ b/Modules/Portfolio/classes/class.ilPortfolioRepositoryGUI.php @@ -185,6 +185,14 @@ protected function show(): void $ilCtrl->getLinkTargetByClass("ilObjPortfolioGUI", "create") )->emphasised()->toToolbar(true); + $templates = ilObjPortfolioTemplate::getAvailablePortfolioTemplates(); + if (count($templates) > 0) { + $this->gui->link( + $this->lng->txt("prtf_add_portfolio_from_template"), + $ilCtrl->getLinkTargetByClass("ilObjPortfolioGUI", "createFromTemplate") + )->emphasised()->toToolbar(true); + } + $portfolio_list = $this->getPortfolioList(); $tpl->setContent($portfolio_list); @@ -302,8 +310,10 @@ protected function getPortfolioList(): string // ... handed in // exercise portfolio? $exercises = ilPortfolioExerciseGUI::checkExercise($this->user_id, $port["id"], false, true); + $visible_to_tutor = false; foreach ($exercises as $exinfo) { if ($exinfo["submitted"]) { + $visible_to_tutor = true; $props[$exinfo["ass_title"]] = str_replace("$1", $exinfo["submitted_date"], $lng->txt("prtf_submission_on")); } else { @@ -311,6 +321,9 @@ protected function getPortfolioList(): string //$props[$exinfo["ass_title"]] = "" . $lng->txt("prtf_no_submission") . ""; } } + if ($visible_to_tutor) { + $props[$lng->txt("prtf_visible_for_tutor")] = $lng->txt("yes"); + } $items[] = $f->item()->standard($f->button()->shy($port["title"], $preview_action)) @@ -507,7 +520,7 @@ protected function setDefaultGlobal(): void $prtf_id = $this->port_request->getPortfolioId(); if ($prtf_id && $this->checkAccess("write")) { - $this->access_handler->addPermission($prtf_id, ilWorkspaceAccessGUI::PERMISSION_ALL); + $this->access_handler->addMissingPermissionForObjects($prtf_id, ilWorkspaceAccessGUI::PERMISSION_ALL); $this->setDefault($prtf_id); } $ilCtrl->redirect($this, "show"); @@ -519,7 +532,7 @@ protected function setDefaultRegistered(): void $prtf_id = $this->port_request->getPortfolioId(); if ($prtf_id && $this->checkAccess("write")) { - $this->access_handler->addPermission($prtf_id, ilWorkspaceAccessGUI::PERMISSION_REGISTERED); + $this->access_handler->addMissingPermissionForObjects($prtf_id, ilWorkspaceAccessGUI::PERMISSION_REGISTERED); $this->setDefault($prtf_id); } $ilCtrl->redirect($this, "show"); @@ -571,9 +584,7 @@ protected function showOther( ): void { $tpl = $this->tpl; $ilTabs = $this->tabs; - $ilTabs->activateTab("otpf"); - $tbl = new ilWorkspaceShareTableGUI($this, "showOther", $this->getWorkspaceAccess(), null, $a_load_data); $tpl->setContent($tbl->getHTML()); } @@ -593,6 +604,35 @@ protected function resetShareFilter(): void $tbl->resetOffset(); $tbl->resetFilter(); - $this->showOther(); + $this->showOther(false); } + + public function redirectSendMailToSharer(): void + { + $owner_id = $this->port_request->getOwnerId(); + $prt_id = $this->port_request->getPortfolioId(); + + if ($owner_id > 0) { + $login = ilObjUser::_lookupLogin($owner_id); + + // #16530 - see ilObjCourseGUI::createMailSignature + $sig = chr(13) . chr(10) . chr(13) . chr(10); + $sig .= $this->lng->txt('prtf_permanent_link'); + $sig .= chr(13) . chr(10) . chr(13) . chr(10); + $sig .= ilLink::_getStaticLink($prt_id, "prtf", true); + $sig = rawurlencode(base64_encode($sig)); + + ilUtil::redirect(ilMailFormCall::getRedirectTarget( + $this, + "showotherFilter", + array(), + array( + 'type' => 'new', + 'rcp_to' => $login, + ilMailFormCall::SIGNATURE_KEY => $sig + ) + )); + } + } + } diff --git a/Modules/ScormAicc/Editing/classes/class.ilSAHSEditGUI.php b/Modules/ScormAicc/Editing/classes/class.ilSAHSEditGUI.php index f7036f634794..2c9bbf0b1eca 100755 --- a/Modules/ScormAicc/Editing/classes/class.ilSAHSEditGUI.php +++ b/Modules/ScormAicc/Editing/classes/class.ilSAHSEditGUI.php @@ -38,10 +38,7 @@ class ilSAHSEditGUI implements ilCtrlBaseClassInterface protected ilCtrl $ctrl; protected int $refId; - /** - * @var ilObjSCORMLearningModuleGUI|ilObjSCORM2004LearningModuleGUI - */ - protected $slm_gui; + protected ilObjSCORMLearningModuleGUI|ilObjSCORM2004LearningModuleGUI $slm_gui; /** * @throws ilCtrlException diff --git a/Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php b/Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php index 7be6f5491eb4..418a65749e82 100755 --- a/Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php +++ b/Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php @@ -251,7 +251,6 @@ public static function _insertTrackData(int $a_sahs_id, string $a_lval, string $ //erase later see ilSCORM2004StoreData /** * like necessary because of Oracle - * @return mixed[] */ public static function _getCompleted(object $scorm_item_id, int $a_obj_id): array { @@ -395,7 +394,6 @@ public static function lookupLastAccessTimes(int $a_obj_id): array /** * Get all tracked users - * @return mixed[] */ public static function _getTrackedUsers(int $a_obj_id): array { @@ -420,7 +418,6 @@ public static function _getTrackedUsers(int $a_obj_id): array /** * like necessary because of Oracle - * @return mixed[] */ public static function _getFailed(object $scorm_item_id, int $a_obj_id): array { @@ -493,7 +490,7 @@ public static function _getCountCompletedPerUser(array $a_scorm_item_ids, int $a //not correct because of assets! /** * Get info about - * @return array + * @return array */ public static function _getProgressInfo(array $sco_item_ids, int $a_obj_id): array { @@ -536,10 +533,9 @@ public static function _getProgressInfo(array $sco_item_ids, int $a_obj_id): arr } /** - * @param array|int $scorm_item_id * @return array */ - public static function _getInProgress($scorm_item_id, int $a_obj_id, ?array $a_blocked_user_ids = null): array + public static function _getInProgress(array|int $scorm_item_id, int $a_obj_id, ?array $a_blocked_user_ids = null): array { global $DIC; $ilDB = $DIC->database(); diff --git a/Modules/ScormAicc/classes/SCORM/class.ilSCORMExplorer.php b/Modules/ScormAicc/classes/SCORM/class.ilSCORMExplorer.php index fea0d832a77d..08e1e4d1be3a 100755 --- a/Modules/ScormAicc/classes/SCORM/class.ilSCORMExplorer.php +++ b/Modules/ScormAicc/classes/SCORM/class.ilSCORMExplorer.php @@ -92,9 +92,8 @@ public function setOutput($a_parent_id, int $a_depth = 1, int $a_obj_id = 0, $a_ } /** - * recursive creating of outputs - * @return mixed[] - */ + * recursive creating of outputs + */ protected function createOutputArray(int $a_parent_id, array $options = array()): array { global $ilErr; diff --git a/Modules/ScormAicc/classes/SCORM/class.ilSCORMObject.php b/Modules/ScormAicc/classes/SCORM/class.ilSCORMObject.php index 2f45ee952d48..9894261653dd 100755 --- a/Modules/ScormAicc/classes/SCORM/class.ilSCORMObject.php +++ b/Modules/ScormAicc/classes/SCORM/class.ilSCORMObject.php @@ -180,10 +180,7 @@ public function delete(): void ); } - /** - * @return ilSCORMItem|ilSCORMManifest|ilSCORMOrganization|ilSCORMOrganizations|ilSCORMResource|ilSCORMResources - */ - public static function &_getInstance(int $a_id, int $a_slm_id) + public static function &_getInstance(int $a_id, int $a_slm_id): ilSCORMItem|ilSCORMManifest|ilSCORMOrganization|ilSCORMOrganizations|ilSCORMResource|ilSCORMResources { global $DIC; $ilDB = $DIC->database(); diff --git a/Modules/ScormAicc/classes/SCORM/class.ilSCORMObjectGUI.php b/Modules/ScormAicc/classes/SCORM/class.ilSCORMObjectGUI.php index 4c48fde53807..85f952c7b593 100755 --- a/Modules/ScormAicc/classes/SCORM/class.ilSCORMObjectGUI.php +++ b/Modules/ScormAicc/classes/SCORM/class.ilSCORMObjectGUI.php @@ -27,10 +27,7 @@ */ class ilSCORMObjectGUI { - /** - * @var ilSCORMManifest|ilSCORMItem|ilSCORMOrganization|ilSCORMOrganizations - */ - public $sc_object; + public ilSCORMManifest|ilSCORMItem|ilSCORMOrganization|ilSCORMOrganizations $sc_object; public ilGlobalTemplate $tpl; public ilLanguage $lng; @@ -47,10 +44,7 @@ public function __construct(int $a_id = 0) $this->lng = $lng; } - /** - * @return ilSCORMItemGUI|ilSCORMManifestGUI|ilSCORMOrganizationGUI|ilSCORMOrganizationsGUI|ilSCORMResourceGUI|ilSCORMResourcesGUI - */ - public function &getInstance(int $a_id) + public function &getInstance(int $a_id): ilSCORMItemGUI|ilSCORMManifestGUI|ilSCORMOrganizationGUI|ilSCORMOrganizationsGUI|ilSCORMResourceGUI|ilSCORMResourcesGUI { $object = new ilSCORMObject($a_id); switch ($object->getType()) { diff --git a/Modules/ScormAicc/classes/SCORM/class.ilSCORMPackageParser.php b/Modules/ScormAicc/classes/SCORM/class.ilSCORMPackageParser.php index ee7a89c08977..203772ddbc47 100755 --- a/Modules/ScormAicc/classes/SCORM/class.ilSCORMPackageParser.php +++ b/Modules/ScormAicc/classes/SCORM/class.ilSCORMPackageParser.php @@ -165,7 +165,7 @@ public function getCurrentParent(): int * @param array $a_attribs * @return void */ - public function handlerBeginTag($a_xml_parser, string $a_name, array $a_attribs): void + public function handlerBeginTag(XMLParser $a_xml_parser, string $a_name, array $a_attribs): void { //echo "
handlerBeginTag:".$a_name; switch ($a_name) { @@ -289,7 +289,7 @@ public function handlerBeginTag($a_xml_parser, string $a_name, array $a_attribs) * @param string $a_name * @return void */ - public function handlerEndTag($a_xml_parser, string $a_name): void + public function handlerEndTag(XMLParser $a_xml_parser, string $a_name): void { //echo "
handlerEndTag:".$a_name; @@ -326,7 +326,7 @@ public function handlerEndTag($a_xml_parser, string $a_name): void * @param string|null $a_data * @return void */ - public function handlerCharacterData($a_xml_parser, ?string $a_data): void + public function handlerCharacterData(XMLParser $a_xml_parser, ?string $a_data): void { //echo "
handlerCharacterData:".$this->getCurrentElement().":".$a_data; // DELETE WHITESPACES AND NEWLINES OF CHARACTER DATA diff --git a/Modules/ScormAicc/classes/SCORM/class.ilSCORMPresentationGUI.php b/Modules/ScormAicc/classes/SCORM/class.ilSCORMPresentationGUI.php index d8a56ba6d794..a210963317cb 100755 --- a/Modules/ScormAicc/classes/SCORM/class.ilSCORMPresentationGUI.php +++ b/Modules/ScormAicc/classes/SCORM/class.ilSCORMPresentationGUI.php @@ -510,10 +510,8 @@ public function downloadCertificate(): void $certificateLogger = $DIC->logger()->root(); $ilUserCertificateRepository = new ilUserCertificateRepository(); - $pdfGenerator = new ilPdfGenerator($ilUserCertificateRepository, $certificateLogger); - + $pdfGenerator = new ilPdfGenerator($ilUserCertificateRepository); $pdfAction = new ilCertificatePdfAction( - $certificateLogger, $pdfGenerator, new ilCertificateUtilHelper(), $this->lng->txt('error_creating_certificate_pdf') diff --git a/Modules/ScormAicc/classes/SCORM/class.ilSCORMResource.php b/Modules/ScormAicc/classes/SCORM/class.ilSCORMResource.php index 0a9fc6663024..ccc5e2a5951d 100755 --- a/Modules/ScormAicc/classes/SCORM/class.ilSCORMResource.php +++ b/Modules/ScormAicc/classes/SCORM/class.ilSCORMResource.php @@ -102,9 +102,6 @@ public function addFile(ilSCORMResourceFile $a_file_obj): void $this->files[] = &$a_file_obj; } - /** - * @return mixed[] - */ public function &getFiles(): array { return $this->files; @@ -115,9 +112,6 @@ public function addDependency(ilSCORMResourceDependency $a_dependency): void $this->dependencies[] = &$a_dependency; } - /** - * @return mixed[] - */ public function &getDependencies(): array { return $this->dependencies; diff --git a/Modules/ScormAicc/classes/Verification/class.ilObjSCORMVerificationGUI.php b/Modules/ScormAicc/classes/Verification/class.ilObjSCORMVerificationGUI.php index 6b1153ce153a..3a223008db77 100644 --- a/Modules/ScormAicc/classes/Verification/class.ilObjSCORMVerificationGUI.php +++ b/Modules/ScormAicc/classes/Verification/class.ilObjSCORMVerificationGUI.php @@ -172,11 +172,7 @@ public static function _goto(string $a_target): void $DIC->ctrl->redirectByClass(ilSharedResourceGUI::class); } - /** - * @param mixed $default - * @return mixed - */ - protected function getRequestValue(string $key, $default = null) + protected function getRequestValue(string $key, mixed $default = null): mixed { if (isset($this->request->getQueryParams()[$key])) { return $this->request->getQueryParams()[$key]; diff --git a/Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php b/Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php index 12b2241bdd9f..62c946d54f4a 100755 --- a/Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php +++ b/Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php @@ -70,13 +70,17 @@ class ilObjSAHSLearningModule extends ilObject protected string $api_adapter = 'API'; + protected \ILIAS\DI\UIServices $ui; + /** * Constructor - * @param integer reference_id or object_id - * @param boolean treat the id as reference_id (true) or object_id (false) + * @param integer $a_id reference_id or object_id + * @param boolean $a_call_by_reference treat the id as reference_id (true) or object_id (false) */ public function __construct(int $a_id = 0, bool $a_call_by_reference = true) { + global $DIC; + $this->ui = $DIC->ui(); $this->type = "sahs"; parent::__construct($a_id, $a_call_by_reference); } @@ -1350,7 +1354,7 @@ public function getApiStudentName(): string /** * get button for view */ - public function getViewButton(): ilLinkButton + public function getViewButton(): \ILIAS\UI\Component\Button\Primary { $setUrl = "ilias.php?baseClass=ilSAHSPresentationGUI&ref_id=" . $this->getRefID(); // $setUrl = $this->getLinkTargetByClass("ilsahspresentationgui", "")."&ref_id=".$this->getRefID(); @@ -1365,11 +1369,17 @@ public function getViewButton(): ilLinkButton $setUrl = "javascript:void(0); onclick=startSAHS('" . $setUrl . "','ilContObj" . $this->getId() . "'," . $om . "," . $width . "," . $height . ");"; $setTarget = ""; } - $button = ilLinkButton::getInstance(); - $button->setCaption("view"); - $button->setPrimary(true); - $button->setUrl($setUrl); - $button->setTarget($setTarget); + //todo $setTarget ? + $button = $this->ui->factory()->button()->primary( + $this->lng->txt("view"), + $setUrl + ); + + // $button = ilLinkButton::getInstance(); + // $button->setCaption("view"); + // $button->setPrimary(true); + // $button->setUrl($setUrl); + // $button->setTarget($setTarget); return $button; } } diff --git a/Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleAccess.php b/Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleAccess.php index d2ec0597fc70..a3844509b21a 100644 --- a/Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleAccess.php +++ b/Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleAccess.php @@ -100,7 +100,7 @@ public static function _checkGoto(string $target): bool /** * Returns the number of bytes used on the harddisk by the learning module * with the specified object id. - * @param int object id of a file object. + * @param int $a_id object id of a file object. */ public static function _lookupDiskUsage(int $a_id): int { diff --git a/Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleGUI.php b/Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleGUI.php index a44fe1e83684..11e5b5355d9b 100755 --- a/Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleGUI.php +++ b/Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleGUI.php @@ -184,7 +184,7 @@ protected function infoScreen(): void protected function infoScreenForward(): void { if (!$this->checkPermissionBool("visible") && !$this->checkPermissionBool("read")) { - $this->error->raiseError($this->lng->txt("msg_no_perm_read")); + $this->error->raiseError($this->lng->txt("msg_no_perm_read"), $this->error->MESSAGE); } $info = new ilInfoScreenGUI($this); @@ -866,10 +866,9 @@ public function setSettingsSubTabs(): void } /** - * @return mixed * @throws ilCtrlException */ - public function export() + public function export(): mixed { $GLOBALS['DIC']->tabs()->setTabActive('export'); $exp_gui = new ilExportGUI($this); diff --git a/Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php b/Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php index ca3f5b5e2a0d..08ccaaac4cfa 100755 --- a/Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php +++ b/Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php @@ -30,8 +30,8 @@ class ilObjSCORMLearningModule extends ilObjSAHSLearningModule { /** * Constructor - * @param integer reference_id or object_id - * @param boolean treat the id as reference_id (true) or object_id (false) + * @param integer $a_id reference_id or object_id + * @param boolean $a_call_by_reference treat the id as reference_id (true) or object_id (false) */ public function __construct(int $a_id = 0, bool $a_call_by_reference = true) { diff --git a/Modules/ScormAicc/classes/class.ilSCORMTrackingItems.php b/Modules/ScormAicc/classes/class.ilSCORMTrackingItems.php index 6a5c411d5822..e34d92372ff4 100644 --- a/Modules/ScormAicc/classes/class.ilSCORMTrackingItems.php +++ b/Modules/ScormAicc/classes/class.ilSCORMTrackingItems.php @@ -240,9 +240,6 @@ public function scoTitlesForExportSelected(int $obj_id): array return $scoTitles; } - /** - * @return mixed[] - */ public function markedLearningStatusForExportSelected(array $a_scos, int $obj_id): array { global $DIC; @@ -378,9 +375,6 @@ public function exportSelectedCore( return $returnData; } - /** - * @return mixed[] - */ public function getScormTrackingValue(int $obj_id, array $a_user, array $a_sco, array $a_empty, string $lvalue): array { global $DIC; @@ -926,10 +920,7 @@ public function exportSelectedSuccessRows( return $returnData; } - /** - * @return float|string - */ - public function SCORMTimeToSeconds(string $a_time) + public function SCORMTimeToSeconds(string $a_time): float|string { if ($a_time == "") { return ""; diff --git a/Modules/ScormAicc/classes/class.ilSCORMTrackingItemsTableGUI.php b/Modules/ScormAicc/classes/class.ilSCORMTrackingItemsTableGUI.php index f77f14a8f219..53bd532a6dda 100644 --- a/Modules/ScormAicc/classes/class.ilSCORMTrackingItemsTableGUI.php +++ b/Modules/ScormAicc/classes/class.ilSCORMTrackingItemsTableGUI.php @@ -36,8 +36,6 @@ class ilSCORMTrackingItemsTableGUI extends ilTable2GUI /** * @throws ilCtrlException - * @param mixed[] $a_userSelected - * @param mixed[] $a_scosSelected */ public function __construct(int $a_obj_id, ?object $a_parent_obj, string $a_parent_cmd, array $a_userSelected, array $a_scosSelected, string $a_report) { @@ -199,11 +197,7 @@ public function getItems(): void $this->setData($tr_data); } - /** - * @param string|float|int|null $value - * @return string|float|int|null - */ - protected function parseValue(string $id, $value, string $type) + protected function parseValue(string $id, string|float|int|null $value, string $type): string|float|int|null { global $DIC; $lng = $DIC->language(); diff --git a/Modules/ScormAicc/classes/class.ilScormAiccDataSet.php b/Modules/ScormAicc/classes/class.ilScormAiccDataSet.php index 98ec59bbea53..42dd8cafa2df 100755 --- a/Modules/ScormAicc/classes/class.ilScormAiccDataSet.php +++ b/Modules/ScormAicc/classes/class.ilScormAiccDataSet.php @@ -76,9 +76,6 @@ public function __construct() } } - /** - * @return mixed[] - */ protected function getDependencies( string $a_entity, string $a_version, diff --git a/Modules/ScormAicc/module.xml b/Modules/ScormAicc/module.xml index cc42170a9ee8..2d8bf3459eac 100644 --- a/Modules/ScormAicc/module.xml +++ b/Modules/ScormAicc/module.xml @@ -1,4 +1,4 @@ - + diff --git a/Modules/Test/classes/Results/class.ilQuestionResult.php b/Modules/Test/classes/Results/class.ilQuestionResult.php new file mode 100644 index 000000000000..1de0a45ad2ad --- /dev/null +++ b/Modules/Test/classes/Results/class.ilQuestionResult.php @@ -0,0 +1,104 @@ +id; + } + public function getType(): string + { + return $this->type; + } + public function getTitle(): string + { + return $this->title; + } + public function getUserAnswer(): string + { + return $this->usr_solution; + } + public function getBestSolution(): string + { + return $this->best_solution; + } + public function getQuestionScore(): float + { + return $this->question_score; + } + public function getUserScore(): float + { + return $this->usr_score; + } + public function getUserScorePercent(): float + { + return 100 / $this->getQuestionScore() * $this->getUserScore(); + } + public function getCorrect(): int + { + if ($this->getUserScore() === 0.0) { + return self::CORRECT_NONE; + } + if ($this->getUserScore() === $this->getQuestionScore()) { + return self::CORRECT_FULL; + } + return self::CORRECT_PARTIAL; + } + public function getFeedback(): string + { + return $this->feedback; + } + public function isWorkedThrough(): bool + { + return $this->workedthrough; + } + public function isAnswered(): bool + { + return $this->answered; + } + public function getContentForRecapitulation(): ?string + { + return $this->content_for_recapitulation; + } +} diff --git a/Modules/Test/classes/Results/class.ilTestPassResult.php b/Modules/Test/classes/Results/class.ilTestPassResult.php new file mode 100644 index 000000000000..8183a25d9168 --- /dev/null +++ b/Modules/Test/classes/Results/class.ilTestPassResult.php @@ -0,0 +1,60 @@ +settings; + } + + public function getActiveId(): int + { + return $this->active_id; + } + + public function getPass(): int + { + return $this->pass_id; + } + + /** + * @return ilQuestionResult[]; + */ + public function getQuestionResults(): array + { + return $this->question_results; + } +} diff --git a/Modules/Test/classes/Results/class.ilTestPassResultsSettings.php b/Modules/Test/classes/Results/class.ilTestPassResultsSettings.php new file mode 100644 index 000000000000..ee38a967a432 --- /dev/null +++ b/Modules/Test/classes/Results/class.ilTestPassResultsSettings.php @@ -0,0 +1,66 @@ +show_hidden_questions; + } + + public function getShowOptionalQuestions(): bool + { + return $this->show_optional_questions; + } + + public function getShowBestSolution(): bool + { + return $this->show_best_solution; + } + + public function getShowFeedback(): bool + { + return $this->show_feedback; + } + + public function getQuestionTextOnly(): bool + { + return $this->question_text_only; + } + + public function getShowRecapitulation(): bool + { + return $this->show_recapitulation; + } +} diff --git a/Modules/Test/classes/Results/class.ilTestPassResultsTable.php b/Modules/Test/classes/Results/class.ilTestPassResultsTable.php new file mode 100644 index 000000000000..589e1ad03225 --- /dev/null +++ b/Modules/Test/classes/Results/class.ilTestPassResultsTable.php @@ -0,0 +1,246 @@ +getViewControlsParameter(); + $results = $this->applyControls($mode, $sortation, $test_results->getQuestionResults()); + $target = new URLBuilder($data_factory->uri($http->request()->getUri()->__toString())); + + $this->table = $ui_factory->table()->presentation( + $title, + $this->getViewControls($ui_factory, $lng, $target, $mode, $sortation), + $this->getMapping() + ) + ->withEnvironment([ + self::ENV => $test_results->getSettings(), + self::LNG => $lng + ]) + ->withData($results); + } + + public function render(): string + { + return $this->ui_renderer->render($this->table); + } + + /** + * @param ilQuestionResult[] $question_results + */ + protected function applyControls( + string $mode, + string $sortation, + array $question_results + ) { + switch($mode) { + case self::MODE_OPT_CORRECT: + $filter = static fn($qr) => $qr->getCorrect() === ilQuestionResult::CORRECT_FULL; + break; + case self::MODE_OPT_INCORRECT: + $filter = static fn($qr) => $qr->getCorrect() !== ilQuestionResult::CORRECT_FULL; + break; + case self::MODE_OPT_ALL: + default: + $filter = static fn($qr) => true; + } + $question_results = array_filter($question_results, $filter); + + if ($sortation === self::SORT_OPT_POSSIBLESCORE) { + usort( + $question_results, + static fn(ilQuestionResult $a, ilQuestionResult $b) => $a->getQuestionScore() <=> $b->getQuestionScore() + ); + $question_results = array_reverse($question_results); + } + return $question_results; + } + + protected function getViewControlsParameter(): array + { + $request = $this->http->wrapper()->query(); + $pre = implode(URLBuilder::SEPARATOR, self::URL_NAMESPACE) . URLBuilder::SEPARATOR; + + $mode = $request->has($pre . self::PARAM_MODE) ? + $request->retrieve($pre . self::PARAM_MODE, $this->refinery->kindlyTo()->string()) : self::MODE_OPT_ALL; + + $sortation = $request->has($pre . self::PARAM_SORT) ? + $request->retrieve($pre . self::PARAM_SORT, $this->refinery->kindlyTo()->string()) : self::SORT_OPT_ORDEROFAPPEARANCE; + + return [$mode, $sortation]; + } + + /** + * return \ILIAS\UI\ViewControl\ViewControl[] + */ + protected function getViewControls( + UIFactory $ui_factory, + ilLanguage $lng, + URLBuilder $target, + string $mode, + string $sortation + ): array { + $builder = $target->acquireParameter(self::URL_NAMESPACE, self::PARAM_MODE); + [$target, $token] = $builder; + + $modes = [ + $lng->txt('resulttable_all') => $target->withParameter($token, self::MODE_OPT_ALL)->buildURI()->__toString(), + $lng->txt('resulttable_correct') => $target->withParameter($token, self::MODE_OPT_CORRECT)->buildURI()->__toString(), + $lng->txt('resulttable_incorrect') => $target->withParameter($token, self::MODE_OPT_INCORRECT)->buildURI()->__toString(), + ]; + $check = [self::MODE_OPT_ALL, self::MODE_OPT_CORRECT, self::MODE_OPT_INCORRECT]; + $active = array_search($mode, $check); + + $vc_mode = $ui_factory->viewControl()->mode($modes, $lng->txt('ta_resulttable_vc_mode_aria')) + ->withActive(array_keys($modes)[$active]); + + $options = [ + self::SORT_OPT_ORDEROFAPPEARANCE => $lng->txt('resulttable_vc_sort_iooa'), + self::SORT_OPT_POSSIBLESCORE => $lng->txt('resulttable_vc_sort_posscore') + ]; + + $pre = implode(URLBuilder::SEPARATOR, self::URL_NAMESPACE) . URLBuilder::SEPARATOR; + $vc_sort = $ui_factory->viewControl()->sortation($options)->withTargetURL( + $target->buildURI()->__toString(), + $pre . self::PARAM_SORT + ) + ->withLabel($options[$sortation]); + + return [ + $vc_mode, + $vc_sort + ]; + } + + protected function getMapping(): \Closure + { + return function ($row, $question, $ui_factory, $environment) { + $env = $environment[self::ENV]; + $lng = $environment[self::LNG]; + + $title = sprintf( + '%s [ID: %s]', + $question->getTitle(), + (string)$question->getId() + ); + + $important_fields = [ + $lng->txt('question_id') => (string)$question->getId(), + $lng->txt('question_type') => $question->getType(), + $lng->txt('points') => sprintf( + '%s/%s (%s%%)', + (string)$question->getUserScore(), + (string)$question->getQuestionScore(), + (string)$question->getUserScorePercent() + ) + ]; + $stats = $ui_factory->listing()->characteristicValue()->text($important_fields); + $user_answer = $question->getUserAnswer(); + $best_solution = $env->getShowBestSolution() ? $question->getBestSolution() : ''; + + + $feedback = $ui_factory->listing()->descriptive([ + $lng->txt('tst_feedback') => $question->getFeedback() + ]); + + $contents = []; + + $contents[] = $stats; + if ($env->getShowFeedback()) { + $contents[] = $feedback; + } + + if ($recap = $question->getContentForRecapitulation()) { + $contents[] = $ui_factory->listing()->descriptive([ + $lng->txt('suggested_solution') => $recap + ]); + } + + + $answers = $ui_factory->layout()->alignment()->horizontal()->evenlyDistributed( + $ui_factory->listing()->descriptive([$lng->txt('tst_header_participant') => $user_answer]), + $ui_factory->listing()->descriptive([$lng->txt('tst_header_solution') => $best_solution]) + ); + $contents[] = $answers; + + $content = $ui_factory->layout()->alignment()->vertical(...$contents); + + switch($question->getCorrect()) { + case ilQuestionResult::CORRECT_FULL: + $icon_name = 'icon_ok.svg'; + $label = $lng->txt("answer_is_right"); + break; + case ilQuestionResult::CORRECT_PARTIAL: + $icon_name = 'icon_mostly_ok.svg'; + $label = $lng->txt("answer_is_not_correct_but_positive"); + break; + case ilQuestionResult::CORRECT_NONE: + $icon_name = 'icon_not_ok.svg'; + $label = $lng->txt("answer_is_wrong"); + break; + } + $path = ilUtil::getImagePath('standard/' . $icon_name); + $correct_icon = $ui_factory->symbol()->icon()->custom( + $path, + $label + ); + + return $row + ->withHeadline($title) + ->withLeadingSymbol($correct_icon) + ->withImportantFields($important_fields) + ->withContent($content); + }; + } +} diff --git a/Modules/Test/classes/Results/class.ilTestResultsFactory.php b/Modules/Test/classes/Results/class.ilTestResultsFactory.php new file mode 100644 index 000000000000..8378ed0fbc0b --- /dev/null +++ b/Modules/Test/classes/Results/class.ilTestResultsFactory.php @@ -0,0 +1,192 @@ +getPassResultsSettings($test_obj, $is_user_output); + return $this->buildPassResults( + $settings, + $test_obj, + $active_id, + $pass_id, + $is_user_output + ); + } + + protected function buildPassResults( + ilTestPassResultsSettings $settings, + ilObjTest $test_obj, + int $active_id, + int $pass_id, + bool $is_user_output + ): ilTestPassResult { + $question_results = []; + + $results = $test_obj->getTestResult( + $active_id, + $pass_id, + false, //$ordered_sequence + $settings->getShowHiddenQuestions(), + $settings->getShowOptionalQuestions() + ); + + // params of getSolutionOutput + $graphical_output = false; + $result_output = false; + $show_question_only = $settings->getQuestionTextOnly(); + $show_feedback = false; //general + $show_correct_solution = false; + $show_manual_scoring = false; + $show_question_text = true; + $show_inline_feedback = true; + + foreach ($results as $idx => $qresult) { + if (!is_numeric($idx)) { + continue; + } + + $qid = $qresult['qid']; + $type = $qresult['type']; + $title = $qresult['title']; + $question_score = $qresult['max']; + $usr_score = $qresult['reached']; + $workedthrough = (bool)$qresult['workedthrough']; + $answered = (bool)$qresult['answered']; + + $question_gui = $test_obj->createQuestionGUI("", $qid); + $shuffle_trafo = $this->shuffler->getAnswerShuffleFor($qid, $active_id, $pass_id); + $question_gui->object->setShuffler($shuffle_trafo); + + $graphical_output = true; + $show_correct_solution = false; + $show_inline_feedback = $settings->getShowFeedback(); + $usr_solution = $question_gui->getSolutionOutput( + $active_id, + $pass_id, + $graphical_output, + $result_output, + $show_question_only, + $show_feedback, + $show_correct_solution, + $show_manual_scoring, + $show_question_text, + $show_inline_feedback + ); + + $graphical_output = false; + $show_correct_solution = true; + $show_inline_feedback = false; + $best_solution = $question_gui->getSolutionOutput( + $active_id, + $pass_id, + $graphical_output, + $result_output, + $show_question_only, + $show_feedback, + $show_correct_solution, + $show_manual_scoring, + $show_question_text, + $show_inline_feedback + ); + + if ($show_question_only) { + $usr_solution = $this->ui_renderer->render($this->ui_factory->legacy('
' . $usr_solution . '
')); + $best_solution = $this->ui_renderer->render($this->ui_factory->legacy('
' . $best_solution . '
')); + } + + $feedback = $question_gui->getGenericFeedbackOutput($active_id, $pass_id); + + $recapitulation = null; + if ($is_user_output && $settings->getShowRecapitulation()) { + $recapitulation = $question_gui->object->getSuggestedSolutionOutput(); + } + + $question_results[] = new ilQuestionResult( + $qid, + $type, + $title, + $question_score, + $usr_score, + $usr_solution, + $best_solution, + $feedback, + $workedthrough, + $answered, + $recapitulation + ); + } + + return new ilTestPassResult( + $settings, + $active_id, + $pass_id, + $question_results + ); + } + + protected function getPassResultsSettings( + ilObjTest $test_obj, + bool $is_user_output + ): ilTestPassResultsSettings { + $settings = $test_obj->getScoreSettings(); + $settings_summary = $settings->getResultSummarySettings(); + $settings_result = $settings->getResultDetailsSettings(); + + $show_hidden_questions = false; + $show_optional_questions = true; + $show_best_solution = $is_user_output ? + $settings_result->getShowSolutionListComparison() : + (bool)ilSession::get('tst_results_show_best_solutions'); + $show_feedback = $settings_result->getShowSolutionFeedback(); + $show_question_text_only = $settings_result->getShowSolutionAnswersOnly(); + $show_content_for_recapitulation = $settings_result->getShowSolutionSuggested(); + + return new ilTestPassResultsSettings( + $show_hidden_questions, + $show_optional_questions, + $show_best_solution, + $show_feedback, + $show_question_text_only, + $show_content_for_recapitulation + ); + } +} diff --git a/Modules/Test/classes/Results/class.ilTestResultsPresentationFactory.php b/Modules/Test/classes/Results/class.ilTestResultsPresentationFactory.php new file mode 100644 index 000000000000..286437be7d99 --- /dev/null +++ b/Modules/Test/classes/Results/class.ilTestResultsPresentationFactory.php @@ -0,0 +1,58 @@ +ui_factory, + $this->ui_renderer, + $this->refinery, + $this->http, + $this->data_factory, + $this->lng, + $pass_results, + $title + ); + } +} diff --git a/Modules/Test/classes/ScoreReporting/class.ilObjTestScoreSettingsDatabaseRepository.php b/Modules/Test/classes/ScoreReporting/class.ilObjTestScoreSettingsDatabaseRepository.php index 74ed43602466..5779ae49ba9d 100644 --- a/Modules/Test/classes/ScoreReporting/class.ilObjTestScoreSettingsDatabaseRepository.php +++ b/Modules/Test/classes/ScoreReporting/class.ilObjTestScoreSettingsDatabaseRepository.php @@ -98,7 +98,6 @@ protected function doSelect(string $where_part): ilObjTestScoreSettings //->withShowPassDetails derived from results_presentation with bit RESULTPRES_BIT_PASS_DETAILS (new ilObjTestSettingsResultDetails($test_id)) ->withResultsPresentation((int)$row['results_presentation']) - ->withPrintBestSolutionWithResult((bool) $row['print_bs_with_res']) ->withShowExamIdInTestResults((bool) $row['examid_in_test_res']) ->withExportSettings((int) $row['exportsettings']) ->withTaxonomyFilterIds($tax_filter_ids), diff --git a/Modules/Test/classes/ScoreReporting/ilObjTestSettingsResultDetails.php b/Modules/Test/classes/ScoreReporting/ilObjTestSettingsResultDetails.php index a91fef9c7a8d..33936d68cd84 100644 --- a/Modules/Test/classes/ScoreReporting/ilObjTestSettingsResultDetails.php +++ b/Modules/Test/classes/ScoreReporting/ilObjTestSettingsResultDetails.php @@ -52,45 +52,6 @@ public function toForm( Refinery $refinery, array $environment = null ): FormInput { - $bool_with_optional_addition = $refinery->custom()->transformation( - function ($v) { - if (!$v) { - return [false, false]; //[enabled, show_best_solution] - } - return [true, array_shift($v)]; - } - ); - - $optgroup_lists = $f->optionalGroup( - [ - $f->checkbox( - $lng->txt('tst_results_print_best_solution'), - $lng->txt('tst_results_print_best_solution_info') - )->withValue($this->getShowSolutionListComparison()) - ], - $lng->txt('tst_show_solution_details'), - $lng->txt('tst_show_solution_details_desc') - )->withAdditionalTransformation($bool_with_optional_addition); - - if (!$this->getShowSolutionListOwnAnswers()) { - $optgroup_lists = $optgroup_lists->withValue(null); - } - - $optgroup_singlepage = $f->optionalGroup( - [ - $f->checkbox( - $lng->txt('tst_results_print_best_solution_singlepage'), - $lng->txt('tst_results_print_best_solution_singlepage_info') - )->withValue($this->getPrintBestSolutionWithResult()) - ], - $lng->txt('tst_show_solution_details_singlepage'), - $lng->txt('tst_show_solution_details_singlepage_desc') - )->withAdditionalTransformation($bool_with_optional_addition); - if (!$this->getShowSolutionDetails()) { - $optgroup_singlepage = $optgroup_singlepage->withValue(null); - } - - $taxonomy_options = $environment['taxonomy_options']; $taxonomy_ids = $f->multiselect( $lng->txt('tst_results_tax_filters'), @@ -99,9 +60,11 @@ function ($v) { ); $fields = [ - 'solution_details' => $optgroup_lists, - 'solution_details_singlepage' => $optgroup_singlepage, - + 'solution_best_solution' => + $f->checkbox( + $lng->txt('tst_results_print_best_solution'), + $lng->txt('tst_results_print_best_solution_info') + )->withValue($this->getShowSolutionListComparison()), 'solution_feedback' => $f->checkbox( $lng->txt('tst_show_solution_feedback'), $lng->txt('tst_show_solution_feedback_desc') @@ -138,13 +101,8 @@ function ($v) { ->withAdditionalTransformation( $refinery->custom()->transformation( function ($v) { - list($solution_list_details, $solution_list_best_solution) = $v['solution_details']; - list($solution_sp_details, $solution_sp_best_solution) = $v['solution_details_singlepage']; return (clone $this) - ->withShowSolutionListOwnAnswers($solution_list_details) - ->withShowSolutionListComparison($solution_list_best_solution) - ->withShowSolutionDetails($solution_sp_details) - ->withPrintBestSolutionWithResult($solution_sp_best_solution) + ->withShowSolutionListComparison($v['solution_best_solution']) ->withShowSolutionFeedback($v['solution_feedback']) ->withShowSolutionSuggested($v['solution_suggested']) ->withShowSolutionPrintview($v['solution_printview']) @@ -160,7 +118,6 @@ function ($v) { public function toStorage(): array { return [ - 'print_bs_with_res' => ['integer', (int) $this->getPrintBestSolutionWithResult()], 'results_presentation' => ['integer', $this->getResultsPresentation()], 'examid_in_test_res' => ['integer', (int) $this->getShowExamIdInTestResults()], 'exportsettings' => ['integer', (int) $this->getExportSettings()], @@ -169,18 +126,6 @@ public function toStorage(): array ]; } - - public function getPrintBestSolutionWithResult(): bool - { - return $this->print_bs_with_res; - } - public function withPrintBestSolutionWithResult(bool $print_bs_with_res): self - { - $clone = clone $this; - $clone->print_bs_with_res = $print_bs_with_res; - return $clone; - } - public function getResultsPresentation(): int { return $this->results_presentation; @@ -232,15 +177,6 @@ public function withShowPassDetails(bool $flag): self return $this->modifyResultPresentation(self::RESULTPRES_BIT_PASS_DETAILS, $flag); } - public function getShowSolutionDetails(): bool - { - return $this->compareResultPresentation(self::RESULTPRES_BIT_SOLUTION_DETAILS); - } - public function withShowSolutionDetails(bool $flag): self - { - return $this->modifyResultPresentation(self::RESULTPRES_BIT_SOLUTION_DETAILS, $flag); - } - public function getShowSolutionPrintview(): bool { return $this->compareResultPresentation(self::RESULTPRES_BIT_SOLUTION_PRINTVIEW); @@ -295,15 +231,6 @@ public function withShowSolutionListComparison(bool $flag): self return $this->modifyResultPresentation(self::RESULTPRES_BIT_SOLUTION_LISTCOMPARE, $flag); } - public function getShowSolutionListOwnAnswers(): bool - { - return $this->compareResultPresentation(self::RESULTPRES_BIT_SOLUTION_LISTOWNANSWERS); - } - public function withShowSolutionListOwnAnswers(bool $flag): self - { - return $this->modifyResultPresentation(self::RESULTPRES_BIT_SOLUTION_LISTOWNANSWERS, $flag); - } - public function getExportSettings(): int { return $this->exportsettings; diff --git a/Modules/Test/classes/class.ilObjTest.php b/Modules/Test/classes/class.ilObjTest.php index a33265909211..c071dea0d3b0 100755 --- a/Modules/Test/classes/class.ilObjTest.php +++ b/Modules/Test/classes/class.ilObjTest.php @@ -134,8 +134,10 @@ public function __construct(int $id = 0, bool $a_call_by_reference = true) $this->component_repository = $DIC['component.repository']; $this->component_factory = $DIC['component.factory']; $this->filesystem_web = $DIC->filesystem()->web(); - $this->testManScoringDoneHelper = new TestManScoringDoneHelper(); - $this->participant_access_filter = new ilTestParticipantAccessFilterFactory($DIC['ilAccess']); + + $local_dic = $this->getLocalDIC(); + $this->participant_access_filter = $local_dic['participantAccessFilterFactory']; + $this->testManScoringDoneHelper = $local_dic['manScoringDoneHelper']; $this->mark_schema = new ASS_MarkSchema($DIC['ilDB'], $DIC['lng'], $DIC['ilUser']->getId()); $this->mark_schema->createSimpleSchema( @@ -166,6 +168,11 @@ public function __construct(int $id = 0, bool $a_call_by_reference = true) ); } + public function getLocalDIC(): ILIAS\DI\Container + { + return ilTestDIC::dic(); + } + /** * returns the object title prepared to be used as a filename */ @@ -3875,15 +3882,6 @@ public function toXML(): string $a_xml_writer->xmlElement("fieldentry", null, sprintf("%d", $this->getScoreReporting())); $a_xml_writer->xmlEndTag("qtimetadatafield"); - $a_xml_writer->xmlStartTag("qtimetadatafield"); - $a_xml_writer->xmlElement("fieldlabel", null, "question_list"); - $a_xml_writer->xmlElement("fieldentry", null, sprintf("%d", $main_settings->getParticipantFunctionalitySettings()->getQuestionListEnabled())); - $a_xml_writer->xmlEndTag("qtimetadatafield"); - - $a_xml_writer->xmlStartTag("qtimetadatafield"); - $a_xml_writer->xmlElement("fieldlabel", null, "solution_details"); - $a_xml_writer->xmlElement("fieldentry", null, (int) $this->getShowSolutionDetails()); - $a_xml_writer->xmlEndTag("qtimetadatafield"); $a_xml_writer->xmlStartTag("qtimetadatafield"); $a_xml_writer->xmlElement("fieldlabel", null, "print_bs_with_res"); $a_xml_writer->xmlElement("fieldentry", null, (int) $this->getShowSolutionDetails() ? (int) $this->isBestSolutionPrintedWithResult() : 0); @@ -5916,14 +5914,6 @@ public function getShowPassDetails(): bool return $this->getScoreSettings()->getResultDetailsSettings()->getShowPassDetails(); } - /** - * Returns if the solution details should be presented to the user or not - */ - public function getShowSolutionDetails(): bool - { - return $this->getScoreSettings()->getResultDetailsSettings()->getShowSolutionDetails(); - } - /** * Returns if the solution printview should be presented to the user or not */ diff --git a/Modules/Test/classes/class.ilObjTestGUI.php b/Modules/Test/classes/class.ilObjTestGUI.php index b360047b6834..c23501cb1a7e 100755 --- a/Modules/Test/classes/class.ilObjTestGUI.php +++ b/Modules/Test/classes/class.ilObjTestGUI.php @@ -121,6 +121,7 @@ public function __construct($refId = null) $this->questioninfo = $DIC->testQuestionPool()->questionInfo(); $this->type = 'tst'; $this->testrequest = $DIC->test()->internal()->request(); + $ref_id = 0; if ($this->testrequest->hasRefId() && is_numeric($this->testrequest->getRefId())) { $ref_id = $this->testrequest->getRefId(); diff --git a/Modules/Test/classes/class.ilTestDIC.php b/Modules/Test/classes/class.ilTestDIC.php new file mode 100644 index 000000000000..1673e4a99fa4 --- /dev/null +++ b/Modules/Test/classes/class.ilTestDIC.php @@ -0,0 +1,75 @@ + + new ilTestShuffler($dic['refinery']); + + $dic['factory.results'] = static fn($c): ilTestResultsFactory => + new ilTestResultsFactory( + $c['shuffler'], + $dic['ui.factory'], + $dic['ui.renderer'] + ); + + $dic['factory.results_presentation'] = static fn($c): ilTestResultsPresentationFactory => + new ilTestResultsPresentationFactory( + $dic['ui.factory'], + $dic['ui.renderer'], + $dic['refinery'], + new ILIAS\Data\Factory(), + $dic['http'], + $dic['lng'] + ); + + + $dic['participantAccessFilterFactory'] = static fn($c): ilTestParticipantAccessFilterFactory => + new ilTestParticipantAccessFilterFactory($dic['ilAccess']); + + $dic['manScoringDoneHelper'] = static fn($c): TestManScoringDoneHelper => + new TestManScoringDoneHelper(); + + $dic['request.internal'] = static fn($c): InternalRequestService => + new InternalRequestService($dic['http'], $dic['refinery']); + + return $dic; + } +} diff --git a/Modules/Test/classes/class.ilTestEvaluationGUI.php b/Modules/Test/classes/class.ilTestEvaluationGUI.php index c211d77fe3e8..28f0b957c166 100644 --- a/Modules/Test/classes/class.ilTestEvaluationGUI.php +++ b/Modules/Test/classes/class.ilTestEvaluationGUI.php @@ -48,8 +48,6 @@ class ilTestEvaluationGUI extends ilTestServiceGUI protected ilTestAccess $testAccess; protected ilTestProcessLockerFactory $processLockerFactory; - protected ilTestParticipantAccessFilterFactory $participant_access_filter; - /** * ilTestEvaluationGUI constructor * @@ -64,6 +62,7 @@ public function __construct(ilObjTest $object) global $DIC; $this->participant_access_filter = new ilTestParticipantAccessFilterFactory($this->access); $this->ui = $DIC->ui(); + $this->processLockerFactory = new ilTestProcessLockerFactory( new ilSetting('assessment'), $this->db @@ -331,6 +330,7 @@ public function outEvaluation() } $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print"); + if ($this->object->getShowSolutionAnswersOnly()) { $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print"); } @@ -863,47 +863,6 @@ public function outParticipantsPassDetails() ); } - $testResultHeaderLabelBuilder = new ilTestResultHeaderLabelBuilder($this->lng, $ilObjDataCache); - - $objectivesList = null; - - if ($this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()) { - $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($active_id, $pass); - $testSequence->loadFromDb(); - $testSequence->loadQuestions(); - - $objectivesAdapter = ilLOTestQuestionAdapter::getInstance($testSession); - - $objectivesList = $this->buildQuestionRelatedObjectivesList($objectivesAdapter, $testSequence); - $objectivesList->loadObjectivesTitles(); - - $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId()); - $testResultHeaderLabelBuilder->setUserId($testSession->getUserId()); - $testResultHeaderLabelBuilder->setTestObjId($this->object->getId()); - $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId()); - $testResultHeaderLabelBuilder->initObjectiveOrientedMode(); - } - - $result_array = $this->getFilteredTestResult($active_id, $pass, false, !$this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()); - - $overviewTableGUI = $this->getPassDetailsOverviewTableGUI( - $result_array, - $active_id, - $pass, - $this, - "outParticipantsPassDetails", - '', - true, - $objectivesList - ); - $overviewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassDetailsHeaderLabel($pass + 1)); - $user_data = $this->getAdditionalUsrDataHtmlAndPopulateWindowTitle($testSession, $active_id, false); - $user_id = $this->object->_getUserIdFromActiveId($active_id); - - $template = new ilTemplate("tpl.il_as_tst_pass_details_overview_participants.html", true, true, "Modules/Test"); - - $toolbar = $this->buildUserTestResultsToolbarGUI(); - if ($this->testrequest->isset('show_best_solutions')) { ilSession::set('tst_results_show_best_solutions', true); } elseif ($this->testrequest->isset('hide_best_solutions')) { @@ -912,6 +871,18 @@ public function outParticipantsPassDetails() ilSession::clear('tst_results_show_best_solutions'); } + $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print"); + if ($this->object->getShowSolutionAnswersOnly()) { + $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print"); + } + + $template = new ilTemplate("tpl.il_as_tst_pass_details_overview_participants.html", true, true, "Modules/Test"); + + $this->populateExamId($template, $active_id, (int) $pass); + $this->populatePassFinishDate($template, ilObjTest::lookupLastTestPassAccess($active_id, $pass)); + + + $toolbar = $this->buildUserTestResultsToolbarGUI(); if (ilSession::get('tst_results_show_best_solutions')) { $this->ctrl->setParameter($this, 'hide_best_solutions', '1'); $toolbar->setHideBestSolutionsLinkTarget($this->ctrl->getLinkTarget($this, 'outParticipantsPassDetails')); @@ -934,37 +905,31 @@ public function outParticipantsPassDetails() $template->parseCurrentBlock(); } - $list_of_answers = $this->getPassListOfAnswers($result_array, $active_id, $pass, ilSession::get('tst_results_show_best_solutions'), false, false, false, true, $objectivesList, $testResultHeaderLabelBuilder); - $template->setVariable("LIST_OF_ANSWERS", $list_of_answers); - $template->setVariable("PASS_DETAILS", $this->ctrl->getHTML($overviewTableGUI)); - - $data = $this->object->getCompleteEvaluationData(); - $result = $data->getParticipant($active_id)->getReached() . " " . strtolower($this->lng->txt("of")) . " " . $data->getParticipant($active_id)->getMaxpoints() . " (" . sprintf("%2.2f", $data->getParticipant($active_id)->getReachedPointsInPercent()) . " %" . ")"; - $template->setCurrentBlock('total_score'); - $template->setVariable("TOTAL_RESULT_TEXT", $this->lng->txt('tst_stat_result_resultspoints')); - $template->setVariable("TOTAL_RESULT", $result); - $template->parseCurrentBlock(); - - if (!$this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()) { - $template->setVariable("USER_DATA", $user_data); - - $uname = $this->object->userLookupFullName($user_id); - $template->setVariable("TEXT_HEADING", sprintf($this->lng->txt("tst_result_user_name_pass"), $pass + 1, $uname)); + $title = sprintf( + $this->lng->txt("tst_result_user_name_pass"), + $pass + 1, + ilObjUser::_lookupFullname($this->object->_getUserIdFromActiveId($active_id)) + ); - $template->setVariable("TEXT_RESULTS", $testResultHeaderLabelBuilder->getPassDetailsHeaderLabel($pass + 1)); - } + $pass_results = $this->results_factory->getPassResultsFor( + $this->object, + $active_id, + $pass, + false + ); - $template->setVariable("FORMACTION", $this->ctrl->getFormAction($this)); + $table = $this->results_presentation_factory->getPassResultsPresentationTable( + $pass_results, + $title + ); - $this->populateExamId($template, $active_id, $pass); - $this->populatePassFinishDate($template, ilObjTest::lookupLastTestPassAccess($active_id, $pass)); + $this->tpl->addCss(ilObjStyleSheet::getContentStylePath(0)); - $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print"); - if ($this->object->getShowSolutionAnswersOnly()) { - $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print"); - } - - $this->tpl->setVariable("ADM_CONTENT", $template->get()); + $this->tpl->setVariable( + "ADM_CONTENT", + $template->get() + . $table->render() + ); } public function outParticipantsResultsOverview() @@ -1149,14 +1114,10 @@ public function outUserPassDetails(): void $result_array = $this->getFilteredTestResult($active_id, $pass, $considerHiddenQuestions, $considerOptionalQuestions); $command_solution_details = ""; - if ($this->object->getShowSolutionDetails()) { + if ($this->object->getShowSolutionListComparison()) { $command_solution_details = "outCorrectSolution"; } - //$questionAnchorNav = $this->object->canShowSolutionPrintview(); - $questionAnchorNav = - $this->object->getShowSolutionListOwnAnswers(); - $tpl = new ilTemplate('tpl.il_as_tst_pass_details_overview_participants.html', true, true, "Modules/Test"); $toolbar = $this->buildUserTestResultsToolbarGUI(); @@ -1191,19 +1152,6 @@ public function outUserPassDetails(): void $gradingMessageBuilder->sendMessage(); } - $overviewTableGUI = $this->getPassDetailsOverviewTableGUI( - $result_array, - $active_id, - $pass, - $this, - "outUserPassDetails", - $command_solution_details, - $questionAnchorNav, - $objectivesList - ); - $overviewTableGUI->setTitle($testResultHeaderLabelBuilder->getPassDetailsHeaderLabel($pass + 1)); - $tpl->setVariable("PASS_DETAILS", $this->ctrl->getHTML($overviewTableGUI)); - $data = $this->object->getCompleteEvaluationData(); $percent = $data->getParticipant($active_id)->getPass($pass)->getReachedPoints() / $data->getParticipant($active_id)->getPass($pass)->getMaxPoints() * 100; $result = $data->getParticipant($active_id)->getPass($pass)->getReachedPoints() . " " . strtolower($this->lng->txt("of")) . " " . $data->getParticipant($active_id)->getPass($pass)->getMaxPoints() . " (" . sprintf("%2.2f", $percent) . " %" . ")"; @@ -1212,36 +1160,9 @@ public function outUserPassDetails(): void $tpl->setVariable("TOTAL_RESULT", $result); $tpl->parseCurrentBlock(); - if ($this->object->getShowSolutionListOwnAnswers()) { - $list_of_answers = $this->getPassListOfAnswers( - $result_array, - $active_id, - $pass, - $this->object->getShowSolutionListComparison(), - false, - false, - false, - true, - $objectivesList, - $testResultHeaderLabelBuilder - ); - $tpl->setVariable("LIST_OF_ANSWERS", $list_of_answers); - } - $tpl->setVariable("TEXT_RESULTS", $testResultHeaderLabelBuilder->getPassDetailsHeaderLabel($pass + 1)); $tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this)); - $uname = $this->object->userLookupFullName($user_id, true); - $user_data = $this->getAdditionalUsrDataHtmlAndPopulateWindowTitle($testSession, $active_id, true); - if (!$this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()) { - if ($this->object->getAnonymity()) { - $tpl->setVariable("TEXT_HEADING", $this->lng->txt("tst_result_pass")); - } else { - $tpl->setVariable("TEXT_HEADING", sprintf($this->lng->txt("tst_result_user_name_pass"), $pass + 1, $uname)); - $tpl->setVariable("USER_DATA", $user_data); - } - } - $this->populateExamId($tpl, $active_id, (int) $pass); $this->populatePassFinishDate($tpl, ilObjTest::lookupLastTestPassAccess($active_id, $pass)); @@ -1250,7 +1171,31 @@ public function outUserPassDetails(): void $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print"); } - $this->tpl->setContent($tpl->get()); + $title = sprintf( + $this->lng->txt("tst_result_user_name_pass"), + $pass + 1, + ilObjUser::_lookupFullname($this->object->_getUserIdFromActiveId($active_id)) + ); + + $pass_results = $this->results_factory->getPassResultsFor( + $this->object, + $active_id, + $pass, + true + ); + + $table = $this->results_presentation_factory->getPassResultsPresentationTable( + $pass_results, + $title + ); + + $tpl->setVariable("LIST_OF_ANSWERS", $table->render()); + + $this->tpl->addCss(ilObjStyleSheet::getContentStylePath(0)); + + $this->tpl->setContent( + $tpl->get() + ); } public function outUserResultsOverview() diff --git a/Modules/Test/classes/class.ilTestNavigationToolbarGUI.php b/Modules/Test/classes/class.ilTestNavigationToolbarGUI.php index a00c0d445cad..2ea7bf415e02 100644 --- a/Modules/Test/classes/class.ilTestNavigationToolbarGUI.php +++ b/Modules/Test/classes/class.ilTestNavigationToolbarGUI.php @@ -28,71 +28,21 @@ */ class ilTestNavigationToolbarGUI extends ilToolbarGUI { - /** - * @var ilCtrl - */ - protected $ctrl; - - /** - * @var ilTestPlayerAbstractGUI - */ - protected $playerGUI; - - /** - * @var bool - */ - private $suspendTestButtonEnabled = false; - - /** - * @var bool - */ - private $questionListButtonEnabled = false; - - /** - * @var bool - */ - private $questionTreeButtonEnabled = false; - + private bool $suspendTestButtonEnabled = false; private bool $questionTreeVisible = false; - - /** - * @var bool - */ - private $questionSelectionButtonEnabled = false; - - /** - * @var bool - */ - private $finishTestButtonEnabled = false; - - /** - * @var string - */ - private $finishTestCommand = ''; - - /** - * @var bool - */ - private $finishTestButtonPrimary = false; - - /** - * @var bool - */ - private $disabledStateEnabled = false; + private bool $questionSelectionButtonEnabled = false; + private bool $finishTestButtonEnabled = false; + private string $finishTestCommand = ''; + private bool $finishTestButtonPrimary = false; + private bool $disabledStateEnabled = false; private bool $user_has_attempts_left = true; protected ?Interruptive $finish_test_modal = null; + protected bool $user_pass_overview_button_enabled = false; - /** - * @param ilCtrl $ctrl - * @param ilLanguage $lng - * @param ilTestPlayerAbstractGUI $playerGUI - */ - public function __construct(ilCtrl $ctrl, ilLanguage $lng, ilTestPlayerAbstractGUI $playerGUI) - { - $this->ctrl = $ctrl; - $this->lng = $lng; - $this->playerGUI = $playerGUI; - + public function __construct( + protected ilCtrl $ctrl, + protected ilTestPlayerAbstractGUI $playerGUI + ) { parent::__construct(); } diff --git a/Modules/Test/classes/class.ilTestPasswordChecker.php b/Modules/Test/classes/class.ilTestPasswordChecker.php index 82a1e7f56269..0eb9d772b1a1 100644 --- a/Modules/Test/classes/class.ilTestPasswordChecker.php +++ b/Modules/Test/classes/class.ilTestPasswordChecker.php @@ -56,19 +56,11 @@ public function __construct(ilRbacSystem $rbacsystem, ilObjUser $user, ilObjTest public function isPasswordProtectionPageRedirectRequired(): bool { - if (!$this->isTestPasswordEnabled()) { - return false; - } - - if ($this->isPrivilegedParticipant()) { - return false; - } - - if ($this->isUserEnteredPasswordCorrect()) { - return false; - } - - return true; + return ( + $this->isTestPasswordEnabled() + && !$this->isPrivilegedParticipant() + && !$this->isUserEnteredPasswordCorrect() + ); } protected function isTestPasswordEnabled(): bool diff --git a/Modules/Test/classes/class.ilTestPlayerAbstractGUI.php b/Modules/Test/classes/class.ilTestPlayerAbstractGUI.php index 3242f3a0122f..b8f97de33f0f 100755 --- a/Modules/Test/classes/class.ilTestPlayerAbstractGUI.php +++ b/Modules/Test/classes/class.ilTestPlayerAbstractGUI.php @@ -44,6 +44,7 @@ abstract class ilTestPlayerAbstractGUI extends ilTestServiceGUI public bool $maxProcessingTimeReached; public bool $endingTimeReached; + public int $ref_id; protected ilTestPasswordChecker $passwordChecker; protected ilTestProcessLocker $processLocker; @@ -920,7 +921,7 @@ protected function showQuestionEditable(assQuestionGUI $questionGui, $formAction $questionNavigationGUI->setDiscardSolutionButtonEnabled(true); // fau: testNav - set answere status in question header $questionGui->getQuestionHeaderBlockBuilder()->setQuestionAnswered(true); - // fau. + // fau. } elseif ($this->object->isPostponingEnabled()) { $questionNavigationGUI->setSkipQuestionLinkTarget( $this->ctrl->getLinkTarget($this, ilTestPlayerCommands::SKIP_QUESTION) @@ -1722,7 +1723,7 @@ protected function populateHelperGuiContent($helperGui) protected function getTestNavigationToolbarGUI(): ilTestNavigationToolbarGUI { - $navigation_toolbar = new ilTestNavigationToolbarGUI($this->ctrl, $this->lng, $this); + $navigation_toolbar = new ilTestNavigationToolbarGUI($this->ctrl, $this); $navigation_toolbar->setSuspendTestButtonEnabled($this->object->getShowCancel()); $navigation_toolbar->setUserPassOverviewEnabled($this->object->getUsrPassOverviewEnabled()); $navigation_toolbar->setFinishTestCommand($this->getFinishTestCommand()); @@ -2167,7 +2168,7 @@ protected function getQuestionGuiInstance($question_id, $fromCache = true): obje $question_gui->setPresentationContext(assQuestionGUI::PRESENTATION_CONTEXT_TEST); $question_gui->object->setObligationsToBeConsidered($this->object->areObligationsEnabled()); $question_gui->populateJavascriptFilesRequiredForWorkForm($tpl); - $question_gui->object->setShuffler($this->buildQuestionAnswerShuffler( + $question_gui->object->setShuffler($this->shuffler->getAnswerShuffleFor( $question_id, $this->test_session->getActiveId(), $this->test_session->getPass() diff --git a/Modules/Test/classes/class.ilTestQuestionNavigationGUI.php b/Modules/Test/classes/class.ilTestQuestionNavigationGUI.php index edfa7b945a53..ff560c47625e 100644 --- a/Modules/Test/classes/class.ilTestQuestionNavigationGUI.php +++ b/Modules/Test/classes/class.ilTestQuestionNavigationGUI.php @@ -444,7 +444,7 @@ public function getHTML(): string // fau: testNav - skip question (postpone) is moved to the actions menu. if ($this->getInstantFeedbackCommand()) { - $this->renderSubmitButton( + $this->renderInstantFeedbackButton( $tpl, $this->getInstantFeedbackCommand(), $this->getCheckButtonLabel(), @@ -601,19 +601,47 @@ private function renderButtonInstance(ilTemplate $tpl, Button $button) * @param $label * @param bool|false $primary */ - private function renderSubmitButton(ilTemplate $tpl, $command, $label, $primary = false) - { - if ($primary) { - $this->renderButtonInstance( - $tpl, - $this->ui_factory->button()->primary($label, $command) - ); - } else { + private function renderSubmitButton( + ilTemplate $tpl, + string $command, + string $label + ): void { + $this->renderButtonInstance( + $tpl, + $this->ui_factory->button()->standard($label, $command) + ); + } + + private function renderInstantFeedbackButton( + ilTemplate $tpl, + string $command, + string $label, + bool $is_primary + ): void { + $on_load_code = $this->getOnLoadCode($command); + if ($is_primary) { $this->renderButtonInstance( $tpl, - $this->ui_factory->button()->standard($label, $command) + $this->ui_factory->button()->primary($label, '')->withAdditionalOnLoadCode($on_load_code) ); + return; } + + $this->renderButtonInstance( + $tpl, + $this->ui_factory->button()->standard($label, '')->withAdditionalOnLoadCode($on_load_code) + ); + } + + private function getOnLoadCode(string $command): Closure + { + return static function ($id) use ($command): string { + return "document.getElementById('$id').addEventListener('click', " + . '(e) => {' + . " e.target.setAttribute('name', 'cmd[$command]');" + . ' e.target.form.requestSubmit(e.target);' + . '});'; + }; } /** diff --git a/Modules/Test/classes/class.ilTestServiceGUI.php b/Modules/Test/classes/class.ilTestServiceGUI.php index bbe7f8f4616f..3dc21286e285 100755 --- a/Modules/Test/classes/class.ilTestServiceGUI.php +++ b/Modules/Test/classes/class.ilTestServiceGUI.php @@ -24,7 +24,6 @@ use ILIAS\GlobalScreen\Services as GlobalScreenServices; use ILIAS\Refinery\Factory as Refinery; use ILIAS\Refinery\Transformation; -use ILIAS\Refinery\Random\Seed\GivenSeed; use ILIAS\Test\InternalRequestService; use ILIAS\HTTP\Wrapper\ArrayBasedRequestWrapper; use ILIAS\DI\LoggingServices; @@ -78,6 +77,9 @@ class ilTestServiceGUI protected UIFactory $ui_factory; protected UIRenderer $ui_renderer; protected SkillService $skills_service; + protected ilTestShuffler $shuffler; + protected ilTestResultsFactory $results_factory; + protected ilTestResultsPresentationFactory $results_presentation_factory; protected ILIAS $ilias; protected ilSetting $settings; @@ -140,19 +142,26 @@ public function __construct( $this->rbac_system = $DIC['rbacsystem']; $this->obj_cache = $DIC['ilObjDataCache']; $this->skills_service = $DIC->skills(); - $this->participant_access_filter = new ilTestParticipantAccessFilterFactory($DIC['ilAccess']); $this->post_wrapper = $DIC->http()->wrapper()->post(); - $this->testrequest = $DIC->test()->internal()->request(); + $this->questioninfo = $DIC->testQuestionPool()->questionInfo(); $this->service = new ilTestService($this->object, $this->db, $this->questioninfo); - $this->lng->loadLanguageModule('cert'); + $this->lng->loadLanguageModule('cert'); $this->ref_id = $this->object->getRefId(); - $this->testrequest = $DIC->test()->internal()->request(); $this->testSessionFactory = new ilTestSessionFactory($this->object, $this->db, $this->user); $this->testSequenceFactory = new ilTestSequenceFactory($this->object, $this->db, $this->questioninfo); - $this->objective_oriented_container = null; + + $this->ui_factory = $DIC['ui.factory']; + $this->ui_renderer = $DIC['ui.renderer']; + + $local_dic = $object->getLocalDIC(); + $this->testrequest = $local_dic['request.internal']; + $this->participant_access_filter = $local_dic['participantAccessFilterFactory']; + $this->shuffler = $local_dic['shuffler']; + $this->results_factory = $local_dic['factory.results']; + $this->results_presentation_factory = $local_dic['factory.results_presentation']; } public function setParticipantData(ilTestParticipantData $participantData): void @@ -358,7 +367,8 @@ public function getPassListOfAnswers( && is_numeric($question_id)) { $maintemplate->setCurrentBlock("printview_question"); $question_gui = $this->object->createQuestionGUI("", $question_id); - $question_gui->object->setShuffler($this->buildQuestionAnswerShuffler( + + $question_gui->object->setShuffler($this->shuffler->getAnswerShuffleFor( (int) $question_id, (int) $active_id, (int) $pass @@ -435,33 +445,6 @@ public function getPassListOfAnswers( return $maintemplate->get(); } - protected function buildQuestionAnswerShuffler( - int $question_id, - int $active_id, - int $pass_id - ): Transformation { - $fixedSeed = $this->buildFixedShufflerSeed($question_id, $pass_id, $active_id); - - return $this->refinery->random()->shuffleArray(new GivenSeed($fixedSeed)); - } - - protected function buildFixedShufflerSeed(int $question_id, int $pass_id, int $active_id): int - { - $seed = ($question_id + $pass_id) * $active_id; - - if (is_float($seed) && is_float($seed = $active_id + $pass_id)) { - $seed = $active_id; - } - - $div = ceil((10 ** (ilTestPlayerAbstractGUI::FIXED_SHUFFLER_SEED_MIN_LENGTH - 1)) / $seed); - - if ($div > 1) { - $seed = $seed * ($div + $seed % 10); - } - - return (int) $seed; - } - /** * Returns the list of answers of a users test pass and offers a scoring option * @@ -675,7 +658,11 @@ public function getAdditionalUsrDataHtmlAndPopulateWindowTitle($testSession, $ac $invited_user = array_pop($this->object->getInvitedUsers($user_id)); $title_client = ''; - if (isset($invited_user['clientip']) && $invited_user["clientip"] !== '') { + if (is_array($invited_user) + && array_key_exists('clientip', $invited_user) + && is_string($invited_user['clientip']) + && trim($invited_user['clientip']) !== '' + ) { $template->setCurrentBlock("client_ip"); $template->setVariable("TXT_CLIENT_IP", $this->lng->txt("client_ip")); $template->setVariable("VALUE_CLIENT_IP", $invited_user["clientip"]); diff --git a/Modules/Test/classes/class.ilTestShuffler.php b/Modules/Test/classes/class.ilTestShuffler.php new file mode 100644 index 000000000000..d0fef441d634 --- /dev/null +++ b/Modules/Test/classes/class.ilTestShuffler.php @@ -0,0 +1,60 @@ +buildFixedShufflerSeed($question_id, $pass_id, $active_id); + return $this->refinery->random()->shuffleArray(new GivenSeed($fixedSeed)); + } + + protected function buildFixedShufflerSeed(int $question_id, int $pass_id, int $active_id): int + { + $seed = ($question_id + $pass_id) * $active_id; + if (is_float($seed) && is_float($seed = $active_id + $pass_id)) { + $seed = $active_id; + } + + $div = ceil((10 ** (self::FIXED_SHUFFLER_SEED_MIN_LENGTH - 1)) / $seed); + if ($div > 1) { + $seed = $seed * ($div + $seed % 10); + } + return (int) $seed; + } +} diff --git a/Modules/Test/classes/tables/class.ilTestPassOverviewTableGUI.php b/Modules/Test/classes/tables/class.ilTestPassOverviewTableGUI.php index 275f828c46f8..a63f35c386d3 100644 --- a/Modules/Test/classes/tables/class.ilTestPassOverviewTableGUI.php +++ b/Modules/Test/classes/tables/class.ilTestPassOverviewTableGUI.php @@ -18,13 +18,16 @@ declare(strict_types=1); +use ILIAS\UI\Factory as UIFactory; +use ILIAS\UI\Renderer as UIRenderer; + /** * Class ilTestPassOverviewTableGUI */ class ilTestPassOverviewTableGUI extends ilTable2GUI { - private \ILIAS\UI\Factory $ui_factory; - private \ILIAS\UI\Renderer $ui_renderer; + private UIFactory $ui_factory; + private UIRenderer $ui_renderer; protected bool $resultPresentationEnabled = false; protected bool $pdfPresentationEnabled = false; @@ -266,12 +269,12 @@ private function buildActionsHtml($actions, $pass): string } $this->ctrl->setParameter($this->parent_obj, 'pass', $pass); - $actions = []; + $action_links = []; if (count($actions) > 1) { foreach ($actions as $cmd => $label) { - $actions[] = $this->ui_factory->link()->standard($label, $this->ctrl->getLinkTarget($this->parent_obj, $cmd)); + $action_links[] = $this->ui_factory->link()->standard($label, $this->ctrl->getLinkTarget($this->parent_obj, $cmd)); } - $dropdown = $this->ui_factory->dropdown()->standard($actions)->withLabel($this->lng->txt('actions')); + $dropdown = $this->ui_factory->dropdown()->standard($action_links)->withLabel($this->lng->txt('actions')); $html = $this->ui_renderer->render($dropdown); } else { $cmd = key($actions); diff --git a/Modules/Test/classes/toolbars/class.ilTestResultsToolbarGUI.php b/Modules/Test/classes/toolbars/class.ilTestResultsToolbarGUI.php index 7ce95036e3a6..5c63aa43375b 100644 --- a/Modules/Test/classes/toolbars/class.ilTestResultsToolbarGUI.php +++ b/Modules/Test/classes/toolbars/class.ilTestResultsToolbarGUI.php @@ -45,7 +45,9 @@ public function build(): void { $this->setId('tst_results_toolbar'); - $this->addButton($this->lng->txt('print'), 'javascript:window.print();'); + $print_button = $this->ui->factory()->button()->standard($this->lng->txt('print'), '') + ->withOnLoadCode(fn($id) => "$('#$id').on('click', ()=>{window.print();})"); + $this->addComponent($print_button); if ($this->getCertificateLinkTarget() !== null && $this->getCertificateLinkTarget() !== '') { diff --git a/Modules/Test/templates/default/tpl.il_as_tst_pass_details_overview_participants.html b/Modules/Test/templates/default/tpl.il_as_tst_pass_details_overview_participants.html index d195f3c6ac2a..1a3108aa34d9 100755 --- a/Modules/Test/templates/default/tpl.il_as_tst_pass_details_overview_participants.html +++ b/Modules/Test/templates/default/tpl.il_as_tst_pass_details_overview_participants.html @@ -12,9 +12,10 @@

{TEXT_HEADING}

{TOTAL_RESULT_TEXT}: {TOTAL_RESULT}

-
+ {LIST_OF_ANSWERS} +

{SIGNATURE} diff --git a/Modules/Test/test/ScoreSettingsTest.php b/Modules/Test/test/ScoreSettingsTest.php index 2d69c04a93b2..8bb2d5f274eb 100644 --- a/Modules/Test/test/ScoreSettingsTest.php +++ b/Modules/Test/test/ScoreSettingsTest.php @@ -76,13 +76,10 @@ public function testScoreSettingsSummary(): void public function testScoreSettingsDetails(): void { $s = new ilObjTestSettingsResultDetails(-666); - $this->assertTrue($s->withPrintBestSolutionWithResult(true)->getPrintBestSolutionWithResult()); $this->assertEquals(192, $s->withResultsPresentation(192)->getResultsPresentation(192)); $this->assertTrue($s->withShowExamIdInTestResults(true)->getShowExamIdInTestResults()); $this->assertTrue($s->withShowPassDetails(true)->getShowPassDetails()); $this->assertFalse($s->withShowPassDetails(false)->getShowPassDetails()); - $this->assertTrue($s->withShowSolutionDetails(true)->getShowSolutionDetails()); - $this->assertFalse($s->withShowSolutionDetails(false)->getShowSolutionDetails()); $this->assertTrue($s->withShowSolutionPrintview(true)->getShowSolutionPrintview()); $this->assertFalse($s->withShowSolutionPrintview(false)->getShowSolutionPrintview()); $this->assertTrue($s->withShowSolutionFeedback(true)->getShowSolutionFeedback()); @@ -367,77 +364,55 @@ public function testScoreSettingsSectionDetails(): void $expected = <<

tst_results_details_options

-
- -
- -
tst_show_solution_details_desc
-
- -
- -
tst_results_print_best_solution_info
-
-
-
-
- +
- -
tst_show_solution_details_singlepage_desc
-
- -
- -
tst_results_print_best_solution_singlepage_info
-
-
+
tst_results_print_best_solution_info
- +
-
tst_show_solution_feedback_desc
+
tst_show_solution_feedback_desc
-
-
tst_show_solution_suggested_desc
+
+
tst_show_solution_suggested_desc
-
-
tst_show_solution_printview_desc
+
+
tst_show_solution_printview_desc
-
-
tst_hide_pagecontents_desc
+
+
tst_hide_pagecontents_desc
-
-
tst_show_solution_signature_desc
+
+
tst_show_solution_signature_desc
-
-
examid_in_test_res_desc
+
+
examid_in_test_res_desc
-
    +
    • 1
    • @@ -587,12 +562,10 @@ public function __construct($s) $this->assertIsInt($t->getPassScoring()); $this->assertNull($t->getReportingDate()); $this->assertIsBool($t->getShowPassDetails()); - $this->assertIsBool($t->getShowSolutionDetails()); $this->assertIsBool($t->getShowSolutionAnswersOnly()); $this->assertIsBool($t->getShowSolutionSignature()); $this->assertIsBool($t->getShowSolutionSuggested()); $this->assertIsBool($t->getShowSolutionListComparison()); - $this->assertIsBool($t->getShowSolutionListOwnAnswers()); $this->assertIsBool($t->isPassDeletionAllowed()); $this->assertIsInt($t->getExportSettings()); $this->assertIsBool($t->getHighscoreEnabled()); diff --git a/Modules/Test/test/TestPassResultsSettingsTest.php b/Modules/Test/test/TestPassResultsSettingsTest.php new file mode 100644 index 000000000000..04b8de9a63c0 --- /dev/null +++ b/Modules/Test/test/TestPassResultsSettingsTest.php @@ -0,0 +1,56 @@ +assertFalse($trs->getShowHiddenQuestions()); + $this->assertFalse($trs->getShowOptionalQuestions()); + $this->assertTrue($trs->getShowBestSolution()); + $this->assertTrue($trs->getShowFeedback()); + $this->assertFalse($trs->getQuestionTextOnly()); + $this->assertFalse($trs->getShowRecapitulation()); + } + + public function testTestResultsSettingsBasicProps(): void + { + $trs = new \ilTestPassResultsSettings(true, true, true, true, true, true); + $this->assertTrue($trs->getShowHiddenQuestions()); + $this->assertTrue($trs->getShowOptionalQuestions()); + $this->assertTrue($trs->getShowBestSolution()); + $this->assertTrue($trs->getShowFeedback()); + $this->assertTrue($trs->getQuestionTextOnly()); + $this->assertTrue($trs->getShowRecapitulation()); + + $trs = new \ilTestPassResultsSettings(false, false, false, false, false, false); + $this->assertFalse($trs->getShowHiddenQuestions()); + $this->assertFalse($trs->getShowOptionalQuestions()); + $this->assertFalse($trs->getShowBestSolution()); + $this->assertFalse($trs->getShowFeedback()); + $this->assertFalse($trs->getQuestionTextOnly()); + $this->assertFalse($trs->getShowRecapitulation()); + } +} diff --git a/Modules/Test/test/TestResultsQuestionResultsTest.php b/Modules/Test/test/TestResultsQuestionResultsTest.php new file mode 100644 index 000000000000..5c5c0a6e9005 --- /dev/null +++ b/Modules/Test/test/TestResultsQuestionResultsTest.php @@ -0,0 +1,55 @@ +assertEquals($id, $qr->getId()); + $this->assertEquals($type, $qr->getType()); + $this->assertEquals($title, $qr->getTitle()); + $this->assertEquals($question_score, $qr->getQuestionScore()); + $this->assertEquals($usr_score, $qr->getUserScore()); + $this->assertEquals(50, $qr->getUserScorePercent()); + $this->assertEquals(\ilQuestionResult::CORRECT_PARTIAL, $qr->getCorrect()); + $this->assertEquals($feedback, $qr->getFeedback()); + $this->assertTrue($qr->isWorkedThrough()); + $this->assertTrue($qr->isAnswered()); + $this->assertEquals($recapitulation, $qr->getContentForRecapitulation()); + } +} diff --git a/Modules/Test/test/ilTestBaseTestCase.php b/Modules/Test/test/ilTestBaseTestCase.php index fd539da1be7d..0fc0f1ac904c 100644 --- a/Modules/Test/test/ilTestBaseTestCase.php +++ b/Modules/Test/test/ilTestBaseTestCase.php @@ -332,4 +332,14 @@ protected function addGlobal_objectService(): void $this->setGlobalVariable("object", $object_mock); } + + protected function getTestObjMock(): ilObjTest + { + $test_mock = $this->createMock(ilObjTest::class); + $test_mock->method('getLocalDIC') + ->willReturn( + ilTestDIC::dic() + ); + return $test_mock; + } } diff --git a/Modules/Test/test/ilTestEvalObjectiveOrientedGUITest.php b/Modules/Test/test/ilTestEvalObjectiveOrientedGUITest.php index 2c0d132e63f1..9afee1881e3f 100644 --- a/Modules/Test/test/ilTestEvalObjectiveOrientedGUITest.php +++ b/Modules/Test/test/ilTestEvalObjectiveOrientedGUITest.php @@ -51,8 +51,7 @@ protected function setUp(): void $this->addGlobal_uiFactory(); $this->addGlobal_uiRenderer(); - $objTest_mock = $this->createMock(ilObjTest::class); - $this->testObj = new ilTestEvalObjectiveOrientedGUI($objTest_mock); + $this->testObj = new ilTestEvalObjectiveOrientedGUI($this->getTestObjMock()); } public function test_instantiateObject_shouldReturnInstance(): void diff --git a/Modules/Test/test/ilTestEvaluationGUITest.php b/Modules/Test/test/ilTestEvaluationGUITest.php index 51205b741482..9082d576a599 100644 --- a/Modules/Test/test/ilTestEvaluationGUITest.php +++ b/Modules/Test/test/ilTestEvaluationGUITest.php @@ -53,7 +53,9 @@ protected function setUp(): void $this->addGlobal_uiFactory(); $this->addGlobal_uiRenderer(); - $this->testObj = new ilTestEvaluationGUI($this->createMock(ilObjTest::class)); + $this->testObj = new ilTestEvaluationGUI( + $this->getTestObjMock() + ); } public function test_instantiateObject_shouldReturnInstance(): void diff --git a/Modules/Test/test/ilTestNavigationToolbarGUITest.php b/Modules/Test/test/ilTestNavigationToolbarGUITest.php index 5ddc3ad69609..10baf233d369 100644 --- a/Modules/Test/test/ilTestNavigationToolbarGUITest.php +++ b/Modules/Test/test/ilTestNavigationToolbarGUITest.php @@ -34,7 +34,6 @@ protected function setUp(): void $this->testObj = new ilTestNavigationToolbarGUI( $this->createMock(ilCtrl::class), - $this->createMock(ilLanguage::class), $this->createMock(ilTestPlayerAbstractGUI::class) ); } diff --git a/Modules/Test/test/ilTestPlayerFixedQuestionSetGUITest.php b/Modules/Test/test/ilTestPlayerFixedQuestionSetGUITest.php index 6db0e7e38add..dce422243a39 100644 --- a/Modules/Test/test/ilTestPlayerFixedQuestionSetGUITest.php +++ b/Modules/Test/test/ilTestPlayerFixedQuestionSetGUITest.php @@ -53,7 +53,7 @@ protected function setUp(): void $this->addGlobal_uiRenderer(); $this->testObj = new ilTestPlayerFixedQuestionSetGUI( - $this->createMock(ilObjTest::class) + $this->getTestObjMock() ); } diff --git a/Modules/Test/test/ilTestPlayerRandomQuestionSetGUITest.php b/Modules/Test/test/ilTestPlayerRandomQuestionSetGUITest.php index 445a5f8f0b3f..232200115363 100644 --- a/Modules/Test/test/ilTestPlayerRandomQuestionSetGUITest.php +++ b/Modules/Test/test/ilTestPlayerRandomQuestionSetGUITest.php @@ -53,7 +53,7 @@ protected function setUp(): void $this->addGlobal_uiFactory(); $this->addGlobal_uiRenderer(); - $this->testObj = new ilTestPlayerRandomQuestionSetGUI($this->createMock(ilObjTest::class)); + $this->testObj = new ilTestPlayerRandomQuestionSetGUI($this->getTestObjMock()); } public function test_instantiateObject_shouldReturnInstance(): void diff --git a/Modules/Test/test/ilTestScoringByQuestionsGUITest.php b/Modules/Test/test/ilTestScoringByQuestionsGUITest.php index fe37062aded6..c88a0c53ef31 100644 --- a/Modules/Test/test/ilTestScoringByQuestionsGUITest.php +++ b/Modules/Test/test/ilTestScoringByQuestionsGUITest.php @@ -48,7 +48,7 @@ protected function setUp(): void $this->addGlobal_uiRenderer(); $this->testObj = new ilTestScoringByQuestionsGUI( - $this->createMock(ilObjTest::class) + $this->getTestObjMock() ); } diff --git a/Modules/Test/test/ilTestScoringGUITest.php b/Modules/Test/test/ilTestScoringGUITest.php index 83855b571d5f..ad90f47f1fb1 100644 --- a/Modules/Test/test/ilTestScoringGUITest.php +++ b/Modules/Test/test/ilTestScoringGUITest.php @@ -49,7 +49,7 @@ protected function setUp(): void $this->addGlobal_uiFactory(); $this->addGlobal_uiRenderer(); - $this->testObj = new ilTestScoringGUI($this->createMock(ilObjTest::class)); + $this->testObj = new ilTestScoringGUI($this->getTestObjMock()); } public function test_instantiateObject_shouldReturnInstance(): void diff --git a/Modules/Test/test/ilTestServiceGUITest.php b/Modules/Test/test/ilTestServiceGUITest.php index 64a724e18fb9..c934a4e5dded 100644 --- a/Modules/Test/test/ilTestServiceGUITest.php +++ b/Modules/Test/test/ilTestServiceGUITest.php @@ -16,6 +16,8 @@ * *********************************************************************/ +declare(strict_types=1); + /** * Class ilTestServiceGUITest * @author Marvin Beym @@ -49,7 +51,7 @@ protected function setUp(): void $this->addGlobal_uiFactory(); $this->addGlobal_uiRenderer(); - $this->testObj = new ilTestServiceGUI($this->createMock(ilObjTest::class)); + $this->testObj = new ilTestServiceGUI($this->getTestObjMock()); } public function test_instantiateObject_shouldReturnInstance(): void @@ -114,12 +116,18 @@ public function testBuildFixedShufflerSeedReturnsValidSeed(): void ] ]; - $reflection = new \ReflectionClass(ilTestServiceGUI::class); + $reflection = new \ReflectionClass(ilTestShuffler::class); $method = $reflection->getMethod('buildFixedShufflerSeed'); $method->setAccessible(true); + $refinery = new \ILIAS\Refinery\Factory( + new \ILIAS\Data\Factory(), + $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->getMock() + ); + $shuffler = new ilTestShuffler($refinery); + foreach ($seeds as $seed) { - $fixed_seed = $method->invoke($this->testObj, $seed['question_id'], $seed['pass_id'], $seed['active_id']); + $fixed_seed = $method->invoke($shuffler, $seed['question_id'], $seed['pass_id'], $seed['active_id']); $this->assertEquals($seed['return'], $fixed_seed); } } diff --git a/Modules/Test/test/ilTestSubmissionReviewGUITest.php b/Modules/Test/test/ilTestSubmissionReviewGUITest.php index 862d1f0a8543..84d7ae99cf79 100644 --- a/Modules/Test/test/ilTestSubmissionReviewGUITest.php +++ b/Modules/Test/test/ilTestSubmissionReviewGUITest.php @@ -53,7 +53,7 @@ protected function setUp(): void $this->testObj = new ilTestSubmissionReviewGUI( $this->createMock(ilTestOutputGUI::class), - $this->createMock(ilObjTest::class), + $this->getTestObjMock(), $this->createMock(ilTestSession::class) ); } diff --git a/Modules/TestQuestionPool/classes/class.assMultipleChoiceGUI.php b/Modules/TestQuestionPool/classes/class.assMultipleChoiceGUI.php index 7083a4034c84..95d628f097a8 100755 --- a/Modules/TestQuestionPool/classes/class.assMultipleChoiceGUI.php +++ b/Modules/TestQuestionPool/classes/class.assMultipleChoiceGUI.php @@ -214,11 +214,13 @@ public function getSolutionOutput( $show_feedback = false, $show_correct_solution = false, $show_manual_scoring = false, - $show_question_text = true + $show_question_text = true, + $show_inline_feedback = true ): string { // shuffle output $keys = $this->getChoiceKeys(); + // get the solution of the user for the active pass or from the last pass if allowed $user_solution = array(); if (($active_id > 0) && (!$show_correct_solution)) { @@ -289,7 +291,8 @@ public function getSolutionOutput( $template->parseCurrentBlock(); } - if ($show_feedback) { + + if ($show_inline_feedback) { if ($this->object->getSpecificFeedbackSetting() == 2) { foreach ($user_solution as $mc_solution) { if (strcmp($mc_solution, $answer_id) == 0) { @@ -319,7 +322,8 @@ public function getSolutionOutput( $template->parseCurrentBlock(); } } - + } + if ($show_feedback) { if ($this->object->getSpecificFeedbackSetting() == 3) { $answer = $this->object->getAnswer($answer_id); @@ -337,6 +341,9 @@ public function getSolutionOutput( } } } + + + $template->setCurrentBlock("answer_row"); $template->setVariable("ANSWER_TEXT", ilLegacyFormElementsUtil::prepareTextareaOutput($answer->getAnswertext(), true)); $checked = false; diff --git a/Modules/TestQuestionPool/classes/class.assQuestionGUI.php b/Modules/TestQuestionPool/classes/class.assQuestionGUI.php index fd70db28a51b..e5b0b8efe6cf 100755 --- a/Modules/TestQuestionPool/classes/class.assQuestionGUI.php +++ b/Modules/TestQuestionPool/classes/class.assQuestionGUI.php @@ -710,7 +710,7 @@ public function saveEdit(): void $testQuestionSetConfigFactory = new ilTestQuestionSetConfigFactory( $this->tree, $this->db, - $this->component_repository, + $this->lng, $this->logger, $this->component_repository, $test, @@ -2025,11 +2025,11 @@ protected function generateCorrectnessIconsForCorrectness(int $correctness): str $label = $this->lng->txt("answer_is_wrong"); break; case self::CORRECTNESS_MOSTLY_OK: - $icon_name = 'icon_ok.svg'; + $icon_name = 'standard/icon_ok.svg'; $label = $this->lng->txt("answer_is_not_correct_but_positive"); break; case self::CORRECTNESS_OK: - $icon_name = 'icon_ok.svg'; + $icon_name = 'standard/icon_ok.svg'; $label = $this->lng->txt("answer_is_right"); break; default: diff --git a/Modules/TestQuestionPool/classes/class.assSingleChoiceGUI.php b/Modules/TestQuestionPool/classes/class.assSingleChoiceGUI.php index 2c048636d809..b38e259d524c 100755 --- a/Modules/TestQuestionPool/classes/class.assSingleChoiceGUI.php +++ b/Modules/TestQuestionPool/classes/class.assSingleChoiceGUI.php @@ -240,7 +240,8 @@ public function getSolutionOutput( $show_feedback = false, $show_correct_solution = false, $show_manual_scoring = false, - $show_question_text = true + $show_question_text = true, + bool $show_inline_feedback = true ): string { // shuffle output $keys = $this->getChoiceKeys(); @@ -300,7 +301,8 @@ public function getSolutionOutput( $template->setVariable("ANSWER_IMAGE_TITLE", ilLegacyFormElementsUtil::prepareFormOutput($alt)); $template->parseCurrentBlock(); } - if ($show_feedback) { + + if ($show_inline_feedback) { $this->populateInlineFeedback($template, $answer_id, $user_solution); } $template->setCurrentBlock("answer_row"); @@ -330,8 +332,9 @@ public function getSolutionOutput( } $template->parseCurrentBlock(); } + $questiontext = $this->object->getQuestionForHTMLOutput(); - if ($show_feedback && $this->hasInlineFeedback()) { + if ($show_inline_feedback && $this->hasInlineFeedback()) { $questiontext .= $this->buildFocusAnchorHtml(); } if ($show_question_text == true) { @@ -544,7 +547,7 @@ public function getSpecificFeedbackOutput(array $userSolution): string { // No return value, this question type supports inline specific feedback. $output = ""; - return $ilLegacyFormElementsUtil::prepareTextareaOutput($output, true); + return ilLegacyFormElementsUtil::prepareTextareaOutput($output, true); } public function writeQuestionSpecificPostData(ilPropertyFormGUI $form): void @@ -784,7 +787,7 @@ private function populateInlineFeedback($template, $answer_id, $user_solution): break; case 2: - if (strcmp($user_solution, $answer_id) == 0) { + if (strcmp((string)$user_solution, $answer_id) == 0) { $feedbackOutputRequired = true; } break; diff --git a/Modules/TestQuestionPool/classes/forms/class.ilAssNestedOrderingElementsInputGUI.php b/Modules/TestQuestionPool/classes/forms/class.ilAssNestedOrderingElementsInputGUI.php index c2da7d95ce6c..5ba0fef6a637 100644 --- a/Modules/TestQuestionPool/classes/forms/class.ilAssNestedOrderingElementsInputGUI.php +++ b/Modules/TestQuestionPool/classes/forms/class.ilAssNestedOrderingElementsInputGUI.php @@ -262,7 +262,7 @@ private function getCorrectnessIcon($correctness): string $icon_name = 'standard/icon_not_ok.svg'; $label = $this->lng->txt("answer_is_wrong"); if ($correctness === 'correct') { - $icon_name = 'icon_ok.svg'; + $icon_name = 'standard/icon_ok.svg'; $label = $this->lng->txt("answer_is_right"); } $path = ilUtil::getImagePath($icon_name); diff --git a/Services/Contact/classes/class.ilMailSearchGUI.php b/Services/Contact/classes/class.ilMailSearchGUI.php index aabb83475b16..f4d7003762c4 100644 --- a/Services/Contact/classes/class.ilMailSearchGUI.php +++ b/Services/Contact/classes/class.ilMailSearchGUI.php @@ -583,13 +583,7 @@ protected function addPermission(array $a_obj_ids): void $a_obj_ids = [$a_obj_ids]; } - $existing = $this->wsp_access_handler->getPermissions($this->wsp_node_id); - $added = false; - foreach ($a_obj_ids as $object_id) { - if (!in_array($object_id, $existing, true)) { - $added = $this->wsp_access_handler->addPermission($this->wsp_node_id, $object_id); - } - } + $added = $this->wsp_access_handler->addMissingPermissionForObjects($this->wsp_node_id, $a_obj_ids); if ($added) { $this->tpl->setOnScreenMessage('success', $this->lng->txt('wsp_share_success'), true); diff --git a/Services/Contact/classes/class.ilMailSearchObjectGUI.php b/Services/Contact/classes/class.ilMailSearchObjectGUI.php index a090a9e026e9..70481fdd2d05 100644 --- a/Services/Contact/classes/class.ilMailSearchObjectGUI.php +++ b/Services/Contact/classes/class.ilMailSearchObjectGUI.php @@ -126,13 +126,7 @@ protected function getRequestValue(string $key, \ILIAS\Refinery\Transformation $ */ protected function addPermission(array $a_obj_ids): void { - $existing = $this->wsp_access_handler->getPermissions($this->wsp_node_id); - $added = false; - foreach ($a_obj_ids as $object_id) { - if (!in_array($object_id, $existing, true)) { - $added = $this->wsp_access_handler->addPermission($this->wsp_node_id, $object_id); - } - } + $added = $this->wsp_access_handler->addMissingPermissionForObjects($this->wsp_node_id, $a_obj_ids); if ($added) { $this->tpl->setOnScreenMessage('success', $this->lng->txt('wsp_share_success'), true); diff --git a/Services/Form/js/Form.js b/Services/Form/js/Form.js index 96d05353644c..d0822759fe32 100644 --- a/Services/Form/js/Form.js +++ b/Services/Form/js/Form.js @@ -14,10 +14,6 @@ * ******************************************************************** */ -import terser from '@rollup/plugin-terser'; -import copyright from '../../../../../CI/Copyright-Checker/copyright'; -import preserveCopyright from '../../../../../CI/Copyright-Checker/preserveCopyright'; - il.Form = { duration: 150, @@ -440,6 +436,6 @@ il.Form = { il.Util.addOnLoad(il.Form.init); // see #27281 -$(document).on('dp.show', function(event) { +$(document).on('dp.show', (event) => { il.UI.page.fit($('.bootstrap-datetimepicker-widget')); -}); \ No newline at end of file +}); diff --git a/Services/Object/classes/CommonSettings/class.ilObjectCommonSettingFormAdapter.php b/Services/Object/classes/CommonSettings/class.ilObjectCommonSettingFormAdapter.php index 1c7e02ac9522..a5ea1d0e9bfd 100644 --- a/Services/Object/classes/CommonSettings/class.ilObjectCommonSettingFormAdapter.php +++ b/Services/Object/classes/CommonSettings/class.ilObjectCommonSettingFormAdapter.php @@ -19,6 +19,10 @@ declare(strict_types=1); use ILIAS\FileUpload\FileUpload; +use ILIAS\FileUpload\DTO\UploadResult; +use ILIAS\ResourceStorage\Services as ResourceStorageServices; +use ILIAS\Object\Properties\CoreProperties\TileImage\ilObjectTileImageStakeholder; +use ILIAS\Object\Properties\CoreProperties\TileImage\ilObjectTileImageFlavourDefinition; /** * @@ -30,6 +34,9 @@ class ilObjectCommonSettingFormAdapter implements ilObjectCommonSettingFormAdapt public function __construct( private ilLanguage $language, private FileUpload $upload, + private ResourceStorageServices $storage, + private ilObjectTileImageStakeholder $stakeholder, + private ilObjectTileImageFlavourDefinition $flavour, private ilObjectCommonSettings $common_settings, private ?ilPropertyFormGUI $legacy_form = null ) { @@ -53,7 +60,6 @@ public function saveIcon(): void return; } - $item = $this->legacy_form->getItemByPostVar('icon'); if ($item && $item->getDeletionFlag()) { $this->common_settings->storePropertyIcon( @@ -101,19 +107,28 @@ public function saveTileImage(): void return; } - $file_data = $this->legacy_form->getInput('tile_image'); - if (isset($file_data['tmp_name']) && $file_data['tmp_name'] - && isset($file_data['size']) && $file_data['size'] > 0) { - $file_name_parts = explode('.', $file_data['name']); - $extension = '.' . array_pop($file_name_parts); - $tempfile = ilFileUtils::ilTempnam() . strtolower($extension); - if (!$this->upload->hasBeenProcessed()) { - $this->upload->process(); - } + $this->upload->process(); + $result_array = $this->upload->getResults(); + $result = end($result_array); - rename($file_data['tmp_name'], $tempfile); + if (!($result instanceof UploadResult) || !$result->isOK()) { + return; + } + + if ($item->getValue() === null || $item->getValue() === '') { + $i = $this->storage->manage()->upload($result, $this->stakeholder); + $this->storage->flavours()->ensure($i, $this->flavour); + $new_tile_image = $this->common_settings->getPropertyTileImage() + ->getTileImage()->withRid($i->serialize()); $this->common_settings->storePropertyTileImage( - $this->common_settings->getPropertyTileImage()->withTempFileName(basename($tempfile)) + $this->common_settings->getPropertyTileImage()->withTileImage($new_tile_image) + ); + } else { + $i = $this->storage->manage()->find($item->getValue()); + $this->storage->manage()->replaceWithUpload( + $i, + $result, + $this->stakeholder ); } } diff --git a/Services/Object/classes/CommonSettings/class.ilObjectCommonSettings.php b/Services/Object/classes/CommonSettings/class.ilObjectCommonSettings.php index 4954931f6c1e..4491c140fc8f 100644 --- a/Services/Object/classes/CommonSettings/class.ilObjectCommonSettings.php +++ b/Services/Object/classes/CommonSettings/class.ilObjectCommonSettings.php @@ -19,6 +19,10 @@ declare(strict_types=1); use ILIAS\FileUpload\FileUpload; +use ILIAS\ResourceStorage\Services as ResourceStorageServices; +use ILIAS\Object\Properties\CoreProperties\TileImage\ilObjectPropertyTileImage; +use ILIAS\Object\Properties\CoreProperties\TileImage\ilObjectTileImageStakeholder; +use ILIAS\Object\Properties\CoreProperties\TileImage\ilObjectTileImageFlavourDefinition; /** * @deprecated 11 This class will be removed with ILIAS 11. Please use @@ -27,10 +31,15 @@ class ilObjectCommonSettings { private ilObjectAdditionalProperties $additional_properties; + private ilObjectCoreProperties $core_properties; public function __construct( private ilLanguage $language, private FileUpload $upload, + private ResourceStorageServices $storage, + private ilObjectTileImageStakeholder $stakeholder, + private ilObjectTileImageFlavourDefinition $flavour, + private ilObjectCorePropertiesRepository $core_properties_repository, private ilObjectAdditionalPropertiesRepository $additional_properties_repository ) { } @@ -63,15 +72,15 @@ public function storePropertyHeaderActionVisibility( public function getPropertyTileImage(): ilObjectPropertyTileImage { - return $this->additional_properties->getPropertyTileImage(); + return $this->core_properties->getPropertyTileImage(); } public function storePropertyTileImage( ilObjectPropertyTileImage $property_tile_image ): void { - $this->additional_properties = $this->additional_properties + $this->core_properties = $this->core_properties ->withPropertyTileImage($property_tile_image); - $this->additional_properties_repository->store($this->additional_properties); + $this->core_properties_repository->store($this->core_properties); } public function getPropertyIcon(): ilObjectPropertyIcon @@ -96,6 +105,16 @@ public function storePropertyIcon( public function legacyForm(ilPropertyFormGUI $form, ilObject $object): ilObjectCommonSettingFormAdapter { $this->additional_properties = $this->additional_properties_repository->getFor($object->getId()); - return new ilObjectCommonSettingFormAdapter($this->language, $this->upload, $this, $form); + $this->core_properties = $this->core_properties_repository->getFor($object->getId()); + + return new ilObjectCommonSettingFormAdapter( + $this->language, + $this->upload, + $this->storage, + $this->stakeholder, + $this->flavour, + $this, + $form + ); } } diff --git a/Services/Object/classes/Properties/AdditionalProperties/Icon/ilObjectPropertyIcon.php b/Services/Object/classes/Properties/AdditionalProperties/Icon/ilObjectPropertyIcon.php index 83f2f7da80bb..d792f86b892e 100644 --- a/Services/Object/classes/Properties/AdditionalProperties/Icon/ilObjectPropertyIcon.php +++ b/Services/Object/classes/Properties/AdditionalProperties/Icon/ilObjectPropertyIcon.php @@ -18,6 +18,7 @@ declare(strict_types=1); +use ILIAS\Object\Properties\ObjectTypeSpecificProperties\ilObjectTypeSpecificPropertyProviders; use ILIAS\UI\Component\Input\Field\Factory as FieldFactory; use ILIAS\UI\Component\Input\Field\File; use ILIAS\Refinery\Factory as Refinery; @@ -36,7 +37,8 @@ class ilObjectPropertyIcon implements ilObjectProperty public function __construct( private bool $custom_icons_enabled, - private ?ilObjectCustomIcon $custom_icon = null + private ?ilObjectCustomIcon $custom_icon = null, + private ?ilObjectTypeSpecificPropertyProviders $object_type_specific_property_providers = null ) { } diff --git a/Services/Object/classes/Properties/AdditionalProperties/TileImage/class.ilObjectTileImage.php b/Services/Object/classes/Properties/AdditionalProperties/TileImage/class.ilObjectTileImage.php deleted file mode 100644 index 56f547efbdf0..000000000000 --- a/Services/Object/classes/Properties/AdditionalProperties/TileImage/class.ilObjectTileImage.php +++ /dev/null @@ -1,212 +0,0 @@ -image_converter = $DIC->fileConverters()->legacyImages(); - } - - public function getExtension(): string - { - if ($this->ext === '') { - $this->ext = ilContainer::_lookupContainerSetting($this->object_id, 'tile_image'); - } - return $this->ext; - } - - public function copy(int $target_obj_id): void - { - if (!$this->exists()) { - ilContainer::_deleteContainerSettings($target_obj_id, 'tile_image'); - return; - } - - try { - $this->filesystem->copy( - $this->getRelativePath(), - preg_replace( - '/(' . "tile_image_" . ')(\d*)\/(.*)$/', - '${1}' . $target_obj_id . '/${3}', - $this->getRelativePath() - ) - ); - - ilContainer::_writeContainerSetting($target_obj_id, 'tile_image', $this->getExtension()); - } catch (Exception $e) { - ilContainer::_deleteContainerSettings($target_obj_id, 'tile_image'); - } - } - - public function delete(): void - { - if ($this->filesystem->hasDir($this->getRelativeDirectory())) { - try { - $this->filesystem->deleteDir($this->getRelativeDirectory()); - } catch (Exception $e) { - } - } - - ilContainer::_deleteContainerSettings($this->object_id, 'tile_image'); - } - - public function saveFromTempFileName(string $tempfile_name): void - { - $this->createDirectory(); - - $relative_path = $this->getRelativePath(); - if ($this->filesystem->has($relative_path)) { - $this->filesystem->delete($relative_path); - } - - $this->ext = pathinfo($tempfile_name, PATHINFO_EXTENSION); - - rename(ilFileUtils::getDataDir() . '/temp/' . $tempfile_name, $this->getFullPath()); - - $this->image_converter->croppedSquare( - $this->getFullPath(), - $this->getFullPath(), - self::TILE_IMAGE_SIZE, // I suggest to use a constant here, in the old code it was the min length of either height or width of the original image which can be huge... - ImageOutputOptions::FORMAT_KEEP, - 70 - ); - - $this->persistImageState(); - } - - protected function persistImageState(): void - { - if ($this->filesystem->has($this->getRelativePath())) { - ilContainer::_writeContainerSetting($this->object_id, 'tile_image', $this->ext); - } else { - ilContainer::_deleteContainerSettings($this->object_id, 'tile_image'); - } - } - - /** - * @throws IOException - */ - protected function createDirectory(): void - { - $this->filesystem->createDir($this->getRelativeDirectory()); - } - - public function getRelativeDirectory(): string - { - return implode( - DIRECTORY_SEPARATOR, - [ - 'obj_data', - 'tile_image', - 'tile_image_' . $this->object_id - ] - ); - } - - protected function getFileName(): string - { - return 'tile_image.' . $this->getExtension(); - } - - protected function getRelativePath(): string - { - return implode( - DIRECTORY_SEPARATOR, - [ - $this->getRelativeDirectory(), - $this->getFileName() - ] - ); - } - - public function exists(): bool - { - if (!ilContainer::_lookupContainerSetting($this->object_id, 'tile_image', '0')) { - return false; - } - - return $this->filesystem->has($this->getRelativePath()); - } - - public function getFullPath(): string - { - // TODO: Currently there is no option to get the relative base directory of a filesystem - return implode( - DIRECTORY_SEPARATOR, - [ - ilFileUtils::getWebspaceDir(), - $this->getRelativePath() - ] - ); - } - - public function createFromImportDir(string $source_dir, string $ext): void - { - $target_dir = implode( - DIRECTORY_SEPARATOR, - [ - ilFileUtils::getWebspaceDir(), - $this->getRelativeDirectory() - ] - ); - $sourceFS = LegacyPathHelper::deriveFilesystemFrom($source_dir); - $targetFS = LegacyPathHelper::deriveFilesystemFrom($target_dir); - - $sourceDir = LegacyPathHelper::createRelativePath($source_dir); - $targetDir = LegacyPathHelper::createRelativePath($target_dir); - - - $sourceList = $sourceFS->listContents($sourceDir, true); - - foreach ($sourceList as $item) { - if ($item->isDir()) { - continue; - } - try { - $itemPath = $targetDir . '/' . substr($item->getPath(), strlen($sourceDir)); - $stream = $sourceFS->readStream($item->getPath()); - $targetFS->writeStream($itemPath, $stream); - } catch (FileAlreadyExistsException $e) { - // Do nothing with that type of exception - } - } - - ilContainer::_writeContainerSetting($this->object_id, 'tile_image', $ext); - } -} diff --git a/Services/Object/classes/Properties/AdditionalProperties/TileImage/class.ilObjectTileImageUploadHandlerGUI.php b/Services/Object/classes/Properties/AdditionalProperties/TileImage/class.ilObjectTileImageUploadHandlerGUI.php deleted file mode 100644 index 05f0ce11dc65..000000000000 --- a/Services/Object/classes/Properties/AdditionalProperties/TileImage/class.ilObjectTileImageUploadHandlerGUI.php +++ /dev/null @@ -1,153 +0,0 @@ - - */ -class ilObjectTileImageUploadHandlerGUI extends AbstractCtrlAwareUploadHandler implements ilCtrlBaseClassInterface -{ - use ilObjectPropertiesUploadSecurityFunctionsTrait; - - protected ilLanguage $language; - protected bool $has_access = false; - - public function __construct( - protected ?ilObjectTileImage $tile_image = null - ) { - /** @var ILIAS\DI\Container $DIC */ - global $DIC; - $this->language = $DIC->language(); - - $ref_id = null; - if ($DIC->http()->wrapper()->query()->has('ref_id')) { - $transformation = $DIC->refinery()->kindlyTo()->int(); - $ref_id = $DIC->http()->wrapper()->query()->retrieve('ref_id', $transformation); - } - - $this->has_access = $this->getAccess( - $ref_id, - $DIC->access() - ); - - $DIC->ctrl()->setParameterByClass(self::class, 'ref_id', $ref_id); - - parent::__construct(); - } - - /** - * @inheritDoc - */ - protected function getUploadResult(): HandlerResult - { - $tempfile = ''; - if ($this->has_access === false) { - return $this->getAccessFailureResult( - $this->getFileIdentifierParameterName(), - $tempfile, - $this->language - ); - } - - $this->upload->process(); - - $result_array = $this->upload->getResults(); - $result = end($result_array); - - if ($result instanceof UploadResult - && in_array($result->getMimeType(), ilObjectPropertyTileImage::SUPPORTED_MIME_TYPES) - && $result->isOK()) { - $status = HandlerResult::STATUS_OK; - $message = 'Upload ok'; - $tempfile = $this->getTempFileWithExtension($result->getName()); - rename($result->getPath(), $tempfile); - } else { - $status = HandlerResult::STATUS_FAILED; - $message = $result->getStatus()->getMessage(); - } - - return new BasicHandlerResult( - $this->getFileIdentifierParameterName(), - $status, - basename($tempfile), - $message - ); - } - - protected function getRemoveResult(string $file_name): HandlerResult - { - if ($this->has_access === false) { - return $this->getAccessFailureResult( - $this->getFileIdentifierParameterName(), - $file_name, - $this->language - ); - } - - return new BasicHandlerResult( - $this->getFileIdentifierParameterName(), - HandlerResult::STATUS_OK, - $file_name, - 'There is nothing to do here.' - ); - } - - public function getInfoResult(string $file_name): ?FileInfoResult - { - if ($this->has_access === false) { - return null; - } - $file_path = $this->tile_image->getFullPath(); - - $extension = '.' . strtolower($this->tile_image->getExtension()); - $mimetype_map = MimeType::getExt2MimeMap(); - - return new BasicFileInfoResult( - $this->getFileIdentifierParameterName(), - 'tile_image', - $this->language->txt('obj_tile_image'), - filesize($file_path), - $mimetype_map[$extension] - ); - } - - /** - * @return \ILIAS\FileUpload\Handler\BasicFileInfoResult[] - */ - public function getInfoForExistingFiles(array $file_names): array - { - return [$this->getInfoResult('tile_image')]; - } - - protected function getTempFileWithExtension($upload_file_name): string - { - $file_name_parts = explode('.', $upload_file_name); - $extension = '.' . array_pop($file_name_parts); - return ilFileUtils::ilTempnam() . strtolower($extension); - } -} diff --git a/Services/Object/classes/Properties/AdditionalProperties/ilObjectAdditionalPropertiesLegacyRepository.php b/Services/Object/classes/Properties/AdditionalProperties/ilObjectAdditionalPropertiesLegacyRepository.php index c63fb72beb7b..c768f28b07dc 100644 --- a/Services/Object/classes/Properties/AdditionalProperties/ilObjectAdditionalPropertiesLegacyRepository.php +++ b/Services/Object/classes/Properties/AdditionalProperties/ilObjectAdditionalPropertiesLegacyRepository.php @@ -1,4 +1,5 @@ getDefaultAdditionalProperties(); } + $type = ilObject::_lookupType($object_id); + $object_type_specific_properties = $this->object_type_specific_properties_factory->getForObjectTypeString($type); + $providers = null; + if ($object_type_specific_properties !== null) { + $providers = $object_type_specific_properties->getProviders(); + } + return new ilObjectAdditionalProperties( new ilObjectPropertyTitleAndIconVisibility($this->getTitleAndIconVisibility($object_id)), new ilObjectPropertyHeaderActionVisibility($this->getHeaderActionVisibility($object_id)), new ilObjectPropertyInfoTabVisibility($this->getInfoTabVisibility($object_id)), - new ilObjectPropertyTileImage( - new ilObjectTileImage( - $this->filesystem, - $this->upload, - $object_id - ) - ), new ilObjectPropertyIcon( $this->areCustomIconsEnabled(), $this->custom_icon_factory->getByObjId($object_id), - $this->areCustomIconsEnabled() + $providers ), $object_id ); @@ -88,10 +87,6 @@ public function store(ilObjectAdditionalProperties $properties): ilObjectAdditio ); } - if ($properties->wasPropertyTileImageUpdated()) { - $this->storeTileImage($properties->getPropertyTileImage()); - } - if ($properties->wasPropertyIconUpdated()) { $this->storeIcon($properties->getPropertyIcon()); } @@ -105,7 +100,6 @@ private function getDefaultAdditionalProperties(): ilObjectAdditionalProperties new ilObjectPropertyTitleAndIconVisibility(), new ilObjectPropertyHeaderActionVisibility(), new ilObjectPropertyInfoTabVisibility(), - new ilObjectPropertyTileImage(), new ilObjectPropertyIcon( $this->areCustomIconsEnabled() ) @@ -157,18 +151,6 @@ private function storeInfoTabVisibility(int $object_id, bool $visibility): void ); } - private function storeTileImage(ilObjectPropertyTileImage $property_tile_image): void - { - if ($property_tile_image->getDeletedFlag() === true) { - $property_tile_image->getTileImage()->delete(); - } - if ($property_tile_image->getTempFileName() !== null) { - $property_tile_image->getTileImage()->saveFromTempFileName( - $property_tile_image->getTempFileName() - ); - } - } - private function areCustomIconsEnabled(): bool { return (bool) ilSetting::_lookupValue('common', 'custom_icons'); diff --git a/Services/Object/classes/Properties/AdditionalProperties/ilObjectAdditonalProperties.php b/Services/Object/classes/Properties/AdditionalProperties/ilObjectAdditonalProperties.php index cc8b0abe74a6..5e5c6f522938 100644 --- a/Services/Object/classes/Properties/AdditionalProperties/ilObjectAdditonalProperties.php +++ b/Services/Object/classes/Properties/AdditionalProperties/ilObjectAdditonalProperties.php @@ -26,14 +26,12 @@ class ilObjectAdditionalProperties private bool $property_title_and_icon_visibility_updated = false; private bool $property_header_action_visibility_updated = false; private bool $property_info_tab_visibility_updated = false; - private bool $property_tile_image_updated = false; private bool $property_icon_updated = false; public function __construct( private ilObjectPropertyTitleAndIconVisibility $property_title_and_icon_visibility, private ilObjectPropertyHeaderActionVisibility $property_header_action_visibility, private ilObjectPropertyInfoTabVisibility $property_info_tab_visibility, - private ilObjectPropertyTileImage $property_tile_image, private ilObjectPropertyIcon $property_icon, private ?int $object_id = null ) { @@ -98,24 +96,6 @@ public function withPropertyInfoTabVisibility(ilObjectPropertyInfoTabVisibility return $clone; } - public function getPropertyTileImage(): ilObjectProperty - { - return $this->property_tile_image; - } - - public function wasPropertyTileImageUpdated(): bool - { - return $this->property_tile_image_updated; - } - - public function withPropertyTileImage(ilObjectPropertyTileImage $property_tile_image): self - { - $clone = clone $this; - $clone->property_tile_image = $property_tile_image; - $clone->property_tile_image_updated = true; - return $clone; - } - public function getPropertyIcon(): ilObjectProperty { return $this->property_icon; @@ -141,7 +121,6 @@ public function withResetUpdatedFlags(): self $clone->property_header_action_visibility_updated = false; $clone->property_info_tab_visibility_updated = false; $clone->property_icon_updated = false; - $clone->property_tile_image_updated = false; return $clone; } } diff --git a/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImage.php b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImage.php new file mode 100644 index 000000000000..9b554269b549 --- /dev/null +++ b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImage.php @@ -0,0 +1,204 @@ +rid; + } + + public function withRid(?string $rid): self + { + $clone = clone $this; + $clone->rid = $rid; + return $clone; + } + + public function getImage(): Image + { + if ($this->object_type_specific_property_providers !== null && + ( + $specific_tile_image = $this->object_type_specific_property_providers->getObjectTypeSpecificTileImage( + $this->object_id, + $this->image_factory, + $this->storage_services + ) + ) !== null) { + return $specific_tile_image; + } + + if ($this->rid !== null + && $this->rid !== '' + && ($resource = $this->storage_services->manage()->find($this->rid)) !== null + ) { + return $this->getImageFromIRSS($resource); + } + + if ($this->exists()) { + return $this->image_factory->responsive($this->getFullPath(), ''); + } + + $path = \ilUtil::getImagePath('cont_tile/cont_tile_default_' . $this->obj_type . '.svg'); + if (is_file($path)) { + return $this->image_factory->responsive($path, ''); + } + return $this->image_factory->responsive(\ilUtil::getImagePath('cont_tile/cont_tile_default.svg'), ''); + } + + private function getImageFromIRSS(ResourceIdentification $resource): Image + { + $flavour = $this->storage_services->flavours()->get($resource, $this->flavour_definition); + $urls = $this->storage_services->consume()->flavourUrls($flavour)->getURLsAsArray(); + + $available_sizes = $this->flavour_definition->getSizes(); + array_pop($available_sizes); + + $image = $this->image_factory->responsive($urls[count($available_sizes)], ''); + return array_reduce( + $available_sizes, + function ($carry, $size) use ($urls) { + $image = $carry['image']->withAdditionalHighResSource($urls[$carry['counter']], $size / 2); + $counter = ++$carry['counter']; + return [ + 'image' => $image, + 'counter' => $counter + ]; + }, + ['image' => $image, 'counter' => 0] + )['image']; + } + + /** + * + * @deprecated 11: This is only here for the Legacy Input and will be removed + * with ILIAS 11. + */ + public function getSrcUrlForLegacyForm(): string + { + if ($this->rid !== null && $this->rid !== '') { + $resource = $this->storage_services->manage()->find($this->rid); + if ($resource === null) { + return ''; + } + + $flavour = $this->storage_services->flavours()->get($resource, $this->flavour_definition); + $urls = $this->storage_services->consume()->flavourUrls($flavour)->getURLsAsArray(false); + + return array_pop($urls); + } + + if (!$this->exists()) { + return ''; + } + return $this->getFullPath(); + } + + public function deleteLegacyTileImage(): void + { + if ($this->exists()) { + unlink(ILIAS_ABSOLUTE_PATH . DIRECTORY_SEPARATOR . $this->getFullPath()); + rmdir(dirname(ILIAS_ABSOLUTE_PATH . DIRECTORY_SEPARATOR . $this->getFullPath())); + \ilContainer::_deleteContainerSettings($this->object_id, 'tile_image'); + } + } + + public function cloneFor(int $new_object_id): self + { + $clone = clone $this; + $clone->object_id = $new_object_id; + + if ($this->rid !== null) { + $i = $this->storage_services->manage()->clone($this->rid); + $clone->rid = $i->serialize(); + } + + return $clone; + } + + private function exists(): bool + { + if (!\ilContainer::_lookupContainerSetting($this->object_id, 'tile_image', '0')) { + return false; + } + + return is_file($this->getFullPath()); + } + + private function getFullPath(): string + { + if ($this->ext === '') { + $this->ext = \ilContainer::_lookupContainerSetting($this->object_id, 'tile_image'); + } + + return implode( + DIRECTORY_SEPARATOR, + [ + \ilFileUtils::getWebspaceDir(), + 'obj_data', + 'tile_image', + 'tile_image_' . $this->object_id, + 'tile_image.' . $this->ext + ] + ); + } + + public function createFromImportDir(string $source_dir): void + { + $sourceFS = LegacyPathHelper::deriveFilesystemFrom($source_dir); + $sourceDir = LegacyPathHelper::createRelativePath($source_dir); + $sourceList = $sourceFS->listContents($sourceDir, true); + + foreach ($sourceList as $item) { + if ($item->isDir()) { + continue; + } + + $path = $source_dir . DIRECTORY_SEPARATOR . basename($item->getPath()); + $stream = new Stream(fopen($path, 'r')); + $i = $this->storage_services->manage()->stream($stream, $this->storage_stakeholder, 'Tile Image'); + $this->rid = $i->serialize(); + } + } +} diff --git a/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageFlavourDefinition.php b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageFlavourDefinition.php new file mode 100644 index 000000000000..ff92083db7f2 --- /dev/null +++ b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageFlavourDefinition.php @@ -0,0 +1,80 @@ + 1920, + 'l' => 960, + 'm' => 480, + 's' => 240, + 'xs' => 120 + ]; + + public function __construct( + ) { + } + + public function getId(): string + { + return self::ID; + } + + public function getFlavourMachineId(): string + { + return ilObjectTileImageFlavourMachine::ID; + } + + public function getInternalName(): string + { + return 'object_tile_image'; + } + + public function getVariantName(): ?string + { + return json_encode([ + 'quality' => $this->quality, + 'sizes' => $this->sizes + ]); + } + + public function persist(): bool + { + return true; + } + + public function getSizes(): array + { + return $this->sizes; + } + + public function getQuality(): int + { + return $this->quality; + } +} diff --git a/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageFlavourMachine.php b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageFlavourMachine.php new file mode 100644 index 000000000000..7fc16df474a2 --- /dev/null +++ b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageFlavourMachine.php @@ -0,0 +1,104 @@ +crop = new CropSquare(); + } + + + public function getId(): string + { + return self::ID; + } + + public function canHandleDefinition(FlavourDefinition $definition): bool + { + return $definition instanceof ilObjectTileImageFlavourDefinition; + } + + public function dependsOnEngine(): ?string + { + return GDEngine::class; + } + + public function processStream( + FileInformation $information, + FileStream $stream, + FlavourDefinition $for_definition + ): \Generator { + /** @var ilObjectTileImageFlavourDefinition $for_definition */ + $this->definition = $for_definition; + $this->information = $information; + + $i = 0; + foreach ($for_definition->getSizes() as $size) { + yield new Result( + $for_definition, + $this->cropImage($stream, $size), + $i, + true + ); + $i++; + } + } + + protected function cropImage( + FileStream $stream, + int $size + ) { + $quality = $size <= self::FULL_QUALITY_SIZE_THRESHOLD + ? 100 // we take 100% jpeg quality for small resultions + : $this->definition->getQuality(); + + + return $this->crop->processStream( + $this->information, + $stream, + new CropToSquare( + false, + $size, + $quality + ) + )->current()->getStream(); + } +} diff --git a/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageStakeholder.php b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageStakeholder.php new file mode 100644 index 000000000000..e317ee6fbed4 --- /dev/null +++ b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageStakeholder.php @@ -0,0 +1,54 @@ + + */ +class ilObjectTileImageStakeholder extends AbstractResourceStakeholder +{ + private int $default_owner; + + public function __construct() + { + global $DIC; + $this->default_owner = $DIC->isDependencyAvailable('user') + ? $DIC->user()->getId() + : (defined('SYSTEM_USER_ID') ? (int) SYSTEM_USER_ID : 6); + } + + public function setOwner(int $user_id_of_owner): void + { + $this->default_owner = $user_id_of_owner; + } + + public function getId(): string + { + return 'object_tile_image'; + } + + public function getOwnerOfNewResources(): int + { + return $this->default_owner; + } +} diff --git a/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageUploadHandlerGUI.php b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageUploadHandlerGUI.php new file mode 100644 index 000000000000..46cf10879b63 --- /dev/null +++ b/Services/Object/classes/Properties/CoreProperties/TileImage/class.ilObjectTileImageUploadHandlerGUI.php @@ -0,0 +1,177 @@ + + */ +class ilObjectTileImageUploadHandlerGUI extends AbstractCtrlAwareUploadHandler implements \ilCtrlBaseClassInterface +{ + use \ilObjectPropertiesUploadSecurityFunctionsTrait; + + protected \ilLanguage $language; + protected ResourceStorageServices $storage; + protected ilObjectTileImageStakeholder $stakeholder; + protected ilObjectTileImageFlavourDefinition $flavour; + + protected ?ResourceIdentification $rid = null; + protected bool $has_access = false; + + public function __construct( + protected ?ilObjectTileImage $tile_image = null + ) { + /** @var \ILIAS\DI\Container $DIC */ + global $DIC; + $this->language = $DIC->language(); + + $ref_id = null; + if ($DIC->http()->wrapper()->query()->has('ref_id')) { + $transformation = $DIC->refinery()->kindlyTo()->int(); + $ref_id = $DIC->http()->wrapper()->query()->retrieve('ref_id', $transformation); + } + + $this->has_access = $this->getAccess( + $ref_id, + $DIC->access() + ); + + if ($DIC->http()->wrapper()->post()->has('rid')) { + $id = $DIC->http()->wrapper()->post()->retrieve( + 'rid', + $DIC->refinery()->to()->string() + ); + $this->rid = $DIC->resourceStorage()->manage()->find($id); + } + + $DIC->ctrl()->setParameterByClass(self::class, 'ref_id', $ref_id); + + $this->storage = $DIC->resourceStorage(); + $this->stakeholder = new ilObjectTileImageStakeholder(); + $this->flavour = new ilObjectTileImageFlavourDefinition(); + + parent::__construct(); + } + + /** + * @inheritDoc + */ + protected function getUploadResult(): HandlerResult + { + $this->upload->process(); + + $result_array = $this->upload->getResults(); + $result = end($result_array); + + if (!($result instanceof UploadResult) || !$result->isOK()) { + return new BasicHandlerResult( + $this->getFileIdentifierParameterName(), + HandlerResult::STATUS_FAILED, + '', + $result->getStatus()->getMessage() + ); + } + + $status = HandlerResult::STATUS_OK; + $message = "file upload OK"; + if ($this->rid === null) { + $i = $this->storage->manage()->upload($result, $this->stakeholder); + } else { + $i = $this->rid; + $this->storage->manage()->replaceWithUpload( + $i, + $result, + $this->stakeholder + ); + } + + $this->storage->flavours()->ensure($i, $this->flavour); + + return new BasicHandlerResult( + $this->getFileIdentifierParameterName(), + $status, + $i->serialize(), + $message + ); + } + + protected function getRemoveResult(string $identifier): HandlerResult + { + if ($this->has_access === false) { + return $this->getAccessFailureResult( + $this->getFileIdentifierParameterName(), + $identifier, + $this->language + ); + } + + return new BasicHandlerResult( + $this->getFileIdentifierParameterName(), + HandlerResult::STATUS_OK, + $identifier, + "We just don't do anything here." + ); + } + + public function getInfoResult(string $identifier): ?FileInfoResult + { + if (null !== ($id = $this->storage->manage()->find($identifier))) { + $revision = $this->storage->manage()->getCurrentRevision($id)->getInformation(); + $title = $revision->getTitle(); + $size = $revision->getSize(); + $mime = $revision->getMimeType(); + } else { + $title = $mime = 'unknown'; + $size = 0; + } + + return new BasicFileInfoResult( + $this->getFileIdentifierParameterName(), + $identifier, + $title, + $size, + $mime + ); + } + + /** + * @return \ILIAS\FileUpload\Handler\BasicFileInfoResult[] + */ + public function getInfoForExistingFiles(array $file_ids): array + { + $info_results = []; + foreach ($file_ids as $identifier) { + $info_results[] = $this->getInfoResult($identifier); + } + + return $info_results; + } +} diff --git a/Services/Object/classes/Properties/AdditionalProperties/TileImage/ilObjectPropertyTileImage.php b/Services/Object/classes/Properties/CoreProperties/TileImage/ilObjectPropertyTileImage.php similarity index 61% rename from Services/Object/classes/Properties/AdditionalProperties/TileImage/ilObjectPropertyTileImage.php rename to Services/Object/classes/Properties/CoreProperties/TileImage/ilObjectPropertyTileImage.php index b43b2eb159d5..7b6dd123ed72 100644 --- a/Services/Object/classes/Properties/AdditionalProperties/TileImage/ilObjectPropertyTileImage.php +++ b/Services/Object/classes/Properties/CoreProperties/TileImage/ilObjectPropertyTileImage.php @@ -18,6 +18,8 @@ declare(strict_types=1); +namespace ILIAS\Object\Properties\CoreProperties\TileImage; + use ILIAS\UI\Component\Input\Field\File; use ILIAS\UI\Component\Input\Field\Factory as FieldFactory; use ILIAS\Refinery\Factory as Refinery; @@ -26,7 +28,7 @@ /** * @author Stephan Kergomard */ -class ilObjectPropertyTileImage implements ilObjectProperty +class ilObjectPropertyTileImage implements \ilObjectProperty { public const SUPPORTED_MIME_TYPES = [MimeType::IMAGE__PNG, MimeType::IMAGE__JPEG]; private const SUPPORTED_FILE_EXTENSIONS = ['png', 'jpg', 'jpeg']; @@ -35,7 +37,6 @@ class ilObjectPropertyTileImage implements ilObjectProperty protected const INPUT_BYLINE = 'obj_tile_image_info'; private bool $deleted_flag = false; - private ?string $temp_file_name = null; public function __construct( private ?ilObjectTileImage $tile_image = null @@ -47,27 +48,22 @@ public function getTileImage(): ?ilObjectTileImage return $this->tile_image; } - public function getDeletedFlag(): bool - { - return $this->deleted_flag; - } - - public function withDeletedFlag(): self + public function withTileImage(ilObjectTileImage $tile_image): self { $clone = clone $this; - $clone->deleted_flag = true; + $clone->tile_image = $tile_image; return $clone; } - public function getTempFileName(): ?string + public function getDeletedFlag(): bool { - return $this->temp_file_name; + return $this->deleted_flag; } - public function withTempFileName(string $name): self + public function withDeletedFlag(): self { $clone = clone $this; - $clone->temp_file_name = $name; + $clone->deleted_flag = true; return $clone; } @@ -77,50 +73,44 @@ public function toForm( Refinery $refinery ): File { $trafo = $refinery->custom()->transformation( - function ($v): ?ilObjectProperty { - $property_tile_image = new ilObjectPropertyTileImage( - $this->tile_image - ); - - if (count($v) > 0 && $v[0] !== 'tile_image') { - return $property_tile_image - ->withTempFileName($v[0]); + function ($v): ?\ilObjectProperty { + if ($v === null || $v === []) { + return $this->withDeletedFlag(); } - if (count($v) === 0 && $this->tile_image->exists()) { - return $property_tile_image - ->withDeletedFlag(); + if (count($v) > 0 && $v[0] === 'tile_image') { + return $this; } - return $property_tile_image; + return $this->withTileImage( + $this->tile_image->withRid($v[0]) + ); } ); $tile_image = $field_factory - ->file(new ilObjectTileImageUploadHandlerGUI($this->tile_image), $language->txt(self::INPUT_LABEL), $language->txt(self::INPUT_BYLINE)) + ->file(new \ilObjectTileImageUploadHandlerGUI($this->tile_image), $language->txt(self::INPUT_LABEL), $language->txt(self::INPUT_BYLINE)) ->withAcceptedMimeTypes(self::SUPPORTED_MIME_TYPES) - ->withMaxFileSize((int) ilFileUtils::getUploadSizeLimitBytes()) + ->withMaxFileSize((int) \ilFileUtils::getUploadSizeLimitBytes()) ->withAdditionalTransformation($trafo); - if (!$this->tile_image->exists()) { + if ($this->tile_image->getRid() === null + || $this->tile_image->getRid() === '') { return $tile_image; } - return $tile_image->withValue(['tile_image']); + return $tile_image->withValue([$this->tile_image->getRid()]); } public function toLegacyForm( \ilLanguage $language - ): ilImageFileInputGUI { - $timg = new ilImageFileInputGUI($language->txt(self::INPUT_LABEL), 'tile_image'); + ): \ilImageFileInputGUI { + $timg = new \ilImageFileInputGUI($language->txt(self::INPUT_LABEL), 'tile_image'); $timg->setInfo($language->txt(self::INPUT_BYLINE)); $timg->setSuffixes(self::SUPPORTED_FILE_EXTENSIONS); $timg->setUseCache(false); - if ($this->tile_image?->exists()) { - $timg->setImage($this->tile_image->getFullPath()); - } else { - $timg->setImage(''); - } + $timg->setImage($this->tile_image->getSrcUrlForLegacyForm()); + $timg->setValue($this->tile_image->getRid() ?? ''); return $timg; } } diff --git a/Services/Object/classes/Properties/CoreProperties/ilObjectCoreProperties.php b/Services/Object/classes/Properties/CoreProperties/ilObjectCoreProperties.php index 14070722b326..56b74e92b313 100644 --- a/Services/Object/classes/Properties/CoreProperties/ilObjectCoreProperties.php +++ b/Services/Object/classes/Properties/CoreProperties/ilObjectCoreProperties.php @@ -18,6 +18,8 @@ declare(strict_types=1); +use ILIAS\Object\Properties\CoreProperties\TileImage\ilObjectPropertyTileImage; + /** * @author Stephan Kergomard */ @@ -45,6 +47,7 @@ class ilObjectCoreProperties public function __construct( private ilObjectPropertyTitleAndDescription $property_title_and_description, private ilObjectPropertyIsOnline $property_is_online, + private ilObjectPropertyTileImage $property_tile_image, array $data = null ) { if ($this->checkDataArray($data)) { @@ -120,6 +123,18 @@ public function withPropertyIsOnline(ilObjectPropertyIsOnline $property_is_onlin return $clone; } + public function getPropertyTileImage(): ilObjectPropertyTileImage + { + return $this->property_tile_image; + } + + public function withPropertyTileImage(ilObjectPropertyTileImage $property_tile_image): self + { + $clone = clone $this; + $clone->property_tile_image = $property_tile_image; + return $clone; + } + /** * diff --git a/Services/Object/classes/Properties/CoreProperties/ilObjectCorePropertiesCachedRepository.php b/Services/Object/classes/Properties/CoreProperties/ilObjectCorePropertiesCachedRepository.php new file mode 100644 index 000000000000..657eaa7e7038 --- /dev/null +++ b/Services/Object/classes/Properties/CoreProperties/ilObjectCorePropertiesCachedRepository.php @@ -0,0 +1,245 @@ +data_cache += $this->retrieveDataForObjectIds($object_ids); + } + + public function resetPreloadedData(): void + { + $this->data_cache = []; + } + + public function getFor(?int $object_id): ilObjectCoreProperties + { + if ($object_id === null + || $object_id === 0) { + return $this->getDefaultCoreProperties(); + } + + if (!isset($this->data_cache[$object_id])) { + $this->data_cache[$object_id] = $this->retrieveDataForObjectId($object_id); + } + + $data = $this->data_cache[$object_id]; + + $object_type_specific_properties = $this->object_type_specific_properties_factory->getForObjectTypeString($data['type']); + $providers = null; + $modifications = null; + if ($object_type_specific_properties !== null) { + $providers = $object_type_specific_properties->getProviders(); + $modifications = $object_type_specific_properties->getModifications(); + } + return new ilObjectCoreProperties( + new ilObjectPropertyTitleAndDescription( + array_shift($data), + array_shift($data), + $modifications + ), + new ilObjectPropertyIsOnline(array_shift($data)), + new ilObjectPropertyTileImage( + new ilObjectTileImage( + $object_id, + $data['type'], + array_shift($data), + $this->ui->factory()->image(), + $this->storage_services, + $this->storage_stakeholder, + $this->flavour_definition, + $providers + ) + ), + $data + ); + } + + public function store(ilObjectCoreProperties $properties): ilObjectCoreProperties + { + if ($properties->getObjectId() === null || $properties->getOwner() === null) { + throw new \Exception('The current configuration cannot be saved.'); + } + + if ($properties->getPropertyTileImage()->getDeletedFlag()) { + $this->deleteOldTileImage($properties->getPropertyTileImage()->getTileImage()); + $properties = $properties->withPropertyTileImage( + $properties->getPropertyTileImage()->withTileImage( + $properties->getPropertyTileImage()->getTileImage()->withRid(null) + ) + ); + /** + * Remove with ILIAS10 + */ + $properties->getPropertyTileImage()->getTileImage()->deleteLegacyTileImage(); + } + + /** + * Remove with ILIAS10 + */ + if ($properties->getPropertyTileImage()->getTileImage()->getRid() !== null) { + $properties->getPropertyTileImage()->getTileImage()->deleteLegacyTileImage(); + } + + $where = [ + 'obj_id' => [ilDBConstants::T_INTEGER, $properties->getObjectId()] + ]; + + $storage_array = [ + 'type' => [ilDBConstants::T_TEXT, $properties->getType()], + 'title' => [ilDBConstants::T_TEXT, $properties->getPropertyTitleAndDescription()->getTitle()], + 'description' => [ilDBConstants::T_TEXT, $properties->getPropertyTitleAndDescription()->getDescription()], + 'owner' => [ilDBConstants::T_INTEGER, $properties->getOwner()], + 'create_date' => [ilDBConstants::T_DATETIME, $properties->getCreateDate()->format('Y-m-d H:i:s')], + 'last_update' => [ilDBConstants::T_DATETIME, $properties->getLastUpdateDate()->format('Y-m-d H:i:s')], + 'import_id' => [ilDBConstants::T_TEXT, $properties->getImportId()], + 'offline' => [ilDBConstants::T_INTEGER, (int) !$properties->getPropertyIsOnline()->getIsOnline()], + 'tile_image_rid' => [ilDBConstants::T_TEXT, $properties->getPropertyTileImage()->getTileImage()->getRid()] + ]; + $this->database->update(self::CORE_PROPERTIES_TABLE, $storage_array, $where); + + $this->storeLongDescription($properties->getPropertyTitleAndDescription()->getLongDescription(), $where); + + return $properties; + } + + private function deleteOldTileImage(ilObjectTileImage $tile_image): void + { + if ($tile_image->getRid() === null) { + return; + } + + $i = $this->storage_services->manage()->find($tile_image->getRid()); + if ($i === null) { + return; + } + + $this->storage_services->manage()->remove( + $i, + $this->storage_stakeholder + ); + } + + private function getDefaultCoreProperties(): ilObjectCoreProperties + { + return new ilObjectCoreProperties( + new ilObjectPropertyTitleAndDescription(), + new ilObjectPropertyIsOnline() + ); + } + + /** + * @return array + */ + protected function retrieveDataForObjectId(int $object_id): array + { + $where = 'WHERE obj.obj_id=' . $this->database->quote($object_id, 'integer'); + $data = $this->retrieveDataForWhereClause($where); + + if ($data === []) { + throw new \Exception('The object with the following id does not exist: ' + . (string) $object_id); + } + + return $data[$object_id]; + } + + /** + * @param array $object_ids + */ + protected function retrieveDataForObjectIds(array $object_ids): array + { + $where = 'WHERE ' . $this->database->in('obj.obj_id', $object_ids, false, ilDBConstants::T_INTEGER); + return $this->retrieveDataForWhereClause($where); + } + + protected function retrieveDataForWhereClause(string $where): array + { + $query = 'SELECT ' + . 'obj.obj_id, obj.type, obj.title, obj.description, obj.owner,' . PHP_EOL + . 'obj.create_date, obj.last_update, obj.import_id, obj.offline,' . PHP_EOL + . 'obj.tile_image_rid, descr.description' . PHP_EOL + . 'FROM ' . self::CORE_PROPERTIES_TABLE . ' AS obj' . PHP_EOL + . 'LEFT JOIN ' . self::DESCRIPTION_TABLE . ' AS descr' . PHP_EOL + . 'ON obj.obj_id = descr.obj_id' . PHP_EOL + . $where; + + $statement = $this->database->query($query); + $num_rows = $this->database->numRows($statement); + + if ($num_rows === 0) { + return []; + } + + $data = []; + while ($row = $this->database->fetchAssoc($statement)) { + $data[$row['obj_id']] = [ + 'title' => $row['title'], + 'long_description' => $row['description'] ?? '', + 'is_online' => !((bool) $row['offline']), + 'tile_image_rid' => $row['tile_image_rid'], + 'object_id' => $row['obj_id'], + 'type' => $row['type'], + 'owner' => $row['owner'], + 'import_id' => $row['import_id'], + 'create_date' => new DateTimeImmutable($row['create_date']), + 'update_date' => new DateTimeImmutable($row['last_update']) + ]; + } + + return $data; + } + + protected function storeLongDescription(string $long_description, array $where): void + { + $description_array = [ + 'description' => [ilDBConstants::T_TEXT, $long_description] + ]; + $this->database->update(self::DESCRIPTION_TABLE, $description_array, $where); + } +} diff --git a/Services/Object/classes/Properties/CoreProperties/ilObjectCorePropertiesDatabaseRepository.php b/Services/Object/classes/Properties/CoreProperties/ilObjectCorePropertiesDatabaseRepository.php deleted file mode 100644 index 195c7b5cfdad..000000000000 --- a/Services/Object/classes/Properties/CoreProperties/ilObjectCorePropertiesDatabaseRepository.php +++ /dev/null @@ -1,147 +0,0 @@ -getDefaultCoreProperties(); - } - - $data = $this->retrieveDataForObjectId($object_id); - return new ilObjectCoreProperties( - new ilObjectPropertyTitleAndDescription(array_shift($data), array_shift($data)), - new ilObjectPropertyIsOnline(array_shift($data)), - $data - ); - } - - public function store(ilObjectCoreProperties $properties): ilObjectCoreProperties - { - if ($properties->getObjectId() === null || $properties->getOwner() === null) { - throw new \Exception('The current configuration cannot be saved.'); - } - - $where = [ - 'obj_id' => [ilDBConstants::T_INTEGER, $properties->getObjectId()] - ]; - - $storage_array = [ - 'type' => [ilDBConstants::T_TEXT, $properties->getType()], - 'title' => [ilDBConstants::T_TEXT, $properties->getPropertyTitleAndDescription()->getTitle()], - 'description' => [ilDBConstants::T_TEXT, $properties->getPropertyTitleAndDescription()->getDescription()], - 'owner' => [ilDBConstants::T_INTEGER, $properties->getOwner()], - 'create_date' => [ilDBConstants::T_DATETIME, $properties->getCreateDate()->format('Y-m-d H:i:s')], - 'last_update' => [ilDBConstants::T_DATETIME, $properties->getLastUpdateDate()->format('Y-m-d H:i:s')], - 'import_id' => [ilDBConstants::T_TEXT, $properties->getImportId()], - 'offline' => [ilDBConstants::T_INTEGER, (int) !$properties->getPropertyIsOnline()->getIsOnline()] - ]; - $this->database->update(self::CORE_PROPERTIES_TABLE, $storage_array, $where); - - $this->storeLongDescription($properties->getPropertyTitleAndDescription()->getLongDescription(), $where); - - return $properties; - } - - private function getDefaultCoreProperties(): ilObjectCoreProperties - { - return new ilObjectCoreProperties( - new ilObjectPropertyTitleAndDescription(), - new ilObjectPropertyIsOnline() - ); - } - - /** - * @return array - */ - protected function retrieveDataForObjectId(int $object_id): array - { - $query = 'SELECT ' - . 'type, title, description, owner, create_date, last_update, import_id, offline' . PHP_EOL - . 'FROM ' . self::CORE_PROPERTIES_TABLE . PHP_EOL - . 'WHERE obj_id=' . $this->database->quote($object_id, 'integer'); - - $statement = $this->database->query($query); - $num_rows = $this->database->numRows($statement); - - if ($num_rows === 0) { - throw new \Exception('The object with the following id does not exist: ' - . (string) $object_id); - } - - if ($num_rows > 1) { - throw new \Exception('There is more than one object with the following id.' - . 'This should very definitely never happen: ' - . (string) $object_id); - } - - $row = $this->database->fetchAssoc($statement); - - $data = [ - 'title' => $row['title'], - 'long_description' => $this->retrieveLongDescriptionForObjectId($object_id), - 'is_online' => !((bool) $row['offline']), - 'object_id' => $object_id, - 'type' => $row['type'], - 'owner' => $row['owner'], - 'import_id' => $row['import_id'], - 'create_date' => new DateTimeImmutable($row['create_date']), - 'update_date' => new DateTimeImmutable($row['last_update']) - ]; - - return $data; - } - - protected function retrieveLongDescriptionForObjectId(int $object_id): string - { - $query = 'SELECT ' - . 'description FROM ' . self::DESCRIPTION_TABLE . PHP_EOL - . 'WHERE obj_id=' . $this->database->quote($object_id, 'integer'); - - $statement = $this->database->query($query); - $num_rows = $this->database->numRows($statement); - - if ($num_rows === 0) { - return ''; - } - - return $this->database->fetchAssoc($statement)['description'] ?? ''; - } - - protected function storeLongDescription(string $long_description, array $where): void - { - $description_array = [ - 'description' => [ilDBConstants::T_TEXT, $long_description] - ]; - $this->database->update(self::DESCRIPTION_TABLE, $description_array, $where); - } -} diff --git a/Services/Object/classes/Properties/CoreProperties/ilObjectPropertyTitleAndDescription.php b/Services/Object/classes/Properties/CoreProperties/ilObjectPropertyTitleAndDescription.php index cb9f3b762ace..aa2556c69d65 100644 --- a/Services/Object/classes/Properties/CoreProperties/ilObjectPropertyTitleAndDescription.php +++ b/Services/Object/classes/Properties/CoreProperties/ilObjectPropertyTitleAndDescription.php @@ -19,6 +19,7 @@ declare(strict_types=1); use ILIAS\UI\Component\Input\Container\Form\FormInput; +use ILIAS\Object\Properties\ObjectTypeSpecificProperties\ilObjectTypeSpecificPropertyModifications; use ILIAS\UI\Component\Input\Field\Factory as FieldFactory; use ILIAS\Refinery\Factory as Refinery; @@ -33,22 +34,30 @@ class ilObjectPropertyTitleAndDescription implements ilObjectProperty public function __construct( private string $title = '', - private string $long_description = '' + private string $long_description = '', + private ?ilObjectTypeSpecificPropertyModifications $object_type_specific_property_modifications = null ) { } public function getTitle(): string { + if ($this->object_type_specific_property_modifications !== null) { + return $this->object_type_specific_property_modifications->modifyTitle($this->title); + } + return $this->title; } public function getDescription(): string { - return substr($this->long_description, 0, ilObject::DESC_LENGTH); + return substr($this->getLongDescription(), 0, ilObject::DESC_LENGTH); } - public function getLongDescription(): string + public function getLongDescription(): ?string { + if ($this->object_type_specific_property_modifications !== null) { + return $this->object_type_specific_property_modifications->modifyDescription($this->long_description); + } return $this->long_description; } diff --git a/Services/Object/classes/Properties/ObjectTypeSpecificProperties/AbstractObjectTypeSpecificProperties.php b/Services/Object/classes/Properties/ObjectTypeSpecificProperties/AbstractObjectTypeSpecificProperties.php new file mode 100644 index 000000000000..cd1fea72c46c --- /dev/null +++ b/Services/Object/classes/Properties/ObjectTypeSpecificProperties/AbstractObjectTypeSpecificProperties.php @@ -0,0 +1,49 @@ +db = $db; + } + + abstract public function getObjectTypeString(): string; + + public function getModifications(): ?ilObjectTypeSpecificPropertyModifications + { + return null; + } + + public function getProviders(): ?ilObjectTypeSpecificPropertyProviders + { + return null; + } + + abstract public function preload(array $object_ids): void; +} diff --git a/Services/Object/classes/Properties/ObjectTypeSpecificProperties/Factory.php b/Services/Object/classes/Properties/ObjectTypeSpecificProperties/Factory.php new file mode 100644 index 000000000000..05b5d0cc9f4f --- /dev/null +++ b/Services/Object/classes/Properties/ObjectTypeSpecificProperties/Factory.php @@ -0,0 +1,42 @@ +properties_array)) { + $class = $this->properties_array[$type]; + $instance = new $class(); + $instance->init($this->db); + return $instance; + } + + return null; + } +} diff --git a/Services/Object/classes/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificPropertiesArtifactObjective.php b/Services/Object/classes/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificPropertiesArtifactObjective.php new file mode 100644 index 000000000000..561ce26cbfc0 --- /dev/null +++ b/Services/Object/classes/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificPropertiesArtifactObjective.php @@ -0,0 +1,54 @@ +getMatchingClassNames(ilObjectTypeSpecificProperties::class) as $object_properties_class) { + /** @var $properties \ILIAS\Object\Properties\ObjectTypeSpecificProperties */ + $properties = new $object_properties_class(); + $object_type = $properties->getObjectTypeString(); + + $object_properties[$object_type] = $object_properties_class; + } + return new ArrayArtifact($object_properties); + } +} diff --git a/Services/Object/classes/Properties/class.ilObjectProperties.php b/Services/Object/classes/Properties/class.ilObjectProperties.php index 56d7596c82b7..dec122a72f8f 100644 --- a/Services/Object/classes/Properties/class.ilObjectProperties.php +++ b/Services/Object/classes/Properties/class.ilObjectProperties.php @@ -18,13 +18,16 @@ declare(strict_types=1); +use ILIAS\Object\Properties\ObjectTypeSpecificProperties\Factory as ObjectTypeSpecificPropertiesFactory; +use ILIAS\Object\Properties\CoreProperties\TileImage\ilObjectPropertyTileImage; + class ilObjectProperties { public function __construct( private ilObjectCoreProperties $core_properties, private ilObjectCorePropertiesRepository $core_properties_repository, private ilObjectAdditionalProperties $additional_properties, - private ilObjectAdditionalPropertiesRepository $additional_properties_repository + private ilObjectAdditionalPropertiesRepository $additional_properties_repository, ) { } @@ -105,16 +108,16 @@ public function storePropertyInfoTabVisibility( ); } - public function getPropertyTileImage(): ilObjectProperty + public function getPropertyTileImage(): ilObjectPropertyTileImage { - return $this->additional_properties->getPropertyTileImage(); + return $this->core_properties->getPropertyTileImage(); } public function storePropertyTileImage( ilObjectPropertyTileImage $property_tile_image ): void { - $this->additional_properties = $this->additional_properties_repository->store( - $this->additional_properties + $this->core_properties = $this->core_properties_repository->store( + $this->core_properties ->withPropertyTileImage($property_tile_image) ); } diff --git a/Services/Object/classes/Properties/class.ilObjectPropertiesAgregator.php b/Services/Object/classes/Properties/class.ilObjectPropertiesAgregator.php index 9686a9cb8375..47ffe6fc0377 100644 --- a/Services/Object/classes/Properties/class.ilObjectPropertiesAgregator.php +++ b/Services/Object/classes/Properties/class.ilObjectPropertiesAgregator.php @@ -1,4 +1,5 @@ additional_properties_repository ); } + + public function preload(array $object_ids): void + { + $this->core_properties_repository->preload($object_ids); + $objects_by_type = []; + foreach($object_ids as $obj_id) { + $type = ilObject::_lookupType($obj_id); + + if (!array_key_exists($type, $objects_by_type)) { + $objects_by_type[$type] = []; + } + $objects_by_type[$type][] = $obj_id; + } + + foreach ($objects_by_type as $type => $obj_ids) { + $this->object_type_specific_properties_factory->getForObjectTypeString($type)->preload($obj_ids); + } + } } diff --git a/Services/Object/classes/Service/class.ilObjectService.php b/Services/Object/classes/Service/ilObjectService.php similarity index 51% rename from Services/Object/classes/Service/class.ilObjectService.php rename to Services/Object/classes/Service/ilObjectService.php index 51424137b74c..32936cc0d7a5 100644 --- a/Services/Object/classes/Service/class.ilObjectService.php +++ b/Services/Object/classes/Service/ilObjectService.php @@ -18,35 +18,18 @@ declare(strict_types=1); -use ILIAS\Filesystem\Filesystem; -use ILIAS\FileUpload\FileUpload; +use ILIAS\Object\ilObjectDIC; class ilObjectService { - public function __construct( - private ilDBInterface $database, - private ilLanguage $language, - private Filesystem $filesystem, - private FileUpload $upload, - private ilObjectCustomIconFactory $custom_icon_factory - ) { - } - /** * * @deprecated 11: This Settings Instance will be removed with ILIAS 11. * Please use ObjectProperties in ilObject. */ - public function commonSettings(): ilObjectCommonSettings + public function commonSettings(): \ilObjectCommonSettings { - return new ilObjectCommonSettings( - $this->language, - $this->upload, - new ilObjectAdditionalPropertiesLegacyRepository( - $this->custom_icon_factory, - $this->filesystem, - $this->upload - ) - ); + $object_dic = ilObjectDIC::dic(); + return $object_dic['common_settings']; } } diff --git a/Services/Object/classes/Setup/class.Agent.php b/Services/Object/classes/Setup/class.Agent.php deleted file mode 100644 index 26a3f045df4d..000000000000 --- a/Services/Object/classes/Setup/class.Agent.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ -class Agent extends Setup\Agent\NullAgent -{ - public function getUpdateObjective(Setup\Config $config = null): Setup\Objective - { - return new \ilDatabaseUpdateStepsExecutedObjective(new ilObjectDBUpdateSteps()); - } - - public function getStatusObjective(Metrics\Storage $storage): Objective - { - return new \ilDatabaseUpdateStepsMetricsCollectedObjective($storage, new ilObjectDBUpdateSteps()); - } -} diff --git a/Services/Object/classes/Setup/class.ilObject9DBUpdateSteps.php b/Services/Object/classes/Setup/class.ilObject9DBUpdateSteps.php new file mode 100644 index 000000000000..da318c8f3332 --- /dev/null +++ b/Services/Object/classes/Setup/class.ilObject9DBUpdateSteps.php @@ -0,0 +1,45 @@ +db = $db; + } + + public function step_1(): void + { + if (!$this->db->tableColumnExists('object_data', 'tile_image_rid')) { + $this->db->addTableColumn( + 'object_data', + 'tile_image_rid', + [ + 'type' => 'text', + 'notnull' => false, + 'length' => 64, + 'default' => '' + ] + ); + } + } +} diff --git a/Services/Object/classes/Setup/class.ilObjectSetupAgent.php b/Services/Object/classes/Setup/class.ilObjectSetupAgent.php new file mode 100644 index 000000000000..c53669b3034c --- /dev/null +++ b/Services/Object/classes/Setup/class.ilObjectSetupAgent.php @@ -0,0 +1,71 @@ + + */ +class ilObjectTileImageMigration implements Migration +{ + protected \ilResourceStorageMigrationHelper $helper; + protected FlavourBuilder $flavour_builder; + protected ilObjectTileImageFlavourDefinition $flavour_definition; + + public function getLabel(): string + { + return "Migration of Tile Images to the Resource Storage Service."; + } + + public function getDefaultAmountOfStepsPerRun(): int + { + return 10000; + } + + public function getPreconditions(Environment $environment): array + { + return \ilResourceStorageMigrationHelper::getPreconditions(); + } + + public function prepare(Environment $environment): void + { + $this->helper = new \ilResourceStorageMigrationHelper( + new ilObjectTileImageStakeholder(), + $environment + ); + $this->flavour_builder = $this->helper->getFlavourBuilder(); + $this->flavour_definition = new ilObjectTileImageFlavourDefinition(); + } + + public function step(Environment $environment): void + { + $query_select = $this->helper->getDatabase()->query(' + SELECT + cs.id, + cs.value AS extension, + o.owner + FROM container_settings AS cs + INNER JOIN object_data AS o + ON cs.id = o.obj_id + WHERE cs.keyword = "tile_image" + LIMIT 1; + '); + $next_record = $this->helper->getDatabase()->fetchObject($query_select); + + $path = $this->getFullPath($next_record->id, $next_record->extension); + + if (is_readable(dirname(dirname($path))) + && (!file_exists(dirname($path)) + || is_readable(dirname($path)) && !file_exists($path))) { + $this->deleteTileImageInfoFromContainerSettings($next_record->id); + return; + } + + $rid = $this->helper->movePathToStorage( + $path, + $next_record->owner + ); + + $this->flavour_builder->get($rid, $this->flavour_definition, true); + + $this->helper->getDatabase()->update( + 'object_data', + ['tile_image_rid' => ['text', $rid->serialize()]], + ['obj_id' => ['integer', $next_record->id],] + ); + + rmdir(dirname($path)); + $this->deleteTileImageInfoFromContainerSettings($next_record->id); + } + + private function getFullPath(int $object_id, string $extension): string + { + return implode( + DIRECTORY_SEPARATOR, + [ + CLIENT_WEB_DIR, + 'obj_data', + 'tile_image', + 'tile_image_' . $object_id, + 'tile_image.' . $extension + ] + ); + } + + private function deleteTileImageInfoFromContainerSettings(int $id): void + { + $query_delete = $this->helper->getDatabase()->queryF(' + DELETE FROM container_settings + WHERE keyword = "tile_image" AND id = %s + ', ['integer'], [$id]); + $this->helper->getDatabase()->execute($query_delete); + } + + public function getRemainingAmountOfSteps(): int + { + $query = $this->helper->getDatabase()->query(' + SELECT + count(container_settings.id) AS amount + FROM container_settings + WHERE container_settings.keyword = "tile_image" + '); + $r = $this->helper->getDatabase()->fetchObject($query); + + return (int) $r->amount; + } +} diff --git a/Services/Object/classes/class.ilObject.php b/Services/Object/classes/class.ilObject.php index 8e24ca07f681..1dd40f7e840b 100755 --- a/Services/Object/classes/class.ilObject.php +++ b/Services/Object/classes/class.ilObject.php @@ -18,6 +18,9 @@ declare(strict_types=1); +use ILIAS\Object\ilObjectDIC; +use ILIAS\DI\UIServices; +use ILIAS\ResourceStorage\Services as ResourceStorageServices; use ILIAS\Filesystem\Filesystem; use ILIAS\FileUpload\FileUpload; @@ -50,6 +53,7 @@ class ilObject protected ilRbacReview $rbac_review; protected ilObjUser $user; protected ilLanguage $lng; + private ilObjectDIC $object_dic; protected bool $call_by_reference; protected int $max_title = self::TITLE_LENGTH; @@ -98,6 +102,7 @@ public function __construct( $this->error = $DIC["ilErr"]; $this->tree = $DIC["tree"]; $this->app_event_handler = $DIC["ilAppEventHandler"]; + $this->object_dic = ilObjectDIC::dic(); $this->call_by_reference = $this->referenced; @@ -132,30 +137,10 @@ public function __construct( } } - private function initializeObjectProperties( - Filesystem $filesystem, - FileUpload $upload, - ilObjectCustomIconFactory $custom_icon_factory - ): ilObjectProperties { - return (new ilObjectPropertiesAgregator( - new ilObjectCorePropertiesDatabaseRepository($this->db), - new ilObjectAdditionalPropertiesLegacyRepository( - $custom_icon_factory, - $filesystem, - $upload - ) - ))->getFor($this->getId()); - } - public function getObjectProperties(): ilObjectProperties { if ($this->object_properties === null) { - global $DIC; - $this->object_properties = $this->initializeObjectProperties( - $DIC->filesystem()->web(), - $DIC->upload(), - $DIC['object.customicons.factory'] - ); + $this->object_properties = $this->object_dic['object_properties']->getFor($this->getId()); } return $this->object_properties; } @@ -422,6 +407,9 @@ final public static function _lookupObjIdByImportId(string $import_id): int return (int) $row->obj_id; } + /** + * @deprecated 11 + */ public function setOfflineStatus(bool $status): void { $property_is_online = $this->getObjectProperties()->getPropertyIsOnline()->withOnline(); diff --git a/Services/Object/classes/class.ilObject2GUI.php b/Services/Object/classes/class.ilObject2GUI.php index f0081d10e427..7eff311cdf15 100644 --- a/Services/Object/classes/class.ilObject2GUI.php +++ b/Services/Object/classes/class.ilObject2GUI.php @@ -54,7 +54,6 @@ abstract class ilObject2GUI extends ilObjectGUI protected ilCtrl $ctrl; protected ilLanguage $lng; protected ilTabsGUI $tabs_gui; - protected ilObjectService $object_service; protected ilFavouritesManager $favourites; protected ilErrorHandling $error; protected ilLocatorGUI $locator; diff --git a/Services/Object/classes/class.ilObjectDataSet.php b/Services/Object/classes/class.ilObjectDataSet.php index c9e1aa549c75..7a13ca2a6da1 100644 --- a/Services/Object/classes/class.ilObjectDataSet.php +++ b/Services/Object/classes/class.ilObjectDataSet.php @@ -1,7 +1,5 @@ storage = $DIC->resourceStorage(); + + $obj_dic = ilObjectDIC::dic(); + $this->object_properties_agregator = $obj_dic['object_properties']; + + parent::__construct(); + } public function getSupportedVersions(): array { return array("4.4.0", "5.1.0", "5.2.0", "5.4.0"); @@ -103,7 +121,6 @@ protected function getTypes(string $entity, string $version): array if ($version == "5.4.0") { return [ "ObjId" => "integer", - "Extension" => "text", "Dir" => "directory" ]; } @@ -193,19 +210,17 @@ public function readData(string $entity, string $version, array $ids): void if ($entity == "tile") { $this->data = []; foreach ($ids as $id) { - $ti = new ilObjectTileImage( - $DIC->filesystem()->web(), - $DIC->upload(), - (int) $id - ); - - if ($ti->exists()) { - $this->data[] = [ - "ObjId" => $id, - "Extension" => $ti->getExtension(), - "Dir" => dirname($ti->getFullPath()) - ]; + $rid = $this->object_properties_agregator->getFor((int) $id)->getPropertyTileImage()->getTileImage()->getRid(); + if ($rid === null) { + continue; } + + $temp_dir = $this->copyTileToTempFolderForExport($rid); + + $this->data[] = [ + "ObjId" => $id, + "Dir" => $temp_dir + ]; } } @@ -227,6 +242,22 @@ public function readData(string $entity, string $version, array $ids): void } } + private function copyTileToTempFolderForExport(string $rid): string + { + $i = $this->storage->manage()->find($rid); + $stream = $this->storage->consume()->stream( + $i + ); + $title = $this->storage->manage()->getCurrentRevision($i)->getTitle(); + + $temp_dir = implode( + DIRECTORY_SEPARATOR, + [ILIAS_DATA_DIR, CLIENT_ID, 'temp', uniqid('tmp')] + ); + mkdir($temp_dir); + file_put_contents($temp_dir . DIRECTORY_SEPARATOR . $title, $stream->getStream()->getContents()); + return $temp_dir; + } /** * Determine the dependent sets of data */ @@ -323,12 +354,12 @@ public function importRecord( $dir = str_replace("..", "", $rec["Dir"]); if ($new_id > 0 && $dir != "" && $this->getImportDirectory() != "") { $source_dir = $this->getImportDirectory() . "/" . $dir; - $ti = new ilObjectTileImage( - $DIC->filesystem()->web(), - $DIC->upload(), - $new_id + $object_properties = $this->object_properties_agregator->getFor($new_id); + $ti = $object_properties->getPropertyTileImage()->getTileImage(); + $ti->createFromImportDir($source_dir); + $object_properties->storePropertyTileImage( + $object_properties->getPropertyTileImage()->withTileImage($ti) ); - $ti->createFromImportDir($source_dir, $rec["Extension"]); } break; } diff --git a/Services/Object/classes/class.ilObjectExporter.php b/Services/Object/classes/class.ilObjectExporter.php index 4af80fb00a44..200977c3b768 100644 --- a/Services/Object/classes/class.ilObjectExporter.php +++ b/Services/Object/classes/class.ilObjectExporter.php @@ -42,7 +42,7 @@ public function init(): void */ public function getXmlExportTailDependencies(string $entity, string $target_release, array $ids): array { - return array(); + return []; } public function getXmlRepresentation(string $entity, string $schema_version, string $id): string diff --git a/Services/Object/classes/class.ilObjectListGUI.php b/Services/Object/classes/class.ilObjectListGUI.php index a4ad3b476f27..deee1f646fb3 100644 --- a/Services/Object/classes/class.ilObjectListGUI.php +++ b/Services/Object/classes/class.ilObjectListGUI.php @@ -24,8 +24,10 @@ use ILIAS\UI\Component\Modal\Modal; use ILIAS\UI\Component\Card\RepositoryObject; use ILIAS\UI\Component\Item\Item; +use ILIAS\UI\Component\Image\Image; use ILIAS\Notes\Note; use ILIAS\HTTP\Services as HTTPServices; +use ILIAS\Object\ilObjectDIC; /** * Important note: @@ -71,6 +73,8 @@ class ilObjectListGUI protected array $access_cache; protected ilAccessHandler $access; protected ilObjUser $user; + protected ilObjectDIC $object_dic; + protected ilObjectProperties $object_properties; protected ilObjectDefinition $obj_definition; protected ilTree $tree; protected ilSetting $settings; @@ -83,7 +87,6 @@ class ilObjectListGUI protected string $mode; protected bool $path_enabled; protected int $context; - protected ilObjectService $object_service; protected ILIAS\HTTP\Wrapper\RequestWrapper $request_wrapper; protected ILIAS\Refinery\Factory $refinery; @@ -193,6 +196,7 @@ public function __construct(int $context = self::CONTEXT_REPOSITORY) $this->access = $DIC['ilAccess']; $this->user = $DIC['ilUser']; + $this->object_dic = ilObjectDIC::dic(); $this->obj_definition = $DIC['objDefinition']; $this->tree = $DIC['tree']; $this->settings = $DIC['ilSetting']; @@ -205,7 +209,6 @@ public function __construct(int $context = self::CONTEXT_REPOSITORY) $this->mode = self::IL_LIST_FULL; $this->path_enabled = false; $this->context = $context; - $this->object_service = $DIC->object(); $this->request_wrapper = $DIC->http()->wrapper()->query(); $this->refinery = $DIC['refinery']; @@ -718,6 +721,7 @@ public function initItem( $this->access_cache = []; $this->ref_id = $ref_id; $this->obj_id = $obj_id; + $this->object_properties = $this->object_dic['object_properties']->getFor($obj_id); $this->setTitle($title); $this->setDescription($description); @@ -1953,7 +1957,11 @@ public function insertCommands( string $async_url = '', bool $header_actions = false ): string { - if (!$this->getCommandsStatus()) { + if (!$this->getCommandsStatus() || $this->commandsNeedToBeHidden( + $use_async, + $get_async_commands, + $header_actions + )) { return ''; } @@ -2119,20 +2127,6 @@ public function insertCommands( $this->ctrl->clearParametersByClass($this->gui_class_name); } - // fix bug #12417 - // there is one case, where no action menu should be displayed: - // public area, category, no info tab - // todo: make this faster and remove type specific implementation if possible - if ($use_async && !$get_async_commands && !$header_actions) { - if ($this->user->getId() === ANONYMOUS_USER_ID && $this->checkInfoPageOnAsynchronousRendering()) { - if ( - !ilContainer::_lookupContainerSetting($this->obj_id, ilObjectServiceSettingsGUI::INFO_TAB_VISIBILITY) - ) { - return ''; - } - } - } - if ($use_async && $get_async_commands) { return $this->current_selection_list->getHTML(true); } @@ -2140,6 +2134,25 @@ public function insertCommands( return $this->current_selection_list->getHTML(); } + /** + * Fix bug #12417: We hide the action menu when we are in the public area + */ + // there is one case, where no action menu should be displayed: + // public area, category, no info tab + // todo: make this faster and remove type specific implementation if possible + private function commandsNeedToBeHidden( + bool $use_async, + bool $get_async_commands, + bool $header_actions + ): bool { + if ($use_async && !$get_async_commands && !$header_actions + && $this->user->getId() === ANONYMOUS_USER_ID && $this->checkInfoPageOnAsynchronousRendering() + && $this->object_properties->getPropertyInfoTabVisibility()) { + return true; + } + return false; + } + public function enableComments(bool $value, bool $enable_comments_settings = true): void { if ($this->settings->get('disable_comments')) { @@ -3208,8 +3221,6 @@ public function getAsCard( htmlspecialchars(addslashes($title)) )); - $path = $this->getTileImagePath(); - // workaround for #26205 // we should get rid of _top links completely and gifure our how // to manage scorm links better @@ -3223,9 +3234,7 @@ public function getAsCard( $modified_link = $this->modifySAHSlaunch($def_cmd_link, $def_cmd_frame); - $image = $this->ui->factory() - ->image() - ->responsive($path, ''); + $image = $this->getTileImage(); if ($def_cmd_link != '') { // #24256 if ($def_cmd_frame != '' && ($modified_link == $def_cmd_link)) { $image = $image->withAdditionalOnLoadCode(function ($id) use ( @@ -3347,24 +3356,10 @@ public function checkInfoPageOnAsynchronousRendering(): bool return false; } - protected function getTileImagePath(): string + private function getTileImage(): Image { - $object = ilObjectFactory::getInstanceByObjId($this->obj_id); - if ($object === null) { - return ''; - } - - $img = $object->getObjectProperties()->getPropertyTileImage()->getTileImage(); - if ($img->exists()) { - return $img->getFullPath(); - } - - $path = ilUtil::getImagePath('cont_tile/cont_tile_default_' . $this->type . '.svg'); - if (is_file($path)) { - return $path; - } - - return ilUtil::getImagePath('cont_tile/cont_tile_default.svg'); + return $this->object_properties->getPropertyTileImage() + ->getTileImage()->getImage(); } /** diff --git a/Services/Object/classes/ilObjectDIC.php b/Services/Object/classes/ilObjectDIC.php new file mode 100644 index 000000000000..cb70fe1d8b5e --- /dev/null +++ b/Services/Object/classes/ilObjectDIC.php @@ -0,0 +1,93 @@ +init($DIC); + } + + return self::$dic; + } + + private function init(ILIASContainer $DIC): void + { + $this['common_settings'] = fn($c): \ilObjectCommonSettings => new \ilObjectCommonSettings( + $DIC->language(), + $DIC->upload(), + $DIC->resourceStorage(), + $c['tile_image_stackholder'], + $c['tile_image_flavour'], + $c['core_properties_repository'], + $c['additional_properties_repository'] + ); + + $this['object_properties'] = fn($c): \ilObjectPropertiesAgregator => new \ilObjectPropertiesAgregator( + $c['core_properties_repository'], + $c['additional_properties_repository'], + $c['object_type_specific_properties_factory'] + ); + + $this['core_properties_repository'] = fn($c): \ilObjectCorePropertiesRepository + => new \ilObjectCorePropertiesCachedRepository( + $DIC['ilDB'], + $DIC->ui(), + $DIC['resource_storage'], + $c['tile_image_stackholder'], + new ilObjectTileImageFlavourDefinition(), + $c['object_type_specific_properties_factory'] + ); + + $this['additional_properties_repository'] = fn($c): \ilObjectAdditionalPropertiesRepository + => new \ilObjectAdditionalPropertiesLegacyRepository( + $DIC['object.customicons.factory'], + $c['object_type_specific_properties_factory'] + ); + + $this['tile_image_stackholder'] = static fn($c): ilObjectTileImageStakeholder + => new ilObjectTileImageStakeholder(); + + $this['tile_image_flavour'] = static fn($c): ilObjectTileImageFlavourDefinition + => new ilObjectTileImageFlavourDefinition(); + + $this['object_type_specific_properties_factory'] = fn($c): ObjectTypeSpecificPropertiesFactory + => new ObjectTypeSpecificPropertiesFactory( + is_readable(ilObjectTypeSpecificPropertiesArtifactObjective::PATH) ? + include ilObjectTypeSpecificPropertiesArtifactObjective::PATH + : [], + $DIC['ilDB'] + ); + } +} diff --git a/Services/Object/interfaces/Properties/CoreProperties/ilObjectCorePropertiesRepository.php b/Services/Object/interfaces/Properties/CoreProperties/ilObjectCorePropertiesRepository.php index 0608441d962d..54121a1f45ce 100644 --- a/Services/Object/interfaces/Properties/CoreProperties/ilObjectCorePropertiesRepository.php +++ b/Services/Object/interfaces/Properties/CoreProperties/ilObjectCorePropertiesRepository.php @@ -1,7 +1,5 @@ $ids + */ + public function preload(array $ids): void; + public function resetPreloadedData(): void; public function getFor(int $object_id): ilObjectCoreProperties; public function store(ilObjectCoreProperties $properties): ilObjectCoreProperties; } diff --git a/Services/Object/interfaces/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificProperties.php b/Services/Object/interfaces/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificProperties.php new file mode 100644 index 000000000000..799a0083e114 --- /dev/null +++ b/Services/Object/interfaces/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificProperties.php @@ -0,0 +1,40 @@ + $object_ids + */ + public function preload(array $object_ids): void; +} diff --git a/Services/Object/interfaces/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificPropertyModifications.php b/Services/Object/interfaces/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificPropertyModifications.php new file mode 100644 index 000000000000..0f6d0fbd6562 --- /dev/null +++ b/Services/Object/interfaces/Properties/ObjectTypeSpecificProperties/ilObjectTypeSpecificPropertyModifications.php @@ -0,0 +1,25 @@ +getAccessHandler()->addPermission($this->node_id, self::PERMISSION_REGISTERED); - $this->tpl->setOnScreenMessage('success', $this->lng->txt("wsp_permission_registered_info"), true); + $this->getAccessHandler()->addMissingPermissionForObjects($this->node_id, [self::PERMISSION_REGISTERED]); + $this->tpl->setOnScreenMessage('success', $this->lng->txt("wsp_share_success"), true); $this->ctrl->redirect($this, "share"); break; @@ -283,7 +283,7 @@ public function addPermissionHandler(): void break; case "all": - $this->getAccessHandler()->addPermission($this->node_id, self::PERMISSION_ALL); + $this->getAccessHandler()->addMissingPermissionForObjects($this->node_id, [self::PERMISSION_ALL]); $this->tpl->setOnScreenMessage('success', $this->lng->txt("wsp_permission_all_info"), true); $this->ctrl->redirect($this, "share"); } diff --git a/Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php b/Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php index 29c7fedd8585..e03b7189801e 100644 --- a/Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php +++ b/Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php @@ -421,10 +421,10 @@ public function findSharedObjects(// PHP8-Review: Method return type and paramet if ($a_filter["obj_type"] ?? false) { $sql .= " AND obj.type = " . $ilDB->quote($a_filter["obj_type"], "text"); } - if (($a_filter["title"] ?? false) && strlen($a_filter["title"]) >= 3) { + if (($a_filter["title"] ?? false) && strlen($a_filter["title"]) >= 3) { $sql .= " AND " . $ilDB->like("obj.title", "text", "%" . $a_filter["title"] . "%"); } - if (($a_filter["user"] ?? false) && strlen($a_filter["user"]) >= 3) { + if (($a_filter["user"] ?? false) && strlen($a_filter["user"]) >= 3) { $usr_ids = array(); $set = $ilDB->query("SELECT usr_id FROM usr_data" . " WHERE (" . $ilDB->like("login", "text", "%" . $a_filter["user"] . "%") . " " . @@ -534,4 +534,18 @@ public static function getObjectDataFromNode(int $a_node_id): ?array // PHP8-Re " WHERE ref.wsp_id = " . $ilDB->quote($a_node_id, "integer")); return $ilDB->fetchAssoc($set); } + + public function addMissingPermissionForObjects(int $node_id, array $objects): bool + { + $existing = $this->getPermissions($node_id); + $added = false; + foreach ($objects as $object_id) { + if (!in_array($object_id, $existing, true)) { + $this->addPermission($node_id, $object_id); + $added = true; + } + } + return $added; + } + } diff --git a/Services/PersonalWorkspace/classes/class.ilWorkspaceShareTableGUI.php b/Services/PersonalWorkspace/classes/class.ilWorkspaceShareTableGUI.php index 6c5bed03f210..a2c4c680c980 100644 --- a/Services/PersonalWorkspace/classes/class.ilWorkspaceShareTableGUI.php +++ b/Services/PersonalWorkspace/classes/class.ilWorkspaceShareTableGUI.php @@ -90,9 +90,9 @@ public function __construct( $this->addColumn($this->lng->txt("wsp_shared_title"), "title"); $this->addColumn($this->lng->txt("wsp_shared_type")); - if (!$this->portfolio_mode) { - $this->addColumn($this->lng->txt("action")); - } + //if (!$this->portfolio_mode) { + $this->addColumn($this->lng->txt("action")); + //} $this->setDefaultOrderField("acl_date"); $this->setDefaultOrderDirection("desc"); @@ -112,6 +112,14 @@ public function __construct( $this->filter["obj_type"] = "prtf"; } + // see #38253 + if ((isset($this->filter["user"]) && $this->filter["user"] !== "") || + (isset($this->filter["title"]) && $this->filter["title"] !== "") || + (isset($this->filter["acl_type"]) && $this->filter["acl_type"] !== "") || + (isset($this->filter["acl_date"]) && $this->filter["acl_date"] !== "")) { + $a_load_data = true; + } + // incoming request: check for validity if ($a_load_data) { /* @@ -128,7 +136,7 @@ public function __construct( $this->importData(); return; } else { - $main_tpl->setOnScreenMessage('info', $lng->txt("wsp_shared_mandatory_filter_info")); + //$main_tpl->setOnScreenMessage('info', $lng->txt("wsp_shared_mandatory_filter_info")); } // initial state: show filters only @@ -280,7 +288,6 @@ protected function fillRow(array $a_set): void { $ilCtrl = $this->ctrl; $lng = $this->lng; - $this->tpl->setVariable("LASTNAME", $a_set["lastname"]); $this->tpl->setVariable("FIRSTNAME", $a_set["firstname"]); $this->tpl->setVariable("LOGIN", $a_set["login"]); @@ -358,6 +365,17 @@ protected function fillRow(array $a_set): void } else { $this->tpl->touchBlock("action_col_bl"); } + } else { + $ilCtrl->setParameter($this->parent_obj, "owner_id", $a_set["owner_id"]); + $ilCtrl->setParameter($this->parent_obj, "prt_id", $a_set["obj_id"]); + $b = $this->ui_factory->button()->shy( + $this->lng->txt("wsp_send_mail"), + $ilCtrl->getLinkTarget($this->parent_obj, "redirectSendMailToSharer") + ); + $dd = $this->ui_factory->dropdown()->standard([$b]); + $this->tpl->setCurrentBlock("action_bl"); + $this->tpl->setVariable("ACTION_DD", $this->renderer->render($dd)); + $this->tpl->parseCurrentBlock(); } } } diff --git a/Services/PersonalWorkspace/templates/default/tpl.shared_row.html b/Services/PersonalWorkspace/templates/default/tpl.shared_row.html index 0d7f84da85b6..f1ff49136b0a 100644 --- a/Services/PersonalWorkspace/templates/default/tpl.shared_row.html +++ b/Services/PersonalWorkspace/templates/default/tpl.shared_row.html @@ -29,6 +29,7 @@ {ACTION} + {ACTION_DD} \ No newline at end of file diff --git a/lang/ilias_de.lang b/lang/ilias_de.lang index 627c0e0bfdd7..8b7200827e90 100644 --- a/lang/ilias_de.lang +++ b/lang/ilias_de.lang @@ -1137,6 +1137,11 @@ assessment#:#result_units_info#:#Zum Beantworten der Frage werden die aktivierte assessment#:#result_x#:#Ergebnis %s assessment#:#results#:#Ergebnisse assessment#:#results_tab#:#Ergebnisse +assessment#:#resulttable_all#:#Alle +assessment#:#resulttable_correct#:#Korrekte +assessment#:#resulttable_incorrect#:#Inkorrekte/Unvollständige +assessment#:#resulttable_vc_sort_iooa#:#Reihenfolge im Test +assessment#:#resulttable_vc_sort_posscore#:#Höchste (mögliche) Punktzahl zuerst assessment#:#review_view#:#Vorschau assessment#:#saveOrder#:#Sortierung abspeichern assessment#:#saveOrderAndObligations#:#Sortierung und Obligationen abspeichern @@ -1192,6 +1197,7 @@ assessment#:#suggest_range#:#Bereich vorschlagen assessment#:#suggestedSolutionType#:#verweisen auf assessment#:#suggested_solution#:#Inhalte zur Wiederholung assessment#:#suggested_solution_added_successfully#:#Der Hinweis auf Inhalte zur Wiederholung wurde erfolgreich hinzugefügt! +assessment#:#ta_resulttable_vc_mode_aria#:#Anzeigeoptionen für Fragen assessment#:#tab_nest_answers#:#Einrückung assessment#:#term#:#Term assessment#:#term_image#:#Bild @@ -9124,6 +9130,7 @@ exc#:#exc_global_feedback_file_date#:#Verfügbarkeit exc#:#exc_global_feedback_file_date_deadline#:#Nach dem Abgabetermin exc#:#exc_global_feedback_file_date_upload#:#Nach der Abgabe exc#:#exc_go_to_exercise#:#Zur Ãœbung +exc#:#exc_graded_mem_notified#:#Alle ausgewählten Teilnehmer mit einer Bewertung wurden benachrichtigt. exc#:#exc_grades#:#Notenübersicht exc#:#exc_grades_overview#:#Notenübersicht exc#:#exc_hand_in#:#Datei abgeben @@ -9163,6 +9170,8 @@ exc#:#exc_min_nr_info#:#Dieser Wert muss mindestens so hoch sein, wie die Anzahl exc#:#exc_min_team_participants#:#Minimale Anzahl exc#:#exc_msg_all_mandatory_ass#:#Sie müssen alle verpflichtenden Ãœbungseinheiten bestehen, um die Ãœbung als ganze zu bestehen. exc#:#exc_msg_failed_mandatory#:#Sie haben mindestens eine obgligatorische Ãœbungseinheit nicht bestanden. +exc#:#exc_msg_grading_done#:#Es wurde eine Ãœbungseinheit in Ãœbung "%s" bewertet. +exc#:#exc_msg_grading_done_body#:#Ein Tutor hat Ihre Lösungsabgabe in Ãœbung "%s" bewertet. exc#:#exc_msg_min_number_ass#:#Sie müssen mindestens %s Ãœbungseinheiten bestehen, um die Ãœbung zu bestehen. exc#:#exc_msg_missed_minimum_number#:#Sie haben die Mindestanzahl an Ãœbungseinheiten nicht bestanden. exc#:#exc_msg_new_feedback_file_uploaded#:#Es wurde eine neue Feedback-Datei zur Ãœbung "%s" hinzugefügt. @@ -9184,6 +9193,7 @@ exc#:#exc_no_assignments_available#:#Keine Ãœbungseinheiten vorhanden. Bitte wä exc#:#exc_no_deadline_specified#:#Es wurde kein Abgabetermin festgelegt. exc#:#exc_no_feedback_dir_found_in_zip#:#Die Verzeichnisstruktur des hochgeladenen Zip-Archivs konnte nicht verarbeitet werden. exc#:#exc_no_get_target#:#Kein gültiges Link-Ziel gefunden. +exc#:#exc_no_graded_mem_selected#:#Bitte wählen Sie mindestens einen Teilnehmer mit Bewertung aus. exc#:#exc_no_participants#:#Zur Zeit gibt es keine Teilnehmer. exc#:#exc_no_portfolio_templates#:#Es sind keine Portfoliovorlagen vorhanden. exc#:#exc_no_team_yet#:#Keinem Team zugeordnet @@ -9316,6 +9326,7 @@ exc#:#exc_select_portfolio_change#:#Anderes Portfolio benutzen exc#:#exc_select_portfolio_info#:#Bitte wählen Sie eines Ihrer Portfolios, um es in dieser Ãœbungseinheit zu benutzen. exc#:#exc_select_portfolio_unlink#:#Portfolio entfernen exc#:#exc_send_assignment#:#Ãœbungseinheit per Mail verschicken +exc#:#exc_send_grading_notification#:#Benachrichtigung über Bewertung schicken exc#:#exc_settings_feedback#:#Rückmeldung exc#:#exc_settings_feedback_file#:#Datei exc#:#exc_settings_feedback_file_info#:#Rückmeldungen werden als Datei hochgeladen und im Reiter „Übungseinheiten“ angezeigt. Die Teilnehmerinnen und Teilnehmer werden darüber per Mail benachrichtigt. @@ -9339,6 +9350,7 @@ exc#:#exc_submission_notification_body#:#Eine neue Abgabe für die Ãœbung "%s" l exc#:#exc_submission_notification_info#:#Sie werden per Mail benachrichtigt, sobald neue Lösungen abgegeben wurden. Dies ist eine persönliche Einstellung, die nur für Sie gilt. Andere Personen, die Abgaben bewerten erhalten nur dann eine Mail, wenn auch sie diese Checkbox aktivieren. exc#:#exc_submission_notification_link#:#Link zur Ãœbung: %s exc#:#exc_submission_notification_subject#:#Eine neue Abgabe für die Ãœbung "%s" liegt vor +exc#:#exc_submission_open_notification_link#:#Abgabe öffnen: %s exc#:#exc_submission_text#:#Textabgabe exc#:#exc_submissions_and_grades#:#Abgaben und Noten exc#:#exc_submit_convenience_no_deadline#:#Geben Sie nach Bearbeitung der Ãœbungseinheit ab. Es gibt keinen festen Abgabetermin. @@ -11019,7 +11031,7 @@ mail#:#mail_maxsize_attachment_error#:#Die maximale Dateigröße beträgt: mail#:#mail_member_notification#:#Teilnehmerbenachrichtigung mail#:#mail_members_of_mailing_list#:#Mitglieder der Verteilerliste "%s" mail#:#mail_members_search_continue#:#Weiter -mail#:#mail_message_send#:#Die Mail wurde versandt +mail#:#mail_message_send#:#Die Mail wurde versandt. mail#:#mail_move_error#:#Fehler beim Mailversand mail#:#mail_move_to#:#Verschieben nach: mail#:#mail_move_to_folder_btn_label#:#Mail verschieben @@ -13089,6 +13101,7 @@ prtf#:#prtf_add_new_blog#:#Neues Blog hinzufügen prtf#:#prtf_add_new_blog_info#:#Das neue Blog wird Ihren persönlichen Ressourcen hinzugefügt. prtf#:#prtf_add_page#:#Seite hinzufügen prtf#:#prtf_add_portfolio#:#Portfolio hinzufügen +prtf#:#prtf_add_portfolio_from_template#:#Portfolio aus Vorlage hinzufügen prtf#:#prtf_all_pages#:#Gesamtes Portfolio prtf#:#prtf_allow_html#:#HTML/Javascript erlauben prtf#:#prtf_allow_html_info#:#Benutzer können HTML oder Javascript in Ihren Portfolio-Seiten verwenden. Dies kann zu Sicherheitsproblemen führen. @@ -13129,7 +13142,7 @@ prtf#:#prtf_link#:#Link prtf#:#prtf_manage_portfolios#:#Portfolios verwalten prtf#:#prtf_new_portfolio#:#Neues Portfolio prtf#:#prtf_no_blogs_info#:#Wenn Sie im Bereich "%s" einen Blog anlegen, können Sie dieses auch als Teil Ihres Portfolios verwenden. -prtf#:#prtf_no_offline_share_info#:#Das Portfolio muss zunächst online gesetzt werden bevor es für bestimmte Benutzer freigegeben werden kann. +prtf#:#prtf_no_offline_share_info#:#Das Portfolio muss zunächst online gesetzt werden, bevor es für bestimmte Benutzer freigegeben werden kann. prtf#:#prtf_no_submission#:#Keine Abgabe prtf#:#prtf_page_created#:#Seite wurde hinzugefügt prtf#:#prtf_page_element_my_courses_info#:#Dies ist eine Liste aller Kurse, in denen ich Mitglied bin und die aktuell online sind. @@ -13143,8 +13156,9 @@ prtf#:#prtf_page_type_prtf#:#Portfolioseite prtf#:#prtf_page_type_prtt#:#Portfoliovorlagenseite prtf#:#prtf_pages_copied#:#Die Seiten wurden kopiert. prtf#:#prtf_pdf#:#Exportieren als PDF +prtf#:#prtf_permanent_link#:#Link zum Portfolio: prtf#:#prtf_portfolio_created#:#Portfolio wurde hinzugefügt -prtf#:#prtf_portfolio_created_from_template#:#Dies ist die Vorschau Ihres neuen Portfolios. Um neue Seiten und Inhalte hinzuzufügen klicken Sie bitte auf "Bearbeiten" oben in dieser Ansicht. +prtf#:#prtf_portfolio_created_from_template#:#Dies ist die Vorschau Ihres neuen Portfolios. Um neue Inhalte und Seiten hinzuzufügen, klicken Sie in dieser Ansicht bitte auf "Portfolio bearbeiten" oder "Seite bearbeiten". prtf#:#prtf_portfolio_deleted#:#Portfolio wurde gelöscht prtf#:#prtf_portfolio_page_deleted#:#Portfolio- bzw. Blog-Seite wurde gelöscht. prtf#:#prtf_portfolios#:#Portfolios @@ -13175,6 +13189,8 @@ prtf#:#prtf_signature_date#:#Datum, Unterschrift prtf#:#prtf_signature_info#:#Das PDF enthält ein Feld, in welchem die Benutzer unterschreiben können. prtf#:#prtf_style#:#Portfolio-Style prtf#:#prtf_submission_on#:#Abgabe am $1 +prtf#:#prtf_successfully_shared_prtf#:#Bestätigung der Freigabe Ihres Portfolios "%s" +prtf#:#prtf_successfully_shared_prtf_body#:#Sie haben Ihr Portfolio "%s" erfolgreich freigegeben für: prtf#:#prtf_sure_delete_portfolio_pages#:#Wollen Sie die folgende Portfolio- bzw. Blog-Seite wirklich löschen? prtf#:#prtf_sure_delete_portfolios#:#Wollen Sie das folgende Portfolio wirklich löschen? prtf#:#prtf_tab_other_users#:#Portfolios anderer Benutzer @@ -13188,6 +13204,7 @@ prtf#:#prtf_template_title#:#Portfoliovorlage prtf#:#prtf_unset_as_default#:#Nicht als Mein Profil verwenden prtf#:#prtf_unset_default_share_info#:#Die Änderungen wurden gespeichert. Bitte überprüfen Sie die aktuellen Freigaben für das Portfolio. prtf#:#prtf_use_page_layout#:#Seitenlayout benutzen +prtf#:#prtf_visible_for_tutor#:#Einsehbar für Tutor prtf#:#prtt_title_info#:#Bitte beachten Sie, dass dieser Titel auch für die aus der Vorlage erstellten Porfolios verwendet wird. prtt#:#prtt_activation_limited_visibility_info#:#Falls aktiv, ist die Portfoliovorlage auch außerhalb der Zugriffszeiten sichtbar. prtt#:#prtt_activation_online_info#:#Wählen Sie diese Einstellung, um die Portfoliovorlage für Benutzer verfügbar zu machen. @@ -16810,8 +16827,8 @@ ui#:#label_fieldselection_refresh#:#Anwenden ui#:#label_pagination_limit#:#Pagination - Anzahl der Zeilen ui#:#label_pagination_offset#:#Pagination - Start ui#:#label_sortation#:#Sortierung -ui#:#presentaion_table_collapse#:#alle minimieren -ui#:#presentaion_table_expand#:#alle zeigen +ui#:#presentation_table_collapse#:#alle minimieren +ui#:#presentation_table_expand#:#alle zeigen ui#:#ui_chars_max#:#Maximum: ui#:#ui_chars_min#:#Minimum: ui#:#ui_chars_remaining#:#Verbleibende Buchstaben @@ -17230,6 +17247,7 @@ wsp#:#wsp_permission_registered_info#:#Dieses Objekt ist für alle registrierten wsp#:#wsp_permission_removed#:#Der Eintrag wurde gelöscht. wsp#:#wsp_permissions#:#Freigabe wsp#:#wsp_personal_resources_description#:#Hier können Sie persönliche Dateien, Blogs und Nachweise verwalten. +wsp#:#wsp_send_mail#:#Mail senden wsp#:#wsp_set_permission_all#:#Internet/WWW wsp#:#wsp_set_permission_all_password#:#Internet/WWW mit Passwort wsp#:#wsp_set_permission_course#:#Kursmitglieder @@ -17237,7 +17255,7 @@ wsp#:#wsp_set_permission_group#:#Gruppenmitglieder wsp#:#wsp_set_permission_registered#:#Alle registrierten Benutzer wsp#:#wsp_set_permission_single_user#:#Ausgewählte Benutzer wsp#:#wsp_share_search_users#:#Benutzer suchen -wsp#:#wsp_share_success#:#Ein neuer Eintrag wurde hinzugefügt. +wsp#:#wsp_share_success#:#Die Ressource wurde freigegeben. wsp#:#wsp_share_with_members#:#Für Mitglieder freigeben wsp#:#wsp_share_with_users#:#Für Benutzer freigeben wsp#:#wsp_shared_date#:#Freigabedatum diff --git a/lang/ilias_en.lang b/lang/ilias_en.lang index f96485250d2a..5648a7df2f28 100644 --- a/lang/ilias_en.lang +++ b/lang/ilias_en.lang @@ -1137,6 +1137,11 @@ assessment#:#result_units_info#:#The selected units are offered to the learner a assessment#:#result_x#:#Result %s assessment#:#results#:#Results assessment#:#results_tab#:#Results +assessment#:#resulttable_all#:#All +assessment#:#resulttable_correct#:#Correct +assessment#:#resulttable_incorrect#:#Incorrect/Incomplete +assessment#:#resulttable_vc_sort_iooa#:#in order of appearance +assessment#:#resulttable_vc_sort_posscore#:#highest possible score first assessment#:#review_view#:#Review assessment#:#saveOrder#:#Save Order assessment#:#saveOrderAndObligations#:#Save Order and Obligations @@ -1192,6 +1197,7 @@ assessment#:#suggest_range#:#Suggest Range assessment#:#suggestedSolutionType#:#Refer to assessment#:#suggested_solution#:#Content for Recapitulation assessment#:#suggested_solution_added_successfully#:#You successfully set a content for recapitulation! +assessment#:#ta_resulttable_vc_mode_aria#:#switch question mode assessment#:#tab_nest_answers#:#Nesting assessment#:#term#:#Term assessment#:#term_image#:#Term Image @@ -1670,8 +1676,8 @@ assessment#:#tst_question_hints_table_link_edit_hint#:#Edit Hint assessment#:#tst_question_hints_table_link_edit_hint_page#:#Edit Page assessment#:#tst_question_hints_table_link_edit_hint_points#:#Edit Points assessment#:#tst_question_hints_table_no_items#:#No Existing Hints -assessment#:#tst_question_mark#:#Mark this question -assessment#:#tst_question_marked#:#You marked the question +assessment#:#tst_question_mark#:#Flag this question +assessment#:#tst_question_marked#:#You flagged the question assessment#:#tst_question_marker#:#Flagged assessment#:#tst_question_no#:#Order assessment#:#tst_question_not_from_pool_info#:#No Pool @@ -1700,7 +1706,7 @@ assessment#:#tst_random_question_set_source_questionpool_summary_string#:#%s (Pa assessment#:#tst_random_select_questionpool#:#Select the question pool to choose the questions from assessment#:#tst_reached_points#:#Reached Points assessment#:#tst_reached_points_of_max#:#%s of %s -assessment#:#tst_remove_mark#:#Remove this mark +assessment#:#tst_remove_mark#:#Remove this flag assessment#:#tst_remove_question#:#Are you sure you want to remove the following question from the test? assessment#:#tst_remove_questions#:#Are you sure you want to remove the following questions from the test? assessment#:#tst_remove_questions_and_results#:#This test was already executed by %s user(s). Removing questions from this test will remove all test results of these users. Are you sure you want to remove the following question(s) from the test? @@ -9116,6 +9122,7 @@ exc#:#exc_global_feedback_file_date#:#Availability exc#:#exc_global_feedback_file_date_deadline#:#After deadline exc#:#exc_global_feedback_file_date_upload#:#After submission exc#:#exc_go_to_exercise#:#Go to Exercise +exc#:#exc_graded_mem_notified#:#All graded participants have been notified. exc#:#exc_grades#:#Grades Overview exc#:#exc_grades_overview#:#Grades View exc#:#exc_hand_in#:#Hand In @@ -9155,6 +9162,8 @@ exc#:#exc_min_nr_info#:#This value must be equal or higher than the number of co exc#:#exc_min_team_participants#:#Minimal Number exc#:#exc_msg_all_mandatory_ass#:#You must pass all mandatory assignments to pass the exercise. exc#:#exc_msg_failed_mandatory#:#You failed in at least one mandatory assignment. +exc#:#exc_msg_grading_done#:#An assignment has been graded in exercise "%s". +exc#:#exc_msg_grading_done_body#:#a tutor has graded your submission in exercise "%s". exc#:#exc_msg_min_number_ass#:#You must pass a minimum of %s assignments to pass the exercise. exc#:#exc_msg_missed_minimum_number#:#You did not pass the minimum number of assignments. exc#:#exc_msg_new_feedback_file_uploaded#:#A new feedback file has been added to exercise "%s". @@ -9176,6 +9185,7 @@ exc#:#exc_no_assignments_available#:#No assignments created yet. Please open ‘ exc#:#exc_no_deadline_specified#:#No deadline specified. exc#:#exc_no_feedback_dir_found_in_zip#:#The directory structure of the uploaded zip-archive could not be processed. exc#:#exc_no_get_target#:#A valid target has not been sent. +exc#:#exc_no_graded_mem_selected#:#Please select at least one graded participant. exc#:#exc_no_participants#:#There are currently no participants. exc#:#exc_no_portfolio_templates#:#There are no Portfolio Templates available. exc#:#exc_no_team_yet#:#Not assigned to a team @@ -9308,6 +9318,7 @@ exc#:#exc_select_portfolio_change#:#Use different portfolio exc#:#exc_select_portfolio_info#:#Please select one of your portfolios to use it with this assignment. exc#:#exc_select_portfolio_unlink#:#Remove Portfolio exc#:#exc_send_assignment#:#Send Assignment by Mail +exc#:#exc_send_grading_notification#:#Send Grading Notification exc#:#exc_settings_feedback#:#Evaluation exc#:#exc_settings_feedback_file#:#By File exc#:#exc_settings_feedback_file_info#:#Tutors upload a file. The participant receives a notification about it and can access the file at the assignment overview. @@ -9331,6 +9342,7 @@ exc#:#exc_submission_notification_body#:#A new submission for exercise "%s" has exc#:#exc_submission_notification_info#:#You will be notified when submissions are uploaded. This is a personal setting which does not affect other administrators of the exercise. exc#:#exc_submission_notification_link#:#Link to exercise: %s exc#:#exc_submission_notification_subject#:#Exercise "%s" - New submission uploaded +exc#:#exc_submission_open_notification_link#:#Open submission: %s exc#:#exc_submission_text#:#Submission Text exc#:#exc_submissions_and_grades#:#Submissions and Grades exc#:#exc_submit_convenience_no_deadline#:#Submit your at your convenience. There is no specific deadline. @@ -13083,6 +13095,7 @@ prtf#:#prtf_add_new_blog#:#Add New Blog prtf#:#prtf_add_new_blog_info#:#The new blog will be added to your personal resources. prtf#:#prtf_add_page#:#Add Page prtf#:#prtf_add_portfolio#:#Add Portfolio +prtf#:#prtf_add_portfolio_from_template#:#Add Portfolio From Template prtf#:#prtf_all_pages#:#All Pages prtf#:#prtf_allow_html#:#Allow HTML/Javascript prtf#:#prtf_allow_html_info#:#Enables users to include HTML and/or Javascript in their portfolio pages. This can lead to security issues. @@ -13137,8 +13150,9 @@ prtf#:#prtf_page_type_prtf#:#Portfolio Page prtf#:#prtf_page_type_prtt#:#Portfolio Template Page prtf#:#prtf_pages_copied#:#The pages have been copied. prtf#:#prtf_pdf#:#Export as PDF +prtf#:#prtf_permanent_link#:#Link to Portfolio: prtf#:#prtf_portfolio_created#:#Portfolio added -prtf#:#prtf_portfolio_created_from_template#:#This is the preview of your new portfolio. To add pages and manage the content of the portfolio click on "Edit Portfolio" on top of this page. +prtf#:#prtf_portfolio_created_from_template#:#This is the preview of your new portfolio. To add new pages, please click "Edit Portfolio". To edit this page, please click "Edit Page". prtf#:#prtf_portfolio_deleted#:#Portfolio deleted prtf#:#prtf_portfolio_page_deleted#:#Portfolio / blog page deleted. prtf#:#prtf_portfolios#:#Portfolios @@ -13169,6 +13183,8 @@ prtf#:#prtf_signature_date#:#Date, Signature prtf#:#prtf_signature_info#:#Adds a field to the print where the author can sign the portfolio. prtf#:#prtf_style#:#Portfolio Style prtf#:#prtf_submission_on#:#Submitted on $1 +prtf#:#prtf_successfully_shared_prtf#:#Confirmation Shared Portfolio '%s' +prtf#:#prtf_successfully_shared_prtf_body#:#You have shared your portfolio '%s' with: prtf#:#prtf_sure_delete_portfolio_pages#:#Are you sure you want to delete the following portfolio page / blog page? prtf#:#prtf_sure_delete_portfolios#:#Are you sure you want to delete the following portfolio? prtf#:#prtf_tab_other_users#:#Portfolios of Other Users @@ -13182,6 +13198,7 @@ prtf#:#prtf_template_title#:#Portfolio Template prtf#:#prtf_unset_as_default#:#Unset As My Profile prtf#:#prtf_unset_default_share_info#:#Your changes have been saved. Please check the current ‘share’ settings for your portfolio. prtf#:#prtf_use_page_layout#:#Use Page Layout +prtf#:#prtf_visible_for_tutor#:#Visible For Tutor prtf#:#prtt_title_info#:#Please note that this will be also the default title for all portfolios being created form this template. prtt#:#prtt_activation_limited_visibility_info#:#If chosen, the portfolio template is visible even outside of the given availability. prtt#:#prtt_activation_online_info#:#Activate this setting to make the portfolio template accessible to users. @@ -16807,8 +16824,8 @@ ui#:#label_fieldselection_refresh#:#Apply ui#:#label_pagination_limit#:#Pagination Number of Rows ui#:#label_pagination_offset#:#Pagination Offset ui#:#label_sortation#:#Sortation -ui#:#presentaion_table_collapse#:#collapse all -ui#:#presentaion_table_expand#:#expand all +ui#:#presentation_table_collapse#:#collapse all +ui#:#presentation_table_expand#:#expand all ui#:#ui_chars_max#:#Maximum: ui#:#ui_chars_min#:#Minimum: ui#:#ui_chars_remaining#:#Characters remaining: @@ -17227,6 +17244,7 @@ wsp#:#wsp_permission_registered_info#:#This object is shared with all registered wsp#:#wsp_permission_removed#:#Entry has been removed. wsp#:#wsp_permissions#:#Share wsp#:#wsp_personal_resources_description#:#Here you can manage your private files, blogs and artifacts. +wsp#:#wsp_send_mail#:#Send Mail wsp#:#wsp_set_permission_all#:#World Wide Web wsp#:#wsp_set_permission_all_password#:#World Wide Web with Password wsp#:#wsp_set_permission_course#:#Members of Course diff --git a/src/DI/Container.php b/src/DI/Container.php index e751adac5613..8c2c1700ab7b 100644 --- a/src/DI/Container.php +++ b/src/DI/Container.php @@ -231,13 +231,7 @@ public function news(): \ILIAS\News\Service public function object(): \ilObjectService { - return new \ilObjectService( - $this->database(), - $this->language(), - $this->filesystem()->web(), - $this->upload(), - $this['object.customicons.factory'] - ); + return new \ilObjectService(); } public function exercise(): \ILIAS\Exercise\Service diff --git a/src/UI/templates/default/Table/tpl.presentationrow.html b/src/UI/templates/default/Table/tpl.presentationrow.html index c485328ebac4..bd6af93871a2 100644 --- a/src/UI/templates/default/Table/tpl.presentationrow.html +++ b/src/UI/templates/default/Table/tpl.presentationrow.html @@ -29,11 +29,18 @@

      +
      - {IMPORTANT_FIELD_LABEL} - {IMPORTANT_FIELD_VALUE} - | +
      + +
      {IMPORTANT_FIELD_LABEL}
      + + +
      {IMPORTANT_FIELD_VALUE}
      + +
      +
      {SHY_EXPANDER}

diff --git a/src/UI/templates/default/Table/tpl.presentationtable.html b/src/UI/templates/default/Table/tpl.presentationtable.html index 13a936655b54..ff3ec3981ca2 100644 --- a/src/UI/templates/default/Table/tpl.presentationtable.html +++ b/src/UI/templates/default/Table/tpl.presentationtable.html @@ -3,8 +3,14 @@

{TITLE}

-
{EXPANDCOLLAPSEALL}
- {VC} +
+
+
{EXPANDCOLLAPSEALL}
+
+
+ {VC} +
+
diff --git a/templates/default/050-layout/_index.scss b/templates/default/050-layout/_index.scss index 5f8c3e2a53b0..60b3ba479408 100644 --- a/templates/default/050-layout/_index.scss +++ b/templates/default/050-layout/_index.scss @@ -3,5 +3,5 @@ @use "./layout_grid"; @use "./layout_container"; -@use "./layout_visibility-utilities"; @use "./layout_element-bar"; +@use "./layout_visibility-utilities"; \ No newline at end of file diff --git a/templates/default/070-components/UI-framework/Button/_ui-component_button.scss b/templates/default/070-components/UI-framework/Button/_ui-component_button.scss index d68519601a21..01280f870031 100644 --- a/templates/default/070-components/UI-framework/Button/_ui-component_button.scss +++ b/templates/default/070-components/UI-framework/Button/_ui-component_button.scss @@ -95,7 +95,12 @@ input.btn { } .btn-ctrl { - @include make-button($input-field-height: s.$il-btn-ctrl-outer-height, $border-radius: s.$il-border-radius-secondary-large, $button-text-color: s.$il-btn-ctrl-color, $button-color: s.$il-btn-ctrl-bg, $border-color: s.$il-btn-ctrl-border); + @include make-button($input-field-height: s.$il-btn-ctrl-outer-height, + $border-radius: s.$il-border-radius-secondary-large, + $button-text-color: s.$il-btn-ctrl-color, + $button-color: s.$il-btn-ctrl-bg, + $border-color: s.$il-btn-ctrl-border, + $hover_border-color: s.$il-btn-ctrl-engaged-border); &.engaged, .open & { border: 1px solid s.$il-btn-ctrl-engaged-border; diff --git a/templates/default/070-components/UI-framework/Table/_ui-component_table.scss b/templates/default/070-components/UI-framework/Table/_ui-component_table.scss index 63aeb7f7347c..212da9bb74c9 100644 --- a/templates/default/070-components/UI-framework/Table/_ui-component_table.scss +++ b/templates/default/070-components/UI-framework/Table/_ui-component_table.scss @@ -18,23 +18,9 @@ $il-table-presentation-details-viewcontrols-btn-color: $il-main-color; $il-table-presentation-details-viewcontrols-btn-bg: white; .il-table-presentation-viewcontrols { - background-color: $il-table-presentation-details-viewcontrols-bg-color; - display: flex; - flex-wrap: wrap; - justify-content: space-between; - - > div { - padding: $il-padding-large-vertical; - } - - .il-viewcontrol-pagination { - order: 1; - } - .il-viewcontrol-mode { - order: 2; - } - .il-viewcontrol-sortatio { - order: 3; + margin-bottom: $il-margin-large-vertical; + @media print { + display: none !important; } } @@ -100,6 +86,12 @@ $il-table-presentation-details-viewcontrols-btn-bg: white; } } + // add : to both importantfields and desclist keys + .il-table-presentation-row-header-fields-label::after, + .il-table-presentation-desclist .il-listing-characteristic-value-label::after { + content: ":"; + } + .il-table-presentation-row-expanded { //Using row mixin, to make this responsive @include l-grid.make-row; diff --git a/templates/default/070-components/UI-framework/ViewControl/_ui-component_viewcontrol.scss b/templates/default/070-components/UI-framework/ViewControl/_ui-component_viewcontrol.scss index e39d972fccb9..5ba18c7bcbd9 100644 --- a/templates/default/070-components/UI-framework/ViewControl/_ui-component_viewcontrol.scss +++ b/templates/default/070-components/UI-framework/ViewControl/_ui-component_viewcontrol.scss @@ -56,8 +56,9 @@ $il-vc-pagination-btn-active-bg: $il-main-bg; // viewcontrols as single buttons // should in the future be done by using btn-ctrl class on these buttons -.il-viewcontrol-sortation { - .btn-default.btn { +.il-viewcontrol-sortation .dropdown, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element { + > .btn-default.btn { @extend .btn-ctrl; border-radius: $il-border-radius-secondary-large; } diff --git a/templates/default/070-components/legacy/Modules/_component_test.scss b/templates/default/070-components/legacy/Modules/_component_test.scss index 921fa7b0a457..d16ccd1726f4 100644 --- a/templates/default/070-components/legacy/Modules/_component_test.scss +++ b/templates/default/070-components/legacy/Modules/_component_test.scss @@ -120,4 +120,29 @@ $il-test-working-time-font-weight: $il-font-weight-bold; #tst_pass_details_overview tr { scroll-margin-top: 30px; +} + +// +// test result +// + +.il-table-presentation-desclist.inline .il-listing-characteristic-value-row { + display: flex; + width: auto; + padding-right: $il-padding-xxxlarge-horizontal; +} + +.il-table-presentation-desclist.inline .il-listing-characteristic-value { + display: flex; + .il-listing-characteristic-value-item { + padding-left: $il-padding-small-horizontal; + } +} + +.il-listing-characteristic-value-label, .il-listing-characteristic-value-item { + width: fit-content; +} + +.il-listing-characteristic-value-row.clearfix { + border-top: none; } \ No newline at end of file diff --git a/templates/default/delos.css b/templates/default/delos.css index e8b85870523c..7c03fc97cc7c 100644 --- a/templates/default/delos.css +++ b/templates/default/delos.css @@ -1,7 +1,4 @@ @charset "UTF-8"; -/* -* Dependencies -*/ /*! * Datetimepicker for Bootstrap 3 * version : 4.17.37 @@ -684,9 +681,8 @@ table.mceToolbar tbody, table.mceToolbar tr, table.mceToolbar td { } /* -* Normalize -*/ -/* print less */ +* Dependencies +*/ /* print less */ @media print { * { /* see bug 0022342 */ @@ -894,6 +890,9 @@ th { padding: 0; } +/* +* Normalize +*/ .row { --bs-gutter-x: 30px; --bs-gutter-y: 0; @@ -1977,6 +1976,38 @@ th { } /* Responsive container system from Bootstrap 5 has been removed */ +.l-bar__container, +.l-bar__group { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; +} + +.l-bar__container:not(:empty) { + margin-bottom: -9px; +} +.l-bar__container:not(:empty).l-bar__container--space-between { + justify-content: space-between; +} + +.l-bar__container > .l-bar__group { + margin-right: 15px; +} +.l-bar__container > .l-bar__group:last-child { + margin-right: 0; +} + +.l-bar__container > .l-bar__element, +.l-bar__group > .l-bar__element { + margin-right: 3px; + margin-bottom: 9px; +} +.l-bar__container > .l-bar__element:last-child, +.l-bar__group > .l-bar__element:last-child { + margin-right: 0; +} + .hidden, .visible-xs-block, .visible-xs-inline, @@ -2196,41 +2227,6 @@ th { display: none !important; } } -.l-bar__container, -.l-bar__group { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: center; -} - -.l-bar__container:not(:empty) { - margin-bottom: -9px; -} -.l-bar__container:not(:empty).l-bar__container--space-between { - justify-content: space-between; -} - -.l-bar__container > .l-bar__group { - margin-right: 15px; -} -.l-bar__container > .l-bar__group:last-child { - margin-right: 0; -} - -.l-bar__container > .l-bar__element, -.l-bar__group > .l-bar__element { - margin-right: 3px; - margin-bottom: 9px; -} -.l-bar__container > .l-bar__element:last-child, -.l-bar__group > .l-bar__element:last-child { - margin-right: 0; -} - -/* -* Elements -*/ * { box-sizing: border-box; } @@ -2606,9 +2602,8 @@ code { } } /* -* Components +* Elements */ -/* UI Framework */ .c-tooltip__container { position: relative; display: inline-block; @@ -2905,7 +2900,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-default, .il-viewcontrol-pagination .last > .btn-link, .il-viewcontrol-mode > .btn-default, -.il-viewcontrol-mode > .btn-link, .il-viewcontrol-sortation .btn-default.btn { +.il-viewcontrol-mode > .btn-link, .il-viewcontrol-sortation .dropdown > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn { display: inline-flex; vertical-align: middle; align-items: center; @@ -2945,7 +2941,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-default + .btn-ctrl, .il-viewcontrol-pagination .last > .btn-link + .btn-ctrl, .il-viewcontrol-mode > .btn-default + .btn-ctrl, -.il-viewcontrol-mode > .btn-link + .btn-ctrl, .il-viewcontrol-sortation .btn-default.btn + .btn-ctrl, .il-viewcontrol-section > .btn-ctrl + .btn-default, .il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-section > .btn-link + .btn-default, +.il-viewcontrol-mode > .btn-link + .btn-ctrl, .il-viewcontrol-sortation .dropdown > .btn-default.btn + .btn-ctrl, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn + .btn-ctrl, .il-viewcontrol-section > .btn-ctrl + .btn-default, .il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-section > .btn-link + .btn-default, .il-viewcontrol-section .il-viewcontrol-section.btn-group > .btn-default + .btn-default, .il-viewcontrol-section .il-viewcontrol-section.btn-group > .btn-link + .btn-default, .il-viewcontrol-section.il-viewcontrol-pagination__sectioncontrol > .btn-default + .btn-default, @@ -2959,7 +2956,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-section.last > .btn-default + .btn-default, .il-viewcontrol-pagination .il-viewcontrol-section.last > .btn-link + .btn-default, .il-viewcontrol-section.il-viewcontrol-mode > .btn-default + .btn-default, -.il-viewcontrol-section.il-viewcontrol-mode > .btn-link + .btn-default, .il-viewcontrol-sortation .il-viewcontrol-section > .btn-default.btn + .btn-default, .il-viewcontrol-section > .btn-ctrl + .btn-link, .il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-section > .btn-link + .btn-link, +.il-viewcontrol-section.il-viewcontrol-mode > .btn-link + .btn-default, .il-viewcontrol-sortation .il-viewcontrol-section.dropdown > .btn-default.btn + .btn-default, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-section.l-bar__element > .btn-default.btn + .btn-default, .il-viewcontrol-section > .btn-ctrl + .btn-link, .il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-section > .btn-link + .btn-link, .il-viewcontrol-section .il-viewcontrol-section.btn-group > .btn-default + .btn-link, .il-viewcontrol-section .il-viewcontrol-section.btn-group > .btn-link + .btn-link, .il-viewcontrol-section.il-viewcontrol-pagination__sectioncontrol > .btn-default + .btn-link, @@ -2973,7 +2971,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-section.last > .btn-default + .btn-link, .il-viewcontrol-pagination .il-viewcontrol-section.last > .btn-link + .btn-link, .il-viewcontrol-section.il-viewcontrol-mode > .btn-default + .btn-link, -.il-viewcontrol-section.il-viewcontrol-mode > .btn-link + .btn-link, .il-viewcontrol-sortation .il-viewcontrol-section > .btn-default.btn + .btn-link, +.il-viewcontrol-section.il-viewcontrol-mode > .btn-link + .btn-link, .il-viewcontrol-sortation .il-viewcontrol-section.dropdown > .btn-default.btn + .btn-link, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-section.l-bar__element > .btn-default.btn + .btn-link, .il-viewcontrol-section .btn-group > .btn-ctrl + .btn-default, .il-viewcontrol-section .btn-group.il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-section .btn-group.il-viewcontrol-section > .btn-link + .btn-default, @@ -2995,8 +2994,10 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-section .il-viewcontrol-pagination .btn-group.last > .btn-link + .btn-default, .il-viewcontrol-section .btn-group.il-viewcontrol-mode > .btn-default + .btn-default, .il-viewcontrol-section .btn-group.il-viewcontrol-mode > .btn-link + .btn-default, -.il-viewcontrol-sortation .il-viewcontrol-section .btn-group > .btn-default.btn + .btn-default, -.il-viewcontrol-section .il-viewcontrol-sortation .btn-group > .btn-default.btn + .btn-default, +.il-viewcontrol-sortation .il-viewcontrol-section .btn-group.dropdown > .btn-default.btn + .btn-default, +.il-viewcontrol-section .il-viewcontrol-sortation .btn-group.dropdown > .btn-default.btn + .btn-default, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-section .btn-group.l-bar__element > .btn-default.btn + .btn-default, +.il-viewcontrol-section .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .btn-group.l-bar__element > .btn-default.btn + .btn-default, .il-viewcontrol-section .btn-group > .btn-ctrl + .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-section > .btn-link + .btn-link, @@ -3018,8 +3019,10 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-section .il-viewcontrol-pagination .btn-group.last > .btn-link + .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-mode > .btn-default + .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-mode > .btn-link + .btn-link, -.il-viewcontrol-sortation .il-viewcontrol-section .btn-group > .btn-default.btn + .btn-link, -.il-viewcontrol-section .il-viewcontrol-sortation .btn-group > .btn-default.btn + .btn-link, +.il-viewcontrol-sortation .il-viewcontrol-section .btn-group.dropdown > .btn-default.btn + .btn-link, +.il-viewcontrol-section .il-viewcontrol-sortation .btn-group.dropdown > .btn-default.btn + .btn-link, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-section .btn-group.l-bar__element > .btn-default.btn + .btn-link, +.il-viewcontrol-section .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .btn-group.l-bar__element > .btn-default.btn + .btn-link, .il-viewcontrol-pagination__sectioncontrol > .btn-ctrl + .btn-default, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-section > .btn-link + .btn-default, @@ -3037,7 +3040,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-pagination__sectioncontrol.last > .btn-link + .btn-default, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-mode > .btn-default + .btn-default, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-mode > .btn-link + .btn-default, -.il-viewcontrol-sortation .il-viewcontrol-pagination__sectioncontrol > .btn-default.btn + .btn-default, +.il-viewcontrol-sortation .il-viewcontrol-pagination__sectioncontrol.dropdown > .btn-default.btn + .btn-default, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination__sectioncontrol.l-bar__element > .btn-default.btn + .btn-default, .il-viewcontrol-pagination__sectioncontrol > .btn-ctrl + .btn-link, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-section > .btn-link + .btn-link, @@ -3055,7 +3059,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-pagination__sectioncontrol.last > .btn-link + .btn-link, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-mode > .btn-default + .btn-link, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-mode > .btn-link + .btn-link, -.il-viewcontrol-sortation .il-viewcontrol-pagination__sectioncontrol > .btn-default.btn + .btn-link, +.il-viewcontrol-sortation .il-viewcontrol-pagination__sectioncontrol.dropdown > .btn-default.btn + .btn-link, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination__sectioncontrol.l-bar__element > .btn-default.btn + .btn-link, .il-viewcontrol-pagination__num-of-items > .btn-ctrl + .btn-default, .il-viewcontrol-pagination__num-of-items.il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-pagination__num-of-items.il-viewcontrol-section > .btn-link + .btn-default, @@ -3073,7 +3078,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-pagination__num-of-items.last > .btn-link + .btn-default, .il-viewcontrol-pagination__num-of-items.il-viewcontrol-mode > .btn-default + .btn-default, .il-viewcontrol-pagination__num-of-items.il-viewcontrol-mode > .btn-link + .btn-default, -.il-viewcontrol-sortation .il-viewcontrol-pagination__num-of-items > .btn-default.btn + .btn-default, +.il-viewcontrol-sortation .il-viewcontrol-pagination__num-of-items.dropdown > .btn-default.btn + .btn-default, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination__num-of-items.l-bar__element > .btn-default.btn + .btn-default, .il-viewcontrol-pagination__num-of-items > .btn-ctrl + .btn-link, .il-viewcontrol-pagination__num-of-items.il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-pagination__num-of-items.il-viewcontrol-section > .btn-link + .btn-link, @@ -3091,7 +3097,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-pagination__num-of-items.last > .btn-link + .btn-link, .il-viewcontrol-pagination__num-of-items.il-viewcontrol-mode > .btn-default + .btn-link, .il-viewcontrol-pagination__num-of-items.il-viewcontrol-mode > .btn-link + .btn-link, -.il-viewcontrol-sortation .il-viewcontrol-pagination__num-of-items > .btn-default.btn + .btn-link, +.il-viewcontrol-sortation .il-viewcontrol-pagination__num-of-items.dropdown > .btn-default.btn + .btn-link, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination__num-of-items.l-bar__element > .btn-default.btn + .btn-link, .il-viewcontrol-pagination > .btn-ctrl + .btn-default, .il-viewcontrol-pagination.il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-pagination.il-viewcontrol-section > .btn-link + .btn-default, @@ -3109,7 +3116,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-pagination.last > .btn-link + .btn-default, .il-viewcontrol-pagination.il-viewcontrol-mode > .btn-default + .btn-default, .il-viewcontrol-pagination.il-viewcontrol-mode > .btn-link + .btn-default, -.il-viewcontrol-sortation .il-viewcontrol-pagination > .btn-default.btn + .btn-default, +.il-viewcontrol-sortation .il-viewcontrol-pagination.dropdown > .btn-default.btn + .btn-default, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination.l-bar__element > .btn-default.btn + .btn-default, .il-viewcontrol-pagination > .btn-ctrl + .btn-link, .il-viewcontrol-pagination.il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-pagination.il-viewcontrol-section > .btn-link + .btn-link, @@ -3127,7 +3135,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-pagination.last > .btn-link + .btn-link, .il-viewcontrol-pagination.il-viewcontrol-mode > .btn-default + .btn-link, .il-viewcontrol-pagination.il-viewcontrol-mode > .btn-link + .btn-link, -.il-viewcontrol-sortation .il-viewcontrol-pagination > .btn-default.btn + .btn-link, +.il-viewcontrol-sortation .il-viewcontrol-pagination.dropdown > .btn-default.btn + .btn-link, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination.l-bar__element > .btn-default.btn + .btn-link, .il-viewcontrol-pagination .dropdown > .btn-ctrl + .btn-default, .il-viewcontrol-pagination .dropdown.il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-pagination .dropdown.il-viewcontrol-section > .btn-link + .btn-default, @@ -3149,6 +3158,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .dropdown.il-viewcontrol-mode > .btn-link + .btn-default, .il-viewcontrol-sortation .il-viewcontrol-pagination .dropdown > .btn-default.btn + .btn-default, .il-viewcontrol-pagination .il-viewcontrol-sortation .dropdown > .btn-default.btn + .btn-default, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .dropdown.l-bar__element > .btn-default.btn + .btn-default, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .dropdown.l-bar__element > .btn-default.btn + .btn-default, .il-viewcontrol-pagination .dropdown > .btn-ctrl + .btn-link, .il-viewcontrol-pagination .dropdown.il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-pagination .dropdown.il-viewcontrol-section > .btn-link + .btn-link, @@ -3170,6 +3181,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .dropdown.il-viewcontrol-mode > .btn-link + .btn-link, .il-viewcontrol-sortation .il-viewcontrol-pagination .dropdown > .btn-default.btn + .btn-link, .il-viewcontrol-pagination .il-viewcontrol-sortation .dropdown > .btn-default.btn + .btn-link, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .dropdown.l-bar__element > .btn-default.btn + .btn-link, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .dropdown.l-bar__element > .btn-default.btn + .btn-link, .il-viewcontrol-pagination .last > .btn-ctrl + .btn-default, .il-viewcontrol-pagination .last.il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-pagination .last.il-viewcontrol-section > .btn-link + .btn-default, @@ -3189,8 +3202,10 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-link + .btn-default, .il-viewcontrol-pagination .last.il-viewcontrol-mode > .btn-default + .btn-default, .il-viewcontrol-pagination .last.il-viewcontrol-mode > .btn-link + .btn-default, -.il-viewcontrol-sortation .il-viewcontrol-pagination .last > .btn-default.btn + .btn-default, -.il-viewcontrol-pagination .il-viewcontrol-sortation .last > .btn-default.btn + .btn-default, +.il-viewcontrol-sortation .il-viewcontrol-pagination .last.dropdown > .btn-default.btn + .btn-default, +.il-viewcontrol-pagination .il-viewcontrol-sortation .last.dropdown > .btn-default.btn + .btn-default, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .last.l-bar__element > .btn-default.btn + .btn-default, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .last.l-bar__element > .btn-default.btn + .btn-default, .il-viewcontrol-pagination .last > .btn-ctrl + .btn-link, .il-viewcontrol-pagination .last.il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-pagination .last.il-viewcontrol-section > .btn-link + .btn-link, @@ -3210,8 +3225,10 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-link + .btn-link, .il-viewcontrol-pagination .last.il-viewcontrol-mode > .btn-default + .btn-link, .il-viewcontrol-pagination .last.il-viewcontrol-mode > .btn-link + .btn-link, -.il-viewcontrol-sortation .il-viewcontrol-pagination .last > .btn-default.btn + .btn-link, -.il-viewcontrol-pagination .il-viewcontrol-sortation .last > .btn-default.btn + .btn-link, +.il-viewcontrol-sortation .il-viewcontrol-pagination .last.dropdown > .btn-default.btn + .btn-link, +.il-viewcontrol-pagination .il-viewcontrol-sortation .last.dropdown > .btn-default.btn + .btn-link, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .last.l-bar__element > .btn-default.btn + .btn-link, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .last.l-bar__element > .btn-default.btn + .btn-link, .il-viewcontrol-mode > .btn-ctrl + .btn-default, .il-viewcontrol-mode.il-viewcontrol-section > .btn-default + .btn-default, .il-viewcontrol-mode.il-viewcontrol-section > .btn-link + .btn-default, @@ -3229,7 +3246,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-mode.last > .btn-link + .btn-default, .il-viewcontrol-mode > .btn-default + .btn-default, .il-viewcontrol-mode > .btn-link + .btn-default, -.il-viewcontrol-sortation .il-viewcontrol-mode > .btn-default.btn + .btn-default, +.il-viewcontrol-sortation .il-viewcontrol-mode.dropdown > .btn-default.btn + .btn-default, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-mode.l-bar__element > .btn-default.btn + .btn-default, .il-viewcontrol-mode > .btn-ctrl + .btn-link, .il-viewcontrol-mode.il-viewcontrol-section > .btn-default + .btn-link, .il-viewcontrol-mode.il-viewcontrol-section > .btn-link + .btn-link, @@ -3247,27 +3265,56 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .il-viewcontrol-mode.last > .btn-link + .btn-link, .il-viewcontrol-mode > .btn-default + .btn-link, .il-viewcontrol-mode > .btn-link + .btn-link, -.il-viewcontrol-sortation .il-viewcontrol-mode > .btn-default.btn + .btn-link, .il-viewcontrol-sortation .btn-ctrl + .btn-default.btn, .il-viewcontrol-sortation .il-viewcontrol-section > .btn-default + .btn-default.btn, .il-viewcontrol-sortation .il-viewcontrol-section > .btn-link + .btn-default.btn, -.il-viewcontrol-section .il-viewcontrol-sortation .btn-group > .btn-default + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-section .btn-group > .btn-default + .btn-default.btn, -.il-viewcontrol-section .il-viewcontrol-sortation .btn-group > .btn-link + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-section .btn-group > .btn-link + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination__sectioncontrol > .btn-default + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination__sectioncontrol > .btn-link + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination__num-of-items > .btn-default + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination__num-of-items > .btn-link + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination > .btn-default + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination > .btn-link + .btn-default.btn, +.il-viewcontrol-sortation .il-viewcontrol-mode.dropdown > .btn-default.btn + .btn-link, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-mode.l-bar__element > .btn-default.btn + .btn-link, .il-viewcontrol-sortation .dropdown > .btn-ctrl + .btn-default.btn, .il-viewcontrol-sortation .dropdown.il-viewcontrol-section > .btn-default + .btn-default.btn, .il-viewcontrol-sortation .dropdown.il-viewcontrol-section > .btn-link + .btn-default.btn, +.il-viewcontrol-section .il-viewcontrol-sortation .dropdown.btn-group > .btn-default + .btn-default.btn, +.il-viewcontrol-sortation .il-viewcontrol-section .dropdown.btn-group > .btn-default + .btn-default.btn, +.il-viewcontrol-section .il-viewcontrol-sortation .dropdown.btn-group > .btn-link + .btn-default.btn, +.il-viewcontrol-sortation .il-viewcontrol-section .dropdown.btn-group > .btn-link + .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination__sectioncontrol > .btn-default + .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination__sectioncontrol > .btn-link + .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination__num-of-items > .btn-default + .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination__num-of-items > .btn-link + .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination > .btn-default + .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination > .btn-link + .btn-default.btn, .il-viewcontrol-pagination .il-viewcontrol-sortation .dropdown > .btn-default + .btn-default.btn, .il-viewcontrol-sortation .il-viewcontrol-pagination .dropdown > .btn-default + .btn-default.btn, .il-viewcontrol-pagination .il-viewcontrol-sortation .dropdown > .btn-link + .btn-default.btn, .il-viewcontrol-sortation .il-viewcontrol-pagination .dropdown > .btn-link + .btn-default.btn, -.il-viewcontrol-pagination .il-viewcontrol-sortation .last > .btn-default + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination .last > .btn-default + .btn-default.btn, -.il-viewcontrol-pagination .il-viewcontrol-sortation .last > .btn-link + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination .last > .btn-link + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-mode > .btn-default + .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-mode > .btn-link + .btn-default.btn, .il-viewcontrol-sortation .btn-default.btn + .btn-default.btn { +.il-viewcontrol-pagination .il-viewcontrol-sortation .dropdown.last > .btn-default + .btn-default.btn, +.il-viewcontrol-sortation .il-viewcontrol-pagination .dropdown.last > .btn-default + .btn-default.btn, +.il-viewcontrol-pagination .il-viewcontrol-sortation .dropdown.last > .btn-link + .btn-default.btn, +.il-viewcontrol-sortation .il-viewcontrol-pagination .dropdown.last > .btn-link + .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-mode > .btn-default + .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-mode > .btn-link + .btn-default.btn, .il-viewcontrol-sortation .dropdown > .btn-default.btn + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-sortation .dropdown.l-bar__element > .btn-default.btn + .btn-default.btn, +.il-viewcontrol-sortation .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .dropdown.l-bar__element > .btn-default.btn + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-ctrl + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-section > .btn-default + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-section > .btn-link + .btn-default.btn, +.il-viewcontrol-section .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.btn-group > .btn-default + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-section .l-bar__element.btn-group > .btn-default + .btn-default.btn, +.il-viewcontrol-section .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.btn-group > .btn-link + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-section .l-bar__element.btn-group > .btn-link + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination__sectioncontrol > .btn-default + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination__sectioncontrol > .btn-link + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination__num-of-items > .btn-default + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination__num-of-items > .btn-link + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination > .btn-default + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination > .btn-link + .btn-default.btn, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.dropdown > .btn-default + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .l-bar__element.dropdown > .btn-default + .btn-default.btn, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.dropdown > .btn-link + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .l-bar__element.dropdown > .btn-link + .btn-default.btn, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.last > .btn-default + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .l-bar__element.last > .btn-default + .btn-default.btn, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.last > .btn-link + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .l-bar__element.last > .btn-link + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-mode > .btn-default + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-mode > .btn-link + .btn-default.btn, +.il-viewcontrol-sortation .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.dropdown > .btn-default.btn + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-sortation .l-bar__element.dropdown > .btn-default.btn + .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn + .btn-default.btn { margin-left: 3px; } .btn-ctrl:hover, .il-viewcontrol-section > .btn-default:hover, .il-viewcontrol-section > .btn-link:hover, @@ -3284,13 +3331,14 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-default:hover, .il-viewcontrol-pagination .last > .btn-link:hover, .il-viewcontrol-mode > .btn-default:hover, -.il-viewcontrol-mode > .btn-link:hover, .il-viewcontrol-sortation .btn-default.btn:hover { +.il-viewcontrol-mode > .btn-link:hover, .il-viewcontrol-sortation .dropdown > .btn-default.btn:hover, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn:hover { text-decoration: none; background-color: white; color: #4c6586; border-width: 1px; border-style: solid; - border-color: white; + border-color: #4c6586; } .btn-ctrl:focus-visible, .il-viewcontrol-section > .btn-default:focus-visible, .il-viewcontrol-section > .btn-link:focus-visible, .il-viewcontrol-section .btn-group > .btn-default:focus-visible, @@ -3306,7 +3354,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-default:focus-visible, .il-viewcontrol-pagination .last > .btn-link:focus-visible, .il-viewcontrol-mode > .btn-default:focus-visible, -.il-viewcontrol-mode > .btn-link:focus-visible, .il-viewcontrol-sortation .btn-default.btn:focus-visible { +.il-viewcontrol-mode > .btn-link:focus-visible, .il-viewcontrol-sortation .dropdown > .btn-default.btn:focus-visible, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn:focus-visible { outline: 3px solid #0078D7; box-shadow: inset 0px 0px 0px 2px #FFFFFF, 0px 0px 0px 2px #FFFFFF; } @@ -3324,7 +3373,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-default:focus-visible::after, .il-viewcontrol-pagination .last > .btn-link:focus-visible::after, .il-viewcontrol-mode > .btn-default:focus-visible::after, -.il-viewcontrol-mode > .btn-link:focus-visible::after, .il-viewcontrol-sortation .btn-default.btn:focus-visible::after { +.il-viewcontrol-mode > .btn-link:focus-visible::after, .il-viewcontrol-sortation .dropdown > .btn-default.btn:focus-visible::after, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn:focus-visible::after { content: none; } .btn-ctrl:active, .il-viewcontrol-section > .btn-default:active, .il-viewcontrol-section > .btn-link:active, @@ -3341,7 +3391,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-default:active, .il-viewcontrol-pagination .last > .btn-link:active, .il-viewcontrol-mode > .btn-default:active, -.il-viewcontrol-mode > .btn-link:active, .il-viewcontrol-sortation .btn-default.btn:active { +.il-viewcontrol-mode > .btn-link:active, .il-viewcontrol-sortation .dropdown > .btn-default.btn:active, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn:active { transform: scale(0.95); background-color: white; color: #4c6586; @@ -3363,7 +3414,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > [disabled].btn-default, .il-viewcontrol-pagination .last > [disabled].btn-link, .il-viewcontrol-mode > [disabled].btn-default, -.il-viewcontrol-mode > [disabled].btn-link, .il-viewcontrol-sortation [disabled].btn-default.btn, +.il-viewcontrol-mode > [disabled].btn-link, .il-viewcontrol-sortation .dropdown > [disabled].btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > [disabled].btn-default.btn, .btn-ctrl fieldset[disabled], .il-viewcontrol-section > .btn-default fieldset[disabled], .il-viewcontrol-section > .btn-link fieldset[disabled], @@ -3381,7 +3433,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .btn-link fieldset[disabled], .il-viewcontrol-mode > .btn-default fieldset[disabled], .il-viewcontrol-mode > .btn-link fieldset[disabled], -.il-viewcontrol-sortation .btn-default.btn fieldset[disabled] { +.il-viewcontrol-sortation .dropdown > .btn-default.btn fieldset[disabled], +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn fieldset[disabled] { background-color: white; border-width: 1px; border-style: solid; @@ -3404,7 +3457,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .engaged.btn-default, .il-viewcontrol-pagination .last > .engaged.btn-link, .il-viewcontrol-mode > .engaged.btn-default, -.il-viewcontrol-mode > .engaged.btn-link, .il-viewcontrol-sortation .engaged.btn-default.btn { +.il-viewcontrol-mode > .engaged.btn-link, .il-viewcontrol-sortation .dropdown > .engaged.btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .engaged.btn-default.btn { background-color: white; border-width: 3px; border-style: solid; @@ -3425,7 +3479,8 @@ input.btn, input.il-link.link-bulky, .il-viewcontrol-pagination .last > .engaged.btn-default, .il-viewcontrol-pagination .last > .engaged.btn-link, .il-viewcontrol-mode > .engaged.btn-default, -.il-viewcontrol-mode > .engaged.btn-link, .il-viewcontrol-sortation .engaged.btn-default.btn, .open .btn-ctrl, .open .il-viewcontrol-section > .btn-default, .open .il-viewcontrol-section > .btn-link, +.il-viewcontrol-mode > .engaged.btn-link, .il-viewcontrol-sortation .dropdown > .engaged.btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .engaged.btn-default.btn, .open .btn-ctrl, .open .il-viewcontrol-section > .btn-default, .open .il-viewcontrol-section > .btn-link, .open .il-viewcontrol-section .btn-group > .btn-default, .il-viewcontrol-section .open .btn-group > .btn-default, .open .il-viewcontrol-section .btn-group > .btn-link, @@ -3445,7 +3500,9 @@ input.btn, input.il-link.link-bulky, .open .il-viewcontrol-pagination .last > .btn-link, .il-viewcontrol-pagination .open .last > .btn-link, .open .il-viewcontrol-mode > .btn-default, -.open .il-viewcontrol-mode > .btn-link, .open .il-viewcontrol-sortation .btn-default.btn, .il-viewcontrol-sortation .open .btn-default.btn { +.open .il-viewcontrol-mode > .btn-link, .open .il-viewcontrol-sortation .dropdown > .btn-default.btn, .il-viewcontrol-sortation .open .dropdown > .btn-default.btn, +.open .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .open .l-bar__element > .btn-default.btn { border: 1px solid #4c6586; background-color: white; } @@ -3469,7 +3526,9 @@ input.btn, input.il-link.link-bulky, .open .il-viewcontrol-pagination .last > .btn-link, .il-viewcontrol-pagination .open .last > .btn-link, .open .il-viewcontrol-mode > .btn-default, -.open .il-viewcontrol-mode > .btn-link, .open .il-viewcontrol-sortation .btn-default.btn, .il-viewcontrol-sortation .open .btn-default.btn { +.open .il-viewcontrol-mode > .btn-link, .open .il-viewcontrol-sortation .dropdown > .btn-default.btn, .il-viewcontrol-sortation .open .dropdown > .btn-default.btn, +.open .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .open .l-bar__element > .btn-default.btn { box-shadow: none; } @@ -9026,22 +9085,12 @@ div.alert ul > li:before { } } .il-table-presentation-viewcontrols { - background-color: #e2e8ef; - display: flex; - flex-wrap: wrap; - justify-content: space-between; -} -.il-table-presentation-viewcontrols > div { - padding: 6px; -} -.il-table-presentation-viewcontrols .il-viewcontrol-pagination { - order: 1; -} -.il-table-presentation-viewcontrols .il-viewcontrol-mode { - order: 2; + margin-bottom: 6px; } -.il-table-presentation-viewcontrols .il-viewcontrol-sortatio { - order: 3; +@media print { + .il-table-presentation-viewcontrols { + display: none !important; + } } .il-table-presentation-row { @@ -9095,6 +9144,10 @@ div.alert ul > li:before { .il-table-presentation-row .il-table-presentation-row-header .il-table-presentation-row-header-fields { display: block; /*initially visible*/ } +.il-table-presentation-row .il-table-presentation-row-header-fields-label::after, +.il-table-presentation-row .il-table-presentation-desclist .il-listing-characteristic-value-label::after { + content: ":"; +} .il-table-presentation-row .il-table-presentation-row-expanded { --bs-gutter-x: 30px; --bs-gutter-y: 0; @@ -9477,7 +9530,8 @@ td.c-table-data__cell--highlighted { border-radius: 10px; } -.il-viewcontrol-section > .btn-default, .il-viewcontrol-section > .btn-link, .il-viewcontrol-section > .btn-ctrl, .il-viewcontrol-sortation .il-viewcontrol-section > .btn-default.btn, .il-viewcontrol-section > .btn-default, .il-viewcontrol-section > .btn-link, +.il-viewcontrol-section > .btn-default, .il-viewcontrol-section > .btn-link, .il-viewcontrol-section > .btn-ctrl, .il-viewcontrol-sortation .dropdown.il-viewcontrol-section > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-section > .btn-default.btn, .il-viewcontrol-section > .btn-default, .il-viewcontrol-section > .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-section > .btn-default, .il-viewcontrol-section .btn-group.il-viewcontrol-section > .btn-link, .il-viewcontrol-pagination__sectioncontrol.il-viewcontrol-section > .btn-default, @@ -9495,8 +9549,10 @@ td.c-table-data__cell--highlighted { .il-viewcontrol-section .btn-group > .btn-default, .il-viewcontrol-section .btn-group > .btn-link, .il-viewcontrol-section .btn-group > .btn-ctrl, -.il-viewcontrol-section .il-viewcontrol-sortation .btn-group > .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-section .btn-group > .btn-default.btn, +.il-viewcontrol-section .il-viewcontrol-sortation .dropdown.btn-group > .btn-default.btn, +.il-viewcontrol-sortation .il-viewcontrol-section .dropdown.btn-group > .btn-default.btn, +.il-viewcontrol-section .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.btn-group > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-section .l-bar__element.btn-group > .btn-default.btn, .il-viewcontrol-section .il-viewcontrol-section.btn-group > .btn-default, .il-viewcontrol-section .il-viewcontrol-section.btn-group > .btn-link, .il-viewcontrol-section .btn-group > .btn-default, @@ -9520,7 +9576,8 @@ td.c-table-data__cell--highlighted { .il-viewcontrol-pagination__sectioncontrol > .btn-default, .il-viewcontrol-pagination__sectioncontrol > .btn-link, .il-viewcontrol-pagination__sectioncontrol > .btn-ctrl, -.il-viewcontrol-sortation .il-viewcontrol-pagination__sectioncontrol > .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination__sectioncontrol > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination__sectioncontrol > .btn-default.btn, .il-viewcontrol-section.il-viewcontrol-pagination__sectioncontrol > .btn-default, .il-viewcontrol-section.il-viewcontrol-pagination__sectioncontrol > .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-pagination__sectioncontrol > .btn-default, @@ -9540,7 +9597,8 @@ td.c-table-data__cell--highlighted { .il-viewcontrol-pagination__num-of-items > .btn-default, .il-viewcontrol-pagination__num-of-items > .btn-link, .il-viewcontrol-pagination__num-of-items > .btn-ctrl, -.il-viewcontrol-sortation .il-viewcontrol-pagination__num-of-items > .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination__num-of-items > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination__num-of-items > .btn-default.btn, .il-viewcontrol-section.il-viewcontrol-pagination__num-of-items > .btn-default, .il-viewcontrol-section.il-viewcontrol-pagination__num-of-items > .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-pagination__num-of-items > .btn-default, @@ -9560,7 +9618,8 @@ td.c-table-data__cell--highlighted { .il-viewcontrol-pagination > .btn-default, .il-viewcontrol-pagination > .btn-link, .il-viewcontrol-pagination > .btn-ctrl, -.il-viewcontrol-sortation .il-viewcontrol-pagination > .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-pagination > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-pagination > .btn-default.btn, .il-viewcontrol-section.il-viewcontrol-pagination > .btn-default, .il-viewcontrol-section.il-viewcontrol-pagination > .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-pagination > .btn-default, @@ -9582,6 +9641,8 @@ td.c-table-data__cell--highlighted { .il-viewcontrol-pagination .dropdown > .btn-ctrl, .il-viewcontrol-pagination .il-viewcontrol-sortation .dropdown > .btn-default.btn, .il-viewcontrol-sortation .il-viewcontrol-pagination .dropdown > .btn-default.btn, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.dropdown > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .l-bar__element.dropdown > .btn-default.btn, .il-viewcontrol-pagination .il-viewcontrol-section.dropdown > .btn-default, .il-viewcontrol-pagination .il-viewcontrol-section.dropdown > .btn-link, .il-viewcontrol-pagination .il-viewcontrol-section .btn-group.dropdown > .btn-default, @@ -9603,8 +9664,10 @@ td.c-table-data__cell--highlighted { .il-viewcontrol-pagination .last > .btn-default, .il-viewcontrol-pagination .last > .btn-link, .il-viewcontrol-pagination .last > .btn-ctrl, -.il-viewcontrol-pagination .il-viewcontrol-sortation .last > .btn-default.btn, -.il-viewcontrol-sortation .il-viewcontrol-pagination .last > .btn-default.btn, +.il-viewcontrol-pagination .il-viewcontrol-sortation .dropdown.last > .btn-default.btn, +.il-viewcontrol-sortation .il-viewcontrol-pagination .dropdown.last > .btn-default.btn, +.il-viewcontrol-pagination .il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.last > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .il-viewcontrol-pagination .l-bar__element.last > .btn-default.btn, .il-viewcontrol-pagination .il-viewcontrol-section.last > .btn-default, .il-viewcontrol-pagination .il-viewcontrol-section.last > .btn-link, .il-viewcontrol-pagination .il-viewcontrol-section .btn-group.last > .btn-default, @@ -9626,7 +9689,8 @@ td.c-table-data__cell--highlighted { .il-viewcontrol-mode > .btn-default, .il-viewcontrol-mode > .btn-link, .il-viewcontrol-mode > .btn-ctrl, -.il-viewcontrol-sortation .il-viewcontrol-mode > .btn-default.btn, +.il-viewcontrol-sortation .dropdown.il-viewcontrol-mode > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element.il-viewcontrol-mode > .btn-default.btn, .il-viewcontrol-section.il-viewcontrol-mode > .btn-default, .il-viewcontrol-section.il-viewcontrol-mode > .btn-link, .il-viewcontrol-section .btn-group.il-viewcontrol-mode > .btn-default, @@ -9648,7 +9712,8 @@ td.c-table-data__cell--highlighted { border-radius: 10px; } -.il-viewcontrol-sortation .btn-default.btn { +.il-viewcontrol-sortation .dropdown > .btn-default.btn, +.il-table-presentation-viewcontrols .l-bar__container .l-bar__group .l-bar__element > .btn-default.btn { border-radius: 10px; } @@ -9730,7 +9795,6 @@ td.c-table-data__cell--highlighted { width: 5rem; } -/* Component parts from old delos.scss */ div#agreement { width: 100%; height: 375px; @@ -10395,7 +10459,6 @@ div.il_info { text-align: left; } -/* Adapted from Bootstrap 3 */ .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; @@ -11021,7 +11084,6 @@ tbody.collapse.in { clip: auto; } -/* Legacy Modules & Services */ /* Modules/Bibliographic */ span.bibl_text_inline_Emph { font-style: italic; @@ -13190,6 +13252,27 @@ div.ilc_Page.readonly textarea[disabled] { scroll-margin-top: 30px; } +.il-table-presentation-desclist.inline .il-listing-characteristic-value-row { + display: flex; + width: auto; + padding-right: 18px; +} + +.il-table-presentation-desclist.inline .il-listing-characteristic-value { + display: flex; +} +.il-table-presentation-desclist.inline .il-listing-characteristic-value .il-listing-characteristic-value-item { + padding-left: 6px; +} + +.il-listing-characteristic-value-label, .il-listing-characteristic-value-item { + width: fit-content; +} + +.il-listing-characteristic-value-row.clearfix { + border-top: none; +} + /* Modules/Wiki */ a.ilWikiPageMissing:link, a.ilWikiPageMissing:visited { color: #d00; @@ -18644,6 +18727,13 @@ img.ilUserXXSmall { outline: 3px solid #0078D7; } +/* +* Components +*/ +/* UI Framework */ +/* Component parts from old delos.scss */ +/* Adapted from Bootstrap 3 */ +/* Legacy Modules & Services */ /* These classes are used to limit the number of rows when displaying larger chunks of text. The mixin receives $height-in-rows as an integer. The classes il-multi-line-cap-2,3,5,10 diff --git a/templates/default/delos.css.map b/templates/default/delos.css.map index bed4e9f9730b..a5fa3ad91a33 100644 --- a/templates/default/delos.css.map +++ b/templates/default/delos.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["020-dependencies/_index.scss","020-dependencies/modifications/datetimepicker/bootstrap-datetimepicker.scss","030-tools/_tool_browser-prefixes.scss","010-settings/_settings_typography.scss","030-tools/_tool_screen-reader-only.scss","010-settings/_settings_borders.scss","010-settings/_settings_color-palette.scss","010-settings/_settings_button.scss","010-settings/legacy-settings/_legacy-settings_menu.scss","070-components/UI-framework/Dropdown/_ui-component_dropdown.scss","030-tools/legacy-bootstrap-mixins/_nav-divider.scss","050-layout/basics/_layout_spacing-variables.scss","020-dependencies/modifications/_jquery-autocomplete.scss","020-dependencies/modifications/_additions_tinymce.scss","020-dependencies/modifications/_additions_yui2.scss","040-normalize/_index.scss","040-normalize/_normalize_print.scss","040-normalize/_normalize_typography.scss","040-normalize/_normalize_input.scss","040-normalize/_normalize_structure.scss","040-normalize/_normalize_table.scss","050-layout/_layout_grid.scss","050-layout/_layout_container.scss","050-layout/_layout_visibility-utilities.scss","050-layout/_layout_element-bar.scss","060-elements/_index.scss","060-elements/_elements_html-body.scss","060-elements/_elements_input.scss","010-settings/legacy-settings/_legacy-settings_form.scss","060-elements/_elements_lists.scss","060-elements/_elements_media.scss","060-elements/_elements_objects.scss","060-elements/_elements_tables.scss","060-elements/_elements_typography.scss","030-tools/_tool_focus-outline.scss","070-components/_index.scss","070-components/UI-framework/_ui-component_tooltip.scss","030-tools/_tool_typography-mixins.scss","070-components/UI-framework/Breadcrumbs/_ui-component_breadcrumbs.scss","050-layout/standardpage/_layout_standardpage.scss","070-components/UI-framework/Button/_ui-component_button.scss","030-tools/_tool_buttons.scss","070-components/UI-framework/Button/_ui-component_tag.scss","070-components/UI-framework/Button/_ui-component_toggle.scss","070-components/UI-framework/Card/_ui-component_card.scss","010-settings/legacy-settings/_legacy-settings_panel.scss","070-components/UI-framework/Chart/_ui-component_chart.scss","010-settings/legacy-settings/_legacy-settings_chart.scss","070-components/UI-framework/Counter/_ui-component_counter.scss","070-components/UI-framework/Deck/_ui-component_deck.scss","070-components/UI-framework/Divider/_ui-component_divider.scss","070-components/UI-framework/Dropzone/_ui-component_dropzone.scss","010-settings/legacy-settings/_legacy-settings_dropzone.scss","070-components/UI-framework/Entity/_ui-component_entity.scss","070-components/UI-framework/Input/_ui-component_tag.scss","070-components/UI-framework/Input/_ui-component_password.scss","070-components/UI-framework/Input/_ui-component_radio.scss","070-components/UI-framework/Input/_ui-component_multiselect.scss","070-components/UI-framework/Input/_ui-component_textarea.scss","070-components/UI-framework/Input/_ui-component_filter.scss","070-components/UI-framework/Input/_ui-component_duration.scss","070-components/UI-framework/Input/_ui-component_file.scss","010-settings/legacy-settings/_legacy-settings_ui-input-file.scss","070-components/UI-framework/Input/_ui-component_markdown.scss","070-components/UI-framework/Input/_ui-component_input.scss","070-components/UI-framework/Item/_ui-component_item.scss","070-components/UI-framework/Launcher/_ui-component_launcher.scss","010-settings/legacy-settings/_legacy-settings_symbol.scss","070-components/UI-framework/Layout/_ui-component_standardpage.scss","010-settings/_settings_header.scss","010-settings/_settings_footer.scss","050-layout/standardpage/_layout_standardpage-mobile.scss","070-components/UI-framework/Layout/_ui-component_alignment.scss","070-components/UI-framework/Link/_ui-component_link.scss","070-components/UI-framework/Listing/_ui-component_properties.scss","030-tools/_tool_clearfix.scss","070-components/UI-framework/Listing/_ui-component_characteristic_value.scss","050-layout/basics/_layout_positioning.scss","070-components/UI-framework/Listing/_ui-component_workflow.scss","070-components/UI-framework/Listing/_ui-component_entitylisting.scss","070-components/UI-framework/MainControls/Slate/_ui-component_slate.scss","070-components/UI-framework/MainControls/_ui-component_metabar.scss","030-tools/_tool_multi-line-cap.scss","070-components/legacy/_component_screen-reader-only.scss","070-components/UI-framework/MainControls/_ui-component_mainbar.scss","070-components/UI-framework/MainControls/_ui-component_footer.scss","070-components/UI-framework/MainControls/_ui-component_mode_info.scss","070-components/UI-framework/MainControls/_ui-component_system_info.scss","070-components/UI-framework/Menu/_ui-component_drilldown.scss","070-components/UI-framework/MessageBox/_ui-component_messagebox.scss","070-components/UI-framework/Modal/_ui-component_modal.scss","070-components/UI-framework/Panel/_ui-component_panel.scss","030-tools/_tool_border-radius.scss","070-components/UI-framework/Player/_ui-component_player.scss","020-dependencies/modifications/webui-popover/jquery.webui-popover.scss","070-components/UI-framework/Popover/_ui-component_popover.scss","070-components/UI-framework/Symbol/_ui-component_icon.scss","070-components/UI-framework/Symbol/_ui-component_glyph.scss","070-components/UI-framework/Symbol/_ui-component_avatar.scss","070-components/UI-framework/Table/_ui-component_table.scss","070-components/UI-framework/Toast/_ui-component_toast.scss","070-components/UI-framework/Tree/_ui-component_tree.scss","010-settings/legacy-settings/_legacy-settings_tree.scss","070-components/UI-framework/ViewControl/_ui-component_viewcontrol.scss","070-components/legacy/_component_agreement.scss","070-components/legacy/_component_alert.scss","070-components/legacy/_component_bottom-center-area.scss","070-components/legacy/_component_headline.scss","070-components/legacy/_component_helpsidebar.scss","070-components/legacy/_component_icon.scss","070-components/legacy/_component_LeftNavSpace.scss","070-components/legacy/_component_link.scss","070-components/legacy/_component_map.scss","070-components/legacy/_component_media-object.scss","070-components/legacy/_component_overlay.scss","070-components/legacy/_component_rightPanel.scss","070-components/legacy/_component_delostable.scss","070-components/legacy/_component_animated-collapse-fade.scss","070-components/legacy/_component_btn-group.scss","070-components/legacy/_component_carousel.scss","050-layout/_layout_responsive-img.scss","070-components/legacy/_component_input-group.scss","070-components/legacy/Modules/_component_bibliographic.scss","070-components/legacy/Modules/_component_blog.scss","070-components/legacy/Modules/_component_bookingmanager.scss","070-components/legacy/Modules/_component_chatroom.scss","070-components/legacy/Modules/_component_course.scss","070-components/legacy/Modules/_component_datacollection.scss","070-components/legacy/Modules/_component_excercise.scss","070-components/legacy/Modules/_component_forum.scss","070-components/legacy/Modules/_component_learningmodule.scss","070-components/legacy/Modules/_component_learningsequence.scss","070-components/legacy/Modules/_component_lticonsumer.scss","070-components/legacy/Modules/_component_mediacast.scss","070-components/legacy/Modules/_component_mediapool.scss","070-components/legacy/Modules/_component_orgunit.scss","070-components/legacy/Modules/_component_poll.scss","070-components/legacy/Modules/_component_portfolio.scss","070-components/legacy/Modules/_component_scormaicc.scss","070-components/legacy/Modules/_component_survey.scss","070-components/legacy/Modules/_component_test_legacy.scss","070-components/legacy/Modules/_component_test.scss","070-components/legacy/Modules/_component_wiki.scss","070-components/legacy/Modules/_component_workspacefolder.scss","070-components/legacy/Services/_component_accesscontrol.scss","070-components/legacy/Services/_component_accordion.scss","070-components/legacy/Services/_component_awareness.scss","070-components/legacy/Services/_component_badge.scss","070-components/legacy/Services/_component_block.scss","070-components/legacy/Services/_component_bookmarks.scss","070-components/legacy/Services/_component_calendar.scss","070-components/legacy/Services/_component_chart.scss","070-components/legacy/Services/_component_container.scss","070-components/legacy/Services/_component_copage.scss","070-components/legacy/Services/_component_fileupload.scss","070-components/legacy/Services/_component_form.scss","070-components/legacy/Services/_component_help.scss","070-components/legacy/Services/_component_infoscreen.scss","070-components/legacy/Services/_component_init.scss","070-components/legacy/Services/_component_learninghistory.scss","070-components/legacy/Services/_component_like.scss","070-components/legacy/Services/_component_mail.scss","070-components/legacy/Services/_component_mediaobjects.scss","070-components/legacy/Services/_component_membership.scss","070-components/legacy/Services/_component_navigation.scss","070-components/legacy/Services/_component_news.scss","070-components/legacy/Services/_component_notes.scss","070-components/legacy/Services/_component_object.scss","070-components/legacy/Services/_component_onscreenchat.scss","070-components/legacy/Services/_component_rating.scss","070-components/legacy/Services/_component_search.scss","070-components/legacy/Services/_component_skill.scss","070-components/legacy/Services/_component_style.scss","070-components/legacy/Services/_component_table.scss","070-components/legacy/Services/_component_tags.scss","070-components/legacy/Services/_component_termsofservice.scss","070-components/legacy/Services/UIComponent/_component_advancedselectionlist.scss","070-components/legacy/Services/UIComponent/_component_checklist.scss","070-components/legacy/Services/UIComponent/_component_explorer2.scss","070-components/legacy/Services/UIComponent/_component_groupedlist.scss","070-components/legacy/Services/UIComponent/_component_lightbox.scss","070-components/legacy/Services/UIComponent/_component_modal.scss","070-components/legacy/Services/UIComponent/_component_progressbar.scss","070-components/legacy/Services/UIComponent/_component_tabs.scss","070-components/legacy/Services/UIComponent/_component_toolbar.scss","010-settings/_settings_layout.scss","070-components/legacy/Services/UIComponent/_component_tooltip.scss","070-components/legacy/Services/_component_user.scss","070-components/legacy/Services/_component_webdav.scss","080-hacks/_index.scss"],"names":[],"mappings":"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iC;;ADQjC;EACC,OhClBa;;AgCmBb;EACC,OhCyBkB;;A4BbrB;EACC,SAjCuB;EAkCvB;;AACA;EACC;;AIXD;EACC,SCYsC;EDXtC,OhCTsB;EgCUtB;EACA;;;AA8BH;AAEA;EACC;EACA,WnCrDqB;;AmCuDrB;EACC;;AAGD;EARD;IASE;IACA;;;;AEpCF;AAAA;EC+EY;EACA;EAQJ;EACA;EACA,QA3BW;EA4BX;EACA;EAGA,atC/HoB;EsCgIpB;EACA,aD1HQ;EC2HR;EACA,atCpGiB;EsCqGjB,iBDjIY;ECqIZ,YbxGc;Ea4GV,Wb5GU;Ea8Gd,WtCvIc;EsCyId;EACA,K9BlIsB;;A8BoGtB;AAAA;AAAA;AAAA;AAAA;AAAA;EACI,aAfa;;;ADhEvB;AAAA;AAAA;AAAA;EAEE;;;AAKJ;AAAA;EACE,WZhB0B;;AYkB1B;EAHF;AAAA;IAII;;;;AAIJ;ECoFQ,YbxGc;Ea4GV,Wb5GU;Ea8Gd,WtCvIc;EsCyId;EACA,K9BlIsB;E8BuItB,kBnCzJQ;EmC0JR,OlClJgB;EkCmJhB,cDnJS;ECoJT;EACA,cnC7JQ;EmC+JJ,epC3JY;;AoC+JhB;EACI,iBD9JQ;ECgKR,kBAtGS;EAuGT,OlC/JY;EkCgKZ,cDhKK;ECiKL;EACA,cA1GS;;APhCpB;EACC,SAjCuB;EAkCvB;;AACA;EACC;;AO6IK;EACI,WAlFW;EAoFX,kBAxGU;EAyGV,OlC7KY;EkC8KZ,cD9KK;EC+KL;EACA,cA5GU;;AAgHd;AAAA;EAEI,kBlC7JS;EkC8JT,cDvLK;ECwLL;EACA,clC/Ja;EkCgKb,OlClKY;EkCmKZ,QA7FU;EA8FV;;AAqBJ;EACI,kBDhMQ;ECiMR,cDrJe;ECsJf;EACA,cnC7NI;EmC8NJ,OnC/LI;;;AkC0ChB;ECkEQ,YbxGc;Ea4GV,Wb5GU;Ea8Gd,WtCvIc;EsCyId;EACA,K9BlIsB;E8BuItB,kBlCxIY;EkCyIZ,OlC3Ie;EkC4If,cDnJS;ECoJT;EACA,clC1IgB;EkC4IZ,epC3JY;;AoC+JhB;EACI,iBD9JQ;ECgKR,kBAtGS;EAuGT,OlCxJW;EkCyJX,cDhKK;ECiKL;EACA,cA1GS;;APhCpB;EACC,SAjCuB;EAkCvB;;AACA;EACC;;AO6IK;EACI,WAlFW;EAoFX,kBAxGU;EAyGV,OlCtKW;EkCuKX,cD9KK;EC+KL;EACA,cA5GU;;AAgHd;AAAA;EAEI,kBlC7JS;EkC8JT,cDvLK;ECwLL;EACA,clC/Ja;EkCgKb,OlClKY;EkCmKZ,QA7FU;EA8FV;;AAqBJ;EACI,kBDhMQ;ECiMR,cDnIe;ECoIf;EACA,clC1MY;EkC2MZ,OnC/LI;;;AkC4DhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ECuBY;EACA;EAQJ;EACA;EACA,QA3BW;EA4BX;EACA;EAGA,atC/HoB;EsCgIpB;EACA,aD1HQ;EC2HR;EACA,atCpGiB;EsCqGjB,iBDjIY;ECqIZ,YlC/GmB;EkCmHf,WlCnHe;EkCqHnB,WtCvIc;EsCyId;EACA,K9BlIsB;E8BuItB,kBnC7HU;EmC8HV,OnC1JQ;EmC2JR,cDnJS;ECoJT;EACA,cnCjIU;EmCmIN,epCtJuB;;AoC6G3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACI,aAfa;;AA2DjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACI,iBD9JQ;ECgKR,kBAtGS;EAuGT,OnCvKI;EmCwKJ,cDhKK;ECiKL;EACA,cA1GS;;APhCpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,SAjCuB;EAkCvB;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AO6IK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACI,WAlFW;EAoFX,kBAxGU;EAyGV,OnCrLI;EmCsLJ,cD9KK;EC+KL;EACA,cA5GU;;AAgHd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEI,kBA1HY;EA2HZ,cDvLK;ECwLL;EACA,cA3HgB;EA4HhB,OA7Hc;EA8Hd,QA7FU;EA8FV;;AAqBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACI,kBA1IW;EA2IX,cAlIe;EAmIf;EACA,cnCjMM;EmCkMN,OA7Ia;;ADYvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,kBlC3ES;;AkC6EX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;;AAUJ;EACE;EACD;EACA;EACC;EACA;EACA,arCjFuB;EqCkFvB,OlCpHc;;AkCsHd;EAKE;EtCxDF,oBsCyDE;EtCxDM,YsCwDN;;AAEF;EAGE;;AAEF;EACE,OlCvFkB;EkCwFlB,iBrC1FuB;EqC2FvB;;AAEF;EAEE,kBjCzGiB;EiC0GjB,OjC3GoB;EiC4GpB;;AACA;EACE;;AAGJ;EACE,OlCnHY;EkCoHZ,kBlCvHc;;;AkCoIlB;AAAA;AAAA;ECrBQ,YD/GiB;ECiHb;EAIJ,WtCrIe;EsCuIf;EACA,K9B/IoB;E8BoJpB,kBnChIY;EmCiIZ,OnC3HQ;EmC4HR,cDnJS;ECoJT;EACA,cnCpIY;EmCsIR,epC3JY;;AoC+JhB;AAAA;AAAA;EACI,iBD9JQ;ECgKR,kBnC1IM;EmC2IN,OnCxII;EmCyIJ,cDhKK;ECiKL;EACA,cnC9IM;;A4BIjB;AAAA;AAAA;EACC,SAjCuB;EAkCvB;;AACA;AAAA;AAAA;EACC;;AO6IK;AAAA;AAAA;EAGI,kBAxGU;EAyGV,OnCtJI;EmCuJJ,cD9KK;EC+KL;EACA,cA5GU;;AAgHd;AAAA;AAAA;AAAA;AAAA;AAAA;EAEI,kBlC7JS;EkC8JT,cDvLK;ECwLL;EACA,clC/Ja;EkCgKb,OlClKY;EkCmKZ,QA7FU;;AAmHd;AAAA;AAAA;EACI,kBnC9LM;EmC+LN,cDjCe;ECkCf;EACA,cnCpMQ;EmCqMR,ODtCa;;ACsDb;AAAA;AAAA;EACI;EACA;EACA,K9B5OY;E8B6OZ;;AAGJ;AAAA;AAAA;EACI;;APzMf;AAAA;AAAA;EACC;EACA,QA/CuB;EAgDvB;;AACA;AAAA;AAAA;EACC;;;AM+ID;AAAA;AAAA;AAAA;EAEE,eDjKuB;;ACkKvB;AAAA;AAAA;AAAA;EACE;EACA;;;AAIN;EACE;EACA;EACA,eD3KyB;;;ACiL3B;ECxEQ,YD/GiB;ECmHb,WDnHa;ECqHjB,WtCnIc;EsCqId;EACA,K9BlIsB;;;A6ByM9B;EChFQ,YDoFe;EChFX,WDgFW;EC9Ef,WtCzIe;EsC2If;EACA,K9BlIsB;;;A6BmN9B;EACE;;;AAGF;EACE;;;AAOF;EACC;EACC,kBjClNmB;EiCmNnB,cjClNuB;EiCuNxB;EACA;EACA;;AANC;EACE,kBjCrNiB;EiCsNjB,cjCrNqB;;;AiC4NzB;EACE;EACA,arC5NuB;EqC6NvB;EACA,OlChPuB;;AkCkPvB;EAEE,OlCzPe;EkC0Pf;;AAGF;EACE;EACA;EACA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hB;EACC;;;AAGD;EACC;EACA;EACA,SAhIsC;;;AAoIvC;EACC;EACA;EACA;EACA;EACA,O7B9HsB;;A6BqIvB;EACC;EACA;EACA,SAlJiC;;;AAsJlC;EACC;EACA;;;AAID;EACC;;;AAGD;EAIC;EACA;EACA;;AALA;EACC;;AAKD;EACI;EACA;;;AAIL;AACA;EACC,kB9DjKY;E8DkKZ;EACA;EACA,QEzLkB;;;AF6LnB;AAAA;AAAA;AAAA;AAAA;AASC;EADD;IAEE;;;;AAGF;EAEE;IACC;;;AAKH;EAEE;IACC;;EAED;AAAA;IAEC;IACA;;;AAKH;EAEC;IACC,Y9D7MW;I8D8MX;IACA;IACA;;EACA;IACC;IACA;IACA,SAnOoC;IAoOpC;;EACA;IACC;IACA;IACA;IACA;IACA;IACA;IACA;;EAEA;IACC;;EAED;IACC;IACA;IACA;IACA;IACA,Y7B5MmB;;E6B8MpB;IACC;IACA;IACA;IACA;;EAIH;IACC;IACA;;EACA;IACC;IACA;IACA;IACA;IACA;;EACA;IACC;IACG;IACH;IACA;IACA;IACA;;EACA;IACC,Y7BvOkB;;E6B0OnB;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SA5RmC;;EA6RnC;IACC;;EAIF;IAEC;;EAQL;IACC;IACA;IACA;IACA;;EAID;IACC;IACG,QGlUkC;IHmUlC;IACA;IACH,Y7BhRsC;;E6BoRvC;IACC,OGxUkC;;EH4UnC;IACC;;EAID;IACC;;EAGD;IACC;;EAEA;IACC;;EAED;IACC;IACA;;EAGD;IACC;IACA;IACA,O9DpVgB;I8DqVhB,WjEpVmB;IiEqVnB;IACA;IACA;IACA;;EACA;IACI;IACA;IACA,WjE5Ve;IiE6Vf,czD3WW;;EyD+WhB;IACC;;EAED;AAAA;AAAA;AAAA;AAAA;AAAA;IAOC,Y9DpWU;I8DqWV,c9DrWU;I8DsWV,O9D9WgB;I8D+WhB;;EAGD;IACC;;EAKF;IACC;IACA;;EAID;IACC;IACA;IACA;IACA,YGlZsC;IHmZtC,YA/YyD;IAgZzD;IACA,SA3YgC;;EA+YjC;IACC;IACG;I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ACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AASX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AAMjD;EACC,O3F5Te;;A2F8Tf;EACC,O3FvTiB;;A2FwTjB;EACC,O3FzTgB;;A2F6TlB;EACC,O3FpTuB;E2FqTvB;;AAGD;EACC,O3F9RoB;E2F+RpB;;;AAKD;EACC;;;AAIF;AAAA;EAEC;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAID;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;EACA;;;AC/bD;EACC,Q/B3BoB;E+B4BpB,O/B5BoB;E+B8BpB;EAEA,eA5ByB;EA6BzB,cAxBwB;EAyBxB,cA5BuB;EA8BvB;EACA;EACA;EACA;;AAGA;EACC,c7FhDqB;;A6FkDrB;EACC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;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;;AAKH;EAIC;EACA;EACA;EACA;;AANA;EACC;;;AAQF;EACC;IACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC,OvHzDoB;EuH0DpB,W1HtFoB;E0HuFpB;EACA;EACA;;AAGD;EACC;EACA,OvHlEoB;EuHmEpB;EACA;EACA;;AAGD;EACC,kBvHxFgB;EuHyFhB;EACA,W1HvGoB;;A0H0GrB;EACC,OvHtFc;;AuHyFf;EACC,OvHrFoB;;AuHwFrB;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,kBvH3GgB;;AuH8GjB;EACC;EACA;E3HzEA,oB2H0EA;E3HzEQ,Y2HyER;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;;ACzKF;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA,OxHiBe;EwHhBf;EACA;EACA;;;AAED;EACC;EACA,OxHUe;EwHTf;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAID;EACC;;;AAID;EACC,W3HxCqB;;;A2H2CtB;EACC,W3HxCqB;E2HyCrB;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;E5HfE,oB4HgBD;E5HfS,Y4HeT;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC,kBxH7EwB;;;AwHgFzB;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AC7GD;AAEA;EACC;EACA;;;AAGD;EACC;EACA,W5HGqB;;;A4HAtB;EACC;EACA;;;AAGD;EACE;;;AAGF;EACC,a5HcwB;E4HbxB;EACA,W5HZqB;E4HalB;EACA;;;AAGJ;EACE;;;AAGF;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;ACjDD;AAEA;EACC,crHU+B;EqHT/B,erHS+B;;;AqHNhC;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA,W7HbqB;;;A6HgBtB;EACC;EACA;EACA;;;AAED;EACC,kB1HTiB;E0HUjB;;;AAGD;EACC;;AACA;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;;;AAKF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA,O1H/DwB;E0HgExB;EACA;EACA;EACA;;;ACtFD;AAQA;EACC,a9H0BwB;;;A8HvBzB;EACC,a9HwBwB;;;A8HrBzB;EACC;EACA,a9HmBwB;;;A8HhBzB;EACC;EACA;EACA;EACA,W9HdqB;;;A8HiBtB;EACC,a9HQwB;E8HPxB,W9HnBqB;E8HoBrB;;;AAGD;AACA;EACC;EACA;EACA;EACA,kB3HjBY;;;A2HoBb;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EALD;IAME;IACA;;;;AAKH;EACC;EACA;EACA;EACA;;;AAGD;EACC,YtHnD8B;EsHoD9B,W9HpDqB;;A8HqDrB;EAHD;IAIE,YtH/D0B;IsHgE1B,W9HzDqB;;;;A8H6DvB;EACC,O3HpCqB;;;A2HuCtB;EACC;EACA;EACA;;AACA;EAJD;IAKE,ctHhE4B;IsHiE5B;;;AAGA;EADD;IAEE;IACA;;;;AAKH;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC,YtHjG8B;;;AsHoG/B;EACC;EACA,etHtG8B;EsHuG9B;;AAEA;EACC,kB3HnGW;E2HoGX;;AAGD;EACC;EACA;;AACA;EACC;;AAED;EACC;;AAGA;EADD;IAEE;;;AAKF;EADD;IAEE;IACA;;;;AAKH;EAEE;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;;AAKH;EACC;EACA;EACA,a9HlJwB;E8HmJxB,O3H/KkB;;;A2HkLnB;EACC;EACA,a9HxJwB;;A8HyJxB;EACC,a9H5JuB;;A8H8JxB;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC,YtHrM8B;;;AsHwM/B;EACC;;;AAGD;EACC,O3HnNkB;;;A2HsNnB;EACC,a9H3LwB;;;A8H8LzB;EACC;EACA;EACA;EACA;EACA;EACA;EACA,O3H1Me;E2H2Mf;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;ACjQD;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AACA;EACA,kB5HRiB;E4HSjB;AACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AC7GD;EACI,kB7HmBS;E6HlBT,oBtFFc;EsFGd,YtFHc;;AsFIjB;AAAA;EAEC;EACA;EACA;;;AAKD;EACC;;;AAGF;EACC;EACA,kB7HGiB;;A6HFjB;EACC;;AAED;EACC;;;AAMA;EACC;;;AAKH;EACC,kB7HfiB;;A6HiBjB;EACC;;;AAGF;AAEA;EACC;;;AClDD;AAUA;EACE;EACA;;;AAEF;EACE;EACA,SARmB;EASnB,OAfiB;EAgBjB,QAfkB;;;AAiBpB;ACpBA;EACE;;AACA;EACE;;;AAKF;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;EACA;EACA;;AAGF;EACE;EAIA;;AAHA;EACE;;AAKJ;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIA;EACE;;AAIJ;EACE;;;ACjEJ;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC,kBhIgBiB;EgIfjB;;;AAGD;EACC;;;AChBC;EACD;EACA;EACA;;AAGC;EACD;;AAGC;EACD;EACA;;AAGC;EACD;EACA;;AAGC;EACD;EACA;EACA;;;AAID;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;ACtDF;AAEA;EACC;EACA,WrISqB;EqIRrB,OlIMkB;;;AkIHnB;EACC;EACA,WrIGqB;EqIFrB,OlI8BqB;;;AkI3BtB;EACC;EACA;EACA;EACA,WrILqB;EqIMrB;;;AAGD;EACC;EACA;EACA;EACA,WrIbqB;EqIcrB,OlIcqB;;;AkIXtB;EACC;EACA;;;AAGD;EACC;EACA,WrIxBqB;;;AqI2BtB;EACC;;;AAGD;EACC;EACA,WrIjCqB;;;AqIoCtB;EACC;;;AAGD;EACC,kBlInDe;;;AkIsDhB;EACC;;;AAGD;EACC,WrI7CqB;;;AsIjBtB;AAEA;EACC;;AACA;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA,WtIRqB;AsISrB;;;AAGD;EAEC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EAKC;;AAJA;EACC;EACA;;;AAKF;EACC;;;AAGD;EACC;;;AC7DD;AAEA;EACC,OpI+Be;EoI9Bf,kBpIsBiB;EoIrBjB;EACA;;;AAGD;EACC,kBpIgBiB;EoIfjB,OpIuBe;EoItBf;EACA;EACA;;;AAGD;EACC;EACA,OpIee;EoIdf;EACA;EACA;;;ACrBD;AAEA;EAEC;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAGD;IACC;IACA;IACA;IACA;;EAGD;IACC;IACA;IACA;IACA;;EAGD;IACC;;EAGD;IACC;IACA;;EAGD;IAEC;IACA;AACA;AAAA;AAAA;;EAKD;IAEC;IACA;IACA;;EAGD;IAEC;;EAGD;IACC;;EAGD;IACC;IACA;;EAGD;IACC;IACA;IACA;IACA;IACA;;EAGD;IACC;IACA,axIxCuB;IwIyCvB;IACA;IACA;;EAGD;IACC;IACA;;EAGD;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;IACA,axI5EuB;IwI6EvB;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;IACA;IACA,axInGuB;IwIoGvB;IACA;;;AAIF;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA,kBrI/IiB;EqIgJjB;;;AAGD;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAMA;EACC;;;ACnMH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EAEI;EACH;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;AAEA;EAHD;IAIE;;;;AAIF;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAEI;EACA;EACA;;;AAGJ;EACC;EACA;EACA;EAEA,SjIxH+B;;AiIyH/B;EACC,cjI1H8B;EiI2H9B,ejI3H8B;;;AiI+HhC;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EAEC;EACA;EACA;;;AAGD;EAEC;EACA;EACA;;;AAGD;EAEC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EASI;;;AAEJ;AAAA;EAGI;;;AAEJ;EAEI;EACA;;;AAEJ;EAEI;EACA;EACA;;;AAKJ;EAEI;;;AAEJ;EAEI;;;AAEJ;AAAA;EAGI;;;AAGJ;EAEC;;;AAED;EAEC;;;AAED;EAEC;;;AAED;AAAA;EAGC;;;AAED;EAEC;;;AAED;EAEC;;;AAED;EAEC;;;AAED;EAEC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAOD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;EAGC;EACA;;;AAGD;EAEC;EACA;EACA;;;AAGD;EAEC;;;AAGD;AAAA;EAGC;;;AAGD;EAEC;EACA;;;AAGD;EAEI;EACA;EACA;;;AAGJ;EACC;;;AAGD;EAEI;;;AAGJ;EAEI;;;AAGJ;AAAA;EAGC;;;AAGD;AAAA;EAGI;EACA;;;AAEJ;EAEI;;;AAGJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAGJ;AAAA;EAGI;EACA;EACA;;;AAGJ;EAEC;;;AAGD;EACC;;;AAGD;AAEA;EACI;;;AAGJ;EACC;EACA;;;AAGD;EACI;EACA;EACA;EACA;;;AAGJ;EACI;;;AAEJ;AAEA;EAEC;;;AAED;EAEC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EASC;EACA;;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAED;EACC;;;ACzkBD;EACI;;AACH;EACC;;AAGE;EACI;EACA,WApBsB;EAqBtB,clIfsB;;AkIgBtB;EACI;EACA;;AAEJ;EARJ;IASQ;IACA;;;AAGR;EACI;;AACA;EACI,kBvIbC;EuIcD;;AAGR;EA1BJ;IA2BQ;;;;AAIR;EACC;IACC;;EACA;IACC;IACS;;;AAMZ;EACI;EACA;EACA;EACA,kBvInCc;;;AuIwCd;EACI;EACA;;AACA;EACI;EACA;EACA;EACA;;AACA;EACI;;AAEJ;EACI;;AAEJ;EACI,a1I1CS;;;A0IkDxB;EACO;EACA;;AACA;EACI;EACA;;AAEJ;EACI,W1IhFU;E0IiFV,a1I3Da;;A0I8DrB;EACI,elI9FoB;;;AkIoGxB;EACI,W1I9Fe;;A0IiGnB;EACI;EACA;;;AAIR;EACI;;;ACtHJ;AAEA;EACC,OxISiB;;;AwINlB;EACC,OxI+BqB;;;AwI5BtB;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA,anIjB2B;EmIkB3B,gBnIlB2B;EmImB3B,W3IdqB;;;A2IiBtB;AAEC;EACC;;;ACjCF;AAEA;EACC;;;AAGD;EACC,kBzImBiB;EyIlBjB;EACA;;;ACRD;EACE,W7IWoB;;A6ITpB;EACE;EACA,crIe0B;;;AsIlB9B;AAEA;EACC;EACA;EACA;EACA,O3INe;E2IOf,W9IOqB;E8INrB;EACA;EACA,kB3IaiB;E2IZjB;EACA;EACA;;AACA;EACC,kB3IagB;;;A2ITlB;EACC;EACA;;;AAGD;EACC,QpGvBiB;EoGwBjB,etIf6B;EsIgB7B,e5IjBkC;;;A4IoBnC;EACC,atIvB4B;;;AsIyB7B;EACC;EACA,kB3IPiB;;;A2IUlB;EACC;EACA;EACA;;;AAWD;EACI;;;ACtDJ;AAEA;EACC;EACA,O5I4Be;E4I3Bf;;;AAGD;EACC;;AACA;EACC,kB5IagB;E4IZhB;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAIA;EACC;;AAED;EACC,kB5IPgB;;A4ISjB;EACC;;;AAKF;EACC;EACA;EhJsBC,oBgJrBD;EhJsBS,YgJtBT;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA,kB5IvCY;;A4BfZ;EACC;EACG;;AAEJ;EACC;EACA,SAXuB;EAYvB;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA,QArBsB;EAsBtB,SAvBsB;;AgHkExB;EACC;EACA;;AAEA;EACC;EACA;;;AAKH;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC,O5IjDqB;E4IkDrB,W/I9EqB;E+I+ErB;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC,kB5IhFiB;E4IiFjB;EACA,W/I/FqB;;;A+IkGtB;EACC,O5I9Ee;;;A4IiFhB;EACC,O5I7EqB;;;A4IgFtB;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AACC;EACA;EACA;EACA;AACA;AACA;AACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAIA;EACC;EACA;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC,kB5IhKiB;E4IiKjB,O5IvJqB;;;A4I0JtB;EACC;;;AAGD;AACA;EACC;EACA;EACA;;;AAGD;EACC;;;ACjND;AAEA;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;E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A;EACA;EACA;EACA,QtJzHyB;EsJ0HzB;EACA;;;AAIA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAED;EACC;;;AAIF;EACC,kBnJhKoB;;;AmJoKrB;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC,OnJxKkB;EmJyKlB;EACA,WtJxKqB;EsJyKrB;EACA;EACA,kBnJ9JiB;;;AmJkKlB;EACC;EACA;EACA;;;AAGD;EACC,cnJ9LoB;;;AmJiMrB;EAEC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC,kBnJ1LY;EmJ2LZ;EACA;EACA;EACA;EACA;EACA,WtJzMsB;EsJ0MtB;;;AAGD;EACC;;;AAMD;EACC;EACA;;;AAGD;EACC,kBnJjNY;EmJkNZ;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA,kBnJhOY;;;AmJmOb;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;AACA;AACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EAbD;IAcE;IACA;IACA;IACA;;;;AAIF;EACC,YnJzQY;EmJ0QZ;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;AACA;EAHD;IAIE;IACA;IACA;IACA;;;;AAIF;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;AAGE;EACC;EACA;EACA;EACA;EACA;;AAED;EACC,OnJrSkB;EmJsSlB;;AAKF;EACC;;AAIF;EACC;;;AAOF;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC,WtJrXqB;EsJsXrB;EACA,kBnJ1WiB;EmJ2WjB;EACA;;;AAGD;EACC;EACA,WtJ5XsB;EsJ6XtB;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC,kBnJnaY;EmJoaZ;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC,kBnJvcY;EmJwcZ;EACA;EACA;EACA;;;AAGD;EACC,kBnJ/cY;;;AmJkdb;EACC;EACA,WtJ3dqB;EsJ4drB;;;AAGD;EACC;EACA,kBnJ1dY;EmJ2dZ;EACA;;;AAGD;AAEA;EACC;EACA;;;AAGD;EACC,cnJ5fe;;;AmJ+fhB;EACC,cnJxfkB;;;AmJ2fnB;EACC,cnJlgBoB;;;AmJqgBrB;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA,OnJnfqB;;;AmJsftB;EACC,OnJvfqB;;;AmJ0ftB;EACC;;;AAGD;EACC;;;AAGD;EACC;;AACA;EACC;;AAGA;EACC;EACA;EACA;EACA;EACA,kBnJ1hBe;EmJ2hBf;EACA;;AAIF;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA,WtJjkBqB;EsJkkBrB;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA,kBnJtkBiB;EmJukBjB;;;AAGD;EACC,kBnJtkBiB;;;AmJykBlB;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;EAGC;;;AAGD;EACC;;;AAID;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EAEC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;AAEA;EACC;EACA;;AAGD;EACC;EACA;;AACA;EAHD;IAIE;;;AAIF;EACC;;AAED;EACC,e9IztB2B;;A8I0tB3B;EACC;;AACA;EACC,WtJztBmB;;AsJ4tBrB;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA,kBnJ/tBU;;AmJmuBZ;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAID;AACA;EACC;;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAKH;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;;;AAGD;EAEC,kBnJtxBY;;AmJwxBZ;EACC,kBnJvxBgB;;AmJwxBhB;EACC,kBnJzxBe;EmJ0xBf;EACA,OnJnxBa;EmJoxBb;EACA;;AAIF;EACC;;AAGD;EACC;;;AAIF;AAAA;EAEC;EACA,OnJ9xBqB;EmJ+xBrB;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;AACA;EACC;EACA;EACA;;;AAMA;EACC;EACA;;AAED;EACC;;;AvHj2BF;EACC;EACG;;AAEJ;EACC;EACA,SAXuB;EAYvB;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA,QArBsB;EAsBtB,SAvBsB;;;AwHHzB;AAEA;EACC,WvJQsB;;;AuJLvB;EACC,WvJMqB;;;AuJHtB;EACC;;;ACSD;EACC;EACA;EACA;EAIA;;;AAGD;EACC;EACA;EACA;EACA;EACA,axJEwB;;;AwJSzB;EzJ8BE,oByJ7BmB;EzJ8BhB,iByJ9BgB;EzJ+BX,YyJ/BW;EACpB;EACA;;;AAID;AAAA;EAEC;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;EAGC,QA5DgB;;;AAgElB;EACC;;;AAID;EACC;EACA;;;AAID;AAAA;EAEC;;;AzHhDA;AAAA;AAAA;EACC,SAjCuB;EAkCvB;;AACA;AAAA;AAAA;EACC;;;AyH6EH;EACC;EACA;EACA,Q/HjFqB;E+HkFrB;EACA,WxJ5GqB;EwJ6GrB,axJhGsB;EwJiGtB,OrJzFe;EqJ0Ff,kBrJpGY;EqJqGZ;EACA;EACA,etJxHuB;EH+DtB,oByJ0DD;EzJzDS,YyJyDT;EzJ2DC,oByJ1DD;EzJ2DM,eyJ3DN;EzJ4DS,YyJ5DT;;AzH9FA;EACC,SAjCuB;EAkCvB;;AACA;EACC;;AhCiED;EACE,OIhEkB;EJiElB;;AAEF;EAA0B,OInEN;;AJoEpB;EAAgC,OIpEZ;;AqJiGrB;EACC;EACA;;AAQD;EAGC,kBrJ7HgB;EqJ8HhB;;AAGD;EAEC,QAvJgB;;AA2JjB;EACC;;;AAIF;EACI;;;AAWJ;EACC;;;AAaD;EAME;AAAA;AAAA;AAAA;IACC,a/HlKyB;;;A+H6K5B;EACC,ehJxM4B;;;AgJgN7B;AAAA;EAEC;EACA;EACA;EACA;;AAKC;AAAA;AAAA;EACC,QAhOe;;AAoOjB;AAAA;EACC,YxJhNwB;EwJiNxB;EACA;EACA,axJzMuB;EwJ0MvB;;;AAIF;AAAA;AAAA;AAAA;EAIE;EACA;EACA;EACA;EACA;;AACA;EATF;AAAA;AAAA;AAAA;IAUI;;;;AAGJ;AAAA;EAEE;;;AAGF;AAAA;EAEC;;;AAID;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA,a/H7O2B;E+H8O3B,axJ9OwB;EwJ+OxB;;;AAGD;EACI,a/HnPwB;;;A+HsP5B;AAAA;EAEC;EACA;;;AAOD;AAAA;EAEC;;AAEA;AAAA;AAAA;AAAA;EAGC,QAtSgB;;;AA8SjB;AAAA;AAAA;EAEC,QAhTgB;;;AA0ThB;AAAA;AAAA;EACC,QA3Te;;;AAsUlB;EACC;EACA,OrJ5Se;EqJ6Sf,WxJlUqB;EwJoUrB;EACA;EAEA;;AAEA;EACC;;AAGD;EACC;EACA;EAEA,OrJjVgB;EqJkVhB,kBrJ5RmB;EqJ6RnB,crJ5RuB;;;AqJ+SxB;EAGC;IACC;IACA;IACA;;EAID;IACC;IACA;IACA;;EAID;IACC;;EAGD;IACC;IACA;;EAEA;AAAA;AAAA;IAGC;;EAKF;IACC;;EAGD;IACC;IACA;;EAKD;AAAA;IAEC;IACA;IACA;IACA;;EAEA;AAAA;IACC;;EAIF;AAAA;IAEC;IACA;;EAID;IACC;;;;AAiBH;EACC,ehJpb8B;EgJqb9B,YrJ9aY;AqJ8dZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AA9CA;EACC;EACA;EACA,kBrJnbW;;AqJybZ;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACG;;AAKJ;AAAA;EAEC;;AAGD;EACC,OrJjcc;EqJkcd;;AAGD;EACC,Y/HxcyB;E+H2czB;EACA;;AACA;EAND;IAOG;IACA;IACA;;;AAEF;EACE;;;AAkBJ;EACC,S/H7esC;;A+H+etC;EACC,Q/H9e+B;E+H+e/B,Y/H7ekC;;A+HgfnC;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;;AAIF;AAAA;EAEC,OrJ3fe;EqJ4ff,kBrJtgBY;;;AqJygBb;EACC,kBrJtgBmB;EqJugBnB;EACA,ehJzhB4B;EgJ0hB5B,ahJthB+B;;AgJwhB/B;EACC,kBrJ5gBkB;EqJ6gBlB;;AAEA;EAJD;IAKE;;;AAIF;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC,OrJnkBkB;AqJokBlB;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC,OrJvjBe;EqJwjBf,kBrJlkBY;EqJmkBZ;;;AAGD;EACC;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;AAAA;EAEC;;;AASD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAKD;AAAA;EAEC;EACA;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA,crJ3qBiB;;;AqJ8qBlB;EACC;;;AAGD;AACA;EACC;;;ACjsBD;AAEA;EACC,azJoCwB;;;AyJjCzB;EACC;;;AAGD;EACC;EACA,WzJCqB;;;AyJEtB;AAAA;EAEC;EACA;;;AAGD;AAAA;AAAA;AAAA;EAIC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA,WzJxBqB;EyJyBrB,azJCwB;EyJAxB;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;AACA;EAHD;IAIE;;;;AAIF;EACC;EACA;;;AC3DD;EACC,QjIyBgC;EiIxBhC,YjI0BmC;;;AiIvBpC;EACC;EACA;;AAEA;EACC;;;ACTF;AAGC;EADD;IAEE;;;;AAIF;EASC,a3JQyB;E2JPzB;EACA;EACA;;AAVA;EACE;;AACD;EACC;;AAQF;EAbD;IAcM;IAEA;;EAEA;IACE;;EACA;IACE;;;;AAOV;EACC;;AACA;EACC;;;AAIF;EACC,QjHzCiB;EiH0CjB,ezJlCkC;EyJ6ClC;EACA;;AAVA;EACC;EACA,kBxJzBgB;;AwJ4BjB;EACC;;AAKD;EAfD;IAgBE;;;;AC5DF;EACC;;;AAGD;EACC,kBzJkBY;EyJjBZ;;;ACPD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA,W7JbsB;E6JctB;EACA;;;AAGD;EACC;AACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;AACA;EACA,kB1JvBmB;;;A0J0BpB;EACC;EACA;;;ACxDD;AAEA;EACC,a9JkCwB;;;A8J/BzB;EACC,a9JgCwB;;;A8J7BzB;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAIA;EACC;;AAED;EACC;EACA;;;ACnCF;AAEA;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA,W/JFqB;E+JGrB;EACA;EACA;AACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;ACtDD;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;ACnBD;AAEA;EACC;EACA;EACA;EACA;EACA;EACA,WjKGsB;;;AiKAvB;EACC;EACA;EACA;EACA;EACA;EACA,kB9JWmB;;;A8JRpB;EACC;EACA;EACA;EACA;;;ACtBD;AAEA;EACC;;AACA;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;EACC;IACC;;;AAIF;EACC,kB/JpBkB;E+JqBlB;EACA;EACA,WlKvBsB;EkKwBtB;EACA;EACA;;AACA;EACC;EACA;;;AAIF;AAEA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA,kBhKpD0B;EgKqD1B;EACA;;AACA;EATD;IAUE;;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AACA;EAHD;IAIE;;;AAED;EACC;EACA;EACA;EACA;;AACA;EALD;IAME;IACA;;;AAIH;EArBD;IAsBE;;;AAED;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA,Y/JzEe;E+J0Ef,QxH/Fe;;AwHgGf;EAPD;IAQE;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA,WlK9GoB;EkK+GpB;EACA;EACA;EACA,kB/J5GsB;E+J6GtB;EACA;EACA;EACA;;AACA;EAfD;IAgBE;IACA;IACA;;;AAED;EACC,WlK7HmB;;AkK+HpB;EACC,WlKpImB;;AkKsIpB;EACC;EACA;;AAGF;EACC;;AACA;EAFD;IAGE;;;AAED;EACC;EACA;EACA;EACA;;AACA;EALD;IAME;IACA;IACA;IACA;;;AAGF;EACC;EACA;EACA;EACA;;AACA;EALD;IAME;IACA;IACA;IACA;;;AAKJ;EACC;EACA;;AAED;EACC,kB/JhKgB;;;A+JoKlB;AACC;AAAA;AAAA;;;AAKD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EALD;IAME;;;;AAIF;EACC;EACA;;AAEA;EAJD;IAKE;IACA;;;;AAIF;EACC;;AACA;EAFD;IAGE;;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EnK9DC,oBmK+DD;EnK9DM,emK8DN;EnK7DS,YmK6DT;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AClRD;AAEA;AACI;;;AAEJ;EACI;;;AAEJ;EACC,kBhKaY;EgKZZ;;;AAGD;EACC,kBhKQY;;;AgKLb;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC,WnKzBqB;EmK0BrB;;;AAGD;EACC,kBhKjBiB;EgKkBjB;EACA;;AAEC;EACC;EACA;;;AAMF;EACC;;;AAIF;EACC;;;AAGD;EACC,WnKhDqB;EmKiDrB,OhKhCe;EgKiCf;;;AAGD;EACC,WnKxDsB;EmKyDtB;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAIA;EACC;;AAED;EACC;;;AAIF;EACC,e3JzF4B;;;A2J6F5B;EACC;EACA;;;AAIF;EACC,YzH1GiB;;AyH2GjB;EACC;;;AAIF;EACC;;;ACtHD;AAcA;EACC;EACA;;;AAID;EACC,WpKVsB;EoKWtB;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC,elK7BgB;EkK8BhB,kBjKXY;;AiKYT;EACI;;;AAKR;EACI;;AAEI;EACI,kBjKtBC;;AiKyBD;EACI;;AAGA;EACI;;;ACtDpB;EACC;;;AAIA;EACC;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AACA;EACC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;AAKH;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA,kBlKjCW;;AkKmCX;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;AAEA;EACC;EACA,kBlK/Ha;;AkKiIb;EACC,WrK/IgB;;AqKmJlB;EACC;EACA;;AAIA;EACC;EACA;EACA;;AAKD;EACC;EACA;;AAMA;EACC,WrK5KgB;;AqKgLlB;EACC;EACA,OlKpJgB;EkKqJhB,WrKjLgB;;AqKuLpB;EACC;EACA;EACA;;AAEA;EACC,WrK/LmB;EqKgMnB;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;AAIF;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;;;AAOH;EACC;;AAED;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;;;AChSD;AAEA;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACG;EACA;EACA;;;ACdH;EACC;;AACA;EACC,avK+BuB;;;AuK1BxB;EACC;EACA;EACA,WvKGoB;EuKFpB;;AAED;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA,OpKDe;EoKEf;EACA;EACA;EACA;EACA;ExK8BC,oBwK7BE;ExK8BM,YwK9BN;EACH;;;AAGD;EACC,kBpKpBiB;EoKqBjB;EACA,WvKrCsB;;AuKsCtB;EACC;;AAED;EACC;EACA;;;AAKD;EACC,a/JpD0B;;A+JsD3B;EACC;;AAED;EACC;;;AAIF;EACC;ExKDC,oBwKEE;ExKDM,YwKCN;EACH,OpKvCe;;;AoK0ChB;EACC,avKtCwB;;;AuKyCzB;EACC;EACA,WvKvEsB;EuKwEtB,avK9CwB;EuK+CxB;;;AAGD;EACC;;;AAGD;EACC;;AACA;EACC;;;AC9FF;AAEA;EACC,YrKuBiB;EqKtBjB;EACA;EACA;;;AA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","file":"delos.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["020-dependencies/modifications/datetimepicker/bootstrap-datetimepicker.scss","030-tools/_tool_browser-prefixes.scss","010-settings/_settings_typography.scss","030-tools/_tool_screen-reader-only.scss","010-settings/_settings_borders.scss","010-settings/_settings_color-palette.scss","010-settings/_settings_button.scss","010-settings/legacy-settings/_legacy-settings_menu.scss","070-components/UI-framework/Dropdown/_ui-component_dropdown.scss","030-tools/legacy-bootstrap-mixins/_nav-divider.scss","050-layout/basics/_layout_spacing-variables.scss","020-dependencies/modifications/_jquery-autocomplete.scss","020-dependencies/modifications/_additions_tinymce.scss","020-dependencies/modifications/_additions_yui2.scss","020-dependencies/_index.scss","040-normalize/_normalize_print.scss","040-normalize/_normalize_typography.scss","040-normalize/_normalize_input.scss","040-normalize/_normalize_structure.scss","040-normalize/_normalize_table.scss","040-normalize/_index.scss","050-layout/_layout_grid.scss","050-layout/_layout_container.scss","050-layout/_layout_element-bar.scss","050-layout/_layout_visibility-utilities.scss","060-elements/_elements_html-body.scss","060-elements/_elements_input.scss","010-settings/legacy-settings/_legacy-settings_form.scss","060-elements/_elements_lists.scss","060-elements/_elements_media.scss","060-elements/_elements_objects.scss","060-elements/_elements_tables.scss","060-elements/_elements_typography.scss","030-tools/_tool_focus-outline.scss","060-elements/_index.scss","070-components/UI-framework/_ui-component_tooltip.scss","030-tools/_tool_typography-mixins.scss","070-components/UI-framework/Breadcrumbs/_ui-component_breadcrumbs.scss","050-layout/standardpage/_layout_standardpage.scss","070-components/UI-framework/Button/_ui-component_button.scss","030-tools/_tool_buttons.scss","070-components/UI-framework/Button/_ui-component_tag.scss","070-components/UI-framework/Button/_ui-component_toggle.scss","070-components/UI-framework/Card/_ui-component_card.scss","010-settings/legacy-settings/_legacy-settings_panel.scss","070-components/UI-framework/Chart/_ui-component_chart.scss","010-settings/legacy-settings/_legacy-settings_chart.scss","070-components/UI-framework/Counter/_ui-component_counter.scss","070-components/UI-framework/Deck/_ui-component_deck.scss","070-components/UI-framework/Divider/_ui-component_divider.scss","070-components/UI-framework/Dropzone/_ui-component_dropzone.scss","010-settings/legacy-settings/_legacy-settings_dropzone.scss","070-components/UI-framework/Entity/_ui-component_entity.scss","070-components/UI-framework/Input/_ui-component_tag.scss","070-components/UI-framework/Input/_ui-component_password.scss","070-components/UI-framework/Input/_ui-component_radio.scss","070-components/UI-framework/Input/_ui-component_multiselect.scss","070-components/UI-framework/Input/_ui-component_textarea.scss","070-components/UI-framework/Input/_ui-component_filter.scss","070-components/UI-framework/Input/_ui-component_duration.scss","070-components/UI-framework/Input/_ui-component_file.scss","010-settings/legacy-settings/_legacy-settings_ui-input-file.scss","070-components/UI-framework/Input/_ui-component_markdown.scss","070-components/UI-framework/Input/_ui-component_input.scss","070-components/UI-framework/Item/_ui-component_item.scss","070-components/UI-framework/Launcher/_ui-component_launcher.scss","010-settings/legacy-settings/_legacy-settings_symbol.scss","070-components/UI-framework/Layout/_ui-component_standardpage.scss","010-settings/_settings_header.scss","010-settings/_settings_footer.scss","050-layout/standardpage/_layout_standardpage-mobile.scss","070-components/UI-framework/Layout/_ui-component_alignment.scss","070-components/UI-framework/Link/_ui-component_link.scss","070-components/UI-framework/Listing/_ui-component_properties.scss","030-tools/_tool_clearfix.scss","070-components/UI-framework/Listing/_ui-component_characteristic_value.scss","050-layout/basics/_layout_positioning.scss","070-components/UI-framework/Listing/_ui-component_workflow.scss","070-components/UI-framework/Listing/_ui-component_entitylisting.scss","070-components/UI-framework/MainControls/Slate/_ui-component_slate.scss","070-components/UI-framework/MainControls/_ui-component_metabar.scss","030-tools/_tool_multi-line-cap.scss","070-components/legacy/_component_screen-reader-only.scss","070-components/UI-framework/MainControls/_ui-component_mainbar.scss","070-components/UI-framework/MainControls/_ui-component_footer.scss","070-components/UI-framework/MainControls/_ui-component_mode_info.scss","070-components/UI-framework/MainControls/_ui-component_system_info.scss","070-components/UI-framework/Menu/_ui-component_drilldown.scss","070-components/UI-framework/MessageBox/_ui-component_messagebox.scss","070-components/UI-framework/Modal/_ui-component_modal.scss","070-components/UI-framework/Panel/_ui-component_panel.scss","030-tools/_tool_border-radius.scss","070-components/UI-framework/Player/_ui-component_player.scss","020-dependencies/modifications/webui-popover/jquery.webui-popover.scss","070-components/UI-framework/Popover/_ui-component_popover.scss","070-components/UI-framework/Symbol/_ui-component_icon.scss","070-components/UI-framework/Symbol/_ui-component_glyph.scss","070-components/UI-framework/Symbol/_ui-component_avatar.scss","070-components/UI-framework/Table/_ui-component_table.scss","070-components/UI-framework/Toast/_ui-component_toast.scss","070-components/UI-framework/Tree/_ui-component_tree.scss","010-settings/legacy-settings/_legacy-settings_tree.scss","070-components/UI-framework/ViewControl/_ui-component_viewcontrol.scss","070-components/legacy/_component_agreement.scss","070-components/legacy/_component_alert.scss","070-components/legacy/_component_bottom-center-area.scss","070-components/legacy/_component_headline.scss","070-components/legacy/_component_helpsidebar.scss","070-components/legacy/_component_icon.scss","070-components/legacy/_component_LeftNavSpace.scss","070-components/legacy/_component_link.scss","070-components/legacy/_component_map.scss","070-components/legacy/_component_media-object.scss","070-components/legacy/_component_overlay.scss","070-components/legacy/_component_rightPanel.scss","070-components/legacy/_component_delostable.scss","070-components/legacy/_component_animated-collapse-fade.scss","070-components/legacy/_component_btn-group.scss","070-components/legacy/_component_carousel.scss","050-layout/_layout_responsive-img.scss","070-components/legacy/_component_input-group.scss","070-components/legacy/Modules/_component_bibliographic.scss","070-components/legacy/Modules/_component_blog.scss","070-components/legacy/Modules/_component_bookingmanager.scss","070-components/legacy/Modules/_component_chatroom.scss","070-components/legacy/Modules/_component_course.scss","070-components/legacy/Modules/_component_datacollection.scss","070-components/legacy/Modules/_component_excercise.scss","070-components/legacy/Modules/_component_forum.scss","070-components/legacy/Modules/_component_learningmodule.scss","070-components/legacy/Modules/_component_learningsequence.scss","070-components/legacy/Modules/_component_lticonsumer.scss","070-components/legacy/Modules/_component_mediacast.scss","070-components/legacy/Modules/_component_mediapool.scss","070-components/legacy/Modules/_component_orgunit.scss","070-components/legacy/Modules/_component_poll.scss","070-components/legacy/Modules/_component_portfolio.scss","070-components/legacy/Modules/_component_scormaicc.scss","070-components/legacy/Modules/_component_survey.scss","070-components/legacy/Modules/_component_test_legacy.scss","070-components/legacy/Modules/_component_test.scss","070-components/legacy/Modules/_component_wiki.scss","070-components/legacy/Modules/_component_workspacefolder.scss","070-components/legacy/Services/_component_accesscontrol.scss","070-components/legacy/Services/_component_accordion.scss","070-components/legacy/Services/_component_awareness.scss","070-components/legacy/Services/_component_badge.scss","070-components/legacy/Services/_component_block.scss","070-components/legacy/Services/_component_bookmarks.scss","070-components/legacy/Services/_component_calendar.scss","070-components/legacy/Services/_component_chart.scss","070-components/legacy/Services/_component_container.scss","070-components/legacy/Services/_component_copage.scss","070-components/legacy/Services/_component_fileupload.scss","070-components/legacy/Services/_component_form.scss","070-components/legacy/Services/_component_help.scss","070-components/legacy/Services/_component_infoscreen.scss","070-components/legacy/Services/_component_init.scss","070-components/legacy/Services/_component_learninghistory.scss","070-components/legacy/Services/_component_like.scss","070-components/legacy/Services/_component_mail.scss","070-components/legacy/Services/_component_mediaobjects.scss","070-components/legacy/Services/_component_membership.scss","070-components/legacy/Services/_component_navigation.scss","070-components/legacy/Services/_component_news.scss","070-components/legacy/Services/_component_notes.scss","070-components/legacy/Services/_component_object.scss","070-components/legacy/Services/_component_onscreenchat.scss","070-components/legacy/Services/_component_rating.scss","070-components/legacy/Services/_component_search.scss","070-components/legacy/Services/_component_skill.scss","070-components/legacy/Services/_component_style.scss","070-components/legacy/Services/_component_table.scss","070-components/legacy/Services/_component_tags.scss","070-components/legacy/Services/_component_termsofservice.scss","070-components/legacy/Services/UIComponent/_component_advancedselectionlist.scss","070-components/legacy/Services/UIComponent/_component_checklist.scss","070-components/legacy/Services/UIComponent/_component_explorer2.scss","070-components/legacy/Services/UIComponent/_component_groupedlist.scss","070-components/legacy/Services/UIComponent/_component_lightbox.scss","070-components/legacy/Services/UIComponent/_component_modal.scss","070-components/legacy/Services/UIComponent/_component_progressbar.scss","070-components/legacy/Services/UIComponent/_component_tabs.scss","070-components/legacy/Services/UIComponent/_component_toolbar.scss","010-settings/_settings_layout.scss","070-components/legacy/Services/UIComponent/_component_tooltip.scss","070-components/legacy/Services/_component_user.scss","070-components/legacy/Services/_component_webdav.scss","070-components/_index.scss","080-hacks/_index.scss"],"names":[],"mappings":";AAKA;AAAA;AAAA;AAAA;AAAA;AAmBA;EACI;;AAEA;EACI;EACA;EACA;;AAGI;EADJ;IAEQ;;;AAGJ;EALJ;IAMQ;;;AAGJ;EATJ;IAUQ;;;AAIR;EACI;EACA;EACA;;AAIA;EACI;EACA;EACA;EACA,qBAtCiC;EAuCjC;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAKJ;EACI;EACA;EACA;EACA,kBAzDiC;EA0DjC;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAKJ;EACI;EACA;;AAGJ;EACI;EACA;;AAKZ;EACI;;AAGJ;EACI;;AAGJ;ECvCF,oBDwCM;ECvCE,YDuCF;;AAGJ;EACI;EACA,aE5EiB;EF6EjB,WEnGc;EFoGd;;AAGJ;EACI;;AAGJ;EGvHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHkHI;;AAGJ;EG5HA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHuHI;;AAGJ;EGjIA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EH4HI;;AAGJ;EGtIA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHiII;;AAGJ;EG3IA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHsII;;AAGJ;EGhJA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EH2II;;AAGJ;EGrJA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHgJI;;AAGJ;EG1JA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHqJI;;AAGJ;EG/JA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EH0JI;;AAGJ;EACI;;AAEA;EGvKJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHkKQ;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAKZ;EACI;EACA;;AAGA;EAEI;EACA,eIjMY;;AJoMhB;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EAEI;EACA,OKlMS;ELmMT;;AAGJ;EGtNR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHiNY;;AAGJ;EG3NR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EHsNY;;AAIR;EACI;;AAEA;EACI,YK3ME;EL4MF,OKpMM;;ALwMd;EACI;EACA;EACA;;AAEA;EACI,WExOM;EFyON;EACA;EACA,OKnOS;;ALsOb;EACI;EACA;EACA;;AAGJ;EAII,YKtOE;ELuOF,OK/NM;ELgON;;AAGJ;EAEI,OKvPS;;AL0Pb;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA,qBMnQA;ENoQA,kBAvQ6B;EAwQ7B;EACA;EACA;;AAIR;EAEI,kBM7QI;EN8QJ,OMhRO;ENiRP,aAhRiB;;AAmRrB;EACI;;AAGJ;EAEI;EACA,OKxRS;ELyRT;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA,eIjTQ;;AJmTR;EACI,YK5RF;EL6RE,OKrRE;;ALwRN;EACI,kBM5SA;EN6SA,OM/SG;ENgTH,aA/Sa;;AAkTjB;EACI,OKjTK;;ALoTT;EAEI;EACA,OKvTK;ELwTL;;AAOZ;EACI;EACA;;AAIX;EACC;;AAGD;EACO;;;AAKJ;EACI;EACA;;AACA;EACI;;;AOxWZ;AC0CA;EACC;EACA;EACA;EACA;EACA;EACA;;;AAIC;AAAA;EAED;EACA;;;AAIC;EACD;;;AAIC;EACD;EACA;EACA;EACA,SA1D0B;EA2D1B;EACA;EACA;EACA;EACA;EACA,WN3DsB;EM4DtB;EACA;EACA,kBHrDY;EGsDZ;EACA;EACA,eJzEuB;EH+DtB,oBOWD;EPVS,YOUT;;AAKA;EACE;EACA;;AAIF;ECtFC;EACA;EACA;EACA,kBDS+B;;AA6EhC;EACC;;;AAMD;EAGE,OHjFU;EGkFV;EACA,kBHxGa;EGyGb;;;AASF;EAGE,OHnGsB;;AGuGxB;EAEE;EACA,QAzFe;EA0Ff;EACA;;;AAQF;EACE;;AAIF;EACE;;;AAQD;EACD;EACA;;;AAQC;EACD;EACA;;;AAIC;EACD;EACA;EACA;EACA;EACA;EACA;;;AAIC;EACD;EACA;;;AAWA;AAAA;EACE;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;;;AAKH;EACC;EACA,OH7Ke;EG8Kf,kBD5MoB;EC6MpB;EACA;;AACA;EACC;EACA,eE9LuB;EF+LvB,WNrMoB;;;AMwMtB;EACC,kBHlMY;EGmMZ,aNtLwB;EMuLxB;EPtJC,oBOuJD;EPtJS,YOsJT;;AAEA;EACC;;AACA;EACC;;AAIF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA,aNxMuB;EMyMvB,WN/NqB;EMgOrB,aNrNqB;EMsNrB,kBD7OiB;EC8OjB,OH/Mc;EGgNd;;AACA;AAAA;AAAA;EAEC;EACA,OH/MmB;EGgNnB,kBHxNe;;AG2NjB;EACC;EACA;EACA;EACA;EACA,SDrPa;;;AC0Pf;EACC;EACA;;;AAGA;EACC;;;AAIF;EPxME,oBOyME;EPxMM,YOwMN;;;AASJ;EACC;;;AAMA;EACC;EACA;;;AG7RF;AACA;EACC;EACA;EACA;EACA;EACA;EACA,kBNaY;EMZZ;EACA;EACA;EVwDC,oBUvDE;EVwDM,YUxDN;;AACH;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA,ONMa;EMLb,kBJ1BgB;;AI2BhB;EACC;EACA,ONEY;;AMCd;EACC,ONFa;;AMGb;EACC,ONCkB;;AMGrB;EACC;EACA;EACA;EACA;EACA;EACA;EACA,aTVuB;;ASYxB;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;;;AAKH;EACC;EACA;AACA;EACA;;AAEA;EACC;;;AC7EF;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;;ACjCF;EACC,ORiCe;;;AQ7Bf;EACC;;AAED;EACC;EACA;;;ACZF;AAAA;AAAA,GCEA;AACA;EAEE;AACE;AACA;AAAA;AAAA;AAAA;;EAMF;AAAA;IAEE;;EAGF;IACE;;EAGF;IACE;;EAIF;AAAA;IAEE;;EAGF;AAAA;IAEE;IACA;;EAGF;IACE;;EAGF;AAAA;IAEE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;IACA;;EAGF;AAAA;IAEE;;EAKF;IACE;;EAIF;IACE;;EAGA;AAAA;IAEE;;EAKF;AAAA;IACE;;EAGJ;IACE;;EAGF;IACE;;EAGA;AAAA;IAEE;;EAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAUE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;;EAIF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvIJ;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAKD;EACC;EACA;EAEA;;AAGD;EACC;EACA;EAGA;EACA;;ACjGD;AAAA;AAAA;AAAA;EAIE;EACA;EACA;;;ACNF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI;;;ACNJ;EACI;EACA;;;AAGJ;AAAA;EAEI;;;ACTJ;AAAA;AAAA;ACgSI;EAnKA;EACA;EACA;EACA;EAEA;EACA;EACA;;AA+JI;EAtJJ;EACA;EACA;EACA;EACA;EACA;;;AAkDQ;EACI;;;AAGJ;EArCR;EACA;;;AAcA;EACI;EACA;;;AAFJ;EACI;EACA;;;AAFJ;EACI;EACA;;;AAFJ;EACI;EACA;;;AAFJ;EACI;EACA;;;AAFJ;EACI;EACA;;;AAgCI;EAjDR;EACA;;;AAsDgB;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AAkEY;EAnEZ;EACA;;;AA4EgB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AA2DoB;EA3DpB;;;AAwEY;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AAPJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AAPJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AAPJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AAPJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AAPJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AA9IZ;EA0FI;IACI;;EAGJ;IArCR;IACA;;EAcA;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAgCI;IAjDR;IACA;;EAsDgB;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EA4EgB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EAwEY;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;;AA9IZ;EA0FI;IACI;;EAGJ;IArCR;IACA;;EAcA;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAgCI;IAjDR;IACA;;EAsDgB;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EA4EgB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EAwEY;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;;AA9IZ;EA0FI;IACI;;EAGJ;IArCR;IACA;;EAcA;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAgCI;IAjDR;IACA;;EAsDgB;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EA4EgB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EAwEY;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;;AA9IZ;EA0FI;IACI;;EAGJ;IArCR;IACA;;EAcA;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAgCI;IAjDR;IACA;;EAsDgB;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EA4EgB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EAwEY;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;;AA9IZ;EA0FI;IACI;;EAGJ;IArCR;IACA;;EAcA;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAFJ;IACI;IACA;;EAgCI;IAjDR;IACA;;EAsDgB;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EAkEY;IAnEZ;IACA;;EA4EgB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EA2DoB;IA3DpB;;EAwEY;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;EAPJ;AAAA;IAEI;;EAGJ;AAAA;IAEI;;;AC/NhB;AAAA;EAZA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAWA;AC1BJ;AAAA;EAEI;EACA;EACA;EACA;;;AAGJ;EACI;;AACA;EACI;;;AAIR;EACI,cbN2B;;AaO3B;EACI;;;AAIR;AAAA;EAEI,cbFuB;EaGvB,ebhByB;;AaiBzB;AAAA;EACI;;;ACVR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAaE;;;AAGF;EAzBE;IACE;;EAEF;IAAmB;;EACnB;IAAmB;;EACnB;AAAA;IACmB;;;AAuBnB;EADF;IAEI;;;;AAIF;EADF;IAEI;;;;AAIF;EADF;IAEI;;;;AAIJ;EA5CE;IACE;;EAEF;IAAmB;;EACnB;IAAmB;;EACnB;AAAA;IACmB;;;AA0CnB;EADF;IAEI;;;;AAIF;EADF;IAEI;;;;AAIF;EADF;IAEI;;;;AAIJ;EA/DE;IACE;;EAEF;IAAmB;;EACnB;IAAmB;;EACnB;AAAA;IACmB;;;AA6DnB;EADF;IAEI;;;;AAIF;EADF;IAEI;;;;AAIF;EADF;IAEI;;;;AAIJ;EAlFE;IACE;;EAEF;IAAmB;;EACnB;IAAmB;;EACnB;AAAA;IACmB;;;AAgFnB;EADF;IAEI;;;;AAIF;EADF;IAEI;;;;AAIF;EADF;IAEI;;;;AAWJ;EALE;IACE;;;AAQJ;EATE;IACE;;;AAYJ;EAbE;IACE;;;AAgBJ;EAjBE;IACE;;;AADF;EACE;;;AA6BJ;EArIE;IACE;;EAEF;IAAmB;;EACnB;IAAmB;;EACnB;AAAA;IACmB;;;AAkIrB;EACE;;AAEA;EAHF;IAII;;;;AAGJ;EACE;;AAEA;EAHF;IAII;;;;AAGJ;EACE;;AAEA;EAHF;IAII;;;;AAIJ;EAvDE;IACE;;;AClHJ;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EAJD;IAKE;IACA;IACA;;;;AAIF;EACC;;AACA;EAFD;IAGE;;;;AAIF;EACC,avBjB2B;EuBkB3B,WvBTsB;EuBUtB,avBCsB;EuBAtB,OpBQe;EoBPf,kBpBHY;;;AoBMb;AACA;EACC;;;AC/BD;EACC;;;AAIA;EADD;IAEE;;;;AAKD;EADD;IAEE;;;;AAIF;AAAA;AAAA;EAGC,YCkBqB;;;ACxCtB;EACC;;;AAGD;EACC;EACG;;;AAGJ;AAAA;EAEC;EACA;;;AAGD;EACC;IACC;;;ACfF;EACC;;AACA;EAFD;AAGE;IACA;;;;ACJF;EACC;;;AAGD;EACC;EACA;EACA;;;ACPD;EACC,W7BcsB;E6BbnB;;;AAGJ;EACC;;;AAGD;EACI;EACH;EACG;;;ACAJ;AAAA;EAEE,a9BR0B;E8BS1B,a9B4BwB;E8B3BxB,a9BcwB;E8BbxB,O3BmBkB;;A2BjBlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA,O3BagB;;;A2BTpB;AAAA;AAAA;EAGE,Y9BHwB;E8BIxB;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;;;AAGJ;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;;;AAIJ;EAAU,W9B3BW;;;A8B4BrB;EAAU,W9B9BgB;;;A8B+B1B;EAAU,W9BjCe;;;A8BkCzB;EAAU,W9BpCY;;;A8BqCtB;EAAU,W9BvCa;;;A8BwCvB;EAAU,W9B1CY;;;A8BgDtB;EACE;;;AAKF;EACE,O3BjEc;E2BkEd;EACA;AACA;AAAA;AAAA;AAAA;EAID;AACA;;AACC;EAEE,O3B/BkB;E2BgClB,iB9BlCuB;;A+BrC1B;EACC;EACG;;AAEJ;EACC;EACA,SAXuB;EAYvB;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA,QArBsB;EAsBtB,SAvBsB;;;ADuFzB;AAAA;EAGE,W9BlFqB;;;A8BsFvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AAGvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AAGvB;EACE,O3B9FiB;;;A2BuGjB;AAAA;AAAA;AAAA;EAEE;;;AAYJ;EAJE;EACA;;;AAQF;EACE;EACA,e9BjHwB;;;A8BmH1B;AAAA;EAEE,a9BtHqB;;;A8BwHvB;EACE;;;AAEF;EACE;;;AAOF;EACE;EACA;EACA,W9BjJqB;E8BkJrB;;AAKE;AAAA;AAAA;EACE;;;AAMN;EACE,e9BnJwB;E8BoJxB;EACA,a9BtJqB;;;A8ByJvB;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC,a9BlKwB;;;A8BqKzB;EACC;EACA,W9BjMqB;E8BkMrB,O3BtKqB;;;A2ByKtB;EACC;;;AAGD;EACC;;;AAGD;EACC;IACC;;;AE9NF;AAAA;AAAA;ACaA;EACC;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA,qB/BpB2B;;;A+BwB5B;EACC;EACA;EACA;EACA;EACA;EACA;;;AAID;AAAA;EAEC;;;AAID;AAAA;AAAA;EAGC;EACA;;;AAID;EACC,kB/BjD2B;E+BkD3B;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,O9BjCe;E8BkCf,Y9B1CiB;E8B2CjB;EACA,WApEqB;EAqErB,YApEsB;EAqEtB;EACA,SAhEmB;EAiEnB;;AC1EC;EACC;;AAED;EACC;;;AD0EH;EACC;;;AAGD;AACA;EACC;;;AEjFD;EACC;EACA;EACA,YhCkBY;;AgChBZ;EACC;EACA;EACA;EACA;EACA;EACA;EACA,anCwBuB;EmCvBvB,WnCHoB;EmCIpB;EACA,cCNiC;;ADQjC;EACC,OhClBa;;AgCmBb;EACC,OhCyBkB;;A4BbrB;EACC,SAjCuB;EAkCvB;;AACA;EACC;;AIXD;EACC,SCYsC;EDXtC,OhCTsB;EgCUtB;EACA;;;AA8BH;AAEA;EACC;EACA,WnCrDqB;;AmCuDrB;EACC;;AAGD;EARD;IASE;IACA;;;;AEpCF;AAAA;EC+EY;EACA;EAQJ;EACA;EACA,QA3BW;EA4BX;EACA;EAGA,atC/HoB;EsCgIpB;EACA,aD1HQ;EC2HR;EACA,atCpGiB;EsCqGjB,iBDjIY;ECqIZ,YbxGc;Ea4GV,Wb5GU;Ea8Gd,WtCvIc;EsCyId;EACA,K9BlIsB;;A8BoGtB;AAAA;AAAA;AAAA;AAAA;AAAA;EACI,aAfa;;;ADhEvB;AAAA;AAAA;AAAA;EAEE;;;AAKJ;AAAA;EACE,WZhB0B;;AYkB1B;EAHF;AAAA;IAII;;;;AAIJ;ECoFQ,YbxGc;Ea4GV,Wb5GU;Ea8Gd,WtCvIc;EsCyId;EACA,K9BlIsB;E8BuItB,kBnCzJQ;EmC0JR,OlClJgB;EkCmJhB,cDnJS;ECoJT;EACA,cnC7JQ;EmC+JJ,epC3JY;;AoC+JhB;EACI,iBD9JQ;ECgKR,kBAtGS;EAuGT,OlC/JY;EkCgKZ,cDhKK;ECiKL;EACA,cA1GS;;APhCpB;EACC,SAjCuB;EAkCvB;;AACA;EACC;;AO6IK;EACI,WAlFW;EAoFX,kBAxGU;EAyGV,OlC7KY;EkC8KZ,cD9KK;EC+KL;EACA,cA5GU;;AAgHd;AAAA;EAEI,kBlC7JS;EkC8JT,cDvLK;ECwLL;EACA,clC/Ja;EkCgKb,OlClKY;EkCmKZ,QA7FU;EA8FV;;AAqBJ;EACI,kBDhMQ;ECiMR,cDrJe;ECsJf;EACA,cnC7NI;EmC8NJ,OnC/LI;;;AkC0ChB;ECkEQ,YbxGc;Ea4GV,Wb5GU;Ea8Gd,WtCvIc;EsCyId;EACA,K9BlIsB;E8BuItB,kBlCxIY;EkCyIZ,OlC3Ie;EkC4If,cDnJS;ECoJT;EACA,clC1IgB;EkC4IZ,epC3JY;;AoC+JhB;EACI,iBD9JQ;ECgKR,kBAtGS;EAuGT,OlCxJW;EkCyJX,cDhKK;ECiKL;EACA,cA1GS;;APhCpB;EACC,SAjCuB;EAkCvB;;AACA;EACC;;AO6IK;EACI,WAlFW;EAoFX,kBAxGU;EAyGV,OlCtKW;EkCuKX,cD9KK;EC+KL;EACA,cA5GU;;AAgHd;AAAA;EAEI,kBlC7JS;EkC8JT,cDvLK;ECwLL;EACA,clC/Ja;EkCgKb,OlClKY;EkCmKZ,QA7FU;EA8FV;;AAqBJ;EACI,kBDhMQ;ECiMR,cDnIe;ECoIf;EACA,clC1MY;EkC2MZ,OnC/LI;;;AkC4DhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ECuBY;EACA;EAQJ;EACA;EACA,QA3BW;EA4BX;EACA;EAGA,atC/HoB;EsCgIpB;EACA,aD1HQ;EC2HR;EACA,atCpGiB;EsCqGjB,iBDjIY;ECqIZ,YlC/GmB;EkCmHf,WlCnHe;EkCqHnB,WtCvIc;EsCyId;EACA,K9BlIsB;E8BuItB,kBnC7HU;EmC8HV,OnC1JQ;EmC2JR,cDnJS;ECoJT;EACA,cnCjIU;EmCmIN,epCtJuB;;AoC6G3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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;EACC;EACA;EACA;EACA,kB9DzDY;E8D0DZ;EACA;EACA,SAxEqC;EAyErC,Y7BjCuC;;;A6BqCxC;EACC;EACA;EACA;EACA,SAhFoC;;;AAoFrC;EACI;EACA,Y9D3ES;E8D4ET;EACA;EACA,QCnG6B;EDoG7B;EACA;EACA;EACA;;;AAIJ;EACC;EACA,QC/G8B;EDgH9B;EACA;EACE;;AACF;EACC;;;AAIF;EACC,ajEnFwB;EiEoFxB;EACA,WjE3GqB;EiE4GrB;EACA;EACA,O9D7Fe;;;A8DgGhB;EACC;;;AAGD;EACC;EACA;EACA,SAhIsC;;;AAoIvC;EACC;EACA;EACA;EACA;EACA,O7B9HsB;;A6BqIvB;EACC;EACA;EACA,SAlJiC;;;AAsJlC;EACC;EACA;;;AAID;EACC;;;AAGD;EAIC;EACA;EACA;;AALA;EACC;;AAKD;EACI;EACA;;;AAIL;AACA;EACC,kB9DjKY;E8DkKZ;EACA;EACA,QEzLkB;;;AF6LnB;AAAA;AAAA;AAAA;AAAA;AASC;EADD;IAEE;;;;AAGF;EAEE;IACC;;;AAKH;EAEE;IACC;;EAED;AAAA;IAEC;IACA;;;AAKH;EAEC;IACC,Y9D7MW;I8D8MX;IACA;IACA;;EACA;IACC;IACA;IACA,SAnOoC;IAoOpC;;EACA;IACC;IACA;IACA;IACA;IACA;IACA;IACA;;EAEA;IACC;;EAED;IACC;IACA;IACA;IACA;IACA,Y7B5MmB;;E6B8MpB;IACC;IACA;IACA;IACA;;EAIH;IACC;IACA;;EACA;IACC;IACA;IACA;IACA;IACA;;EACA;IACC;IACG;IACH;IACA;IACA;IACA;;EACA;IACC,Y7BvOkB;;E6B0OnB;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SA5RmC;;EA6RnC;IACC;;EAIF;IAEC;;EAQL;IACC;IACA;IACA;IACA;;EAID;IACC;IACG,QGlUkC;IHmUlC;IACA;IACH,Y7BhRsC;;E6BoRvC;IACC,OGxUkC;;EH4UnC;IACC;;EAID;IACC;;EAGD;IACC;;EAEA;IACC;;EAED;IACC;IACA;;EAGD;IACC;IAC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;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AASX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AAMjD;EACC,O3F5Te;;A2F8Tf;EACC,O3FvTiB;;A2FwTjB;EACC,O3FzTgB;;A2F6TlB;EACC,O3FpTuB;E2FqTvB;;AAGD;EACC,O3F9RoB;E2F+RpB;;;AAKD;EACC;;;AAIF;AAAA;EAEC;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAID;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;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D;EATC;EACA;EACA;EAlCA;;;AA4CD;EAZC;EACA;EACA;EAlCA;;;AA+CD;EAfC;EACA;EACA;EAlCA;;;AAkDD;EAlBC;EACA;EACA;EAlCA;;;AAqDD;EArBC;EACA;EACA;EAlCA;;;AAwDD;EAxBC;EACA;EACA;EAlCA;;;AA2DD;EA3BC;EACA;EACA;EAlCA;;;AA8DD;EA9BC;EACA;EACA;EAlCA;;;AChBD;AAEA;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;;AAKH;EAIC;EACA;EACA;EACA;;AANA;EACC;;;AAQF;EACC;IACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC,OvHzDoB;EuH0DpB,W1HtFoB;E0HuFpB;EACA;EACA;;AAGD;EACC;EACA,OvHlEoB;EuHmEpB;EACA;EACA;;AAGD;EACC,kBvHxFgB;EuHyFhB;EACA,W1HvGoB;;A0H0GrB;EACC,OvHtFc;;AuHyFf;EACC,OvHrFoB;;AuHwFrB;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,kBvH3GgB;;AuH8GjB;EACC;EACA;E3HzEA,oB2H0EA;E3HzEQ,Y2HyER;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;;ACzKF;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA,OxHiBe;EwHhBf;EACA;EACA;;;AAED;EACC;EACA,OxHUe;EwHTf;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAID;EACC;;;AAID;EACC,W3HxCqB;;;A2H2CtB;EACC,W3HxCqB;E2HyCrB;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;E5HfE,oB4HgBD;E5HfS,Y4HeT;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC,kBxH7EwB;;;AwHgFzB;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AC7GD;AAEA;EACC;EACA;;;AAGD;EACC;EACA,W5HGqB;;;A4HAtB;EACC;EACA;;;AAGD;EACE;;;AAGF;EACC,a5HcwB;E4HbxB;EACA,W5HZqB;E4HalB;EACA;;;AAGJ;EACE;;;AAGF;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;ACjDD;AAEA;EACC,crHU+B;EqHT/B,erHS+B;;;AqHNhC;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA,W7HbqB;;;A6HgBtB;EACC;EACA;EACA;;;AAED;EACC,kB1HTiB;E0HUjB;;;AAGD;EACC;;AACA;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;;;AAKF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA,O1H/DwB;E0HgExB;EACA;EACA;EACA;;;ACtFD;AAQA;EACC,a9H0BwB;;;A8HvBzB;EACC,a9HwBwB;;;A8HrBzB;EACC;EACA,a9HmBwB;;;A8HhBzB;EACC;EACA;EACA;EACA,W9HdqB;;;A8HiBtB;EACC,a9HQwB;E8HPxB,W9HnBqB;E8HoBrB;;;AAGD;AACA;EACC;EACA;EACA;EACA,kB3HjBY;;;A2HoBb;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EALD;IAME;IACA;;;;AAKH;EACC;EACA;EACA;EACA;;;AAGD;EACC,YtHnD8B;EsHoD9B,W9HpDqB;;A8HqDrB;EAHD;IAIE,YtH/D0B;IsHgE1B,W9HzDqB;;;;A8H6DvB;EACC,O3HpCqB;;;A2HuCtB;EACC;EACA;EACA;;AACA;EAJD;IAKE,ctHhE4B;IsHiE5B;;;AAGA;EADD;IAEE;IACA;;;;AAKH;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC,YtHjG8B;;;AsHoG/B;EACC;EACA,etHtG8B;EsHuG9B;;AAEA;EACC,kB3HnGW;E2HoGX;;AAGD;EACC;EACA;;AACA;EACC;;AAED;EACC;;AAGA;EADD;IAEE;;;AAKF;EADD;IAEE;IACA;;;;AAKH;EAEE;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;EAED;IACC;;;AAKH;EACC;EACA;EACA,a9HlJwB;E8HmJxB,O3H/KkB;;;A2HkLnB;EACC;EACA,a9HxJwB;;A8HyJxB;EACC,a9H5JuB;;A8H8JxB;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC,YtHrM8B;;;AsHwM/B;EACC;;;AAGD;EACC,O3HnNkB;;;A2HsNnB;EACC,a9H3LwB;;;A8H8LzB;EACC;EACA;EACA;EACA;EACA;EACA;EACA,O3H1Me;E2H2Mf;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;ACjQD;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AACA;EACA,kB5HRiB;E4HSjB;AACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AC7GD;EACI,kB7HmBS;E6HlBT,oBtFFc;EsFGd,YtFHc;;AsFIjB;AAAA;EAEC;EACA;EACA;;;AAKD;EACC;;;AAGF;EACC;EACA,kB7HGiB;;A6HFjB;EACC;;AAED;EACC;;;AAMA;EACC;;;AAKH;EACC,kB7HfiB;;A6HiBjB;EACC;;;AAGF;AAEA;EACC;;;AClDD;AAUA;EACE;EACA;;;AAEF;EACE;EACA,SARmB;EASnB,OAfiB;EAgBjB,QAfkB;;;AAiBpB;ACpBA;EACE;;AACA;EACE;;;AAKF;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;EACA;EACA;;AAGF;EACE;EAIA;;AAHA;EACE;;AAKJ;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIA;EACE;;AAIJ;EACE;;;ACjEJ;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC,kBhIgBiB;EgIfjB;;;AAGD;EACC;;;AChBC;EACD;EACA;EACA;;AAGC;EACD;;AAGC;EACD;EACA;;AAGC;EACD;EACA;;AAGC;EACD;EACA;EACA;;;AAID;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;ACtDF;AAEA;EACC;EACA,WrISqB;EqIRrB,OlIMkB;;;AkIHnB;EACC;EACA,WrIGqB;EqIFrB,OlI8BqB;;;AkI3BtB;EACC;EACA;EACA;EACA,WrILqB;EqIMrB;;;AAGD;EACC;EACA;EACA;EACA,WrIbqB;EqIcrB,OlIcqB;;;AkIXtB;EACC;EACA;;;AAGD;EACC;EACA,WrIxBqB;;;AqI2BtB;EACC;;;AAGD;EACC;EACA,WrIjCqB;;;AqIoCtB;EACC;;;AAGD;EACC,kBlInDe;;;AkIsDhB;EACC;;;AAGD;EACC,WrI7CqB;;;AsIjBtB;AAEA;EACC;;AACA;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA,WtIRqB;AsISrB;;;AAGD;EAEC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EAKC;;AAJA;EACC;EACA;;;AAKF;EACC;;;AAGD;EACC;;;AC7DD;AAEA;EACC,OpI+Be;EoI9Bf,kBpIsBiB;EoIrBjB;EACA;;;AAGD;EACC,kBpIgBiB;EoIfjB,OpIuBe;EoItBf;EACA;EACA;;;AAGD;EACC;EACA,OpIee;EoIdf;EACA;EACA;;;ACrBD;AAEA;EAEC;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAGD;IACC;IACA;IACA;IACA;;EAGD;IACC;IACA;IACA;IACA;;EAGD;IACC;;EAGD;IACC;IACA;;EAGD;IAEC;IACA;AACA;AAAA;AAAA;;EAKD;IAEC;IACA;IACA;;EAGD;IAEC;;EAGD;IACC;;EAGD;IACC;IACA;;EAGD;IACC;IACA;IACA;IACA;IACA;;EAGD;IACC;IACA,axIxCuB;IwIyCvB;IACA;IACA;;EAGD;IACC;IACA;;EAGD;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;IACA,axI5EuB;IwI6EvB;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;;EAGD;IACC;IACA;IACA,axInGuB;IwIoGvB;IACA;;;AAIF;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA,kBrI/IiB;EqIgJjB;;;AAGD;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAMA;EACC;;;ACnMH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EAEI;EACH;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;AAEA;EAHD;IAIE;;;;AAIF;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAEI;EACA;EACA;;;AAGJ;EACC;EACA;EACA;EAEA,SjIxH+B;;AiIyH/B;EACC,cjI1H8B;EiI2H9B,ejI3H8B;;;AiI+HhC;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EAEC;EACA;EACA;;;AAGD;EAEC;EACA;EACA;;;AAGD;EAEC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EASI;;;AAEJ;AAAA;EAGI;;;AAEJ;EAEI;EACA;;;AAEJ;EAEI;EACA;EACA;;;AAKJ;EAEI;;;AAEJ;EAEI;;;AAEJ;AAAA;EAGI;;;AAGJ;EAEC;;;AAED;EAEC;;;AAED;EAEC;;;AAED;AAAA;EAGC;;;AAED;EAEC;;;AAED;EAEC;;;AAED;EAEC;;;AAED;EAEC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAOD;EACC;EACA;;;AAGD;E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JrSkB;EmJsSlB;;AAKF;EACC;;AAIF;EACC;;;AAOF;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC,WtJrXqB;EsJsXrB;EACA,kBnJ1WiB;EmJ2WjB;EACA;;;AAGD;EACC;EACA,WtJ5XsB;EsJ6XtB;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC,kBnJnaY;EmJoaZ;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC,kBnJvcY;EmJwcZ;EACA;EACA;EACA;;;AAGD;EACC,kBnJ/cY;;;AmJkdb;EACC;EACA,WtJ3dqB;EsJ4drB;;;AAGD;EACC;EACA,kBnJ1dY;EmJ2dZ;EACA;;;AAGD;AAEA;EACC;EACA;;;AAGD;EACC,cnJ5fe;;;AmJ+fhB;EACC,cnJxfkB;;;AmJ2fnB;EACC,cnJlgBoB;;;AmJqgBrB;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA,OnJnfqB;;;AmJsftB;EACC,OnJvfqB;;;AmJ0ftB;EACC;;;AAGD;EACC;;;AAGD;EACC;;AACA;EACC;;AAGA;EACC;EACA;EACA;EACA;EACA,kBnJ1hBe;EmJ2hBf;EACA;;AAIF;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA,WtJjkBqB;EsJkkBrB;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA,kBnJtkBiB;EmJukBjB;;;AAGD;EACC,kBnJtkBiB;;;AmJykBlB;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;EAGC;;;AAGD;EACC;;;AAID;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EAEC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;AAEA;EACC;EACA;;AAGD;EACC;EACA;;AACA;EAHD;IAIE;;;AAIF;EACC;;AAED;EACC,e9IztB2B;;A8I0tB3B;EACC;;AACA;EACC,WtJztBmB;;AsJ4tBrB;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA,kBnJ/tBU;;AmJmuBZ;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAID;AACA;EACC;;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAKH;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;;;AAGD;EAEC,kBnJtxBY;;AmJwxBZ;EACC,kBnJvxBgB;;AmJwxBhB;EACC,kBnJzxBe;EmJ0xBf;EACA,OnJnxBa;EmJoxBb;EACA;;AAIF;EACC;;AAGD;EACC;;;AAIF;AAAA;EAEC;EACA,OnJ9xBqB;EmJ+xBrB;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;AACA;EACC;EACA;EACA;;;AAMA;EACC;EACA;;AAED;EACC;;;AvHj2BF;EACC;EACG;;AAEJ;EACC;EACA,SAXuB;EAYvB;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA,QArBsB;EAsBtB,SAvBsB;;;AwHHzB;AAEA;EACC,WvJQsB;;;AuJLvB;EACC,WvJMqB;;;AuJHtB;EACC;;;ACSD;EACC;EACA;EACA;EAIA;;;AAGD;EACC;EACA;EACA;EACA;EACA,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A;;;AAGD;EACC;EACA,W/JFqB;E+JGrB;EACA;EACA;AACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;ACtDD;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;ACnBD;AAEA;EACC;EACA;EACA;EACA;EACA;EACA,WjKGsB;;;AiKAvB;EACC;EACA;EACA;EACA;EACA;EACA,kB9JWmB;;;A8JRpB;EACC;EACA;EACA;EACA;;;ACtBD;AAEA;EACC;;AACA;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;EACC;IACC;;;AAIF;EACC,kB/JpBkB;E+JqBlB;EACA;EACA,WlKvBsB;EkKwBtB;EACA;EACA;;AACA;EACC;EACA;;;AAIF;AAEA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA,kBhKpD0B;EgKqD1B;EACA;;AACA;EATD;IAUE;;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AACA;EAHD;IAIE;;;AAED;EACC;EACA;EACA;EACA;;AACA;EALD;IAME;IACA;;;AAIH;EArBD;IAsBE;;;AAED;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA,Y/JzEe;E+J0Ef,QxH/Fe;;AwHgGf;EAPD;IAQE;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA,WlK9GoB;EkK+GpB;EACA;EACA;EACA,kB/J5GsB;E+J6GtB;EACA;EACA;EACA;;AACA;EAfD;IAgBE;IACA;IACA;;;AAED;EACC,WlK7HmB;;AkK+HpB;EACC,WlKpImB;;AkKsIpB;EACC;EACA;;AAGF;EACC;;AACA;EAFD;IAGE;;;AAED;EACC;EACA;EACA;EACA;;AACA;EALD;IAME;IACA;IACA;IACA;;;AAGF;EACC;EACA;EACA;EACA;;AACA;EALD;IAME;IACA;IACA;IACA;;;AAKJ;EACC;EACA;;AAED;EACC,kB/JhKgB;;;A+JoKlB;AACC;AAAA;AAAA;;;AAKD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EALD;IAME;;;;AAIF;EACC;EACA;;AAEA;EAJD;IAKE;IACA;;;;AAIF;EACC;;AACA;EAFD;IAGE;;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EnK9DC,oBmK+DD;EnK9DM,emK8DN;EnK7DS,YmK6DT;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AClRD;AAEA;AACI;;;AAEJ;EACI;;;AAEJ;EACC,kBhKaY;EgKZZ;;;AAGD;EACC,kBhKQY;;;AgKLb;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC,WnKzBqB;EmK0BrB;;;AAGD;EACC,kBhKjBiB;EgKkBjB;EACA;;AAEC;EACC;EACA;;;AAMF;EACC;;;AAIF;EACC;;;AAGD;EACC,WnKhDqB;EmKiDrB,OhKhCe;EgKiCf;;;AAGD;EACC,WnKxDsB;EmKyDtB;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAIA;EACC;;AAED;EACC;;;AAIF;EACC,e3JzF4B;;;A2J6F5B;EACC;EACA;;;AAIF;EACC,YzH1GiB;;AyH2GjB;EACC;;;AAIF;EACC;;;ACtHD;AAcA;EACC;EACA;;;AAID;EACC,WpKVsB;EoKWtB;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC,elK7BgB;EkK8BhB,kBjKXY;;AiKYT;EACI;;;AAKR;EACI;;AAEI;EACI,kBjKtBC;;AiKyBD;EACI;;AAGA;EACI;;;ACtDpB;EACC;;;AAIA;EACC;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AACA;EACC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;AAKH;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA,kBlKjCW;;AkKmCX;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;AAEA;EACC;EACA,kBlK/Ha;;AkKiIb;EACC,WrK/IgB;;AqKmJlB;EACC;EACA;;AAIA;EACC;EACA;EACA;;AAKD;EACC;EACA;;AAMA;EACC,WrK5KgB;;AqKgLlB;EACC;EACA,OlKpJgB;EkKqJhB,WrKjLgB;;AqKuLpB;EACC;EACA;EACA;;AAEA;EACC,WrK/LmB;EqKgMnB;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;AAIF;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;;;AAOH;EACC;;AAED;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;;;AChSD;AAEA;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACG;EACA;EACA;;;ACdH;EACC;;AACA;EACC,avK+BuB;;;AuK1BxB;EACC;EACA;EACA,WvKGoB;EuKFpB;;AAED;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EA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","file":"delos.css"} \ No newline at end of file diff --git a/templates/default/images/copyrights/all_rights_reserved.svg b/templates/default/images/copyrights/all_rights_reserved.svg index 2e390d9ecdcc..5e0523b3587b 100644 --- a/templates/default/images/copyrights/all_rights_reserved.svg +++ b/templates/default/images/copyrights/all_rights_reserved.svg @@ -1,27 +1,22 @@ - + + + + + + + + + diff --git a/tests/UI/Component/Table/PresentationTest.php b/tests/UI/Component/Table/PresentationTest.php index b9b9f2172eea..0d6d82debaa2 100644 --- a/tests/UI/Component/Table/PresentationTest.php +++ b/tests/UI/Component/Table/PresentationTest.php @@ -149,9 +149,14 @@ public function testFullRendering(): void

title

-
- - +
+
+
+ + +
+
+
@@ -175,7 +180,17 @@ public function testFullRendering(): void

some title
some type

-
important-1|important-2|
+
+
+
+
important-1
+
+
+
important-2
+
+
+ +
@@ -211,7 +226,7 @@ public function testFullRendering(): void $f = $this->getFactory(); $pt = $f->presentation('title', [], $mapping); $actual = $r->render($pt->withData($this->getDummyData())); - $this->assertHTMLEquals( + $this->assertEquals( $this->brutallyTrimHTML($expected), $this->brutallyTrimHTML($this->brutallyTrimSignals($actual)) ); @@ -230,9 +245,16 @@ public function testMinimalRendering(): void

title

-
- - + +
+
+
+ + + +
+
+
@@ -256,6 +278,7 @@ public function testMinimalRendering(): void

some title

+
@@ -279,7 +302,7 @@ public function testMinimalRendering(): void $f = $this->getFactory(); $pt = $f->presentation('title', [], $mapping); $actual = $r->render($pt->withData($this->getDummyData())); - $this->assertHTMLEquals( + $this->assertEquals( $this->brutallyTrimHTML($expected), $this->brutallyTrimHTML($this->brutallyTrimSignals($actual)) );