Menüpunkt nach Löschung wieder aktiv bekommen

  • WCF 1

Achtung: Diese Seite ist nur noch Teil eines Archivs und wird in Zukunft entfernt.

Einige kennen sicher das Problem:
Einmal einen falschen Menüeintrag im ACP gelöscht und neu angelegt, schon wird er nicht mehr als aktiv gekennzeichnet, wenn man sich im entsprechenden Bereich befindet.

Dieses Verhalten kommt daher zustande, dass der entsprechende Eventlistener, der diesen Menüpunkt aktiv setzt, nur dann auch das macht, was er soll, wenn der Menüeintrag die entsprechende ID in der Datenbank hat. Durch das Löschen und erneute Anlegen des Menüpunktes bekommt er aber eine neue ID, da diese automatisch in MySQL hochgezählt wird. Einmal verwendete IDs werden nicht nochmals genutzt.

Es gibt drei Möglichkeiten, das wieder rückgängig zu machen und den Menüpunkt wieder als aktiv zu kennzeichnen, jedoch erfordert jede etwas vom Benutzer.

Die erste Möglichkeit, die ich hier jedoch nicht näher erkläre, wäre die Erstellung eines neuen Eventlisteners, der einen neuen Menüeintrag erstellt und diesen als aktiv kennzeichnen kann. Dafür muss man sich aber in der Plugin-Erstellung im Community Framework auskennen.

Die zweite Möglichkeit wäre, die Tabelle wcfX_page_menu_item (wobei X für die Installationsnummer des Community Framework steht) mit einem Backup zu überschreiben. Das ist nur dann sinnvoll, wenn man sonst nichts geändert, also keine neuen Menüpunkte angelegt hat, vor allem nicht mit einem Plugin. Hierzu ist es jedoch auch nötig, dass man ein aktuelles Backup der Datenbank hat.
Um das Backup dieser Tabelle einzuspielen, muss man zuerst einmal die entsprechenden Zeilen in der Backup-Datei finden. Das Backup ist normalerweise komprimiert gepackt und kann mit Software wie 7-Zip oder WinRAR entpackt werden. Herauskommen sollte eine *.sql-Datei, welche man in einem beliebigen Editor öffnen kann (ich empfehle Notepad++). Dort sucht man dann nach wcfX_page_menu_item (wobei X für die Installationsnummer des Community Framework steht). Je nach Programm, mit dem man das Backup erstellt hat, kann es vorkommen, dass am Anfang diese Zeile schon auftaucht, jedoch nur als Kommentar.
Der gesuchte Bereich sieht z.B. so aus:

SQL-Abfrage

  1. --
  2. -- Tabellenstruktur für Tabelle `wcf1_page_menu_item`
  3. --
  4. CREATE TABLE IF NOT EXISTS `wcf1_page_menu_item` (
  5. `menuItemID` int(10) NOT NULL AUTO_INCREMENT,
  6. `packageID` int(10) NOT NULL DEFAULT '0',
  7. `menuItem` varchar(255) NOT NULL DEFAULT '',
  8. `menuItemLink` varchar(255) NOT NULL DEFAULT '',
  9. `menuItemIconS` varchar(255) NOT NULL DEFAULT '',
  10. `menuItemIconM` varchar(255) NOT NULL DEFAULT '',
  11. `menuPosition` enum('header','footer') NOT NULL DEFAULT 'header',
  12. `showOrder` int(10) NOT NULL DEFAULT '0',
  13. `permissions` text,
  14. `options` text,
  15. `isDisabled` tinyint(1) NOT NULL DEFAULT '0',
  16. PRIMARY KEY (`menuItemID`),
  17. UNIQUE KEY `packageID` (`packageID`,`menuItem`)
  18. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
  19. --
  20. -- Daten für Tabelle `wcf1_page_menu_item`
  21. --
  22. INSERT INTO `wcf1_page_menu_item` (`menuItemID`, `packageID`, `menuItem`, `menuItemLink`, `menuItemIconS`, `menuItemIconM`, `menuPosition`, `showOrder`, `permissions`, `options`, `isDisabled`) VALUES
  23. (1, 10, 'wcf.header.menu.help', 'index.php?page=Help', 'helpS.png', 'helpM.png', 'footer', 3, '', 'module_help', 0),
  24. (2, 18, 'wcf.header.menu.memberslist', 'index.php?page=MembersList', 'membersS.png', 'membersM.png', 'header', 2, 'user.membersList.canView', 'module_members_list', 0),
  25. (3, 48, 'wbb.header.menu.board', 'index.php?page=Index', 'indexS.png', 'indexM.png', 'header', 1, '', '', 0);
Alles anzeigen
Diese Zeilen muss man dann z.B. über phpMyAdmin im Tab "SQL" ausführen, nachdem man die Tabelle vorher gelöscht hat. Am besten aber hier nochmals davor ein Backup machen.

Die dritte Möglichkeit ist das Ändern der Spalte menuItemID in der Tabelle wcfX_page_menu_item (wobei X für die Installationsnummer des Community Framework steht). Hierfür muss man jedoch wissen, welche menuItemID der originale Menüpunkt hatte, was nicht selbstverständlich ist. Eine entsprechende Anzeige ist jedoch im ACP von Burning Board 3 unter Darstellung -> Hauptmenü -> Menüpunkte auflisten zu finden.

Eventuell werden die Änderungen bei der zweiten und dritten Möglichkeit nicht sofort übernommen, dann reicht es normal, den Cache einmal zu löschen.
Über den Autor
Ich bin Webentwickler in Stuttgart und administriere Server seit vielen Jahren. In diesem Blog erstelle ich hauptsächlich Tutorials für andere Webentwickler, Webdesigner und Serveradministratoren.
-------------------------------------------------------------------------------------------------------------------------------------
I’m a web developer in Stuttgart, Germany, and server administrator since many years. This blog mainly contains a tutorial set for other web developer, web designer and server administrators.

218 mal gelesen

Kommentare 2

  • Black Rider -

    Von der Vorgehensweise her könnte das sein, ja. Allerdings nicht mit dem Code von oben.

  • LukvonStrom -

    Funktioniert das auch bei dem Burning Board 4.0 wie beschrieben ?