ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilPasteIntoMultipleItemsExplorer.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Services/Repository/classes/class.ilRepositoryExplorer.php';
5 
6 /*
7 * ilPasteIntoMultipleItemsExplorer Explorer
8 *
9 * @author Michael Jansen <mjansen@databay.de>
10 *
11 */
13 {
17  protected $lng;
18 
22  protected $error;
23 
27  protected $access;
28 
29  const SEL_TYPE_CHECK = 1;
30  const SEL_TYPE_RADIO = 2;
31 
32  public $root_id = 0;
33  public $output = '';
34  public $ctrl = null;
35 
36  private $checked_items = array();
37  private $post_var = '';
38  private $form_items = array();
39  private $form_item_permission = 'read';
40  private $type = 0;
41 
48  public function __construct($a_type, $a_target, $a_session_variable)
49  {
50  global $DIC;
51 
52  $this->lng = $DIC->language();
53  $this->error = $DIC["ilErr"];
54  $this->access = $DIC->access();
55  $tree = $DIC->repositoryTree();
56  $ilCtrl = $DIC->ctrl();
57 
58  $this->setId("cont_paste_explorer");
59 
60  $this->ctrl = $ilCtrl;
61  $this->type = $a_type;
62 
63  parent::__construct($a_target);
64  $this->tree = $tree;
65  $this->root_id = $this->tree->readRootId();
66  $this->order_column = 'title';
67  $this->setSessionExpandVariable($a_session_variable);
68 
69  // reset filter
70  $this->filter = array();
71 
72  $this->addFilter('root');
73  $this->addFilter('crs');
74  $this->addFilter('grp');
75  $this->addFilter('cat');
76  $this->addFilter('fold');
77 
78  $this->addFormItemForType('root');
79  $this->addFormItemForType('crs');
80  $this->addFormItemForType('grp');
81  $this->addFormItemForType('cat');
82  $this->addFormItemForType('fold');
83 
84  $this->setFiltered(true);
86  }
87 
88  public function isClickable($a_type, $a_ref_id = 0, $a_obj_id = 0)
89  {
90  return false;
91  }
92 
93  public function addFormItemForType($type)
94  {
95  $this->form_items[$type] = true;
96  }
97  public function removeFormItemForType($type)
98  {
99  $this->form_items[$type] = false;
100  }
101  public function setCheckedItems($a_checked_items = array())
102  {
103  $this->checked_items = $a_checked_items;
104  }
105  public function isItemChecked($a_id)
106  {
107  return in_array($a_id, $this->checked_items) ? true : false;
108  }
109  public function setPostVar($a_post_var)
110  {
111  $this->post_var = $a_post_var;
112  }
113  public function getPostVar()
114  {
115  return $this->post_var;
116  }
117 
124  public function setRequiredFormItemPermission($a_form_item_permission)
125  {
126  $this->form_item_permission = $a_form_item_permission;
127  }
128 
134  {
136  }
137 
138  public function buildFormItem($a_node_id, $a_type)
139  {
141 
142  // permission check
143  if (!$access->checkAccess($this->getRequiredFormItemPermission(), '', $a_node_id)) {
144  return '';
145  }
146 
147  if (
148  !array_key_exists($a_type, $this->form_items) ||
149  !$this->form_items[$a_type]
150  ) {
151  return '';
152  }
153 
154  $disabled = false;
155  if (is_array($_SESSION["clipboard"]["ref_ids"])) {
156  $disabled = in_array($a_node_id, $_SESSION["clipboard"]["ref_ids"]);
157  } elseif ((int) $_SESSION["clipboard"]["ref_ids"]) {
158  $disabled = $a_node_id == $_SESSION["clipboard"]["ref_ids"];
159  } elseif ($_SESSION["clipboard"]["cmd"] == 'copy' && $a_node_id == $_SESSION["clipboard"]["parent"]) {
160  $disabled = true;
161  }
162 
163  switch ($this->type) {
164  case self::SEL_TYPE_CHECK:
165  return ilUtil::formCheckbox((int) $this->isItemChecked($a_node_id), $this->post_var, $a_node_id, $disabled);
166  break;
167 
168  case self::SEL_TYPE_RADIO:
169  return ilUtil::formRadioButton((int) $this->isItemChecked($a_node_id), $this->post_var, $a_node_id, '', $disabled);
170  break;
171  }
172  }
173 
174  public function formatObject($tpl, $a_node_id, $a_option, $a_obj_id = 0)
175  {
176  $lng = $this->lng;
178 
179  if (!isset($a_node_id) or !is_array($a_option)) {
180  $ilErr->raiseError(get_class($this) . "::formatObject(): Missing parameter or wrong datatype! " .
181  "node_id: " . $a_node_id . " options:" . var_dump($a_option), $ilErr->WARNING);
182  }
183 
184  $pic = false;
185  foreach ($a_option["tab"] as $picture) {
186  if ($picture == 'plus') {
187  $tpl->setCurrentBlock("expander");
188  $tpl->setVariable("EXP_DESC", $lng->txt("expand"));
189  $target = $this->createTarget('+', $a_node_id);
190  $tpl->setVariable("LINK_NAME", $a_node_id);
191  $tpl->setVariable("LINK_TARGET_EXPANDER", $target);
192  $tpl->setVariable("IMGPATH", $this->getImage("browser/plus.png"));
193  $tpl->parseCurrentBlock();
194  $pic = true;
195  }
196 
197  if ($picture == 'minus' && $this->show_minus) {
198  $tpl->setCurrentBlock("expander");
199  $tpl->setVariable("EXP_DESC", $lng->txt("collapse"));
200  $target = $this->createTarget('-', $a_node_id);
201  $tpl->setVariable("LINK_NAME", $a_node_id);
202  $tpl->setVariable("LINK_TARGET_EXPANDER", $target);
203  $tpl->setVariable("IMGPATH", $this->getImage("browser/minus.png"));
204  $tpl->parseCurrentBlock();
205  $pic = true;
206  }
207  }
208 
209  if (!$pic) {
210  $tpl->setCurrentBlock("blank");
211  $tpl->setVariable("BLANK_PATH", $this->getImage("browser/blank.png"));
212  $tpl->parseCurrentBlock();
213  }
214 
215  if ($this->output_icons) {
216  $tpl->setCurrentBlock("icon");
217 
218  $path = ilObject::_getIcon($a_obj_id, "tiny", $a_option["type"]);
219  $tpl->setVariable("ICON_IMAGE", $path);
220 
221  $tpl->setVariable("TARGET_ID", "iconid_" . $a_node_id);
222  $this->iconList[] = "iconid_" . $a_node_id;
223  $tpl->setVariable("TXT_ALT_IMG", $lng->txt($a_option["desc"]));
224  $tpl->parseCurrentBlock();
225  }
226 
227  if (strlen($formItem = $this->buildFormItem($a_node_id, $a_option['type']))) {
228  $tpl->setCurrentBlock('check');
229  $tpl->setVariable('OBJ_CHECK', $formItem);
230  $tpl->parseCurrentBlock();
231  }
232 
233  if ($this->isClickable($a_option["type"], $a_node_id, $a_obj_id)) { // output link
234  $tpl->setCurrentBlock("link");
235  //$target = (strpos($this->target, "?") === false) ?
236  // $this->target."?" : $this->target."&";
237  //$tpl->setVariable("LINK_TARGET", $target.$this->target_get."=".$a_node_id.$this->params_get);
238  $tpl->setVariable("LINK_TARGET", $this->buildLinkTarget($a_node_id, $a_option["type"]));
239 
240  $style_class = $this->getNodeStyleClass($a_node_id, $a_option["type"]);
241 
242  if ($style_class != "") {
243  $tpl->setVariable("A_CLASS", ' class="' . $style_class . '" ');
244  }
245 
246  if (($onclick = $this->buildOnClick($a_node_id, $a_option["type"], $a_option["title"])) != "") {
247  $tpl->setVariable("ONCLICK", "onClick=\"$onclick\"");
248  }
249 
250  $tpl->setVariable("LINK_NAME", $a_node_id);
251  $tpl->setVariable("TITLE", $this->buildTitle($a_option["title"], $a_node_id, $a_option["type"]));
252  $tpl->setVariable("DESC", ilUtil::shortenText(
253  $this->buildDescription($a_option["description"], $a_node_id, $a_option["type"]),
254  $this->textwidth,
255  true
256  ));
257  $frame_target = $this->buildFrameTarget($a_option["type"], $a_node_id, $a_option["obj_id"]);
258  if ($frame_target != "") {
259  $tpl->setVariable("TARGET", " target=\"" . $frame_target . "\"");
260  }
261  $tpl->parseCurrentBlock();
262  } else { // output text only
263  $obj_title = $this->buildTitle($a_option["title"], $a_node_id, $a_option["type"]);
264 
265  // highlight current node
266  if ($a_node_id == $this->highlighted) {
267  $obj_title = "<span class=\"ilHighlighted\">" . $obj_title . "</span>";
268  }
269 
270  $tpl->setCurrentBlock("text");
271  $tpl->setVariable("OBJ_TITLE", $obj_title);
272  $tpl->setVariable("OBJ_DESC", ilUtil::shortenText(
273  $this->buildDescription($a_option["desc"], $a_node_id, $a_option["type"]),
274  $this->textwidth,
275  true
276  ));
277  $tpl->parseCurrentBlock();
278  }
279 
280  $tpl->setCurrentBlock("list_item");
281  $tpl->parseCurrentBlock();
282  $tpl->touchBlock("element");
283  }
284 
285  /*
286  * overwritten method from base class
287  * @access public
288  * @param integer obj_id
289  * @param integer array options
290  * @return string
291  */
292  public function formatHeader($tpl, $a_obj_id, $a_option)
293  {
294  $lng = $this->lng;
295  $tree = $this->tree;
296 
297  // custom icons
298  $path = ilObject::_getIcon($a_obj_id, "tiny", "root");
299 
300 
301  $tpl->setCurrentBlock("icon");
302  $nd = $tree->getNodeData(ROOT_FOLDER_ID);
303  $title = $nd["title"];
304  if ($title == "ILIAS") {
305  $title = $lng->txt("repository");
306  }
307 
308  $tpl->setVariable("ICON_IMAGE", $path);
309  $tpl->setVariable("TXT_ALT_IMG", $title);
310  $tpl->parseCurrentBlock();
311 
312  if (strlen($formItem = $this->buildFormItem($a_obj_id, $a_option['type']))) {
313  $tpl->setCurrentBlock('check');
314  $tpl->setVariable('OBJ_CHECK', $formItem);
315  $tpl->parseCurrentBlock();
316  }
317 
318  $tpl->setVariable('OBJ_TITLE', $title);
319  }
320 
321  public function showChilds($a_ref_id, $a_obj_id = 0)
322  {
323  $ilAccess = $this->access;
324 
325  if ($a_ref_id == 0) {
326  return true;
327  }
328  // #11778 - ilAccessHandler::doConditionCheck()
329  if ($ilAccess->checkAccess("read", "", $a_ref_id)) {
330  return true;
331  } else {
332  return false;
333  }
334  }
335 
336  public function isVisible($a_ref_id, $a_type)
337  {
338  $ilAccess = $this->access;
339 
340  if (!$ilAccess->checkAccess('visible', '', $a_ref_id)) {
341  return false;
342  }
343 
344  return true;
345  }
346 
347 }
$path
Definition: aliased.php:25
static shortenText( $a_str, $a_len, $a_dots=false, $a_next_blank=false, $a_keep_extension=false)
shorten a string to given length.
setFilterMode($a_mode=IL_FM_NEGATIVE)
set filter mode
getNodeStyleClass($a_id, $a_type)
get style class for node
$_SESSION["AccountId"]
buildLinkTarget($a_node_id, $a_type)
note: most of this stuff is used by ilCourseContentInterface too
setId($a_val)
Set id.
global $DIC
Definition: saml.php:7
const IL_FM_POSITIVE
$ilErr
Definition: raiseError.php:18
setFiltered($a_bool)
active/deactivate the filter public
global $ilCtrl
Definition: ilias.php:18
createTarget($a_type, $a_node_id, $a_highlighted_subtree=false, $a_append_anch=true)
Creates Get Parameter private.
buildOnClick($a_node_id, $a_type, $a_title)
get onclick event handling (may be overwritten by derived classes)
$a_type
Definition: workflow.php:92
__construct($a_type, $a_target, $a_session_variable)
Constructor public.
$nd
Definition: error.php:10
getImage($a_name, $a_type="", $a_obj_id="")
get image path
formatObject($tpl, $a_node_id, $a_option, $a_obj_id=0)
buildFrameTarget($a_type, $a_child=0, $a_obj_id=0)
STATIC, do not use $this inside!
static formRadioButton($checked, $varname, $value, $onclick=null, $disabled=false)
??? public
buildTitle($a_title, $a_id, $a_type)
standard implementation for title, may be overwritten by derived classes
setRequiredFormItemPermission($a_form_item_permission)
Set required perission for form item visibility.
setSessionExpandVariable($a_var_name="expand")
set name of expand session variable
addFilter($a_item)
adds item to the filter public
buildDescription($a_desc, $a_id, $a_type)
standard implementation for description, may be overwritten by derived classes
static formCheckbox($checked, $varname, $value, $disabled=false)
??? public