Пример #1
0
 public static function treeRender($strType, $intElmntId)
 {
     global $_CONF, $objLang, $strCommand;
     $intCid = 0;
     $strTreeConfig = "";
     $strReturn = "";
     $strDragMethod = "";
     switch ($strType) {
         case "elements":
             $intCid = NAV_PCMS_ELEMENTS;
             $strDragMethod = "Element::setParent";
             $strReturn .= "function doOnImageRollOver(itemId) { return overlib('" . self::escapeForXml($objLang->get("editElement", "tip")) . "'); }\n";
             $strTreeConfig = "objTree.enableDragAndDrop(true);\n";
             $strTreeConfig .= "objTree.enableMultiselection(true,true);\n";
             $strTreeConfig .= "objTree.setOnImageClickHandler(doOnImageSelect);\n";
             $strTreeConfig .= "objTree.setOnImageRollOverHandler(doOnImageRollOver);\n";
             $strTreeConfig .= "objTree.setOnImageRollOutHandler(doOnImageRollOut);\n";
             $strTreeConfig .= "objTree.setDragHandler(doOnDrag);\n";
             $strTreeConfig .= "objTree.setDragBehavior('complex');\n";
             break;
         case "elements-ckeditor":
             $intCid = NAV_PCMS_ELEMENTS;
             $strTreeConfig .= "objTree.setOnImageClickHandler(doOnSelect);\n";
             $strTreeConfig .= "objTree.setOnClickHandler(doOnSelect);\n";
             break;
         case "templates":
         case "templatefields":
             $intCid = NAV_PCMS_TEMPLATES;
             $strDragMethod = "Template::setParent";
             $strReturn .= "function doOnImageRollOver(itemId) { return overlib('" . self::escapeForXml($objLang->get("editTemplate", "tip")) . "'); }\n";
             $strTreeConfig = "objTree.enableDragAndDrop(true);\n";
             $strTreeConfig .= "objTree.enableMultiselection(true,true);\n";
             $strTreeConfig .= "objTree.setOnImageClickHandler(doOnImageSelect);\n";
             $strTreeConfig .= "objTree.setOnImageRollOverHandler(doOnImageRollOver);\n";
             $strTreeConfig .= "objTree.setOnImageRollOutHandler(doOnImageRollOut);\n";
             $strTreeConfig .= "objTree.setDragHandler(doOnDrag);\n";
             $strTreeConfig .= "objTree.setDragBehavior('complex');\n";
             if ($strType == "templatefields") {
                 $objTemplateField = TemplateField::selectByPk($intElmntId);
                 $intElmntId = $objTemplateField->getTemplateId();
                 $strType = "templates";
             }
             break;
         case "users":
             $intCid = NAV_MYPUNCH_USERS;
             break;
         case "forms":
             $intCid = NAV_PCMS_FORMS;
             $strReturn .= "function doOnImageRollOver(itemId) { return overlib('" . self::escapeForXml($objLang->get("editForm", "tip")) . "'); }\n";
             $strTreeConfig .= "objTree.setOnImageClickHandler(doOnImageSelect);\n";
             $strTreeConfig .= "objTree.setOnImageRollOverHandler(doOnImageRollOver);\n";
             $strTreeConfig .= "objTree.setOnImageRollOutHandler(doOnImageRollOut);\n";
             break;
         case "storage":
             $intCid = NAV_PCMS_STORAGE;
             $strDragMethod = "StorageItem::setParent";
             $strReturn .= "function doOnImageRollOver(itemId) { return overlib('" . self::escapeForXml($objLang->get("editFolder", "tip")) . "'); }\n";
             $strTreeConfig = "objTree.enableDragAndDrop(true);\n";
             $strTreeConfig .= "objTree.enableMultiselection(true,true);\n";
             $strTreeConfig .= "objTree.setOnImageClickHandler(doOnImageSelect);\n";
             $strTreeConfig .= "objTree.setOnImageRollOverHandler(doOnImageRollOver);\n";
             $strTreeConfig .= "objTree.setOnImageRollOutHandler(doOnImageRollOut);\n";
             $strTreeConfig .= "objTree.setDragHandler(doOnDrag);\n";
             $strTreeConfig .= "objTree.setDragBehavior('complex');\n";
             break;
         case "media-ckeditor":
             $intCid = NAV_PCMS_STORAGE;
             $strTreeConfig .= "objTree.setOnImageClickHandler(doOnSelect);\n";
             $strTreeConfig .= "objTree.setOnClickHandler(doOnSelect);\n";
             break;
     }
     $strReturn .= "var objTree;\n";
     $strReturn .= "function doOnLoad() { this.openItem({$intElmntId});this.selectItem({$intElmntId}, false, false); window._treeLoaded = true; }\n";
     $strReturn .= "function doOnSelect(itemId) { if('{$strType}' == 'elements-ckeditor') { insertIntoCkEditor('?eid=' + itemId); } else if('{$strType}' == 'media-ckeditor') { insertIntoCkEditor('?mid=' + itemId); } else if (objTree.getSelectedItemId().split(',').length == 1) { document.location.href = '?cid={$intCid}&eid=' + itemId; } }\n";
     $strReturn .= "function doOnImageSelect(itemId) { if('{$strType}' == 'elements-ckeditor') { insertIntoCkEditor('?eid=' + itemId); } else if('{$strType}' == 'media-ckeditor') { insertIntoCkEditor('?mid=' + itemId); } else if (objTree.getSelectedItemId().split(',').length == 1) { document.location.href = '?cid={$intCid}&eid=' + itemId + '&cmd=3'; } }\n";
     $strReturn .= "function doOnImageRollOut(itemId) { return nd(); }\n";
     $strReturn .= "function doOnOpenEnd() { window._treeLoaded = true; }\n";
     $strReturn .= "function doOnDrag(idSubject, idTarget, idTargetParent, objTreeSubject, objTreeTarget) {\n";
     $strReturn .= "var objSaver = new dtmlXMLLoaderObject(null, null, false);\n";
     $strReturn .= "objSaver.loadXML(\"ajax.php?cmd={$strDragMethod}&eid=\" + idSubject + \"&parentId=\" + idTarget);\n";
     $strReturn .= "var objRoot = objSaver.getXMLTopNode(\"value\");\n";
     $strReturn .= "if (objRoot) {\n";
     $strReturn .= "var id = objRoot.firstChild.text;\n";
     $strReturn .= "if (id == undefined) {\n";
     $strReturn .= "var id = objRoot.firstChild.nodeValue;\n";
     $strReturn .= "}\n";
     $strReturn .= "if (id == -1) {\n";
     $strReturn .= "alert(\"Save failed\");\n";
     $strReturn .= "return false;\n";
     $strReturn .= "} else {\n";
     $strReturn .= "//objTreeTarget.selectItem(idTarget, true);\n";
     $strReturn .= "return true;\n";
     $strReturn .= "}\n";
     $strReturn .= "} else {\n";
     $strReturn .= "return false;\n";
     $strReturn .= "}\n";
     $strReturn .= "}\n";
     if ($strType !== 'elements-ckeditor' && $strType !== 'media-ckeditor') {
         $strReturn .= "function loadTree() {\n";
         $strReturn .= "objTree = new dhtmlXTreeObject('treeContainer', '100%', '100%', -1);\n";
         $strReturn .= "objTree.setXMLAutoLoading('/ajaxtree.php?type=" . $strType . "');\n";
         $strReturn .= "objTree.setImagePath('/images/xmltree/');\n";
         $strReturn .= "objTree.setOnClickHandler(doOnSelect);\n";
         $strReturn .= $strTreeConfig;
         $strReturn .= "objTree.setOnOpenEndHandler(doOnOpenEnd);\n";
         $strReturn .= "objTree.loadXML('/ajaxtree.php?cmd=init&type=" . $strType . "&id=" . $intElmntId . "', function() {objTree.openItem({$intElmntId});objTree.selectItem({$intElmntId}, false, false); window._treeLoaded = true;});\n";
         $strReturn .= "objTree.openItem({$intElmntId});\n";
         $strReturn .= "objTree.selectItem({$intElmntId}, false, false);\n";
         $strReturn .= "window._treeApi = objTree;\n";
         // new stuff depends on this
         //*** Add elementfield link field dragzones.
         if ($strType == "elements") {
             $objElement = Element::selectByPk($intElmntId);
             if (is_object($objElement)) {
                 switch ($strCommand) {
                     case CMD_ADD:
                         $objTemplates = $objElement->getSubTemplates();
                         if ($objTemplates->count() == 1) {
                             //*** Only one template available.
                             $objTemplate = $objTemplates->current();
                             $objFields = TemplateField::selectByTypeId(FIELD_TYPE_LINK, $objTemplate->getId());
                             foreach ($objFields as $objField) {
                                 $strReturn .= "objTree.dragger.addDragLanding(document.getElementById('efv_{$objField->getId()}'), new DragDropLink);\n";
                             }
                         }
                     case CMD_EDIT:
                         $objFields = TemplateField::selectByTypeId(FIELD_TYPE_LINK, $objElement->getTemplateId());
                         foreach ($objFields as $objField) {
                             $strReturn .= "objTree.dragger.addDragLanding(document.getElementById('efv_{$objField->getId()}'), new DragDropLink);\n";
                         }
                         break;
                 }
             }
         }
         $strReturn .= "}\n";
     }
     return $strReturn;
 }