ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
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.

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 }
$_GET["client_id"]
static _lookupObjId($a_id)
static initPreview()
Initializes the preview and loads the needed javascripts and styles.
Access handler for personal workspace.
global $ilCtrl
Definition: ilias.php:18
$DIC
Definition: xapitoken.php:46

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

+ 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.

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 }

Referenced by getJSCall(), and renderCommand().

+ 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.

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.

References getPreviewHTML().

+ 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.

314 {
315 return "preview_" . $this->node_id;
316 }

References $node_id.

Referenced by getPreviewHTML(), and renderCommand().

+ 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.

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 }
renderCommand($tmpl, $a_cmd, $btn_topic, $loading_topic, $a_display_status)
Renders a command to the specified template.
const RENDER_STATUS_NONE
const RENDER_STATUS_FAILED
const RENDER_STATUS_CREATED
special template class to simplify handling of ITX/PEAR

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

+ 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.

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 }
static jsonSafeString($text)
Makes the specified string safe for JSON.
buildUrl($a_cmd="", $a_async=true)
Builds the URL to call the preview GUI.

References buildUrl(), jsonSafeString(), and ilPreview\RENDER_STATUS_NONE.

+ 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.

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 }
static encode($mixed, $suppress_native=false)
getHtmlId()
Gets the HTML id for the preview.
const RENDER_STATUS_PENDING
static signFile($path_to_file)
exit
Definition: login.php:29
$response

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

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

+ 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.

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
360 // create loading template
361 $tmpl = new ilTemplate("tpl.preview.html", true, true, "Services/Preview");
362 $tmpl->setCurrentBlock("no_preview");
363 $tmpl->setVariable("TXT_NO_PREVIEW", "%%0%%");
364 $tmpl->parseCurrentBlock();
365
366 $initialHtml = str_replace(array("\r\n", "\r"), "\n", $tmpl->get());
367 $lines = explode("\n", $initialHtml);
368 $new_lines = array();
369 foreach ($lines as $i => $line) {
370 if (!empty($line)) {
371 $new_lines[] = trim($line);
372 }
373 }
374 $initialHtml = implode($new_lines);
375
376 // add default texts and values
377 $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.texts.preview = \"" . self::jsonSafeString($DIC->language()->txt("preview")) . "\";");
378 $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.texts.showPreview = \"" . self::jsonSafeString($DIC->language()->txt("preview_show"))
379 . "\";");
380 $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.texts.close = \"" . ilUtil::prepareFormOutput($DIC->language()->txt("close")) . "\";");
381 $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.previewSize = " . ilPreviewSettings::getImageSize() . ";");
382 $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.initialHtml = " . json_encode($initialHtml) . ";");
383 $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.highlightClass = \"ilContainerListItemOuterHighlight\";");
384 $DIC->ui()->mainTemplate()->addOnLoadCode("il.Preview.init();");
385
386 self::$initialized = true;
387 }
static getImageSize()
Gets the size of the preview images in pixels.
static init()
Initializes the needed tooltip libraries.
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
static initjQuery(ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
$i
Definition: metadata.php:24

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

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

+ 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 395 of file class.ilPreviewGUI.php.

396 {
397 if (!is_string($text)) {
398 return $text;
399 }
400
401 $text = htmlentities($text, ENT_COMPAT | ENT_HTML401, "UTF-8");
402 $text = str_replace("'", "'", $text);
403 return $text;
404 }

Referenced by getJSCall(), and renderCommand().

+ Here is the caller graph for this function:

◆ 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.

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 }

References buildUrl(), getHtmlId(), and jsonSafeString().

Referenced by getInlineHTML().

+ 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.

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 }
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id

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

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