40 $this->lng()->loadLanguageModule(
'background_tasks');
54 $r = $this->ui()->renderer();
55 $f = $this->ui()->factory();
56 $persistence = $this->dic()->backgroundTasks()->persistence();
58 $observer_ids = $this->btPersistence->getBucketIdsOfUser($user_id,
'id',
'DESC');
59 $observers = $this->btPersistence->loadBuckets($observer_ids);
61 $metas = $persistence->getBucketMetaOfUser($this->
user()->getId());
62 $user_inter = count(array_filter($metas,
function (
BucketMeta $meta) {
63 return $meta->
getState() == State::USER_INTERACTION;
66 $po_content =
new ilTemplate(
"tpl.popover_content.html",
true,
true,
"Services/BackgroundTasks");
67 $po_content->setVariable(
"BACKGROUND_TASKS_TOTAL", count($metas));
68 $po_content->setVariable(
"BACKGROUND_TASKS_USER_INTERACTION", $user_inter);
70 $bucket =
new ilTemplate(
"tpl.bucket.html",
true,
true,
"Services/BackgroundTasks");
72 foreach ($observers as $observer) {
73 $state = (int) $observer->getState();
74 $current_task = $observer->getCurrentTask();
77 case State::USER_INTERACTION:
78 $bucket->setVariable(
"CONTENT",
$r->render($this->getProgressbar($observer)));
79 $bucket->setVariable(
"INTERACTIONS",
$r->render([
80 $this->getUserInteractionContent($observer, $redirect_uri),
84 $expected = (int) $current_task->getExpectedTimeOfTaskInSeconds();
85 $possibly_failed = (bool) ($observer->getLastHeartbeat() < (time() - $expected));
87 if ($possibly_failed) {
88 $bucket->setCurrentBlock(
'failed');
89 $bucket->setVariable(
"ALERT", $this->lng()->txt(
'task_might_be_failed'));
90 $bucket->parseCurrentBlock();
91 $this->
addButton($current_task->getAbortOption(), $redirect_uri, $bucket, $observer);
93 $bucket->setVariable(
"CONTENT",
$r->render($this->getDefaultCardContent($observer)));
96 $bucket->setVariable(
"CONTENT",
$r->render($this->getDefaultCardContent($observer)));
100 if (
$state === State::USER_INTERACTION) {
101 $this->
addButton($current_task->getRemoveOption(), $redirect_uri, $bucket, $observer);
104 $bucket->setCurrentBlock(
"bucket");
105 $bucket_title = $observer->getTitle() . (
$state 106 == State::SCHEDULED ?
" ({$this->lng()->txt("scheduled
")})" :
"");
107 $bucket->setVariable(
"BUCKET_TITLE", $bucket_title);
108 if ($observer->getDescription()) {
109 $bucket->setVariable(
"BUCKET_DESCRIPTION", $observer->getDescription());
111 $bucket->parseCurrentBlock();
113 $po_content->setVariable(
"CONTENT", $bucket->get());
114 $uiElement =
$f->legacy($po_content->get());
139 public function getUserInteractionContent(
Bucket $observer, $redirect_uri)
142 $renderer = $this->ui()->renderer();
144 $persistence = $this->dic()->backgroundTasks()->persistence();
150 $options = $userInteraction->getOptions($userInteraction->getInput());
158 return $renderer->render(
$factory->button()
159 ->standard(
$language->txt($option->getLangVar()), $this->ctrl()
179 case ((
int) $percentage === 100):
181 $content = $this->lng()->txt(
"completed");
183 case ((
int) $observer->
getState() === State::USER_INTERACTION):
185 $content = $this->lng()->txt(
"waiting");
189 $content =
"{$percentage}%";
193 return $this->ui()->factory()->legacy(
" <div class='progress'> 194 <div class='progress-bar progress-bar-striped {$running}' role='progressbar' aria-valuenow='{$percentage}' 195 aria-valuemin='0' aria-valuemax='100' style='width:{$percentage}%'> 204 $r = $this->ui()->renderer();
205 $f = $this->ui()->factory();
206 $persistence = $this->dic()->backgroundTasks()->persistence();
214 switch ($option->getValue()) {
215 case AbstractTask::MAIN_ABORT:
219 case AbstractTask::MAIN_REMOVE:
231 $label = $this->lng()->txt($option->getLangVar());
233 $remove =
$r->render(
$f->button()->standard($label,
$action));
This class provides processing control methods.
addButton(UserInteraction\Option $option, $redirect_uri, ilTemplate $bucket, Bucket $observer)
addFromUrlToNextRequest($redirect_uri)
if(!array_key_exists('stateid', $_REQUEST)) $state
Handle linkback() response from LinkedIn.
setVariable($variable, $value='')
Sets a variable value.
getDefaultCardContent(Bucket $observer)
This is how the factory for UI elements looks.
special template class to simplify handling of ITX/PEAR
getPopOverContent($user_id, $redirect_uri, $replace_url='')
Get the content for the popover as ui element.
getProgressbar(Bucket $observer)
setCurrentBlock($part="DEFAULT")
Überladene Funktion, die sich hier lokal noch den aktuellen Block merkt.
__construct(Factory $uiFactory, Persistence $btPersistence, \ilLanguage $lng, ilCtrl $ctrl)
ilBTPopOverGUI constructor.
const CMD_USER_INTERACTION
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt public...