ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilBTPopOverGUI Class Reference

Class ilBTPopOverGUI. More...

+ Collaboration diagram for ilBTPopOverGUI:

Public Member Functions

 __construct (Factory $uiFactory, Persistence $btPersistence, \ilLanguage $lng, ilCtrl $ctrl)
 ilBTPopOverGUI constructor. More...
 
 getPopOverContent ($user_id, $redirect_uri, $replace_url='')
 Get the content for the popover as ui element. More...
 
 getDefaultCardContent (Bucket $observer)
 

Protected Member Functions

 getProgressbar (Bucket $observer)
 
 addButton (UserInteraction\Option $option, $redirect_uri, ilTemplate $bucket, Bucket $observer)
 
 addFromUrlToNextRequest ($redirect_uri)
 

Protected Attributes

 $btPersistence
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilBTPopOverGUI::__construct ( Factory  $uiFactory,
Persistence  $btPersistence,
\ilLanguage  $lng,
ilCtrl  $ctrl 
)

ilBTPopOverGUI constructor.

Parameters
\ILIAS\UI\Factory$uiFactory
\ILIAS\BackgroundTasks\Persistence$btPersistence
\ilLanguage$lng
\ilCtrl$ctrl

Definition at line 37 of file class.ilBTPopOverGUI.php.

38 {
39 $this->btPersistence = $btPersistence;
40 $this->lng()->loadLanguageModule('background_tasks');
41 }

References $btPersistence.

Member Function Documentation

◆ addButton()

ilBTPopOverGUI::addButton ( UserInteraction\Option  $option,
  $redirect_uri,
ilTemplate  $bucket,
Bucket  $observer 
)
protected

Definition at line 202 of file class.ilBTPopOverGUI.php.

203 {
204 $r = $this->ui()->renderer();
205 $f = $this->ui()->factory();
206 $persistence = $this->dic()->backgroundTasks()->persistence();
207 // Close Action
208 $bucket->setCurrentBlock('close_button');
209
210 $this->ctrl()
211 ->setParameterByClass(ilBTControllerGUI::class, ilBTControllerGUI::OBSERVER_ID, $persistence->getBucketContainerId($observer));
212 $this->addFromUrlToNextRequest($redirect_uri);
213
214 switch ($option->getValue()) {
215 case AbstractTask::MAIN_ABORT:
216 $action = $this->ctrl()
217 ->getLinkTargetByClass([ ilBTControllerGUI::class ], ilBTControllerGUI::CMD_ABORT);
218 break;
219 case AbstractTask::MAIN_REMOVE:
220 $action = $this->ctrl()
221 ->getLinkTargetByClass([ ilBTControllerGUI::class ], ilBTControllerGUI::CMD_REMOVE);
222 break;
223 default:
224 $this->ctrl()
225 ->setParameterByClass(ilBTControllerGUI::class, ilBTControllerGUI::SELECTED_OPTION, $option->getValue());
226 $action = $this->ctrl()
227 ->getLinkTargetByClass([ ilBTControllerGUI::class ], ilBTControllerGUI::CMD_USER_INTERACTION);
228 break;
229 }
230
231 $label = $this->lng()->txt($option->getLangVar());
232
233 $remove = $r->render($f->button()->standard($label, $action));
234
235 $bucket->setVariable("CLOSE_BUTTON", $remove);
236 $bucket->parseCurrentBlock();
237 }
setVariable($variable, $value='')
Sets a variable value.
Definition: IT.php:613
addFromUrlToNextRequest($redirect_uri)
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt @access public.
setCurrentBlock($part="DEFAULT")
Überladene Funktion, die sich hier lokal noch den aktuellen Block merkt.
$action
$r
Definition: example_031.php:79

References $action, $f, $r, addFromUrlToNextRequest(), ilBTControllerGUI\CMD_ABORT, ilBTControllerGUI\CMD_REMOVE, ilBTControllerGUI\CMD_USER_INTERACTION, ilBTControllerGUI\OBSERVER_ID, ilTemplate\parseCurrentBlock(), ilBTControllerGUI\SELECTED_OPTION, ilTemplate\setCurrentBlock(), and HTML_Template_IT\setVariable().

Referenced by getPopOverContent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addFromUrlToNextRequest()

ilBTPopOverGUI::addFromUrlToNextRequest (   $redirect_uri)
protected
Parameters
$redirect_uri

Definition at line 243 of file class.ilBTPopOverGUI.php.

244 {
245 $this->ctrl()
246 ->setParameterByClass(ilBTControllerGUI::class, ilBTControllerGUI::FROM_URL, ilBTControllerGUI::hash($redirect_uri));
247 }

References ilBTControllerGUI\FROM_URL, and ilBTControllerGUI\hash().

Referenced by addButton().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDefaultCardContent()

ilBTPopOverGUI::getDefaultCardContent ( Bucket  $observer)
Parameters
\ILIAS\BackgroundTasks\Bucket$observer
Returns
\ILIAS\UI\Component\Legacy\Legacy

Definition at line 125 of file class.ilBTPopOverGUI.php.

126 {
127 $progressbar = $this->getProgressbar($observer);
128
129 return $progressbar;
130 }
getProgressbar(Bucket $observer)

References getProgressbar().

+ Here is the call graph for this function:

◆ getPopOverContent()

ilBTPopOverGUI::getPopOverContent (   $user_id,
  $redirect_uri,
  $replace_url = '' 
)

Get the content for the popover as ui element.

DOES NOT DO ANY PERMISSION CHECKS.

Parameters
int$user_id
null$redirect_uri
Returns
\ILIAS\UI\Component\Component[]

Definition at line 52 of file class.ilBTPopOverGUI.php.

53 {
54 $r = $this->ui()->renderer();
55 $f = $this->ui()->factory();
56 $persistence = $this->dic()->backgroundTasks()->persistence();
57
58 $observer_ids = $this->btPersistence->getBucketIdsOfUser($user_id, 'id', 'DESC');
59 $observers = $this->btPersistence->loadBuckets($observer_ids);
60
61 $metas = $persistence->getBucketMetaOfUser($this->user()->getId());
62 $user_inter = count(array_filter($metas, function (BucketMeta $meta) {
63 return $meta->getState() == State::USER_INTERACTION;
64 }));
65
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);
69
70 $bucket = new ilTemplate("tpl.bucket.html", true, true, "Services/BackgroundTasks");
71
72 foreach ($observers as $observer) {
73 $state = (int) $observer->getState();
74 $current_task = $observer->getCurrentTask();
75
76 switch ($state) {
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),
81 ]));
82 break;
83 case State::RUNNING:
84 $expected = (int) $current_task->getExpectedTimeOfTaskInSeconds();
85 $possibly_failed = (bool) ($observer->getLastHeartbeat() < (time() - $expected));
86
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);
92 }
93 $bucket->setVariable("CONTENT", $r->render($this->getDefaultCardContent($observer)));
94 break;
95 default:
96 $bucket->setVariable("CONTENT", $r->render($this->getDefaultCardContent($observer)));
97 break;
98 }
99
100 if ($state === State::USER_INTERACTION) {
101 $this->addButton($current_task->getRemoveOption(), $redirect_uri, $bucket, $observer);
102 }
103
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());
110 }
111 $bucket->parseCurrentBlock();
112 }
113 $po_content->setVariable("CONTENT", $bucket->get());
114 $uiElement = $f->legacy($po_content->get());
115
116 return $uiElement;
117 }
user()
Definition: user.php:4
if(!array_key_exists('stateid', $_REQUEST)) $state
Handle linkback() response from LinkedIn.
Definition: linkback.php:10
addButton(UserInteraction\Option $option, $redirect_uri, ilTemplate $bucket, Bucket $observer)
special template class to simplify handling of ITX/PEAR

References $f, $r, $state, addButton(), ILIAS\BackgroundTasks\BucketMeta\getState(), and user().

+ Here is the call graph for this function:

◆ getProgressbar()

ilBTPopOverGUI::getProgressbar ( Bucket  $observer)
protected
Parameters
\ILIAS\BackgroundTasks\Bucket$observer
Returns
\ILIAS\UI\Component\Legacy\Legacy

Definition at line 174 of file class.ilBTPopOverGUI.php.

175 {
176 $percentage = $observer->getOverallPercentage();
177
178 switch (true) {
179 case ((int) $percentage === 100):
180 $running = "";
181 $content = $this->lng()->txt("completed");
182 break;
183 case ((int) $observer->getState() === State::USER_INTERACTION):
184 $running = "";
185 $content = $this->lng()->txt("waiting");
186 break;
187 default:
188 $running = "active";
189 $content = "{$percentage}%";
190 break;
191 }
192
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}%'>
196 {$content}
197 </div>
198 </div> ");
199 }

References ILIAS\BackgroundTasks\Bucket\getOverallPercentage(), and ILIAS\BackgroundTasks\Bucket\getState().

Referenced by getDefaultCardContent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $btPersistence

ilBTPopOverGUI::$btPersistence
protected

Definition at line 26 of file class.ilBTPopOverGUI.php.

Referenced by __construct().


The documentation for this class was generated from the following file: