ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilPreviewGUI Class Reference
+ Collaboration diagram for ilPreviewGUI:

Public Member Functions

 __construct ($a_node_id=null, $a_context=self::CONTEXT_REPOSITORY, $a_obj_id=null, $a_access_handler=null)
 Creates a new preview GUI. More...
 
 executeCommand ()
 execute command More...
 
 getJSCall ($a_html_id)
 Gets the JavaScript code to show the preview. More...
 
 getPreviewHTML ()
 Gets the HTML that displays the preview. More...
 
 getInlineHTML ()
 Gets the HTML that is used for displaying the preview inline. More...
 
 renderPreview ()
 Renders the preview and returns the HTML code that displays the preview. More...
 
 deletePreview ()
 Deletes the preview and returns the HTML code that displays the preview. More...
 

Static Public Member Functions

static initPreview ()
 Initializes the preview and loads the needed javascripts and styles. More...
 

Data Fields

const CONTEXT_REPOSITORY = 1
 
const CONTEXT_WORKSPACE = 2
 

Private Member Functions

 renderCommand ($tmpl, $a_cmd, $btn_topic, $loading_topic, $a_display_status)
 Renders a command to the specified template. More...
 
 getHtmlId ()
 Gets the HTML id for the preview. More...
 
 buildUrl ($a_cmd="", $a_async=true)
 Builds the URL to call the preview GUI. More...
 

Static Private Member Functions

static jsonSafeString ($text)
 Makes the specified string safe for JSON. More...
 

Private Attributes

 $node_id = null
 
 $obj_id = null
 
 $preview = null
 
 $access_handler = null
 
 $context = null
 
 $ctrl = null
 
 $lng = null
 

Static Private Attributes

static $initialized = false
 

Detailed Description

Definition at line 15 of file class.ilPreviewGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilPreviewGUI::__construct (   $a_node_id = null,
  $a_context = self::CONTEXT_REPOSITORY,
  $a_obj_id = null,
  $a_access_handler = null 
)

Creates a new preview GUI.

Parameters
int$a_node_idThe node id.
int$a_contextThe context of the preview.
int$a_obj_idThe object id.
object$a_access_handlerThe access handler to use.

Definition at line 61 of file class.ilPreviewGUI.php.

References $_GET, $DIC, $ilCtrl, $lng, ilObject\_lookupObjId(), and initPreview().

62  {
63  global $DIC;
64  $ilCtrl = $DIC['ilCtrl'];
65  $lng = $DIC['lng'];
66  $ilAccess = $DIC['ilAccess'];
67 
68  // if we are the base class, get the id's from the query string
69  if (strtolower($_GET["baseClass"]) == "ilpreviewgui") {
70  $this->node_id = (int) $_GET["node_id"];
71  $this->context = (int) $_GET["context"];
72  $a_obj_id = (int) $_GET['obj_id'];
73  } else {
74  $this->node_id = $a_node_id;
75  $this->context = $a_context;
76  }
77 
78  // assign values
79  $this->ctrl = $ilCtrl;
80  $this->lng = $lng;
81 
82  // access handler NOT provided?
83  if ($a_access_handler == null) {
84  if ($this->context == self::CONTEXT_WORKSPACE) {
85  include_once("./Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php");
86  $a_access_handler = new ilWorkspaceAccessHandler();
87  } else {
88  $a_access_handler = $ilAccess;
89  }
90  }
91  $this->access_handler = $a_access_handler;
92 
93  // object id NOT provided?
94  if ($a_obj_id == null) {
95  if ($this->context == self::CONTEXT_WORKSPACE) {
96  $a_obj_id = $this->access_handler->getTree()->lookupObjectId($this->node_id);
97  } else {
98  $a_obj_id = ilObject::_lookupObjId($this->node_id);
99  }
100  }
101  $this->obj_id = $a_obj_id;
102 
103  // create preview object
104  $this->preview = new ilPreview($this->obj_id);
105 
106  // if the call is NOT async initialize our stuff
107  if (!$ilCtrl->isAsynch()) {
109  }
110  }
global $DIC
Definition: saml.php:7
$_GET["client_id"]
Access handler for personal workspace.
global $ilCtrl
Definition: ilias.php:18
static _lookupObjId($a_id)
static initPreview()
Initializes the preview and loads the needed javascripts and styles.
+ Here is the call graph for this function:

Member Function Documentation

◆ buildUrl()

ilPreviewGUI::buildUrl (   $a_cmd = "",
  $a_async = true 
)
private

Builds the URL to call the preview GUI.

Parameters
$a_cmdstring The command to call.
$a_asyncbool true, to create a URL to call asynchronous; otherwise, false.
Returns
string The created URL.

Definition at line 324 of file class.ilPreviewGUI.php.

Referenced by getJSCall(), and renderCommand().

325  {
326  $link = "ilias.php?baseClass=ilPreviewGUI&node_id={$this->node_id}&context={$this->context}&obj_id={$this->obj_id}";
327 
328  if ($a_async) {
329  $link .= "&cmdMode=asynch";
330  }
331 
332  if (!empty($a_cmd)) {
333  $link .= "&cmd=$a_cmd";
334  }
335 
336  return $link;
337  }
+ Here is the caller graph for this function:

◆ deletePreview()

ilPreviewGUI::deletePreview ( )

Deletes the preview and returns the HTML code that displays the preview.

Returns
string The HTML code that displays the preview.

Definition at line 297 of file class.ilPreviewGUI.php.

References getPreviewHTML().

298  {
299  // has read access?
300  if ($this->access_handler->checkAccess("write", "", $this->node_id)) {
301  // get the preview
302  require_once("./Services/Preview/classes/class.ilPreview.php");
303  $this->preview->delete();
304  }
305 
306  return $this->getPreviewHTML();
307  }
getPreviewHTML()
Gets the HTML that displays the preview.
+ Here is the call graph for this function:

◆ executeCommand()

ilPreviewGUI::executeCommand ( )

execute command

Definition at line 116 of file class.ilPreviewGUI.php.

117  {
118  $cmd = $this->ctrl->getCmd("getPreviewHTML");
119  $next_class = $this->ctrl->getNextClass($this);
120 
121  switch ($next_class) {
122  default:
123  return $this->$cmd();
124  break;
125  }
126  }

◆ getHtmlId()

ilPreviewGUI::getHtmlId ( )
private

Gets the HTML id for the preview.

Returns
string The HTML id to use for the preview.

Definition at line 313 of file class.ilPreviewGUI.php.

References $node_id.

Referenced by getPreviewHTML(), and renderCommand().

314  {
315  return "preview_" . $this->node_id;
316  }
+ Here is the caller graph for this function:

◆ getInlineHTML()

ilPreviewGUI::getInlineHTML ( )

Gets the HTML that is used for displaying the preview inline.

Returns
string The HTML that is used for displaying the preview inline.

Definition at line 217 of file class.ilPreviewGUI.php.

References getPreviewHTML(), ilPreview\RENDER_STATUS_CREATED, ilPreview\RENDER_STATUS_FAILED, ilPreview\RENDER_STATUS_NONE, and renderCommand().

218  {
219  $tmpl = new ilTemplate("tpl.preview_inline.html", true, true, "Services/Preview");
220  $tmpl->setVariable("PREVIEW", $this->getPreviewHTML());
221 
222  // rendering allowed?
223  if ($this->access_handler->checkAccess("read", "", $this->node_id)) {
224  $this->renderCommand(
225  $tmpl,
226  "render",
227  "preview_create",
228  "preview_status_creating",
230  );
231  }
232 
233  // delete allowed?
234  if ($this->access_handler->checkAccess("write", "", $this->node_id)) {
235  $this->renderCommand(
236  $tmpl,
237  "delete",
238  "preview_delete",
239  "preview_status_deleting",
241  );
242  }
243 
244  return $tmpl->get();
245  }
const RENDER_STATUS_FAILED
const RENDER_STATUS_NONE
getPreviewHTML()
Gets the HTML that displays the preview.
special template class to simplify handling of ITX/PEAR
const RENDER_STATUS_CREATED
renderCommand($tmpl, $a_cmd, $btn_topic, $loading_topic, $a_display_status)
Renders a command to the specified template.
+ Here is the call graph for this function:

◆ getJSCall()

ilPreviewGUI::getJSCall (   $a_html_id)

Gets the JavaScript code to show the preview.

Parameters
$a_html_idstring The id of the HTML element that contains the preview.
Returns
string The JavaScript code to show the preview.

Definition at line 133 of file class.ilPreviewGUI.php.

References buildUrl(), and ilPreview\RENDER_STATUS_NONE.

134  {
135  $status = $this->preview->getRenderStatus();
136  $command = $status == ilPreview::RENDER_STATUS_NONE ? "renderPreview" : "";
137  $loading_text = self::jsonSafeString($this->lng->txt($status == ilPreview::RENDER_STATUS_NONE ? "preview_status_creating" : "preview_loading"));
138 
139  // build the url
140  $link = $this->buildUrl($command);
141  return "il.Preview.toggle(event, { id: '{$this->node_id}', htmlId: '{$a_html_id}', url: '$link', status: '$status', loadingText: '$loading_text' });";
142  }
const RENDER_STATUS_NONE
buildUrl($a_cmd="", $a_async=true)
Builds the URL to call the preview GUI.
+ Here is the call graph for this function:

◆ getPreviewHTML()

ilPreviewGUI::getPreviewHTML ( )

Gets the HTML that displays the preview.

Returns
string The HTML that displays the preview.

Definition at line 148 of file class.ilPreviewGUI.php.

References $response, ilJsonUtil\encode(), exit, getHtmlId(), ilPreview\RENDER_STATUS_FAILED, ilPreview\RENDER_STATUS_PENDING, and ilWACSignedPath\signFile().

Referenced by deletePreview(), getInlineHTML(), and renderPreview().

149  {
150  require_once('./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
151  // load the template
152  $tmpl = new ilTemplate("tpl.preview.html", true, true, "Services/Preview");
153  $tmpl->setVariable("PREVIEW_ID", $this->getHtmlId());
154 
155  // check for read access and get object id
156  $preview_status = $this->preview->getRenderStatus();
157 
158  // has read access?
159  if ($this->access_handler->checkAccess("read", "", $this->node_id)) {
160  // preview images available?
161  $images = $this->preview->getImages();
162  if (count($images) > 0) {
163  foreach ($images as $image) {
164  $tmpl->setCurrentBlock("preview_item");
165  $tmpl->setVariable("IMG_URL", ilWACSignedPath::signFile($image["url"]));
166  $tmpl->setVariable("WIDTH", $image["width"]);
167  $tmpl->setVariable("HEIGHT", $image["height"]);
168  $tmpl->parseCurrentBlock();
169  }
170  } else {
171  // set text depending on the status
172  $tmpl->setCurrentBlock("no_preview");
173  switch ($preview_status) {
175  $tmpl->setVariable("TXT_NO_PREVIEW", $this->lng->txt("preview_status_pending"));
176  break;
177 
179  $tmpl->setVariable("TXT_NO_PREVIEW", $this->lng->txt("preview_status_failed"));
180  break;
181 
182  default:
183  $tmpl->setVariable("TXT_NO_PREVIEW", $this->lng->txt("preview_status_missing"));
184  break;
185  }
186  $tmpl->parseCurrentBlock();
187  }
188  } else {
189  // display error message
190  $tmpl->setVariable("TXT_NO_PREVIEW", $this->lng->txt("no_access_item"));
191  }
192 
193  // output
194  if ($this->ctrl->isAsynch()) {
195  include_once("./Services/JSON/classes/class.ilJsonUtil.php");
196 
197  $response = new stdClass();
198  $response->html = $tmpl->get();
199  $response->status = $preview_status;
200 
201  // send response object (don't use 'application/json' as IE wants to download it!)
202  header('Vary: Accept');
203  header('Content-type: text/plain');
205 
206  // no further processing!
207  exit;
208  } else {
209  return $tmpl->get();
210  }
211  }
const RENDER_STATUS_FAILED
const RENDER_STATUS_PENDING
static encode($mixed, $suppress_native=false)
special template class to simplify handling of ITX/PEAR
static signFile($path_to_file)
exit
Definition: backend.php:16
getHtmlId()
Gets the HTML id for the preview.
$response
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initPreview()

static ilPreviewGUI::initPreview ( )
static

Initializes the preview and loads the needed javascripts and styles.

Definition at line 343 of file class.ilPreviewGUI.php.

References $DIC, $i, ilPreviewSettings\getImageSize(), ilUtil\getStyleSheetLocation(), ilTooltipGUI\init(), iljQueryUtil\initjQuery(), and ilUtil\prepareFormOutput().

Referenced by __construct(), and ilObjCategoryGUI\addHeaderAction().

344  {
345  if (self::$initialized) {
346  return;
347  }
348 
349  global $DIC;
350  // jquery
352 
353  // load qtip
355 
356  // needed scripts & styles
357  $DIC->ui()->mainTemplate()->addJavaScript("./libs/bower/bower_components/jquery-mousewheel/jquery.mousewheel.js");
358  $DIC->ui()->mainTemplate()->addJavaScript("./Services/Preview/js/ilPreview.js");
359  $DIC->ui()->mainTemplate()->addCss(ilUtil::getStyleSheetLocation("filesystem", "preview.css", "Services/Preview"));
360 
361  // create loading template
362  $tmpl = new ilTemplate("tpl.preview.html", true, true, "Services/Preview");
363  $tmpl->setCurrentBlock("no_preview");
364  $tmpl->setVariable("TXT_NO_PREVIEW", "%%0%%");
365  $tmpl->parseCurrentBlock();
366 
367  $initialHtml = str_replace(array("\r\n", "\r"), "\n", $tmpl->get());
368  $lines = explode("\n", $initialHtml);
369  $new_lines = array();
370  foreach ($lines as $i => $line) {
371  if (!empty($line)) {
372  $new_lines[] = trim($line);
373  }
374  }
375  $initialHtml = implode($new_lines);
376 
377  // add default texts and values
378  $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.texts.preview = \"" . self::jsonSafeString($DIC->language()->txt("preview")) . "\";");
379  $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.texts.showPreview = \"" . self::jsonSafeString($DIC->language()->txt("preview_show"))
380  . "\";");
381  $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.texts.close = \"" . ilUtil::prepareFormOutput($DIC->language()->txt("close")) . "\";");
382  $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.previewSize = " . ilPreviewSettings::getImageSize() . ";");
383  $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.initialHtml = " . json_encode($initialHtml) . ";");
384  $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.highlightClass = \"ilContainerListItemOuterHighlight\";");
385  $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.init();");
386 
387  self::$initialized = true;
388  }
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
static init()
Initializes the needed tooltip libraries.
global $DIC
Definition: saml.php:7
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
special template class to simplify handling of ITX/PEAR
static getImageSize()
Gets the size of the preview images in pixels.
$i
Definition: disco.tpl.php:19
static initjQuery($a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ jsonSafeString()

static ilPreviewGUI::jsonSafeString (   $text)
staticprivate

Makes the specified string safe for JSON.

Parameters
string$textThe text to make JSON safe.
Returns
string The JSON safe text.

Definition at line 396 of file class.ilPreviewGUI.php.

References $text.

397  {
398  if (!is_string($text)) {
399  return $text;
400  }
401 
402  $text = htmlentities($text, ENT_COMPAT | ENT_HTML401, "UTF-8");
403  $text = str_replace("'", "'", $text);
404  return $text;
405  }
$text
Definition: errorreport.php:18

◆ renderCommand()

ilPreviewGUI::renderCommand (   $tmpl,
  $a_cmd,
  $btn_topic,
  $loading_topic,
  $a_display_status 
)
private

Renders a command to the specified template.

Parameters
$tmplobject The template.
$a_cmdstring The command to create.
$btn_topicstring The topic to get the button text.
$loading_topicstring The topic to get the loading text.
$a_display_statusarray An array containing the statuses when the command should be visible.

Definition at line 255 of file class.ilPreviewGUI.php.

References buildUrl(), and getHtmlId().

Referenced by getInlineHTML().

256  {
257  $preview_html_id = $this->getHtmlId();
258  $preview_status = $this->preview->getRenderStatus();
259  $loading_text = self::jsonSafeString($this->lng->txt($loading_topic));
260 
261  $link = $this->buildUrl($a_cmd . "Preview");
262  $script_args = "event, { id: '{$this->node_id}', htmlId: '$preview_html_id', url: '$link', loadingText: '$loading_text' }";
263 
264  $action_class = "";
265  if (!is_array($a_display_status) || !in_array($preview_status, $a_display_status)) {
266  $action_class = "ilPreviewActionHidden";
267  }
268 
269  $tmpl->setCurrentBlock("preview_action");
270  $tmpl->setVariable("CLICK_ACTION", "il.Preview.$a_cmd($script_args);");
271  $tmpl->setVariable("ACTION_CLASS", "$action_class");
272  $tmpl->setVariable("ACTION_ID", "preview_{$a_cmd}_" . $preview_html_id);
273  $tmpl->setVariable("TXT_ACTION", $this->lng->txt($btn_topic));
274  $tmpl->parseCurrentBlock();
275  }
buildUrl($a_cmd="", $a_async=true)
Builds the URL to call the preview GUI.
getHtmlId()
Gets the HTML id for the preview.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renderPreview()

ilPreviewGUI::renderPreview ( )

Renders the preview and returns the HTML code that displays the preview.

Returns
string The HTML code that displays the preview.

Definition at line 281 of file class.ilPreviewGUI.php.

References ilObjectFactory\getInstanceByObjId(), and getPreviewHTML().

282  {
283  // has read access?
284  if ($this->access_handler->checkAccess("read", "", $this->node_id)) {
285  // get the object
286  $obj = ilObjectFactory::getInstanceByObjId($this->obj_id);
287  $this->preview->create($obj);
288  }
289 
290  return $this->getPreviewHTML();
291  }
getPreviewHTML()
Gets the HTML that displays the preview.
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
+ Here is the call graph for this function:

Field Documentation

◆ $access_handler

ilPreviewGUI::$access_handler = null
private

Definition at line 33 of file class.ilPreviewGUI.php.

◆ $context

ilPreviewGUI::$context = null
private

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

◆ $ctrl

ilPreviewGUI::$ctrl = null
private

Definition at line 41 of file class.ilPreviewGUI.php.

◆ $initialized

ilPreviewGUI::$initialized = false
staticprivate

Definition at line 49 of file class.ilPreviewGUI.php.

◆ $lng

ilPreviewGUI::$lng = null
private

Definition at line 45 of file class.ilPreviewGUI.php.

Referenced by __construct().

◆ $node_id

ilPreviewGUI::$node_id = null
private

Definition at line 21 of file class.ilPreviewGUI.php.

Referenced by getHtmlId().

◆ $obj_id

ilPreviewGUI::$obj_id = null
private

Definition at line 25 of file class.ilPreviewGUI.php.

◆ $preview

ilPreviewGUI::$preview = null
private

Definition at line 29 of file class.ilPreviewGUI.php.

◆ CONTEXT_REPOSITORY

const ilPreviewGUI::CONTEXT_REPOSITORY = 1

◆ CONTEXT_WORKSPACE

const ilPreviewGUI::CONTEXT_WORKSPACE = 2

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