4 require_once(
"./Services/Preview/classes/class.ilPreviewSettings.php");
5 require_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 $ilAccess = $DIC[
'ilAccess'];
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'];
74 $this->node_id = $a_node_id;
75 $this->context = $a_context;
83 if ($a_access_handler == null) {
84 if ($this->context == self::CONTEXT_WORKSPACE) {
85 include_once(
"./Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php");
88 $a_access_handler = $ilAccess;
91 $this->access_handler = $a_access_handler;
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);
101 $this->obj_id = $a_obj_id;
104 $this->preview =
new ilPreview($this->obj_id);
118 $cmd = $this->ctrl->getCmd(
"getPreviewHTML");
119 $next_class = $this->ctrl->getNextClass($this);
121 switch ($next_class) {
123 return $this->$cmd();
135 $status = $this->preview->getRenderStatus();
137 $loading_text = self::jsonSafeString($this->lng->txt($status ==
ilPreview::RENDER_STATUS_NONE ?
"preview_status_creating" :
"preview_loading"));
141 return "il.Preview.toggle(event, { id: '{$this->node_id}', htmlId: '{$a_html_id}', url: '$link', status: '$status', loadingText: '$loading_text' });";
150 require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
152 $tmpl =
new ilTemplate(
"tpl.preview.html",
true,
true,
"Services/Preview");
153 $tmpl->setVariable(
"PREVIEW_ID", $this->
getHtmlId());
156 $preview_status = $this->preview->getRenderStatus();
159 if ($this->access_handler->checkAccess(
"read",
"", $this->node_id)) {
161 $images = $this->preview->getImages();
162 if (count($images) > 0) {
163 foreach ($images as $image) {
164 $tmpl->setCurrentBlock(
"preview_item");
166 $tmpl->setVariable(
"WIDTH", $image[
"width"]);
167 $tmpl->setVariable(
"HEIGHT", $image[
"height"]);
168 $tmpl->parseCurrentBlock();
172 $tmpl->setCurrentBlock(
"no_preview");
173 switch ($preview_status) {
175 $tmpl->setVariable(
"TXT_NO_PREVIEW", $this->lng->txt(
"preview_status_pending"));
179 $tmpl->setVariable(
"TXT_NO_PREVIEW", $this->lng->txt(
"preview_status_failed"));
183 $tmpl->setVariable(
"TXT_NO_PREVIEW", $this->lng->txt(
"preview_status_missing"));
186 $tmpl->parseCurrentBlock();
190 $tmpl->setVariable(
"TXT_NO_PREVIEW", $this->lng->txt(
"no_access_item"));
194 if ($this->ctrl->isAsynch()) {
195 include_once(
"./Services/JSON/classes/class.ilJsonUtil.php");
202 header(
'Vary: Accept');
203 header(
'Content-type: text/plain');
219 $tmpl =
new ilTemplate(
"tpl.preview_inline.html",
true,
true,
"Services/Preview");
223 if ($this->access_handler->checkAccess(
"read",
"", $this->node_id)) {
228 "preview_status_creating",
234 if ($this->access_handler->checkAccess(
"write",
"", $this->node_id)) {
239 "preview_status_deleting",
255 private function renderCommand($tmpl, $a_cmd, $btn_topic, $loading_topic, $a_display_status)
258 $preview_status = $this->preview->getRenderStatus();
259 $loading_text = self::jsonSafeString($this->lng->txt($loading_topic));
261 $link = $this->
buildUrl($a_cmd .
"Preview");
262 $script_args =
"event, { id: '{$this->node_id}', htmlId: '$preview_html_id', url: '$link', loadingText: '$loading_text' }";
265 if (!is_array($a_display_status) || !in_array($preview_status, $a_display_status)) {
266 $action_class =
"ilPreviewActionHidden";
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();
284 if ($this->access_handler->checkAccess(
"read",
"", $this->node_id)) {
287 $this->preview->create($obj);
300 if ($this->access_handler->checkAccess(
"write",
"", $this->node_id)) {
302 require_once(
"./Services/Preview/classes/class.ilPreview.php");
303 $this->preview->delete();
324 private function buildUrl($a_cmd =
"", $a_async =
true)
326 $link =
"ilias.php?baseClass=ilPreviewGUI&node_id={$this->node_id}&context={$this->context}&obj_id={$this->obj_id}";
329 $link .=
"&cmdMode=asynch";
332 if (!empty($a_cmd)) {
333 $link .=
"&cmd=$a_cmd";
345 if (self::$initialized) {
357 $DIC->ui()->mainTemplate()->addJavaScript(
"./libs/bower/bower_components/jquery-mousewheel/jquery.mousewheel.js");
358 $DIC->ui()->mainTemplate()->addJavaScript(
"./Services/Preview/js/ilPreview.js");
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();
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) {
372 $new_lines[] = trim($line);
375 $initialHtml = implode($new_lines);
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"))
381 $DIC->ui()->mainTemplate()->addOnLoadCode(
"il.Preview.texts.close = \"" .
ilUtil::prepareFormOutput($DIC->language()->txt(
"close")) .
"\";");
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();");
387 self::$initialized =
true;
398 if (!is_string(
$text)) {
402 $text = htmlentities(
$text, ENT_COMPAT | ENT_HTML401,
"UTF-8");
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
const RENDER_STATUS_FAILED
Access handler for personal workspace.
const RENDER_STATUS_PENDING
getPreviewHTML()
Gets the HTML that displays the preview.
renderPreview()
Renders the preview and returns the HTML code that displays the preview.
buildUrl($a_cmd="", $a_async=true)
Builds the URL to call the preview GUI.
executeCommand()
execute command
getJSCall($a_html_id)
Gets the JavaScript code to show the preview.
static encode($mixed, $suppress_native=false)
static _lookupObjId($a_id)
special template class to simplify handling of ITX/PEAR
static initPreview()
Initializes the preview and loads the needed javascripts and styles.
static signFile($path_to_file)
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
const RENDER_STATUS_CREATED
static getImageSize()
Gets the size of the preview images in pixels.
static jsonSafeString($text)
Makes the specified string safe for JSON.
__construct($a_node_id=null, $a_context=self::CONTEXT_REPOSITORY, $a_obj_id=null, $a_access_handler=null)
Creates a new preview GUI.
getInlineHTML()
Gets the HTML that is used for displaying the preview inline.
static initjQuery($a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
renderCommand($tmpl, $a_cmd, $btn_topic, $loading_topic, $a_display_status)
Renders a command to the specified template.
getHtmlId()
Gets the HTML id for the preview.
deletePreview()
Deletes the preview and returns the HTML code that displays the preview.