ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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.

References $btPersistence.

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

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.

References $action, $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().

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  }
$action
addFromUrlToNextRequest($redirect_uri)
$r
Definition: example_031.php:79
setVariable($variable, $value='')
Sets a variable value.
Definition: IT.php:613
setCurrentBlock($part="DEFAULT")
Überladene Funktion, die sich hier lokal noch den aktuellen Block merkt.
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt public...
+ 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.

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

Referenced by addButton(), and getDefaultCardContent().

244  {
245  $this->ctrl()
246  ->setParameterByClass(ilBTControllerGUI::class, ilBTControllerGUI::FROM_URL, ilBTControllerGUI::hash($redirect_uri));
247  }
+ 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

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

References $factory, $options, addFromUrlToNextRequest(), ilBTControllerGUI\CMD_USER_INTERACTION, ILIAS\BackgroundTasks\Bucket\getCurrentTask(), getProgressbar(), ilBTControllerGUI\OBSERVER_ID, and ilBTControllerGUI\SELECTED_OPTION.

126  {
127  $progressbar = $this->getProgressbar($observer);
128 
129  return $progressbar;
130  }
getProgressbar(Bucket $observer)
+ 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
[]

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

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

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  }
addButton(UserInteraction\Option $option, $redirect_uri, ilTemplate $bucket, Bucket $observer)
user()
Definition: user.php:4
if(!array_key_exists('stateid', $_REQUEST)) $state
Handle linkback() response from LinkedIn.
Definition: linkback.php:10
$r
Definition: example_031.php:79
special template class to simplify handling of ITX/PEAR
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
+ Here is the call graph for this function:

◆ getProgressbar()

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

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

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

Referenced by getDefaultCardContent().

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  }
+ 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: