public function glossaryAction()
{
if ($this->getParam("data")) {
$this->checkPermission("glossary");
Cache::clearTag("glossary");
if ($this->getParam("xaction") == "destroy") {
$data = \Zend_Json::decode($this->getParam("data"));
if (\Pimcore\Tool\Admin::isExtJS6()) {
$id = $data["id"];
} else {
$id = $data;
}
$glossary = Glossary::getById($id);
$glossary->delete();
$this->_helper->json(array("success" => true, "data" => array()));
} else {
if ($this->getParam("xaction") == "update") {
$data = \Zend_Json::decode($this->getParam("data"));
// save glossary
$glossary = Glossary::getById($data["id"]);
if ($data["link"]) {
if ($doc = Document::getByPath($data["link"])) {
$tmpLink = $data["link"];
$data["link"] = $doc->getId();
}
}
$glossary->setValues($data);
$glossary->save();
if ($link = $glossary->getLink()) {
if (intval($link) > 0) {
if ($doc = Document::getById(intval($link))) {
$glossary->setLink($doc->getFullPath());
}
}
}
$this->_helper->json(array("data" => $glossary, "success" => true));
} else {
if ($this->getParam("xaction") == "create") {
$data = \Zend_Json::decode($this->getParam("data"));
unset($data["id"]);
// save glossary
$glossary = new Glossary();
if ($data["link"]) {
if ($doc = Document::getByPath($data["link"])) {
$tmpLink = $data["link"];
$data["link"] = $doc->getId();
}
}
$glossary->setValues($data);
$glossary->save();
if ($link = $glossary->getLink()) {
if (intval($link) > 0) {
if ($doc = Document::getById(intval($link))) {
$glossary->setLink($doc->getFullPath());
}
}
}
$this->_helper->json(array("data" => $glossary, "success" => true));
}
}
}
} else {
// get list of glossaries
$list = new Glossary\Listing();
$list->setLimit($this->getParam("limit"));
$list->setOffset($this->getParam("start"));
$sortingSettings = \Pimcore\Admin\Helper\QueryParams::extractSortingSettings($this->getAllParams());
if ($sortingSettings['orderKey']) {
$list->setOrderKey($sortingSettings['orderKey']);
$list->setOrder($sortingSettings['order']);
}
if ($this->getParam("filter")) {
$list->setCondition("`text` LIKE " . $list->quote("%" . $this->getParam("filter") . "%"));
}
$list->load();
$glossaries = array();
foreach ($list->getGlossary() as $glossary) {
if ($link = $glossary->getLink()) {
if (intval($link) > 0) {
if ($doc = Document::getById(intval($link))) {
$glossary->setLink($doc->getFullPath());
}
}
}
$glossaries[] = $glossary;
}
$this->_helper->json(array("data" => $glossaries, "success" => true, "total" => $list->getTotalCount()));
}
$this->_helper->json(false);
}