4require_once(
"./Services/Preview/classes/class.ilPreviewSettings.php");
5require_once(
"./Services/Preview/classes/class.ilPreview.php");
61 public function __construct($a_node_id =
null, $a_context = self::CONTEXT_REPOSITORY, $a_obj_id =
null, $a_access_handler =
null)
66 if (strtolower(
$_GET[
"baseClass"]) ==
"ilpreviewgui")
68 $this->node_id = (int)
$_GET[
"node_id"];
69 $this->context = (int)
$_GET[
"context"];
70 $a_obj_id = (int)
$_GET[
'obj_id'];
74 $this->node_id = $a_node_id;
75 $this->context = $a_context;
83 if ($a_access_handler ==
null)
85 if ($this->context == self::CONTEXT_WORKSPACE)
87 include_once(
"./Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php");
92 $a_access_handler = $ilAccess;
95 $this->access_handler = $a_access_handler;
98 if ($a_obj_id ==
null)
100 if ($this->context == self::CONTEXT_WORKSPACE)
101 $a_obj_id = $this->access_handler->getTree()->lookupObjectId($this->node_id);
105 $this->obj_id = $a_obj_id;
108 $this->preview =
new ilPreview($this->obj_id);
120 $cmd = $this->ctrl->getCmd(
"getPreviewHTML");
121 $next_class = $this->ctrl->getNextClass($this);
126 return $this->
$cmd();
138 $status = $this->preview->getRenderStatus();
144 return "il.Preview.toggle(event, { id: '{$this->node_id}', htmlId: '{$a_html_id}', url: '$link', status: '$status', loadingText: '$loading_text' });";
153 require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
155 $tmpl =
new ilTemplate(
"tpl.preview.html",
true,
true,
"Services/Preview");
156 $tmpl->setVariable(
"PREVIEW_ID", $this->
getHtmlId());
159 $preview_status = $this->preview->getRenderStatus();
162 if ($this->access_handler->checkAccess(
"read",
"", $this->node_id))
165 $images = $this->preview->getImages();
166 if (count($images) > 0)
168 foreach ($images as $image)
170 $tmpl->setCurrentBlock(
"preview_item");
172 $tmpl->setVariable(
"WIDTH", $image[
"width"]);
173 $tmpl->setVariable(
"HEIGHT", $image[
"height"]);
174 $tmpl->parseCurrentBlock();
180 $tmpl->setCurrentBlock(
"no_preview");
181 switch ($preview_status)
184 $tmpl->setVariable(
"TXT_NO_PREVIEW", $this->lng->txt(
"preview_status_pending"));
188 $tmpl->setVariable(
"TXT_NO_PREVIEW", $this->lng->txt(
"preview_status_failed"));
192 $tmpl->setVariable(
"TXT_NO_PREVIEW", $this->lng->txt(
"preview_status_missing"));
195 $tmpl->parseCurrentBlock();
201 $tmpl->setVariable(
"TXT_NO_PREVIEW", $this->lng->txt(
"no_access_item"));
205 if ($this->ctrl->isAsynch())
207 include_once(
"./Services/JSON/classes/class.ilJsonUtil.php");
209 $response =
new stdClass();
210 $response->html = $tmpl->get();
211 $response->status = $preview_status;
214 header(
'Vary: Accept');
215 header(
'Content-type: text/plain');
233 $tmpl =
new ilTemplate(
"tpl.preview_inline.html",
true,
true,
"Services/Preview");
237 if ($this->access_handler->checkAccess(
"read",
"", $this->node_id))
243 "preview_status_creating",
248 if ($this->access_handler->checkAccess(
"write",
"", $this->node_id))
254 "preview_status_deleting",
269 private function renderCommand($tmpl, $a_cmd, $btn_topic, $loading_topic, $a_display_status)
272 $preview_status = $this->preview->getRenderStatus();
275 $link = $this->
buildUrl($a_cmd .
"Preview");
276 $script_args =
"event, { id: '{$this->node_id}', htmlId: '$preview_html_id', url: '$link', loadingText: '$loading_text' }";
279 if (!is_array($a_display_status) || !in_array($preview_status, $a_display_status))
280 $action_class =
"ilPreviewActionHidden";
282 $tmpl->setCurrentBlock(
"preview_action");
283 $tmpl->setVariable(
"CLICK_ACTION",
"il.Preview.$a_cmd($script_args);");
284 $tmpl->setVariable(
"ACTION_CLASS",
"$action_class");
285 $tmpl->setVariable(
"ACTION_ID",
"preview_{$a_cmd}_" . $preview_html_id);
286 $tmpl->setVariable(
"TXT_ACTION", $this->lng->txt($btn_topic));
287 $tmpl->parseCurrentBlock();
297 if ($this->access_handler->checkAccess(
"read",
"", $this->node_id))
301 $this->preview->create($obj);
314 if ($this->access_handler->checkAccess(
"write",
"", $this->node_id))
317 require_once(
"./Services/Preview/classes/class.ilPreview.php");
318 $this->preview->delete();
339 private function buildUrl($a_cmd =
"", $a_async =
true)
341 $link =
"ilias.php?baseClass=ilPreviewGUI&node_id={$this->node_id}&context={$this->context}&obj_id={$this->obj_id}";
344 $link .=
"&cmdMode=asynch";
347 $link .=
"&cmd=$a_cmd";
357 if (self::$initialized)
364 include_once(
"./Services/jQuery/classes/class.iljQueryUtil.php");
368 include_once(
"./Services/UIComponent/Tooltip/classes/class.ilTooltipGUI.php");
372 $tpl->addJavaScript(
"./Services/Preview/js/jquery.mousewheel.js");
373 $tpl->addJavaScript(
"./Services/Preview/js/ilPreview.js");
377 $tmpl =
new ilTemplate(
"tpl.preview.html",
true,
true,
"Services/Preview");
378 $tmpl->setCurrentBlock(
"no_preview");
379 $tmpl->setVariable(
"TXT_NO_PREVIEW",
"%%0%%");
380 $tmpl->parseCurrentBlock();
382 $initialHtml = str_replace(array(
"\r\n",
"\r"),
"\n", $tmpl->get());
383 $lines = explode(
"\n", $initialHtml);
384 $new_lines = array();
385 foreach ($lines as $i => $line)
388 $new_lines[] = trim($line);
390 $initialHtml = implode($new_lines);
393 include_once(
"./Services/JSON/classes/class.ilJsonUtil.php");
394 $tpl->addOnLoadCode(
"il.Preview.texts.preview = \"" . self::jsonSafeString(
$lng->txt(
"preview")) .
"\";");
395 $tpl->addOnLoadCode(
"il.Preview.texts.showPreview = \"" . self::jsonSafeString(
$lng->txt(
"preview_show")) .
"\";");
399 $tpl->addOnLoadCode(
"il.Preview.highlightClass = \"ilContainerListItemOuterHighlight\";");
400 $tpl->addOnLoadCode(
"il.Preview.init();");
402 self::$initialized =
true;
413 if (!is_string(
$text))
416 $text = htmlentities(
$text, ENT_COMPAT | ENT_HTML401,
"UTF-8");
static encode($mixed, $suppress_native=false)
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static _lookupObjId($a_id)
getInlineHTML()
Gets the HTML that is used for displaying the preview inline.
renderPreview()
Renders the preview and returns the HTML code that displays the preview.
static jsonSafeString($text)
Makes the specified string safe for JSON.
deletePreview()
Deletes the preview and returns the HTML code that displays the preview.
getHtmlId()
Gets the HTML id for the preview.
getPreviewHTML()
Gets the HTML that displays the preview.
& executeCommand()
execute command
static initPreview()
Initializes the preview and loads the needed javascripts and styles.
__construct($a_node_id=null, $a_context=self::CONTEXT_REPOSITORY, $a_obj_id=null, $a_access_handler=null)
Creates a new preview GUI.
getJSCall($a_html_id)
Gets the JavaScript code to show the preview.
renderCommand($tmpl, $a_cmd, $btn_topic, $loading_topic, $a_display_status)
Renders a command to the specified template.
buildUrl($a_cmd="", $a_async=true)
Builds the URL to call the preview GUI.
static getImageSize()
Gets the size of the preview images in pixels.
const RENDER_STATUS_FAILED
const RENDER_STATUS_CREATED
const RENDER_STATUS_PENDING
special template class to simplify handling of ITX/PEAR
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
static signFile($path_to_file)
Access handler for personal workspace.
static initjQuery($a_tpl=null)
Init jQuery.