ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
Fehler in der Platzhaltersortierung 4.1.x

 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Bugs ConPresso 4
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 16.10.2010 08:19    Titel: Fehler in der Platzhaltersortierung 4.1.x Antworten mit Zitat

Das Thema geistert ja schon länger durch das Forum, daher habe ich mir jetzt mal den Code angeschaut (der wohl von meinem move_placeholders abgeleitet, aber nicht identisch ist).

Fehler ist, daß beim "bottom"-Sortieren plötzlich die Platzierungen wiederholen und ab sofort kein korrektes Sortieren mehr möglich ist.

Daher muß IMHO in folgendem Codeblock in _admin/manage_placeholder.php
Code:
    case 'bottom': // {{{
        $q = "SELECT id, pos, templates_id FROM ".CPO_PLACEHOLDERS." "
            ."WHERE id=".(int)$_GET['id'];
        $dbq = new DB;
        $dbq->query($q);
        $dbq->next_record();
        $id          = $dbq->v('id');
        $pos         = $dbq->v('pos');
        $template_id = $dbq->v('templates_id');

        $q = 'UPDATE '.CPO_PLACEHOLDERS.' '
            .'SET pos=pos-1 '
            .'WHERE templates_id='.(int)$template_id." "
            .'AND pos>'.((int)$pos);
        $dbq->query($q);

        $q = 'UPDATE ' . CPO_PLACEHOLDERS . ' AS t1, ' .
             '(SELECT MAX(pos) AS maxPos FROM ' . CPO_PLACEHOLDERS . ') AS t2 ' .
             'SET t1.pos = t2.maxPos WHERE t1.id = ' . (int)$id;
        $dbq->query($q);

        $dbq->query(
            'SELECT name FROM '.CPO_TEMPLATES.' '
            .'WHERE id='.(int)$template_id
        );
        $dbq->next_record();
        $templatename = $dbq->v('name');
       
        $pholderpos = $pos+1;
        $views = array('list');
        break; // }}}

der Update-Teil
Code:
        $q = 'UPDATE ' . CPO_PLACEHOLDERS . ' AS t1, ' .
             '(SELECT MAX(pos) AS maxPos FROM ' . CPO_PLACEHOLDERS . ') AS t2 ' .
             'SET t1.pos = t2.maxPos WHERE t1.id = ' . (int)$id;

geändert werden zu
Code:
        $q = 'UPDATE ' . CPO_PLACEHOLDERS . ' AS t1, ' .
             '(SELECT MAX(pos) AS maxPos FROM ' . CPO_PLACEHOLDERS . ') AS t2 ' .
             'SET t1.pos = t2.maxPos+1 WHERE t1.id = ' . (int)$id;

also noch ein einfaches +1 auf die Position aufgeschlagen werden...

Der Unterschied zu meinem ursprünglichen Code ist, daß ich die MAX-Position vor der Verschiebung ermittle (und somit +1 nicht erforderlich ist), im abgeleiteten Code in 4.1.x aber erst nach dem Verschieben aller anderen Platzhalter gezählt wird, wenn sich die aktuelle MAX-Position schon um 1 verringert hat, daher muß hier wieder 1 aufgeschlagen werden.

Und ich dachte schon, daß move_placeholders bereits diese Macke hätte... Laughing

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: hscha, Mr. Magpie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 20.10.2010 08:53    Titel: Antworten mit Zitat

Schon irgendwie bezeichnend, dass auch nach fünf Tagen die CPO-Entwickler auf diesen Bugreport hin noch keine Reaktion zeigten Evil or Very Mad
_________________
Günther Ludwig, amazingBytes webdesign   

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1745

BeitragVerfasst am: 21.10.2010 14:10    Titel: Antworten mit Zitat

Hi,

sorry, aber auch wir haben mal Urlaub oder müssen Geld mit anderen Projekten verdienen. Bei solchen Bugs ist es oft schneller, uns direkt zu kontaktieren, als hier in der Community.

Steffen hat aber schon angedroht, dass jetzt wieder eine Nur-ConPresso-Phase auf uns zukommt.

Balu

_________________
Bartels.Schöne
ConPresso Support & Development
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Ralf
ConPresso-Checker


Anmeldungsdatum: 25.08.2005
Beiträge: 205

BeitragVerfasst am: 11.11.2010 23:16    Titel: Antworten mit Zitat

balu hat Folgendes geschrieben:
... Steffen hat aber schon angedroht, dass jetzt wieder eine Nur-ConPresso-Phase auf uns zukommt.


Das hört sich aber seeehr Negativ an, ich hoffe natürlich einerseits das es mit CPO vorwärts geht und gewisse Wünsche endlich umgesetzt werden - doch unter Drohung zu arbeiten???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1745

BeitragVerfasst am: 12.11.2010 08:58    Titel: Antworten mit Zitat

Hi Markus,

negativ war das natürlich nicht gemeint Smile. Drohen ist vielleicht auch etwas übertrieben, aber manchmal neckt man sich halt ein wenig untereinander.

Und Steffen muss als Chef eben auch mal die (virtuelle) Peitsche schwingen und sagen: "In den nächsten Wochen machst Du CPO! Ausführen!", ist das halt eine "Drohung" Wink.

Balu

_________________
Bartels.Schöne
ConPresso Support & Development
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 18.07.2011 00:26    Titel: Antworten mit Zitat

Ehrlich gesagt bin ich nun langsam entnervt, weil mir dieser Bug gerade in einem Webauftritt ein Template unbrauchbar gemacht hat.
Keine Sortierung mehr möglich...

Bin ich der Einzige, der auch mal umsortiert?

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: Ralf
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Ralf
ConPresso-Checker


Anmeldungsdatum: 25.08.2005
Beiträge: 205

BeitragVerfasst am: 19.07.2011 10:20    Titel: Antworten mit Zitat

Vermutlich nicht, ...

ABER ich z.B. habe meine Projekte noch auf den Versionen 4.0.x laufen, da die Neuerungen von 4.1.x mir mehr arbeiten bringen würde um vorhandene WICHTIGE Dinge wieder reinzuprogrammieren, als die Vorteile der neuen Version.

Und wenn ich lese wieviel Ärger Du (MarkusR) mit der Version hast... nee da Warte ich lieber NOCHMALS 1 oder mehr Jahre bis eine neue Version kommt die HOFFENTLICH mal vieles umgesetzt hat, was wir uns hier schon die ganze Zeit wünschen (incl. der Fehlerbeseitigungen)!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 995
Wohnort: Wuppertal

BeitragVerfasst am: 19.07.2011 19:01    Titel: Antworten mit Zitat

Full Ack, solange so grundsätzliche Dinge nicht reibungslos funktionieren, bleiben unsere Kunden bei CPO 4.0.x ... oder gehen mittel- bis langfristig zu anderen CM-Systemen, was natürlich sehr schade wäre.
_________________
Günther Ludwig, amazingBytes webdesign   

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
hscha
ConPresso-Checker


Anmeldungsdatum: 22.02.2006
Beiträge: 496
Wohnort: Berlin

BeitragVerfasst am: 20.07.2011 09:31    Titel: Antworten mit Zitat

Mir ist das Problem im Zusammenhang mit der Umstellung von 4.0.9 auf 4.1 begegnet. Ich habe die fehlerhaften Positionsnummern manuell in der Datenbank repariert. Danach ging's (ist natürlich keine Dauerlösung).

Grüße von
Horst
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1745

BeitragVerfasst am: 26.07.2011 16:09    Titel: Antworten mit Zitat

Hi zusammen,

das Problem hat mich jetzt insgesamt mehrere Versuche, einige Stunden Arbeit und viele koffeinhaltige Getränke gekostet.

Ich hatte vor allem Schwierigkeiten, das ganze nachzuvollziehen, weil es in meinen Entwicklungs-Installationen immer funktioniert hat. Nach jedem "ganz nach unten sortieren" war die Reihenfolge so wie sie sein sollte.

In anderen Installationen von uns traten die Probleme mit der Sortierung aber auf. Erst nachdem ich mehrere von diesen Installationen untersucht hatte, ist mir aufgefallen, dass die ganz nach unten sortierten oft eine viel zu hohe ID erhielten (in dem Fall wäre das +1 eben falsch).

Kommen wir zur Lösung:
Code:

        $q = 'UPDATE ' . CPO_PLACEHOLDERS . ' AS t1, ' .
             '(SELECT MAX(pos) AS maxPos FROM ' . CPO_PLACEHOLDERS .
                 ' WHERE templates_id=' . (int)$template_id . ') AS t2 ' .
             'SET t1.pos = t2.maxPos+1 WHERE t1.id = ' . (int)$id;


Es muss also zum einen das +1 von MarkusR gemacht werden. Zusätzlich sollte aber auch die Abfrage der höchsten Sortierungsposition auf das aktuelle Template eingeschränkt werden.

Ansonsten wird nämlich die höchste Gesamtposition in der Spalte gesucht und das könnte (wie in meiner Entwicklungsumgebung) die passende Zahl sein, weil das Platzhalter-Demo-Template eine passende Anzahl an Platzhaltern aufweist. Und dann denkt man irgendwann, man ist zu alt für diese Schei^WProgrammierarbeit.

Balu
PS: Ich untersuche das noch weiter, weil ich dasselbe Problem bei der Sortierung per "cut'n'paste" vermute.

_________________
Bartels.Schöne
ConPresso Support & Development

 
Für dieses Posting bedanken sich die folgenden User: Mr. Magpie, MarkusR, hscha, Ralf
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 26.07.2011 17:08    Titel: Antworten mit Zitat

Ich hatte mir daraufhin mein move_Placeholders von 2009 angesehen. Dort wurde immer korrekt mit der ID des Templates gearbeitet... nur falls jemand Angst um seine 4.0.x haben sollte... da funzt es tadellos!

Und nicht vergessen das Löschen von platzierten Platzhaltzern. Auch dort tauchen schnell mal Lücken auf.

Ich habe da auch verschiedenste Szenarien bei mod_gallery 4.2 für die neue Sortierung durchgespielt und eigentlich prophylaktisch die resync-Funktion eingebaut, die auf jeden Fall (auch nach manuellen Eingriffen in die Datenbank) die Sortierung wieder neu arrangiert.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Bugs ConPresso 4 Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen