Exemplo n.º 1
0
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"] . " &raquo;</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("\"", "&quot;", $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] . " &quot;" . $delName . "&quot;');\" 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") . "] &nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td>\n</tr>\n{$res}\n</table>\n</form><br>\n{$addLinks}\n";
}
Exemplo n.º 2
0
/**
 * Возвращает Контент Структуры сайта в админке
 *
 * @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'] . ' &raquo;</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('"', '&quot;', $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] . " &quot;" . $delName . "&quot;');\" 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') . '] &nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td>\n</tr>\n{$res}\n</table>\n</form><br>\n{$addLinks}\n";
}