ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
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...
 

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 initPreview ()
 Initializes the preview and loads the needed javascripts and styles. More...
 
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 37 of file class.ilPreviewGUI.php.

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

38  {
39  global $ilCtrl, $lng, $ilAccess;
40 
41  // if we are the base class, get the id's from the query string
42  if (strtolower($_GET["baseClass"]) == "ilpreviewgui")
43  {
44  $this->node_id = (int)$_GET["node_id"];
45  $this->context = (int)$_GET["context"];
46  }
47  else
48  {
49  $this->node_id = $a_node_id;
50  $this->context = $a_context;
51  }
52 
53  // assign values
54  $this->ctrl =& $ilCtrl;
55  $this->lng =& $lng;
56 
57  // access handler NOT provided?
58  if ($a_access_handler == null)
59  {
60  if ($this->context == self::CONTEXT_WORKSPACE)
61  {
62  include_once("./Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php");
63  $a_access_handler = new ilWorkspaceAccessHandler();
64  }
65  else
66  {
67  $a_access_handler = $ilAccess;
68  }
69  }
70  $this->access_handler = $a_access_handler;
71 
72  // object id NOT provided?
73  if ($a_obj_id == null)
74  {
75  if ($this->context == self::CONTEXT_WORKSPACE)
76  $a_obj_id = $this->access_handler->getTree()->lookupObjectId($this->node_id);
77  else
78  $a_obj_id = ilObject::_lookupObjId($this->node_id);
79  }
80  $this->obj_id = $a_obj_id;
81 
82  // create preview object
83  $this->preview = new ilPreview($this->obj_id);
84 
85  // if the call is NOT async initialize our stuff
86  if (!$ilCtrl->isAsynch())
88  }
$_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 313 of file class.ilPreviewGUI.php.

Referenced by getJSCall(), and renderCommand().

314  {
315  $link = "ilias.php?baseClass=ilPreviewGUI&node_id={$this->node_id}&context={$this->context}";
316 
317  if ($a_async)
318  $link .= "&cmdMode=asynch";
319 
320  if (!empty($a_cmd))
321  $link .= "&cmd=$a_cmd";
322 
323  return $link;
324  }
+ 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 285 of file class.ilPreviewGUI.php.

References getPreviewHTML().

286  {
287  // has read access?
288  if ($this->access_handler->checkAccess("write", "", $this->node_id))
289  {
290  // get the preview
291  require_once("./Services/Preview/classes/class.ilPreview.php");
292  $this->preview->delete();
293  }
294 
295  return $this->getPreviewHTML();
296  }
getPreviewHTML()
Gets the HTML that displays the preview.
+ Here is the call graph for this function:

◆ executeCommand()

& ilPreviewGUI::executeCommand ( )

execute command

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

References $cmd.

94  {
95  $cmd = $this->ctrl->getCmd("getPreviewHTML");
96  $next_class = $this->ctrl->getNextClass($this);
97 
98  switch($next_class)
99  {
100  default:
101  return $this->$cmd();
102  break;
103  }
104  }
$cmd
Definition: sahs_server.php:35

◆ getHtmlId()

ilPreviewGUI::getHtmlId ( )
private

Gets the HTML id for the preview.

Returns
string The HTML id to use for the preview.

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

References $node_id.

Referenced by getPreviewHTML(), and renderCommand().

303  {
304  return "preview_" . $this->node_id;
305  }
+ 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 205 of file class.ilPreviewGUI.php.

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

206  {
207  $tmpl = new ilTemplate("tpl.preview_inline.html", true, true, "Services/Preview");
208  $tmpl->setVariable("PREVIEW", $this->getPreviewHTML());
209 
210  // rendering allowed?
211  if ($this->access_handler->checkAccess("read", "", $this->node_id))
212  {
213  $this->renderCommand(
214  $tmpl,
215  "render",
216  "preview_create",
217  "preview_status_creating",
219  }
220 
221  // delete allowed?
222  if ($this->access_handler->checkAccess("write", "", $this->node_id))
223  {
224  $this->renderCommand(
225  $tmpl,
226  "delete",
227  "preview_delete",
228  "preview_status_deleting",
230  }
231 
232  return $tmpl->get();
233  }
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 111 of file class.ilPreviewGUI.php.

References buildUrl(), and ilPreview\RENDER_STATUS_NONE.

112  {
113  $status = $this->preview->getRenderStatus();
114  $command = $status == ilPreview::RENDER_STATUS_NONE ? "renderPreview" : "";
115  $loading_text = self::jsonSafeString($this->lng->txt($status == ilPreview::RENDER_STATUS_NONE ? "preview_status_creating" : "preview_loading"));
116 
117  // build the url
118  $link = $this->buildUrl($command);
119  return "il.Preview.toggle(event, { id: '{$this->node_id}', htmlId: '{$a_html_id}', url: '$link', status: '$status', loadingText: '$loading_text' });";
120  }
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 126 of file class.ilPreviewGUI.php.

References ilJsonUtil\encode(), exit, getHtmlId(), ilPreview\RENDER_STATUS_FAILED, and ilPreview\RENDER_STATUS_PENDING.

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

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

◆ initPreview()

static ilPreviewGUI::initPreview ( )
staticprivate

Initializes the preview and loads the needed javascripts and styles.

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

References $ilCtrl, $lng, $tpl, ilJsonUtil\encode(), ilPreviewSettings\getImageSize(), ilUtil\getStyleSheetLocation(), iljQueryUtil\initjQuery(), and ilTooltipGUI\initLibrary().

Referenced by __construct().

330  {
331  if (self::$initialized)
332  return;
333 
334  global $tpl, $lng, $ilCtrl;
335 
336 
337  // jquery
338  include_once("./Services/jQuery/classes/class.iljQueryUtil.php");
340 
341  // load qtip
342  include_once("./Services/UIComponent/Tooltip/classes/class.ilTooltipGUI.php");
344 
345  // needed scripts & styles
346  $tpl->addJavaScript("./Services/Preview/js/jquery.mousewheel.js");
347  $tpl->addJavaScript("./Services/Preview/js/ilPreview.js");
348  $tpl->addCss(ilUtil::getStyleSheetLocation("filesystem", "preview.css", "Services/Preview"));
349 
350  // create loading template
351  $tmpl = new ilTemplate("tpl.preview.html", true, true, "Services/Preview");
352  $tmpl->setCurrentBlock("no_preview");
353  $tmpl->setVariable("TXT_NO_PREVIEW", "%%0%%");
354  $tmpl->parseCurrentBlock();
355 
356  $initialHtml = str_replace(array("\r\n", "\r"), "\n", $tmpl->get());
357  $lines = explode("\n", $initialHtml);
358  $new_lines = array();
359  foreach ($lines as $i => $line)
360  {
361  if(!empty($line))
362  $new_lines[] = trim($line);
363  }
364  $initialHtml = implode($new_lines);
365 
366  // add default texts and values
367  include_once("./Services/JSON/classes/class.ilJsonUtil.php");
368  $tpl->addOnLoadCode("il.Preview.texts.preview = \"" . self::jsonSafeString($lng->txt("preview")) . "\";");
369  $tpl->addOnLoadCode("il.Preview.texts.showPreview = \"" . self::jsonSafeString($lng->txt("preview_show")) . "\";");
370  $tpl->addOnLoadCode("il.Preview.texts.close = \"" . self::jsonSafeString($lng->txt("close")) . "\";");
371  $tpl->addOnLoadCode("il.Preview.previewSize = " . ilPreviewSettings::getImageSize() . ";");
372  $tpl->addOnLoadCode("il.Preview.initialHtml = " . ilJsonUtil::encode($initialHtml) . ";");
373  $tpl->addOnLoadCode("il.Preview.highlightClass = \"ilContainerListItemOuterHighlight\";");
374  $tpl->addOnLoadCode("il.Preview.init();");
375 
376  self::$initialized = true;
377  }
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
global $ilCtrl
Definition: ilias.php:18
static initLibrary()
Initializes the needed tooltip libraries.
static encode($mixed, $suppress_native=false)
special template class to simplify handling of ITX/PEAR
if(isset($_FILES['img_file']['size']) && $_FILES['img_file']['size'] > 0) $tpl
static getImageSize()
Gets the size of the preview images in pixels.
static initjQuery($a_tpl=null)
Init jQuery.
+ 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
The JSON safe text.

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

386  {
387  if (!is_string($text))
388  return $text;
389 
390  $text = htmlentities($text, ENT_COMPAT | ENT_HTML401, "UTF-8");
391  $text = str_replace("'", "'", $text);
392  return $text;
393  }

◆ 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 243 of file class.ilPreviewGUI.php.

References buildUrl(), and getHtmlId().

Referenced by getInlineHTML().

244  {
245  $preview_html_id = $this->getHtmlId();
246  $preview_status = $this->preview->getRenderStatus();
247  $loading_text = self::jsonSafeString($this->lng->txt($loading_topic));
248 
249  $link = $this->buildUrl($a_cmd . "Preview");
250  $script_args = "event, { id: '{$this->node_id}', htmlId: '$preview_html_id', url: '$link', loadingText: '$loading_text' }";
251 
252  $action_class = "";
253  if (!is_array($a_display_status) || !in_array($preview_status, $a_display_status))
254  $action_class = "ilPreviewActionHidden";
255 
256  $tmpl->setCurrentBlock("preview_action");
257  $tmpl->setVariable("CLICK_ACTION", "il.Preview.$a_cmd($script_args);");
258  $tmpl->setVariable("ACTION_CLASS", "$action_class");
259  $tmpl->setVariable("ACTION_ID", "preview_{$a_cmd}_" . $this->node_id);
260  $tmpl->setVariable("TXT_ACTION", $this->lng->txt($btn_topic));
261  $tmpl->parseCurrentBlock();
262  }
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 268 of file class.ilPreviewGUI.php.

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

269  {
270  // has read access?
271  if ($this->access_handler->checkAccess("read", "", $this->node_id))
272  {
273  // get the object
274  $obj = ilObjectFactory::getInstanceByObjId($this->obj_id);
275  $this->preview->create($obj);
276  }
277 
278  return $this->getPreviewHTML();
279  }
getPreviewHTML()
Gets the HTML that displays the preview.
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 20 of file class.ilPreviewGUI.php.

◆ $context

ilPreviewGUI::$context = null
private

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

◆ $ctrl

ilPreviewGUI::$ctrl = null
private

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

◆ $initialized

ilPreviewGUI::$initialized = false
staticprivate

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

◆ $lng

ilPreviewGUI::$lng = null
private

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

Referenced by __construct(), and initPreview().

◆ $node_id

ilPreviewGUI::$node_id = null
private

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

Referenced by getHtmlId().

◆ $obj_id

ilPreviewGUI::$obj_id = null
private

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

◆ $preview

ilPreviewGUI::$preview = null
private

Definition at line 19 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: