Sven Schöling [Wed, 10 Jun 2020 09:17:24 +0000 (11:17 +0200)]
CKEditor Scrolling Bug in inline_resize plugin (das Dreieck rechts unten)
Gleicher Bug wie in der floatingspace toolbar, hier aber einfacher zu
fixen, weil wir den Code nicht minifien müssen.
Ausserdem wir dder layout Call hier nicht durch einen buffer gejadgt,
und muss deshalb auch nicht detacht werden. Ansonsten analog zu der
Beschreibung da.
Sven Schöling [Tue, 9 Jun 2020 17:20:53 +0000 (19:20 +0200)]
CKEDITOR: Scrolling Bug Toolbar
Der Bug ist bekannt bei ckeditor: https://github.com/ckeditor/ckeditor4/issues/3848
Was da passiert ist, dass das Plugin floatingspace, was benutzt wird um
die toolbar zu implementieren, den scroll handler nur auf document.body
macht, nicht aber auf scrollbare fivs, wie bei uns verwendet werden.
Der Fix im Quellcode vom ckeditor ist dann effektiv dieser diff hier:
Das sucht sich beim attachen das Ziel Element, sucht sich das/die
parent-Elemente die scrollbar sind, und registrtiert den scroll handler
auf diesen Elementen.
Leider gibt es keine Standardfunktion parentScroll() in javascript. Es
gibt ein Plugin gleichen Namens für jQuery, die Funktion da liefert aber
nur den nächst-höheren div und ausserdem ist jQuery innerhalb von
CKEditor nicht verfügbar. Die hier implementierte Funktion ist identisch
mit dieser hier, die angelehnt ist an das jQuery verhalten, aber pures
Javascript benutzt:
function parentScroll(e) {
var position = e.$.getAttribute("position"),
excludeStaticParent = position === "absolute";
return e.getParents().filter( function(parent) {
var style = window.getComputedStyle(parent.$);
if ( excludeStaticParent && style.position === "static" )
return false;
return (/(auto|scroll)/).test( style['overflow'] + style["overflow-y"] + style["overflow-x"] );
});
};
Im Gegensatz zum jQuery Plugin macht diese Variante keine Prüfung darauf
ob der Invokant selber "fixed" position hat, und liefert nicht nur
das erste Element sondern alle Treffer. Das Ergebnis ist ein normales
Javascript Array.
Der Code hier ist minified und direkt in unsere Variante injiziert, muss
also beim Upgrade reproduziert werden.
Was hier nicht gefixt ist: Das Repositioning Verhalten von floatingspace
orientiert sich weiter an Body, und nicht (wie eigentlich korrekt) am
umliegenden scrolling div.
Sven Schöling [Thu, 31 Aug 2017 14:30:57 +0000 (16:30 +0200)]
CKEditor: config Hack bei inline initialisierung
Aus irgendeinem Grund ignoriert der Inline Modus sämtliche
Dimensionsangaben in der Konfiguration, und zwar dokumentiert. Das sorgt
aber im textarea Modus dafür, dass das erzeugte Editor <div> völlig
falsch dimensioniert ist, und nachträglich angepasst werden muss. Die
CKEDITOR.editor.prototype.resize funktioniert dafür auch nicht.
Nachträglich machen sorgt für optische Unruhe.
Dieser Hack fügt im minified Code in der Datei core/creators/inline.js
im Konstruktor die folgenden Anweisungen ein:
if (config.width)
element.setStyle('width', CKEDITOR.tools.cssLength(config.width));
if (config.height)
element.setStyle('height', CKEDITOR.tools.cssLength(config.height));
Sven Schöling [Fri, 8 Sep 2017 14:32:07 +0000 (16:32 +0200)]
CKEditor 4.7.2: Zusätzliche Module
- resize - wird durch inline_resize ersetzt
- wysiwygarea - iframe editing wird nicht mehr gebraucht
+ horizontalrule - wird für <hr> gebraucht
+ sourcedialog - wird für source editing gebraucht
Jan Büren [Tue, 8 Feb 2022 13:31:56 +0000 (14:31 +0100)]
DeliveryOrder: calculate_stock_in_out liefert auch die Einheit mit
In do.pl wird hier auch hart die Standardeinheit mitübergeben und
ein Wechsel der Einheit in den Auslagermasken hat keine Auswirkung
TODO: Macht es Sinn überhaupt eine Auswahlliste für Einheit anzubieten?
Sven Schöling [Sun, 6 Feb 2022 22:50:27 +0000 (23:50 +0100)]
DeliveryOrder: format_number_units wieder zurück auf format_number refactored
format_number_units sollte das verhalten von format_number_unit in Form
emulieren. Das war aber buggy, und das originale Verhalten hat Bernd im
September eh entfernt. Also jetzt ganz normal anzeigen.
Sven Schöling [Sun, 6 Feb 2022 22:48:23 +0000 (23:48 +0100)]
DeliveryOrder: kompletter Split der javascripte kivi.Order und kivi.DeliveryOrder
Bisher hatte der kivi.DeliveryOrder Controller einige der kivi.Order
Funktionen als fallback benutzt. Das führt aber dazu dass gleich
benannte change handler durcheinanderkommen. Ergo: nur noch
kivi.DeliveryOrder nutzen.