function structure($pageID) { global $structureMgr, $modulesMgr; $res = ""; $branch = $structureMgr->getStructureForPageID($pageID, 2); $brCount = count($branch); $message = _get("message"); if ($message) { $message = "<br><center><span style=\"color: red; font-weight: bold;\">{$message}</span></center><br><br>\n"; } $md = $structureMgr->getMetaData($pageID); $addCols = $modulesMgr->execute($md["ModuleName"], "getAdditionalColumns", array($md["DataType"]), true); if ($addCols == NULL) { $addCols = array(); } $dtForCols = count($addCols) > 0 ? array_shift($addCols) : ""; //dataType to show real values in the columns $trline = 1; $dCols = array(); foreach ($addCols as $k => $v) { $dCols[] = $k; } if ($dtForCols) { $dataList = $modulesMgr->execute($md["ModuleName"], "getDataListByPageID", array($pageID, $dCols), true); } if (!isset($dataList) || $dataList == NULL) { $dataList = array(); } //Look for dropdowns to generate JS arrays $scripts = ""; foreach ($addCols as $addCol => $addColVal) { switch ($addColVal[1]) { case "dropdown": $scripts .= "var {$addCol} = {"; $j = 0; foreach ($addColVal[2] as $addColRow => $addColRowVal) { if ($j != 0) { $scripts .= ", "; } $scripts .= "\"" . $addColRow . "\" : \"" . $addColRowVal . "\""; $j = 1; } $scripts .= "};\n\n"; break; } } if ($scripts) { $scripts = "{$scripts}\n function writeDropDown(vName, sID, val)\n {\n var x;\n eval('x = ' + vName + ';');\n if (x)\n {\n document.write(\"<select name=\\\"\" + vName + \"\" + sID + \"\\\">\");\n for (a in x)\n {\n document.write(\"<option\");\n if (a == val)\n document.write(\" selected\");\n\n document.write(\" value=\" + a + \">\" + x[a] + \"</option>\");\n }\n document.write(\"</select>\");\n }\n }\n "; } for ($i = 0; $i < $brCount; $i++) { $cnt = count($branch[$i]["children"]); if ($cnt > 0) { $cntblock = "<br><div style=\"padding: 1px; margin-top: 3px; color: #808080\">[подразделов: {$cnt}]</div>"; } else { $cntblock = ""; } if ($branch[$i]["isHidden"]) { $isHidden = " checked"; } else { $isHidden = ""; } $dt = $modulesMgr->execute($branch[$i]["ModuleName"], "getSubItemType", array($branch[$i]["DataType"]), false); $selfDt = $modulesMgr->execute($branch[$i]["ModuleName"], "getItemType", array($branch[$i]["DataType"]), false); $i1 = $i + 1; $res .= "<tr id=tr{$i1} class=sline{$trline}><td>" . "<input type=checkbox name=chk" . $branch[$i]["sID"] . " value=\"" . $branch[$i]["sID"] . "\">" . "<input type=hidden name=\"item" . $branch[$i]["sID"] . "\" value=\"" . $branch[$i]["sID"] . "\">\n </td>"; $res .= "<td class=\"idCol{$trline}\">" . $branch[$i]["sID"] . "</td>"; $res .= "<td>"; if (count($dt) > 0) { $res .= "<a class=admlink href=\"/admin/?pageID=" . $branch[$i]["sID"] . "\">" . $branch[$i]["ShortTitle"] . " »</a> {$cntblock}"; } else { $res .= $branch[$i]["ShortTitle"]; } $res .= "</td>"; $res .= "<td align=center><a class=admedit href=\"/admin/?cmd=editPage&pageID=" . $branch[$i]["sID"] . "\">править</a></td>\n"; foreach ($addCols as $addCol => $addColVal) { $res .= "<td align=center>"; if ($dtForCols == $branch[$i]["DataType"]) { switch ($addColVal[1]) { case "label": $res .= $dataList[$branch[$i]["sID"]][$addCol]; break; case "text": $res .= "<input type=text name=\"{$addCol}" . $branch[$i]["sID"] . "\" value=\"" . $dataList[$branch[$i]["sID"]][$addCol] . "\" size=\"{$addColVal['2']}\">"; break; case "dropdown": $res .= "<script>writeDropDown('{$addCol}', '" . $branch[$i]["sID"] . "', '" . $dataList[$branch[$i]["sID"]][$addCol] . "');</script>"; //$addColVal[2][1];//" - "; break; case "checkbox": $res .= "<input type=checkbox name=\"{$addCol}" . $branch[$i]["sID"] . "\" value=\"1\""; if ($dataList[$branch[$i]["sID"]][$addCol]) { $res .= " checked"; } $res .= ">"; break; default: $res .= " - "; } } else { $res .= " - "; } $res .= "</td>\n"; } $delName = str_replace("\"", """, $branch[$i]["ShortTitle"]); $res .= "<td align=center>" . $selfDt[0] . "</td>\n" . "<td align=center>" . GetCfg($branch[$i]["ModuleName"] . ".ModuleName") . "</td>\n" . "<td align=center>" . $branch[$i]["CreateDate"] . "</td>"; $res .= "<td align=center><input type=checkbox value=\"1\" name=\"h" . $branch[$i]["sID"] . "\"{$isHidden}></td>\n"; $res .= "<td align=center><a class=admdel href=\"/admin/?cmd=delPage&pageID=" . $branch[$i]["sID"] . "\" \n onclick=\"return confirmDelete('" . $selfDt[1] . " "" . $delName . ""');\" style=\"color: red;\">удалить</a></td>\n"; $res .= "</tr>\n"; if ($trline == 1) { $trline = 2; } else { $trline = 1; } if ($i == $brCount - 1) { $colSpan = 9 + count($addCols); $res .= "<tr><td colspan={$colSpan} class=idCol1>\n <div style=\"float:left; font-weight: bold;\"><span style=\"vertical-align:absmiddle;\">Отмеченные: </span>\n <select name=cmd{$i1} >\n <option value=\"\">(выберите действие)\n <option value=\"movePages\">перенести в другой раздел\n <option value=\"moveToTheTop\">переместить в начало раздела\n <option value=\"moveToTheBottom\">переместить в конец раздела\n <option value=\"delPages\">удалить\n </select>\n </div>\n\t\t\t<div style=\"float:left; font-weight: bold;\"><span style=\"vertical-align:absmiddle;\">Раздел для переноса: </span>\n <select name=branchName >\n " . getOptionBranches($pageID) . "\n </select>\n </div>\n\t\t\t<div style=\"float:left;\"><button name=\"sender\" title=\"Выполнить\" onClick=\"document.forms.structure.submit();\">Выполнить</button></div>\n <div style=\"float:right;\"><input type=submit name=update value=\"Обновить\"></div></tr>\n"; } } $addLinks = ""; foreach ($modulesMgr->modules() as $modName => $modArr) { $dt = $modulesMgr->execute($modName, "getSubItemType", array($md["DataType"]), true); $addLinks2 = ""; if ($dt !== NULL) { foreach ($dt as $k => $v) { if ($addLinks2) { $addLinks2 .= " | "; } $addLinks2 .= "<a class=\"admlink\" href=\"/admin/?cmd=addPage&pageID={$pageID}&ModuleName={$modName}&DataType={$k}\">{$v}</a>"; } } if ($addLinks2) { $addLinks .= "<tr><td>[" . GetCfg("{$modName}.ModuleName") . "] </td><td>{$addLinks2}</td></tr>\n"; } } if ($addLinks) { $addLinks = "<div style=\"border: double #146E00; background-color: #C5FDB8; padding: 3px; font-size: 12px;\">\n <table cellpadding=0 cellspacing=0 border=0>\n <tr>\n <td valign=top><strong>Добавить:</strong></td>\n <td valign=top> </td>\n <td valign=top>\n <table border=0 cellpadding=0 cellspacing=0>\n {$addLinks}\n </table>\n </td>\n </tr>\n </table>\n </div>"; } if ($brCount < 20) { $addLinksTop = ""; } else { $addLinksTop = $addLinks; } if (!$res) { $res = "<tr><td colspan=7>подразделы отсутствуют</td></tr>"; } $thead = ""; foreach ($addCols as $addCol => $addColVal) { $thead .= "<td align=center>" . $addColVal[0] . "</td>"; } return "\n <script>\n function confirmDelete(txt)\n {\n return confirm(\"Действительно удалить \" + txt + \"?\");\n }\n {$scripts}\n </script>\n{$message}\n\n{$addLinksTop}<br>\n<form id=structure method=post action=/admin/ style=\"margin: 0px;\">\n<input type=hidden name=cmd value=updChildren>\n<input type=hidden name=pageID value={$pageID}>\n<table width=100% cellpadding=4 cellspacing=0 border=0 style=\"border: double #A0A0A0;\"><tr class=\"top\">\n<td><input type=checkbox name=checkall></td>\n<td>id</td>\n<td>Наименование</td>\n<td align=center> </td>\n{$thead}\n<td align=center>Тип данных</td>\n<td align=center>Модуль</td>\n<td align=center>Дата обновления</td>\n<td align=center>Скрывать</td>\n<td align=center> </td>\n</tr>\n{$res}\n</table>\n</form><br>\n{$addLinks}\n"; }
/** * Возвращает Контент Структуры сайта в админке * * @param integer $pageID * @return string */ function structure($pageID) { //return ''; global $structureMgr, $modulesMgr; $res = ''; $branch = $structureMgr->getStructureForPageID($pageID, 2); $brCount = count($branch); $message = _get('message'); if ($message) { $message = '<br><center><span style="color: red; font-weight: bold;">' . $message . '</span></center><br><br>'; } $md = $structureMgr->getMetaData($pageID); //print_r($md); //if ( isset( $md['mod']->publicFunctions ) && in_array('getSubItemType', $md['mod']->publicFunctions ) ) $addCols = $modulesMgr->execute($md['ModuleName'], 'getAdditionalColumns', array($md['DataType']), true); // execute( 'Articles', 'getAdditionalColumns', 'Article', true ); // Выполнить функцию 'getAdditionalColumns' модуля 'Articles' с параметром 'Article' // print_r($addCols); // die('die'); if ($addCols == NULL) { $addCols = array(); } $dtForCols = count($addCols) > 0 ? array_shift($addCols) : ''; //dataType to show real values in the columns $trline = 1; $dCols = array(); foreach ($addCols as $k => $v) { $dCols[] = $k; } if ($dtForCols) { $dataList = $modulesMgr->execute($md['ModuleName'], 'getDataListByPageID', array($pageID, $dCols), true); } if (!isset($dataList) || $dataList == NULL) { $dataList = array(); } //Look for dropdowns to generate JS arrays $scripts = ''; foreach ($addCols as $addCol => $addColVal) { switch ($addColVal[1]) { case 'dropdown': $scripts .= "var {$addCol} = {"; $j = 0; foreach ($addColVal[2] as $addColRow => $addColRowVal) { if ($j != 0) { $scripts .= ', '; } $scripts .= '"' . $addColRow . '" : "' . $addColRowVal . '"'; $j = 1; } $scripts .= "};\n\n"; break; } } if ($scripts) { $scripts = "{$scripts}\n function writeDropDown(vName, sID, val)\n {\n var x;\n eval('x = ' + vName + ';');\n if (x)\n {\n document.write(\"<select name=\\\"\" + vName + \"\" + sID + \"\\\">\");\n for (a in x)\n {\n document.write(\"<option\");\n if (a == val)\n document.write(\" selected\");\n\n document.write(\" value=\" + a + \">\" + x[a] + \"</option>\");\n }\n document.write(\"</select>\");\n }\n }\n "; } /** * evil circle begin */ $i1 = 0; for ($i = 0; $i < $brCount; $i++) { $cnt = count($branch[$i]['children']); if ($cnt > 0) { $cntblock = "<br><div style=\"padding: 1px; margin-top: 3px; color: #808080\">[подразделов: {$cnt}]</div>"; } else { $cntblock = ''; } if ($branch[$i]['isHidden']) { $isHidden = ' checked'; } else { $isHidden = ''; } $dt = $modulesMgr->execute($branch[$i]['ModuleName'], 'getSubItemType', array($branch[$i]['DataType']), false); $selfDt = $modulesMgr->execute($branch[$i]['ModuleName'], 'getItemType', array($branch[$i]['DataType']), false); $i1 = $i + 1; $res .= "<tr id=tr{$i1} class=sline{$trline}><td>" . '<input type=checkbox name=chk' . $branch[$i]['sID'] . ' value="' . $branch[$i]['sID'] . '">' . '<input type=hidden name="item' . $branch[$i]['sID'] . '" value="' . $branch[$i]['sID'] . '"> </td>'; $res .= "<td class=\"idCol{$trline}\">" . $branch[$i]["sID"] . "</td>"; $res .= '<td>'; if (count($dt) > 0) { $res .= '<a class=admlink href="/admin/?pageID=' . $branch[$i]['sID'] . '">' . $branch[$i]['ShortTitle'] . ' »</a> ' . $cntblock; } else { $res .= $branch[$i]['ShortTitle']; } $res .= '</td>'; $res .= '<td align=center><a class=admedit href="/admin/?cmd=editPage&pageID=' . $branch[$i]['sID'] . '">править</a></td>'; // Собирает HTML-код строк таблицы для вывода списка разделов и их параметров foreach ($addCols as $addCol => $addColVal) { $res .= '<td align=center>'; if ($dtForCols == $branch[$i]['DataType']) { switch ($addColVal[1]) { case 'label': $res .= $dataList[$branch[$i]['sID']][$addCol]; break; case 'text': $res .= "<input type=text name=\"{$addCol}" . $branch[$i]["sID"] . "\" value=\"" . $dataList[$branch[$i]["sID"]][$addCol] . "\" size=\"{$addColVal['2']}\">"; break; case 'dropdown': $res .= "<script>writeDropDown('{$addCol}', '" . $branch[$i]["sID"] . "', '" . $dataList[$branch[$i]["sID"]][$addCol] . "');</script>"; //$addColVal[2][1];//" - "; break; case 'checkbox': $res .= "<input type=checkbox name=\"{$addCol}" . $branch[$i]["sID"] . "\" value=\"1\""; if ($dataList[$branch[$i]["sID"]][$addCol]) { $res .= " checked"; } $res .= ">"; break; default: $res .= ' - '; } } else { $res .= " - "; } $res .= '</td>'; } $delName = str_replace('"', '"', $branch[$i]['ShortTitle']); $res .= "<td align=center>" . $selfDt[0] . "</td>\n" . "<td align=center>" . GetCfg($branch[$i]['ModuleName'] . '.ModuleName') . "</td>\n" . "<td align=center>" . $branch[$i]["CreateDate"] . "</td>"; $res .= "<td align=center><input type=checkbox value=\"1\" name=\"h" . $branch[$i]["sID"] . "\"{$isHidden}></td>\n"; $res .= "<td align=center><a class=admdel href=\"/admin/?cmd=delPage&pageID=" . $branch[$i]["sID"] . "\" \n onclick=\"return confirmDelete('" . $selfDt[1] . " "" . $delName . ""');\" style=\"color: red;\">удалить</a></td>\n"; $res .= "</tr>\n"; if ($trline == 1) { $trline = 2; } else { $trline = 1; } if ($i == $brCount - 1) { $colSpan = 9 + count($addCols); $res .= "<tr><td colspan={$colSpan} class=idCol1>\n <div style=\"float:left; font-weight: bold;\"><span style=\"vertical-align:absmiddle;\">Отмеченные: </span>\n <select name=cmd{$i1} >\n <option value=\"\">(выберите действие)\n <option value=\"movePages\">перенести в другой раздел\n <option value=\"moveToTheTop\">переместить в начало раздела\n <option value=\"moveToTheBottom\">переместить в конец раздела\n <option value=\"delPages\">удалить\n </select>\n </div>\n\t\t\t<div style=\"float:left; font-weight: bold;\"><span style=\"vertical-align:absmiddle;\">Раздел для переноса: </span>\n <select name=branchName >\n " . getOptionBranches($pageID, $branch) . "\n </select>\n </div>\n\t\t\t<div style=\"float:left;\"><button name=\"sender\" title=\"Выполнить\" onClick=\"document.forms.structure.submit();\">Выполнить</button></div>\n <div style=\"float:right;\"><input type=submit name=update value=\"Обновить\"></div></tr>\n"; } } /** * evil circle end */ $addLinks = ''; $listModules = $modulesMgr->modules(); //print_r($listModules); foreach ($listModules as $modName => $modArr) { if (isset($modArr['mod']->publicFunctions) && in_array('getSubItemType', $modArr['mod']->publicFunctions)) { $dt = $modulesMgr->execute($modName, 'getSubItemType', array($md['DataType']), true); } else { $dt = array(); } $addLinks2 = ''; foreach ($dt as $k => $v) { if ($addLinks2) { $addLinks2 .= ' | '; } $addLinks2 .= '<a class="admlink" href="/admin/?cmd=addPage&pageID=' . $pageID . '&ModuleName=' . $modName . '&DataType=' . $k . '">' . $v . '</a>'; } if ($addLinks2) { $addLinks .= '<tr><td>[' . GetCfg($modName . '.ModuleName') . '] </td><td>' . $addLinks2 . '</td></tr>'; } } if ($addLinks) { $addLinks = '<div style="border: double #146E00; background-color: #C5FDB8; padding: 3px; font-size: 12px;"> <table cellpadding=0 cellspacing=0 border=0> <tr> <td valign=top><strong>Добавить:</strong></td> <td valign=top> </td> <td valign=top> <table border=0 cellpadding=0 cellspacing=0>' . $addLinks . '</table> </td> </tr> </table> </div>'; } if ($brCount < 20) { $addLinksTop = ''; } else { $addLinksTop = $addLinks; } if (!$res) { $res = '<tr><td colspan=7>подразделы отсутствуют</td></tr>'; } $thead = ''; foreach ($addCols as $addCol => $addColVal) { $thead .= '<td align=center>' . $addColVal[0] . '</td>'; } return "\n <script>\n function confirmDelete(txt)\n {\n return confirm(\"Действительно удалить \" + txt + \"?\");\n }\n {$scripts}\n </script>\n{$message}\n\n{$addLinksTop}<br>\n<form id=structure method=post action=/admin/ style=\"margin: 0px;\">\n<input type=hidden name=cmd value=updChildren>\n<input type=hidden name=pageID value={$pageID}>\n<table width=100% cellpadding=4 cellspacing=0 border=0 style=\"border: double #A0A0A0;\"><tr class=\"top\">\n<td><input type=checkbox name=checkall></td>\n<td>id</td>\n<td>Наименование</td>\n<td align=center> </td>\n{$thead}\n<td align=center>Тип данных</td>\n<td align=center>Модуль</td>\n<td align=center>Дата обновления</td>\n<td align=center>Скрывать</td>\n<td align=center> </td>\n</tr>\n{$res}\n</table>\n</form><br>\n{$addLinks}\n"; }