ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilCloudPluginFileTreeGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once("class.ilObjCloudGUI.php");
5 include_once("class.ilCloudFileNode.php");
6 include_once("class.ilCloudFileTree.php");
7 include_once("class.ilCloudConnector.php");
8 
20 {
24  protected $file_tree;
25 
29  public function __construct($plugin_service_class, ilCloudFileTree $file_tree)
30  {
31  parent::__construct($plugin_service_class);
32  $this->setFileTree($file_tree);
33  }
34 
39  {
40  if ($file_tree)
41  {
42  $this->file_tree = $file_tree;
43  }
44 
45  }
46 
50  public function getFileTree()
51  {
52  return $this->file_tree;
53  }
54 
66  public function getFolderHtml(ilObjCloudGUI $gui_class, $id, $delete_files = false, $delete_folder = false, $download = false, $files_visible = false, $folders_visible = false)
67  {
68  global $lng;
69 
70  $node = null;
71 
72  $node = $this->getFileTree()->getNodeFromId($id);
73  if (!$node)
74  {
76  }
77  $tree_tpl = new ilTemplate("tpl.cloud_block.html", true, true, "Modules/Cloud/");
78 
79  if ($files_visible || $folders_visible)
80  {
81  $tree_tpl->setVariable("NODE_ID", $node->getId());
82 
83  $block = new ilTemplate("tpl.container_list_block.html", true, true, "Services/Container/");
84 
85  if ($node->hasChildren())
86  {
87  $block->setVariable("BLOCK_HEADER_CONTENT", $lng->txt("content"));
88 
89  $children = $this->getFileTree()->getSortedListOfChildren($node);
90  foreach ($children as $path)
91  {
92  $child_node = $this->getFileTree()->getNodeFromPath($path);
93  if (($child_node->getIsDir() && $folders_visible) || (!$child_node->getIsDir() && $files_visible))
94  {
95 
96  $block->setCurrentBlock("container_standard_row");
97  if ($child_node->getIsDir())
98  {
99  $block->setVariable("ROW_ID", "id=xcld_folder_" . $child_node->getId());
100  } else
101  {
102  $block->setVariable("ROW_ID", "id=xcld_file_" . $child_node->getId());
103  }
104  $block->setVariable("BLOCK_ROW_CONTENT", $this->getItemHtml($child_node, $gui_class, $delete_files, $delete_folder, $download));
105  $block->parseCurrentBlock();
106  }
107 
108  }
109 
110  }
111  $this->setBlockVariablePlugin($block);
112  $tree_tpl->setVariable("CONTENT", $block->get());
113  } else
114  {
115  // Nothing is visible
116  // $tree_tpl->setVariable("CONTENT", $lng->txt("file_folder_not_visible"));
117  }
118  $this->setTreeVariablePlugin($tree_tpl, $gui_class, $id, $delete_files, $delete_folder, $download , $files_visible , $folders_visible );
119  return $tree_tpl->get();
120  }
121 
131  public function setTreeVariablePlugin(ilTemplate $tree_tpl, ilObjCloudGUI $gui_class, $id, $delete_files = false, $delete_folder = false, $download = false, $files_visible = false, $folders_visible = false){}
132 
136  protected function setBlockVariablePlugin(ilTemplate $block){}
137 
146  public function getItemHtml(ilCloudFileNode $node, ilObjCloudGUI $gui_class, $delete_files = false, $delete_folder = false, $download = false)
147  {
148  global $ilCtrl;
149 
150 
151  $item = new ilTemplate("tpl.container_list_item.html", true, true, "Services/Container/");
152 
153  $action_list_gui = ilCloudConnector::getActionListGUIClass($this->getService());
154  $item->setVariable("COMMAND_SELECTION_LIST", $action_list_gui->getSelectionListItemsHTML($delete_files, $delete_folder, $node));
155 
156  $item->setVariable("DIV_CLASS", "ilContainerListItemOuter");
157  $item->touchBlock("d_1");
158 
159  include_once('./Services/Calendar/classes/class.ilDate.php');
161 
162  if ($node->getIconPath() != "")
163  {
164  $item->setVariable("SRC_ICON", $node->getIconPath());
165  }
166 
167  //Folder with content
168  if ($node->getIsDir())
169  {
170  if($node->getIconPath() == "")
171  {
172  $item->setVariable("SRC_ICON", "./Modules/Cloud/templates/images/icon_folder_b.png");
173  }
174  $item->setVariable("TXT_TITLE_LINKED", basename($node->getPath()));
175 
176  //if ($this->getPluginObject()->getAsyncDrawing())
177  {
178  $item->setVariable("HREF_TITLE_LINKED", $this->getLinkToFolder($node));
179 
180  }
185  //$item->setVariable("TXT_DESC", $modified);
186  } //File
187  else
188  {
189  if ($node->getIconPath() == "")
190  {
191  $item->setVariable("SRC_ICON", "./Modules/Cloud/templates/images/icon_file_b.png");
192  }
193 
194  $item->setVariable("TXT_DESC", pathinfo($node->getPath(), PATHINFO_EXTENSION) . "&nbsp;&nbsp;&nbsp;" . $node->getSize() . "&nbsp;&nbsp;&nbsp;" . $modified);
195  if ($download)
196  {
197  $item->setVariable("TXT_TITLE_LINKED", basename($node->getPath()));
198  $item->setVariable("HREF_TITLE_LINKED", $ilCtrl->getLinkTarget($gui_class, "getFile") . "&id=" . $node->getId());
199  } else
200  {
201  $item->setVariable("TXT_TITLE", basename($node->getPath()));
202  }
203  }
204 
205  $this->setItemVariablePlugin($item, $node);
206  return $item->get();
207  }
208 
213  protected function setItemVariablePlugin(ilTemplate $item, ilCloudFileNode $node){}
214 
219  public function getLocatorHtml(ilCloudFileNode $node)
220  {
221  global $ilLocator;
222 
223  if ($node == $this->getFileTree()->getRootNode())
224  {
225  $ilLocator = new ilLocatorGUI();
226  $ilLocator->addItem($this->getPluginObject()->getCloudModulObject()->getTitle(), ilCloudPluginFileTreeGUI::getLinkToFolder($node));
227  } else
228  {
229  $this->getLocatorHtml($this->getFileTree()->getNodeFromId($node->getParentId()));
230  $ilLocator->addItem(basename($node->getPath()), $this->getLinkToFolder($node));
231  }
232  return "<DIV class='xcld_locator' id='xcld_locator_" . $node->getId() . "'>" . $ilLocator->getHTML() . "</DIV>";
233  }
234 
239  static function getLinkToFolder(ilCloudFileNode $node)
240  {
241  return "#/open_folder?id_parent=" . $node->getParentId() . "&current_id=" . $node->getId(). "&current_path=" . $node->getPath();
242  }
243 
244  protected function addDropZone()
245  {
246  $options = new stdClass();
247  $options->dropZone = ".ilFileUploadDropZone_1";
248  $options->fileInput = "#ilFileUploadInput_1";
249  $options->submitButton = "uploadFiles";
250  $options->cancelButton = "cancelAll";
251  $options->dropArea = ".ilFileDropTarget";
252  $options->fileList = "#ilFileUploadList_1";
253  $options->fileSelectButton = "#ilFileUploadFileSelect_1";
254  echo "<script language='javascript' type='text/javascript'>var fileUpload1 = new ilFileUpload(1, " . ilJsonUtil::encode($options) . ");</script>";
255  }
256 }
257 
258 ?>