Помощь Динамическое меню 1.0 для DLE 9.7

Тема в разделе "DLE", создана пользователем alukart, 11 мар 2013.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. alukart

    alukart Постоялец

    Регистр.:
    31 дек 2006
    Сообщения:
    77
    Симпатии:
    4
    Приветствую,
    Дано бвл очень хороший модуль для организации меню на сайте вот ссылка
    http://4dle.ru/2007/05/30/modul_dinamicheskoe_menju.html

    модуль отлично работает и на версии 9.7 НО есть проблема в том что нельзя удалить категорию Тоесть нажимаем на Удалить Пишет что удалилась а в результате категория осталась.
    Пожалуйста помогите подредактировать код чтобы запрос на удаление был правильным сам смотрел вроде все правильно но не удаляется категория.
    Вот код фалйа inc/menu.php

    PHP:
    <?PHP
    /*
    =====================================================
    Невенчанный Пётр Андреевич - Integral +
    -----------------------------------------------------
    http://www.integral.kz/
    -----------------------------------------------------
    Copyright (c) 2007 Невенчанный Пётр Андреевич
    =====================================================
    Данный код защищен авторскими правами
    =====================================================
    Файл: menu.php
    -----------------------------------------------------
    Назначение: Администрирование меню сайта
    =====================================================
    */
     
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }
     
     
     
    function 
    ShowTree($select = -1)
    {
        global 
    $db;
       
        
    $res '';
        
    $result $db->query("SELECT id, title FROM ".PREFIX."_menu_top ORDER BY pos ASC");
        if (
    $db->num_rows($result) > 0)
        {
            while (
    $row $db->get_row($result))
            {
                
    $res .= '<option value="'.$row['id'].'"';
                if ((
    $select != -1) && ($select == $row['id'])){
                    
    $res .= ' selected="selected"';
                }
                
    $res .= '>'.$row['title'].'</option>';
            }
        }
     
        return 
    $res;
    }
     
    function 
    page_create($title$text$button$colspan$ajax=''){
    echoheader("menu","menu");
     
    if (
    $ajax != ''){
        echo 
    $ajax;
    }
     
    echo <<<HTML
    <div style="padding-top:5px;padding-bottom:2px;">
    <table width="100%">
        <tr>
            <td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0"></td>
            <td background="engine/skins/images/tl_oo.gif"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0"></td>
            <td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0"></td>
        </tr>
        <tr>
            <td background="engine/skins/images/tl_lb.gif"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0"></td>
            <td style="padding:5px;" bgcolor="#FFFFFF">
    <table width="100%">
        <tr>
            <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">
    $title</div></td>
        </tr>
    </table>
    <div class="unterline"></div>
    <table width="100%">
        
    $text
    HTML;
     
    echo <<<HTML
    </table>
        
    $button
        <div class="hr_line"></div>
        <center><a href="admin.php?mod=menu">Настройка меню сайта</a></center>
        <div class="hr_line"></div>
        </td>
            <td background="engine/skins/images/tl_rb.gif"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0"></td>
        </tr>
        <tr>
            <td><img src="engine/skins/images/tl_lu.gif" width="4" height="6" border="0"></td>
            <td background="engine/skins/images/tl_ub.gif"><img src="engine/skins/images/tl_ub.gif" width="1" height="6" border="0"></td>
            <td><img src="engine/skins/images/tl_ru.gif" width="6" height="6" border="0"></td>
        </tr>
    </table>
    </div>
    HTML;
     
    echofooter();
    }
     
    function 
    clear_post($text=''){
        
    $res $text;
        
    $res htmlspecialchars($res);
        
    $res trim($res);
     
        return 
    $res;
    }
     
    if (
    $action == "delete_top"){
       
        
    $id clear_post($id);
     
        
    $db->query("DELETE FROM ".PREFIX."_menu_top WHERE id='".$id."'");
        
    $db->free();
        
    msg("info"'Удаление граппы меню.''Группа меню удалена.'"$PHP_SELF?mod=menu");
     
    }elseif (
    $action == "delete_menu"){
     
        
    $id clear_post($id);
     
        
    $db->query("DELETE FROM ".PREFIX."_menu WHERE id='".$id."'");
        
    $db->free();
        
    msg("info"'Удаление пункта меню.''Пункт меню удален.'"$PHP_SELF?mod=menu");
     
    }elseif (
    $action == "menu_sort"){
     
        
    $menu '';
        
    $top '';
        print 
    "<pre>";
        foreach (
    $_POST as $key => $value){
            
    $key clear_post($key);
            
    $value clear_post($value);
            if (
    substr($key,0,3) == "top"){
                
    $id trim(substr($key,3,strlen($key)));
                
    $db->query("UPDATE ".PREFIX."_menu_top SET pos='".$value."' WHERE id='$id'");
    //            print "UPDATE ".PREFIX."_menu_top SET pos='".$value."' WHERE id='$id'\n";
            
    }
            if (
    substr($key,0,4) == "menu"){
                
    $id trim(substr($key,4,strlen($key)));
                
    $db->query("UPDATE ".PREFIX."_menu SET pos='".$value."' WHERE id='$id'");
    //            print "UPDATE ".PREFIX."_menu SET pos='".$value."' WHERE id='$id'\n";
            
    }
        }
        print 
    "</pre>";
        
    msg("info"'Сортировка меню.''Сортировка меню окончена успешно.'"$PHP_SELF?mod=menu");
     
    }elseif (
    $action == "new_top"){
     
        
    $pos_query $db->query("SELECT count(*) as pos FROM ".PREFIX."_menu_top");
        
    $pos_row $db->get_row($pos_query);
        
    $db->free();
        
    $title clear_post($_POST['menu_top']);
        if (
    $title == ""){
            
    msg("error",$lang['menu_top_error'],$lang['menu_top_ertitle'], "javascript:history.go(-1)");
        }
        
    $pos $pos_row['pos']+1;
        
    $db->query("INSERT INTO ".PREFIX."_menu_top (title, pos) VALUES ('".$title."', '".$pos."')");
        
    $db->free();
        
    msg("info"'Создание новой группы меню.''Новая группа меню была успешно добавлена.'"$PHP_SELF?mod=menu");
     
    }elseif (
    $action == "top_save"){
     
        
    $top_id        =    clear_post($_POST['menu_top_id']);
        
    $top_title    =    clear_post($_POST['menu_top']);
        
    $top_pos    =    clear_post($_POST['menu_top_pos']);
       
        
    $test $db->query("SELECT id FROM ".PREFIX."_menu_top WHERE id='".$top_id."'");
     
        if (
    $db->num_rows($test) == 0){
            
    msg("error",$lang['menu_top_edit_error'],$lang['menu_top_not_found'], "j+avascript:history.go(-1)");
        }
     
        
    $db->free();
     
        if (
    $top_title == ""){
            
    msg("error",$lang['menu_top_edit_error'],$lang['menu_top_edit_ertitle'], "javascript:history.go(-1)");
        }
     
        if (
    $top_pos == ""){
            
    msg("error",$lang['menu_top_edit_error'],$lang['menu_top_edit_erpos'], "javascript:history.go(-1)");
        }
     
        
    $pos $pos_row['pos']+1;
        
    $db->query("UPDATE ".PREFIX."_menu_top SET title='".$top_title."' , pos='".$top_pos."' WHERE id='".$top_id."'");
        
    $db->free();
        
    msg("info"'Редактирование группы меню.''Группа меню успешно отредактирована.'"$PHP_SELF?mod=menu");
     
    }elseif (
    $action == "new_menu"){
     
        
    $title        =    clear_post($_POST['menu_title']);
        
    $menu_top    =    clear_post($_POST['menu_top']);
        
    $menu_link    =    clear_post($_POST['menu_link']);
        
    $menu_jlink    =    clear_post($_POST['menu_jlink']);
     
        
    $pos_query $db->query("SELECT count(*) as pos FROM ".PREFIX."_menu WHERE top='".$menu_top."'");
        
    $pos_row $db->get_row($pos_query);
        
    $db->free();
     
        if (
    $title == ""){
            
    msg("error",$lang['menu_error'],$lang['menu_title_ertitle'], "javascript:history.go(-1)");
        }
     
        if (
    $menu_link == ""){
            
    msg("error",$lang['menu_error'],$lang['menu_link_ertitle'], "javascript:history.go(-1)");
        }
     
        
    $pos $pos_row['pos']+1;
        
    $db->query("INSERT INTO ".PREFIX."_menu (menu_title, link_ajax, menu_link, top, pos) VALUES ('".$title."', '".$menu_jlink."', '".$menu_link."', '".$menu_top."', '".$pos."')");
        
    $db->free();
        
    msg("info"'Создание нового пункта меню.''Новый пункт меню успешно создан.'"$PHP_SELF?mod=menu");
     
    }elseif (
    $action == "menu_save"){
     
        
    $menu_id        =    clear_post($_POST['id']);
        
    $menu_title        =    clear_post($_POST['menu_title']);
        
    $menu_top        =    clear_post($_POST['menu_top']);
        
    $menu_link        =    clear_post($_POST['menu_link']);
        
    $menu_jlink        =    clear_post($_POST['menu_jlink']);
        
    $menu_pos        =    clear_post($_POST['menu_pos']);
     
        
    $test $db->query("SELECT id FROM ".PREFIX."_menu WHERE id='".$menu_id."'");
     
        if (
    $db->num_rows($test) == 0){
            
    msg("error",$lang['menu_pt_edit_error'],$lang['menu_pt_not_found'], "j+avascript:history.go(-1)");
        }
     
        
    $db->free();
       
        if (
    $menu_title == ""){
            
    msg("error",$lang['menu_pt_edit_error'],$lang['menu_pt_edit_ertitle'], "javascript:history.go(-1)");
        }
     
        if (
    $menu_link == ""){
            
    msg("error",$lang['menu_pt_edit_error'],$lang['menu_pt_edit_erlink'], "javascript:history.go(-1)");
        }
     
        if (
    $menu_pos == ""){
            
    msg("error",$lang['menu_pt_edit_error'],$lang['menu_pt_edit_erpos'], "javascript:history.go(-1)");
        }
     
        
    $db->query("UPDATE ".PREFIX."_menu SET menu_title='".$menu_title."', link_ajax='".$menu_jlink."', menu_link='".$menu_link."', top='".$menu_top."', pos='".$menu_pos."' WHERE id='".$menu_id."'");
        
    $db->free();
        
    msg("info"'Редактирование пункта меню.''Пункт меню успешно отредактирован.'"$PHP_SELF?mod=menu");
     
    }elseif (
    $action == "add_new_top"){
    $text "<form method=\"post\" action=\"admin.php\"><tr>
            <td width=\"150\">
                
    {$lang['menu_top_title']}
            </td>
            <td>
                <input class=\"edit\" type=\"text\" name=\"menu_top\">
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_top_stitle']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>"
    ;
     
    $button "<input type=\"submit\" class=\"buttons\" value=\"Добавить\">
    <input type=\"hidden\" name=\"mod\" value=\"menu\">
    <input type=\"hidden\" name=\"action\" value=\"new_top\"></form>"
    ;
     
        
    page_create($lang['menu_top_new'], $text$button2);
    }elseif (
    $action == "edit_top"){
     
    $id clear_post($id);
    $res $db->query("SELECT * FROM ".PREFIX."_menu_top WHERE id='".$id."'");
    if (
    $db->num_rows($res) > 0){
     
        
    $row $db->get_row($res);
        
    $text "<form method=\"post\" action=\"admin.php\">
            <tr>
                <td width=\"150\">
                    
    {$lang['menu_top_title']}
                </td>
                <td>
                    <input class=\"edit\" type=\"text\" name=\"menu_top\" value=\""
    .$row['title']."\">
                    <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_top_stitle']}', this, event, '250px')\">[?]</a>
                </td>
            </tr>
            <tr>
                <td width=\"150\">
                    
    {$lang['menu_top_pos']}
                </td>
                <td>
                    <input class=\"edit\" type=\"text\" name=\"menu_top_pos\" value=\""
    .$row['pos']."\">
                </td>
            </tr>"
    ;
     
        
    $button "<input type=\"submit\" class=\"buttons\" value=\"Сохранить\">
        <input type=\"hidden\" name=\"mod\" value=\"menu\">
        <input type=\"hidden\" name=\"action\" value=\"top_save\">
        <input type=\"hidden\" name=\"menu_top_id\" value=\""
    .$id."\"></form>";
    }else{
        
    msg("error",$lang['menu_top_edit_error'],$lang['menu_top_not_found'], "javascript:history.go(-1)");
    }
     
        
    page_create($lang['menu_top_new'], $text$button2);
    }elseif (
    $action == "add_new_menu"){
    $text "<form method=\"post\" action=\"admin.php\">
        <tr>
            <td width=\"150\">
                
    {$lang['menu_pt_title']}
            </td>
            <td>
                <input class=\"edit\" type=\"text\" name=\"menu_title\">
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_pt_stitle']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>
        <tr>
            <td width=\"150\">
                
    {$lang['menu_top_title']}
            </td>
            <td>
                <select id=\"menu_top\" name=\"menu_top\" class=\"edit\"  style=\"width: 134px;\">
                    "
    .ShowTree()."   
                </select>
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_top_stitle']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>
        <tr>
            <td width=\"150\">
                
    {$lang['menu_pt_link']}
            </td>
            <td>
                <input class=\"edit\" type=\"text\" name=\"menu_link\">
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_pt_slink']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>
        <tr>
            <td width=\"150\">
                
    {$lang['menu_pt_jlink']}
            </td>
            <td>
                <input class=\"edit\" type=\"text\" name=\"menu_jlink\">
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_pt_sjlink']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>"
    ;
     
    $button "<input type=\"submit\" class=\"buttons\" value=\"Добавить\">
    <input type=\"hidden\" name=\"mod\" value=\"menu\">
    <input type=\"hidden\" name=\"action\" value=\"new_menu\"></form>"
    ;
     
        
    page_create($lang['menu_pt_new'], $text$button2);
    }elseif (
    $action == "edit_menu"){
     
    $id clear_post($id);
    $res $db->query("SELECT * FROM ".PREFIX."_menu WHERE id='".$id."'");
    if (
    $db->num_rows($res) > 0){
     
        
    $row $db->get_row($res);
     
    $text "<form method=\"post\" action=\"admin.php\">
        <tr>
            <td width=\"150\">
                
    {$lang['menu_pt_title']}
            </td>
            <td>
                <input class=\"edit\" type=\"text\" name=\"menu_title\" value=\""
    .$row['menu_title']."\">
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_pt_stitle']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>
        <tr>
            <td width=\"150\">
                
    {$lang['menu_top_title']}
            </td>
            <td>
                <select id=\"menu_top\" name=\"menu_top\" class=\"edit\"  style=\"width: 134px;\">
                    "
    .ShowTree($row['top'])."   
                </select>
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_top_stitle']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>
        <tr>
            <td width=\"150\">
                
    {$lang['menu_pt_link']}
            </td>
            <td>
                <input class=\"edit\" type=\"text\" name=\"menu_link\" value=\""
    .$row['menu_link']."\">
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_pt_slink']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>
        <tr>
            <td width=\"150\">
                
    {$lang['menu_pt_jlink']}
            </td>
            <td>
                <input class=\"edit\" type=\"text\" name=\"menu_jlink\" value=\""
    .$row['link_ajax']."\">
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_pt_sjlink']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>
        <tr>
            <td width=\"150\">
                
    {$lang['menu_pt_pos']}
            </td>
            <td>
                <input class=\"edit\" type=\"text\" name=\"menu_pos\" value=\""
    .$row['pos']."\">
                <a href=\"#\" class=\"hintanchor\" onMouseover=\"showhint('
    {$lang['menu_pt_sjlink']}', this, event, '250px')\">[?]</a>
            </td>
        </tr>"
    ;
     
    $button "<input type=\"submit\" class=\"buttons\" value=\"Сохранить\">
    <input type=\"hidden\" name=\"mod\" value=\"menu\">
    <input type=\"hidden\" name=\"action\" value=\"menu_save\">
    <input type=\"hidden\" name=\"id\" value=\""
    .$id."\"></form>";
    }else{
       
    }
     
        
    page_create($lang['menu_pt_new'], $text$button2);
    }
    else {
       
        
    $ajax '<script language="javascript">
        <!-- begin
        function confirmdelete(id, user){
        var agree=confirm("'
    .$lang['menu_top_confirm'].'");
        if (agree)
        document.location="'
    .$PHP_SELF.'?mod=menu&action=delete_top&id="+id;
        }
        function confirmdeletemenu(id, user){
        var agree=confirm("'
    .$lang['menu_confirm'].'");
        if (agree)
        document.location="'
    .$PHP_SELF.'?mod=menu&action=delete_menu&id="+id;
        }
        // end -->
        </script>'
    ;
     
    $text '';
     
    $menu_cat $db->query("SELECT * FROM " PREFIX "_menu_top ORDER By pos ASC");
    while(
    $row $db->get_row($menu_cat))
        {
           
            if(
    $i%== 0){ $bg "bgcolor=\"#EAE7E2\""; }
     
            
    $text .= "<form method=\"post\" action=\"admin.php\"><tr>
            <td style=\"padding:2px;\" width=\"90%\">
            &nbsp;<b>
    $row[title]</b>
            </td>
            <td><input class=\"edit\" type=\"text\" name=\"top"
    .$row['id']."\" value=\"".$row['pos']."\" style=\"width: 20px;\" /></td>";
            
    $text .= "<td>
            [<a class=maintitle href='
    $PHP_SELF?mod=menu&action=edit_top&id=$row[id]'>$lang[user_edit]</a>]&nbsp;[<a class=maintitle onClick=\"javascript:confirmdelete('$row[id]', '$row[name]'); return(false)\"  href=\"$PHP_SELF?mod=menu&action=delete_top&id=$row[id]\">$lang[user_del]</a>]
            </tr><tr><td background=\"engine/skins/images/mline.gif\" height=1 colspan=3></td></tr>"
    ;
     
            
    $menu_pt $db->query("SELECT id, menu_title, pos FROM " PREFIX "_menu WHERE top='".$row[id]."' ORDER By pos ASC");
           
            while(
    $rows $db->get_row($menu_pt))
            {
                
    $text .= "<tr>
                <td style=\"padding:2px;\" width=\"90%\">
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    $rows[menu_title]
                </td>
                <td><input class=\"edit\" type=\"text\" name=\"menu"
    .$rows['id']."\" value=\"".$rows['pos']."\" style=\"width: 20px;\" /></td>";
                
    $text .= "<td>
                [<a class=maintitle href='
    $PHP_SELF?mod=menu&action=edit_menu&id=$rows[id]'>$lang[user_edit]</a>]&nbsp;[<a class=maintitle onClick=\"javascript:confirmdeletemenu('$rows[id]', '$rows[name]'); return(false)\"  href=\"$PHP_SELF?mod=menu&action=delete_menu&id=$rows[id]\">$lang[user_del]</a>]
                </tr><tr><td background=\"engine/skins/images/mline.gif\" height=1 colspan=3></td></tr>"
    ;
            }
        }
    $db->free();
     
    $button "&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\"{$lang['menu_new']}\" class=\"bbcodes\" onclick=\"document.location='$PHP_SELF?mod=menu&action=add_new_top'\">&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\"{$lang['menu_pt_new']}\" class=\"bbcodes\" onclick=\"document.location='$PHP_SELF?mod=menu&action=add_new_menu'\">&nbsp;&nbsp;&nbsp;
    <input type=\"submit\" value=\"
    {$lang['menu_sort']}\" class=\"bbcodes\">
    <input type=\"hidden\" name=\"mod\" value=\"menu\">
    <input type=\"hidden\" name=\"action\" value=\"menu_sort\"></form>"
    ;
     
    page_create($lang['menu_head'], $text$button3$ajax);
    }
    ?>
     
  2. MrXoma

    MrXoma Писатель

    Регистр.:
    24 ноя 2012
    Сообщения:
    3
    Симпатии:
    0
    Может таблица неправильная, либо id группы в $id не помещается. К стати там опечатка небольшая Удаление граппы меню в delete_top