Rechteverwaltung Benutzer-Bereiche Anzeigefehler

Gesperrt
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Rechteverwaltung Benutzer-Bereiche Anzeigefehler

Beitrag von Oldperl »

Hallo,

In der Rechteverwaltung eines Benutzers unter Bereiche werde mir die Hauptpunkte (Artikel, Kategorien, etc.) nicht angezeigt. Es fehlt immer die komplette Zeile. Die Unterpunkte (z.B. Artikel löschen, Artikel einfrieren, etc.) werden angezeigt, nur nicht in der selben Reihenfolge wie in einer funktionierenden Installation.

Desweiteren zeigt mir der IE einen Javascriptfehler an, das eine Variable 'area.xxxx Null oder kein Objekt' sei.

Dieser Fehler tritt komischerweise nur auf meinem lokalen Server auf.

Linux FC4
PHP 5.0.4
MySQL 4.1
Apache 2

Ich vermute das es etwas mit der Serverkonfiguration zu tun hat, steh aber im Moment total auf dem Schlauch.

Hat evtl. schon jemand das gleiche Problem gehabt?

Achja, auf anderen Servern im Web funzt alles und am Client-PC liegts wohl auch nicht, da mit 3 verschiedenen PC's getestet.

Vielen Dank für eure Hilfe ;-)

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

errorlog einträge ?
contenido version ?
*** make your own tools (wishlist :: thx)
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Beitrag von Oldperl »

contenido 4.6.8 - 4.6.17 (CVS)

Keinerlei Einträge im errorlog

Gruß

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

hast du einen screenshot davon wie die fehlerhafte reihenfolge aussieht ?
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Gab es da nicht mal den Effekt, dass bestimmte Einträge in der DB in einer bestimmten Reihenfolge vorliegen mussten? Mal unter Bugs gucken.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Beitrag von Oldperl »

... eine Nacht und etliche Tassen Cappu später 8)

@HerrB
Es liegt/lag nicht an der Reihenfolge der DB.

@emergence
es ist leicht nachzuvollziehen, nachdem ich nun weiß woran es lag.

in der con_area wird im Feld parent_id entweder die Bezeichnung des Elternelements (z.B. "groups") oder, falls es die oberste Ebene ist, eine "0" eingetragen.
Beim Dump der Datenbank vom Server mit phpmyadmin (2.6.0-rc2 auf MySQL 4.0.21) wird aber diese "0" im varchar-field parent_id einfach unterschlagen und ein Leereintrag erstellt. :?
Dieses sowohl beim Dump in Datei, als auch im SQL-Fenster von phpmyadmin.

Diese (doofe) Null wird aber bei der Erstellung des array $right_list in includes/rights.inc.php benötigt.

Code: Alles auswählen

while($db->next_record())
        {
                if($db->f("parent_id")=="0"){
                             $right_list[$db->f("name")][$db->f("name")]["perm"]=$db->f("name");

                             $right_list[$db->f("name")][$db->f("name")]["location"]=$db->f('location');


                }else{
                             $right_list[$db->f("parent_id")][$db->f("name")]["perm"]=$db->f("name");
                             $right_list[$db->f("parent_id")][$db->f("name")]["location"] = $db->f('location');
                }

                $sql="SELECT * FROM ".$cfg["tab"]["actions"]." WHERE idarea='".$db->f("idarea")."' AND relevant='1'";
                $db2->query($sql);
                while($db2->next_record())
                {

                      if($db->f("parent_id")=="0"){
                              $right_list[$db->f("name")][$db->f("name")]["action"][]=$db2->f("name");


                      }else{
                              $right_list[$db->f("parent_id")][$db->f("name")]["action"][]=$db2->f("name");

                      }



                }


         }
Hier wird die Erstellung des arrays über 'parent_id' == "0" gesteuert, fehlt die Null in der DB kommt ein vermurkstes array raus, das in der weiteren Verarbeitung den besagten Fehler macht.

Sicherlich kein Bug von Contenido, aber vielleicht wäre es überlegenswert eine andere Nichtbelegung für ein varchar-Feld zu nehmen als gerade eine Zahl. Auch ein NULL Eintrag läßt sich recht gut abfragen.

Zumindest könnte man die Erstellungsroutine insoweit ändern, das auch ein leeres parent_id-Feld überprüft wird.

Code: Alles auswählen

if($db->f("parent_id")=="0" || $db->f("parent_id")==""){
Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Klingt gut. Verschoben.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

wieso klingt gut ?

ähm, nein...

und ja, coole fehler situation.. nach deine schilderung:
das eine 0 bei einem dump unterschlagen wird, ist sowas von nicht vorhersehbar, dass ich sagen muss -> ist echt pech...
einfach ein bug der phpmyadmin 2.6.0-rc2 version, der dir da das kreuz gebrochen hat...
...aber vielleicht wäre es überlegenswert eine andere Nichtbelegung für ein varchar-Feld zu nehmen als gerade eine Zahl. Auch ein NULL Eintrag läßt sich recht gut abfragen.
jetzt mal ne blöde frage...

wieso nur bei einem user ?
müsste sich ja bei jedem user auswirken ?
wird nicht die einzige 0 im db dump gewesen sein ? -> sollen dann alle abgefangen werden ?
*** make your own tools (wishlist :: thx)
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Beitrag von Oldperl »

@emergence
generell hast du ja recht, daher ja auch kein Bug in meinen Augen.

Trotzdem bin ich der Meinung das es nicht die feine englische Art ist mit einer 0 im Textfeld zu arbeiten, zumal es ja ein NULL in MySql gibt. Andere Nullen sind nur betroffen, wenn sie in varchar allein stehen, meistens nimmt man ja für Zahlen wohl int. :roll:

Ob andere Benutzer damit schon mal ein Problem hatten weiß ich nicht, bügelt man eine neue Installation drüber wäre der Fehler auch weg, da die Felder neu geschrieben werden.

Bin halt der Meinung es tut keinem weh die Abfrage zu ergänzen, aber das überlass ich dann den Contenido-Experten dies zu entscheiden :wink:

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ich sag zu dieser gewünschten änderung nein...
ich halte es einfach nicht für sinnvoll...

ich hab mich lange genug mit dem rechtesystem beschäftigt, dass ich sagen kann, mir ist dieser fall, dass dort nichts drinnen steht, noch nicht begegnet...
*** make your own tools (wishlist :: thx)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

Oldperl hat geschrieben:Trotzdem bin ich der Meinung das es nicht die feine englische Art ist mit einer 0 im Textfeld zu arbeiten, zumal es ja ein NULL in MySql gibt. Andere Nullen sind nur betroffen, wenn sie in varchar allein stehen, meistens nimmt man ja für Zahlen wohl int. :roll:
nein, varchar bedeutet nicht nur zeichen sondern auch ziffer...
gilt insbesondere für das feld parent_id in dieser tabelle...
Oldperl hat geschrieben:Ob andere Benutzer damit schon mal ein Problem hatten weiß ich nicht, bügelt man eine neue Installation drüber wäre der Fehler auch weg, da die Felder neu geschrieben werden.
ich hab gemeint, bei den usern in deiner contenido installation...
die annahme -> ein upgrade via contenido setup -> hätte das problem vermutlich auch behoben... -> stimmt -> da die inhalte dieser tabelle neu eingetragen werden...
*** make your own tools (wishlist :: thx)
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Beitrag von Oldperl »

emergence hat geschrieben:ich hab mich lange genug mit dem rechtesystem beschäftigt, dass ich sagen kann, mir ist dieser fall, dass dort nichts drinnen steht, noch nicht begegnet...
Ich fahr auch lang genug Auto und mir ist noch nie ein Reifen geplatzt, soll aber wohl passieren. :lol:
Scherz beiseite.
varchar->ja mir ist bekannt das varchar auch mit Zahlen beschrieben werden darf/kann.
user->klar tritt das Problem dann bei allen Usern auf bei denen man Rechte vergeben kann.
annahme->war es nicht, da es nachvollziehbar ist, das die Tabelle neu geschrieben wird (siehe setup.sql).

Schlußendlich war es ja nur ein Vorschlag, ob es dann in den Core übernommen wird...... :roll:
Anwenderfreundlich wäre zumindest ein Abfangen bei fehlerhaftem Datenbestand und/oder eine Meldung im error.log (da steckt dann aber noch mehr Arbeit drin) und ich stimme Dir zu, dass dies ein bug von phpmyadmin ist und nicht von Contenido.

So und nu wünsch ich einen schönen erfolgreichen Tag :D

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Gesperrt