translator = $translator; $this->urlGenerator = $urlGenerator; $this->security = $security; $this->cache = $treeCache; } /** * Generates the tree for the tools menu. * The result is cached. * @return TreeViewNode The array containing all Nodes for the tools menu. */ public function getTree() : array { $username = $this->security->getUser()->getUsername(); $key = "tree_tools_" . $username; return $this->cache->get($key, function (ItemInterface $item) use ($username) { //Invalidate tree, whenever group or the user changes $item->tag(["tree_tools", "groups", "user_" . $username]); $tree = array(); $tree[] = new TreeViewNode($this->translator->trans('tree.tools.edit'), null, $this->getEditNodes()); $tree[] = new TreeViewNode($this->translator->trans('tree.tools.show'), null, $this->getShowNodes()); $tree[] = new TreeViewNode($this->translator->trans('tree.tools.system'), null, $this->getSystemNodes()); return $tree; }); } /** * This functions creates a tree entries for the "edit" node of the tool's tree * @return TreeViewNode[] */ protected function getEditNodes() : array { $nodes = array(); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.attachment_types'), $this->urlGenerator->generate('attachment_type_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.categories'), $this->urlGenerator->generate('category_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.devices'), $this->urlGenerator->generate('device_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.suppliers'), $this->urlGenerator->generate('supplier_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.manufacturer'), $this->urlGenerator->generate('manufacturer_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.storelocation'), $this->urlGenerator->generate('store_location_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.footprint'), $this->urlGenerator->generate('footprint_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.currency'), $this->urlGenerator->generate('currency_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.measurement_unit'), $this->urlGenerator->generate('measurement_unit_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.part'), $this->urlGenerator->generate('part_new')); return $nodes; } /** * This function creates the tree entries for the "show" node of the tools tree * @return TreeViewNode[] */ protected function getShowNodes() : array { $show_nodes = array(); $show_nodes[] = new TreeViewNode($this->translator->trans('tree.tools.show.all_parts'), $this->urlGenerator->generate('parts_show_all') ); return $show_nodes; } /** * This function creates the tree entries for the "system" node of the tools tree. * @return array */ protected function getSystemNodes() : array { $edit_nodes = array(); $edit_nodes[] = new TreeViewNode($this->translator->trans('tree.tools.system.users'), $this->urlGenerator->generate("user_new") ); return $edit_nodes; } }