admin- menu- Hack- Probleme

Alles über die Anwendung und Entwicklung von AddOns.

admin- menu- Hack- Probleme

Beitragvon fwolfste » 1. Nov 2006, 12:26

Hi
Ich bastel an einem Addon, was die Addon-Idee vergewaltigen soll, und zwar folgendermassen:
In der "Menü"-Leiste (top) des Admin-Bereiches werden ja auf Wunsch Links zu den Seiten der installierten Addons platziert.
Anstelle eines Links zu meinem Addon will ich dort ein Auswahlmenü haben, in dem ich die Artikel und Categorien sehe und per klick direkt auf die Editier-Seiten komme.
Dort ein Auswahlmenü zu haben ist kein Probelm:
einfach in der config_inc.php des Addons
Code: Alles auswählen
$REX['ADDON']['name'][$mypage] = '<select><option>select cat/art</option></select>';

stehen haben.

Was aber ein Problem fuer mich ist, ist eine Liste der Kategorien zu erzeugen. Sollte so funktionieren:
Code: Alles auswählen
include $REX['INCLUDE_PATH']."/functions/function_rex_category.inc.php";
$cat = OOCategory::getCategoryById(0);
$cats = $cat->getChildren();

$cat_option_list = "";

if (is_array($cats)) {
   foreach ($cats as $cat) {

   $catId         = $cat->getId();
   $catName      = $cat->getName();

    $cat_option_list = $cat_option_list.'<option>'.$cat->getName().'</option>';
   
   }
}


Die erste Zeile führt jedoch schon zum Abbruch, allerdings nur in der config.inc.php, ansonsten klappt das wunderbar. Warum?
Spaeter wollte ich dann diese Liste als Link-namen fuers Menu setzen (wie oben):
Code: Alles auswählen
$REX['ADDON']['name'][$mypage] = 'select><option>select cat/art</option>'.$cat_option_list.'</select>';

Und wie lang duerfte der String ueberhaupt werden?

Ich weiss, es ist wieder nur ein total dreckiger Hack, waere eine praktische Sache fuer mich, da sich einige Artikel in Unter-Unter-...-Kategorien befinden. Vielleicht begnuege ich mich auch erstmal mit soetwas wie "letzen Artikel bearbeiten" oder so.

However, thanks a lot
Felix
fwolfste
 
Beiträge: 11
Registriert: 17. Jul 2006, 22:27
Wohnort: Osnabrueck Germany

Beitragvon Dr KillerJoe » 1. Nov 2006, 12:57

Ein anderer Denkansatz wäre vielleicht die Linkmap zu öffnen und dort sind dann ja auch alle Artikel zu sehen... wäre nur ein klick mehr als bei Deiner Idee ;)

mfg
Flo
Die Doku und Wiki sind Deine Freunde!!!
Dr KillerJoe
 
Beiträge: 1729
Registriert: 24. Nov 2005, 21:29

Beitragvon Markus.Staab » 1. Nov 2006, 14:22

Hi,

ich vermute mehrere Fehler in deinem Code:

a) warum includest du an dieser Stelle die Funktion? (Ist das notwendig / habe nichts getestet...)
b) anstatt OOCategory::getCategoryById(0) -> OOCategory::getRootCategories()

Allerdings gibt es bereits Addons, die sowas für dich erledigen..
Allerdings wird dieser Select dann nur in der Strukturverwaltung eingebunden, nicht im "Hauptmenu" von REDAXO.

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9755
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon fwolfste » 1. Nov 2006, 14:35

Hey Markus und auch Flo,
danke fuer eure fixen und guten Antworten.

kills hat geschrieben:Hi,
a) warum includest du an dieser Stelle die Funktion? (Ist das notwendig / habe nichts getestet...)
b) anstatt OOCategory::getCategoryById(0) -> OOCategory::getRootCategories()


zu a) es funktioniert weder mit noch ohne den include (wenn ich mich richtig erinnere funktionierte es an anderer Stelle _nicht_ ohne). Vielleicht fehlen an der Stelle aber auch einfach _andere_ includes (werde ich morgen mal nachschauen)

zu b) Wohl wahr, "copy'n'paste ohne API- Kenntnis" ist wohl die Antwort. Danke fuer den Vorschlag, wird sofort jemacht :) .

Ich schaue mich nach anderen Loesungen um (wobei ich dadurch eh nur maximal sekunden sparen wuerde) , wobei die urspruengliche Frage aber bleibt: Wieso laesst sich code auf einer "eigenstaendigen" Seite ausfuehren, aber nicht im addon?

bis auf weiteres weiterwurschtelnd
danke
Felix
fwolfste
 
Beiträge: 11
Registriert: 17. Jul 2006, 22:27
Wohnort: Osnabrueck Germany

Beitragvon Markus.Staab » 1. Nov 2006, 16:04

Hi,

fwolfste hat geschrieben:Ich schaue mich nach anderen Loesungen um (wobei ich dadurch eh nur maximal sekunden sparen wuerde) , wobei die urspruengliche Frage aber bleibt: Wieso laesst sich code auf einer "eigenstaendigen" Seite ausfuehren, aber nicht im addon?


Diese Frage versteh ich nicht..

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9755
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon fwolfste » 2. Nov 2006, 06:57

Hey

kills hat geschrieben:
fwolfste hat geschrieben:wobei die urspruengliche Frage aber bleibt: Wieso laesst sich code auf einer "eigenstaendigen" Seite ausfuehren, aber nicht im addon?

Diese Frage versteh ich nicht..


okay, nochmal:
Beim Addon-Namensstring-Generieren geht was schief. Der code produziert aber auf einer "eigentstaendigen" Seite einen vernuenftigen String.
ZumTesten hier zum Beispiel meine Addon- Index- Seite (addon/pages/index.inc.php):
(das ist das beispiel fuer eine "eigenstaendige Seite")

Code: Alles auswählen
<?
include $REX['INCLUDE_PATH']."/functions/function_rex_category.inc.php";


include $REX['INCLUDE_PATH'].'/layout/top.php';

$cat = OOCategory::getRootCategories(0);
$cats = $cat->getChildren();

print '<select>';
$cat_option_list = "";

if (is_array($cats)) {
   foreach ($cats as $cat) {

   $catId         = $cat->getId();
   $catName      = $cat->getName();

    $cat_option_list = $cat_option_list.'<option>'.$cat->getName().'</option>';
   
   }
}
print $cat_option_list;
print '</select>';

include $REX['INCLUDE_PATH'].'/layout/bottom.php';
?>


und auf der anderen Seite die config.inc.php:
Code: Alles auswählen
<?php
// Name des Addons
$mypage = 'fast_structure_navigation';

// Nur im Backend
if (!$REX['GG'])
{
// Sprachobjekt anlegen
$lang_path = $REX['INCLUDE_PATH']. '/addons/'. $mypage .'/lang';
$I18N_IM_EXPORT = new i18n($REX['LANG'],$lang_path);
}

$cat = OOCategory::getRootCategories();
$cats = $cat->getChildren();

$cat_option_list = "";

if (is_array($cats)) {
   foreach ($cats as $cat) {

   $catId         = $cat->getId();
   $catName      = $cat->getName();

    $cat_option_list = $cat_option_list.'<option>'.$cat->getName().'</option>';
   }
}

// Anlegen eines Navigationspunktes im REDAXO Hauptmenu
$REX['ADDON']['page'][$mypage] = $mypage;
// Namensgebung für den Navigationspunkt
// Well thats a dirty hack, isnt it?
$REX['ADDON']['name'][$mypage] = '<select><option>select cat/art</option>'.$cat_option_list.'</select>';
?>


So. Ziemlich gleicher code um $cat_option_list . Nur conig.inc.php streikt, die index.inc.php aber nicht.
Feinen Morgen
Felix
fwolfste
 
Beiträge: 11
Registriert: 17. Jul 2006, 22:27
Wohnort: Osnabrueck Germany

Beitragvon Thomas.Blum » 2. Nov 2006, 08:06

Hej,

verstehe ich dich richtig das du die config Datei aufrufen willst? Die config wird von Redaxo selbst ausgewertet.

vg Thomas
blumbeet - web.studio - Dresden - 0351 217 6225
webbude - Blog über CSS.XHTML.REX
Ein Wunschzettel
Benutzeravatar
Thomas.Blum
Entwickler
 
Beiträge: 4643
Registriert: 24. Aug 2004, 21:11
Wohnort: Dresden

Beitragvon fwolfste » 2. Nov 2006, 10:32

Hi
tbaddade hat geschrieben:Hej,
verstehe ich dich richtig das du die config Datei aufrufen willst? Die config wird von Redaxo selbst ausgewertet.

Klar, die config wird ausgewertet, und der name-string wird gesetzt. Bzw eben nicht. Zum Testen kann ich (wenn ich in der config den interessanten Teil auskommentiere) per Klick die index aufrufen.
Macht ja aber auch absolut keinen unterschied, die Frage bleibt warum der code in der Config nicht funktioniert, an jeder beliebigen anderen Stelle (zB index) aber schon...
Felix
-was' ne schwere geburt... :)
fwolfste
 
Beiträge: 11
Registriert: 17. Jul 2006, 22:27
Wohnort: Osnabrueck Germany


Zurück zu AddOns [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste