Es ist nicht möglich, im Gambio-Menü existierende Admin-Einträge zu ändern (um z.B. einen Link mir Aufrufparametern zu versehen). Der Eintrag wird immer neu eingefügt. Lösung: in "AdminMenuSource.inc.php" PHP: // add menu item $t_menu_item = array( "title" => htmlspecialchars_decode($t_attributes['title']), "link" => $t_link, "link_param" => $t_attributes["link_param"], "sort" => isset($t_sort) ? $t_sort : '1000' ); $this->v_menu_structure_array[$t_group_id]["menuitems"][] = $t_menu_item; ersetzen mit PHP: //Avenger // add/replace menu item $t_menu_item = array( "title" => htmlspecialchars_decode($t_attributes['title']), "link" => $t_link, "link_param" => $t_attributes["link_param"], "sort" => $t_sort ); //Check if element with "sort" already exists... $menu_item_exists=false; foreach ($this->v_menu_structure_array[$t_group_id]["menuitems"] as $key => $menu_item) { if ($menu_item['sort']==$t_sort) { $menu_item_exists=true; break; } } if ($menu_item_exists) { $this->v_menu_structure_array[$t_group_id]["menuitems"][$key] = $t_menu_item; } else { $this->v_menu_structure_array[$t_group_id]["menuitems"][] = $t_menu_item; } //Avenger
?? Verstehe das jetzt nicht ?? Was meinst du mit "Gambio-Menü" und welche "Admin-Einträge" ? [Auf dem Schlauch steh]
Der Vollständigkeit halber habe ich auch noch die Möglichkeit vorgesehen, einen Menü-Eintrag zu löschen.... Wenn man das "link"-Attribut in der XML-Definition leer lässt, wird der existierende Menüpunkt gelöscht.... Hier der neue Code: PHP: //Avenger // add/replace menu item $t_menu_item = array( "title" => htmlspecialchars_decode($t_attributes['title']), "link" => $t_link, "link_param" => $t_attributes["link_param"], "sort" => $t_sort ); //Check if element with "sort" already exists... $menu_item_exists=false; $menuitems_text="menuitems"; foreach ($this->v_menu_structure_array[$t_group_id][$menuitems_text] as $key => $menu_item) { if ($menu_item['sort']==$t_sort) { $menu_item_exists=true; break; } } if ($menu_item_exists) { if ($menu_item['link']=='') { unset($this->v_menu_structure_array[$t_group_id][$menuitems_text][$key]); } else { $this->v_menu_structure_array[$t_group_id][$menuitems_text][$key] = $t_menu_item; } } else { $this->v_menu_structure_array[$t_group_id][$menuitems_text][] = $t_menu_item; } //Avenger
Hey Avenger, vielen Dank für den Hinweis. Habe dies auf meine Todo Liste gesetzt und werde es nochmal intern absprechen. Wird vermutlich mit einem der nächsten Fixes kommen... MfG, Timo
Wenn Du schon mal drangehst... mit (und ohne) Avengers Modifikation verschwindet bei uns immer wieder der Inhalt des Bereiches "Favs". Da ist dann nur ein "-". Dann muss man irgend einen anderen Eintrag in einem anderen Bereich wählen, damit der Inhalt von "Favs" wieder erscheint. Hab das hier schon mehrfach gelesen; wär schön, wenn Du da auch mal reinschauen könntest. Vorab vielen Dank! Holger
Hallo Holger, magst du da mal ein Ticket eröffnen mit Shop- & FTP-Zugangsdaten und das Ticket an mich weiterleiten lassen? Hast du noch weitere Infos? Passiert das sporadisch, oder bei bestimmten Aktionen? Würde mir das Problem dann genauer anschauen. MfG, Timo
Ich habe da noch was....... Man kann den Menüeinträgen noch einen "style" oder "class" mitgeben, um seine eigenen Menüs besser hervorzuheben. Sonst sieht man die tollen neuen Funktionen gar nicht... PHP: <?php/* -------------------------------------------------------------- pt_AdminMenuSource.inc.php 2012-02-15 gm Gambio GmbH http://www.gambio.de Copyright (c) 2012 Gambio GmbH Copyright (c) 2012 Avenger, entwicklung@powertemplate.de Use "add_compatibility_entries" to add e.g. special CSS formats Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] Copyright (c) 2011 Avenger, entwicklung@powertemplate.de --------------------------------------------------------------*///class pt_AdminMenuSource extends pt_AdminMenuSource_parentclass pt_AdminMenuSource extends AdminMenuSource{ function init_structure_array( ) { // load first gambio menu xml $t_menu_files[] = $this->v_system_xml_path."gambio_menu.xml"; // load xml plugin files from system $t_plugin_menu_files_system = glob($this->v_system_xml_path.'menu_*.xml'); if (is_array($t_plugin_menu_files_system)) { $t_menu_files = array_merge($t_menu_files, $t_plugin_menu_files_system); } // load xml plugin files from user $t_plugin_menu_files_user = glob($this->v_user_xml_path.'menu_*.xml'); if (is_array($t_plugin_menu_files_user)) { $t_menu_files = array_merge($t_menu_files, $t_plugin_menu_files_user); } foreach ($t_menu_files as $t_menu_file) { // get xml content from ContentView $coo_view = MainFactory::create_object('ContentView'); $t_menu_file_parts = explode('/', $t_menu_file); $t_menu_file_name = $t_menu_file_parts[count($t_menu_file_parts)-1]; $t_menu_file_path = str_replace($t_menu_file_parts[count($t_menu_file_parts)-1], '', $t_menu_file); $coo_view->set_template_dir($t_menu_file_path); $coo_view->set_content_template($t_menu_file_name); $t_xml_content = $coo_view->get_html(); $t_menu_groups= $this->unserialize_xml($t_xml_content); if (is_array($t_menu_groups)) { $t_menu_groups = $t_menu_groups['menugroup']; if (!$t_menu_groups[0]) { $t_menu_groups = array(0 => $t_menu_groups); } foreach ($t_menu_groups as $t_menu_group) { // get attributes from xml $t_attributes = $t_menu_group['@attributes']; $t_group_id = $t_attributes['id']; // add group if not exists if (!$this->v_menu_structure_array[$t_group_id]) { // add default group values $this->v_menu_structure_array[$t_group_id] = array('id' => $t_group_id, 'title' => '', 'sort' => 1000, 'background' => 'gambio.png', 'menuitems' => array()); } // set title if(trim($t_attributes["title"]) != '') { $this->v_menu_structure_array[$t_group_id]['title'] = trim($t_attributes["title"]); } // set sort order if(trim($t_attributes["sort"]) != '') { $this->v_menu_structure_array[$t_group_id]['sort'] = trim($t_attributes["sort"]); } // set category image if(trim($t_attributes["background"]) != '') { $this->v_menu_structure_array[$t_group_id]['background'] = trim($t_attributes["background"]); } // get menu items from xml $t_menuitems = $t_menu_group['menuitem']; if (is_array($t_menuitems)) { if (!$t_menuitems[0]) { $t_menuitems = array(0 => $t_menuitems); } foreach ($t_menuitems as $t_menuitem) { if ($t_menuitem) { // get attributes from xml $t_attributes = $t_menuitem['@attributes']; // get menu item link $t_link = $t_attributes["link"]; if (defined($t_link)) { $t_link = constant($t_link); } // get sort order $t_sort = $t_attributes["sort"]; if ($t_sort == "") { $t_sort = 1000; } //Avenger // add/replace menu item $t_menu_item = array( "title" => htmlspecialchars_decode($t_attributes['title']), "link" => $t_link, "link_param" => $t_attributes["link_param"], "sort" => $t_sort ); $t_class = $t_attributes["class"]; if ($t_class) { $t_menu_item["class"]=$t_class; } $t_style = $t_attributes["style"]; if ($t_style) { $t_menu_item["style"]=$t_style; } //Check if element with "sort" already exists... $menu_item_exists=false; $menuitems_text="menuitems"; foreach ($this->v_menu_structure_array[$t_group_id][$menuitems_text] as $key => $menu_item) { if ($menu_item['sort']==$t_sort) { $menu_item_exists=true; break; } } if ($menu_item_exists) { if ($menu_item['link']=='') { unset($this->v_menu_structure_array[$t_group_id][$menuitems_text][$key]); } else { $this->v_menu_structure_array[$t_group_id][$menuitems_text][$key] = $t_menu_item; } } else { $this->v_menu_structure_array[$t_group_id][$menuitems_text][] = $t_menu_item; } //Avenger } } } // sort menu items according to sort order usort($this->v_menu_structure_array[$t_group_id]["menuitems"], array($this, "compare_sort_order")); } } } // sort group items according to sort order usort($this->v_menu_structure_array, array($this, "compare_sort_order")); } // adding menu entries (old school) - hint: prefer xml-file in user_classes/conf/AdminMenu directory function add_compatibility_entries($admin_access) { $css='<style type="text/css">.messageStackSuccess { color: red !important; font-size: 12px !important;}tr.attributes-odd td {/* padding-left: 20px; position: relative;*/ width:auto;}.menu_entry_hilite { font-weight:bold; color:red;}/*tr.attributes-odd input[type=checkbox] { left: 5px; position: absolute;}*/</style>'; echo $css; }}?>
So, ich habe nun ein paar Änderungen durchgeführt. Man kann nun durch ein neues Attribut bestehende Einträge löschen. Beispielweise: <menuitem sort="10" link="FILENAME_GM_LIGHTBOX" title="{$txt.BOX_GM_LIGHTBOX}" delete="true" /> Trägt man das Attribut bei nicht existierenden Einträgen ein, wird dieser Eintrag nicht dem Menü hinzugefügt. Der Eintrag wird quasi durch das delete-Attribut ignoriert. Auch die nachträgliche Bearbeitung funktioniert nun. Allerdings haben wir uns dazu entschieden, nicht die sort-Order als Prüfbedingung zu verwenden, sondern den Link und den Link-Parameter. Es kann durchaus vorkommen, dass mehrere unterschiedliche Einträge die gleiche sort-Order haben (z.B. 2 Einträge ohne sort-Order = 1000), welche sich dann gegenseitig überschreiben. Des Weiteren möchte man ja nur Einträge überschreiben, die auch den gleichen Link haben. Das Feature mit den Styles und Klassen haben wir zunächst nicht aufgegriffen. MfG, Timo
Ticket ist erstellt. Zuverlässig reproduzieren können wir es, wenn man in die "Attributverwaltung" geht und dort mit SPEICHERN abschliesst. Danach ist das FAV-Menü leer, bis man ein anderen Menüpunkt benutzt; in FAV muss natürlich schon was drin sein, sonst fällt das nicht auf.
Machst Du da schon was? Momentan spielt das ganze Menü verrückt, da werden Arrays angezeigt... Edit: [GambioTestArray] kann ja nur von Euch sein ;-)
Hi Holger, ja das war ich... Das Problem ist nun grundsätzlich behoben. Grund war die Session ID die zum Teil an die URL gehangen wurde. Gleichzeitig nutzen wir zur Identifizierung der Favoriten diese URL als ID (als md5 Hash). Durch das Anhängen der Session ID wurden unterschiedliche Hashes erzeugt, wodurch die Einträge nicht mehr gefunden wurden. Durch den Fix wird nun die Session ID aus dem Link rausgefiltert, sodass die ID immer ohne Session ID geprüft wird und dadurch immer die Favoriten angezeigt werden sollten... MfG, Timo