Pflichtenhefte: Löschen von Aufträgen/Angeboten
Pflichtenhefte: Aktualisieren von Angeboten/Aufträgen
Pflichtenhefte: Anlegen von Angeboten/Aufträgen
Pflichtenhefte: Locales & Spalte "Auftrags-/Angebotsdatum"
Pflichtenhefte: Zuweisung Artikel zu Abschnitten implementiert
Pflichtenheft-Angebot/Auftrag: Liste in Tab anzeigen
"WebDAV" einheitlich schreiben
Pflichtenheftvorlagen einfügen
Debugcode entfernen
Zeitabschätzung auch in Vorlagen bearbeiten können
Pflichtenheftvorlage: Maske zur Auswahl des Einzufügenden
Pflichtenheftvorlagen: Textblöcke doch erfassen können; dafür Wort "Abschnitt" entfernt
Pflichtenheftabschnittsvorlagen erzeugen, bearbeiten, löschen
client_js.js: Funktionen in namespace kivi verschoben (Pflichtenheft-Teil)
requirement_spec.js: Funktionen in namespace kivi.requirement_spec verschoben
Pflichtenhefte: PDFs zu Arbeitskopie und Versionen erzeugen
Pflichtenheft-Popupmenü: Überschriften immer und unterstrichen anzeigen
Pflichtenhefte auf Versionen zurücksetzen können
Pflichtenheftversionen anlegen und auflisten
Kontextmenü mit Pflichtenheftaktionen überall anzeigen
Pflichtenhefte: Kopieren (clonen) generell und Löschen aus Kontextmenü implementiert
Pflichtenhefte: Zeit- und Kostenschätzungsmaske
Pflichtenhefte: Copy & Paste für Textblöcke & Items
Pflichtenheftitems & Textblöcke: Selektion bei Popupmenü durch Markierung links anzeigen
Pflichtenheftitems: Umstellung submit_ajax_form()
Pflichtenhefttextblöcke: Umstellung submit_ajax_form()
Pflichtenhefte: Statischen JavaScript-Code nach js/requirement_spec.js verschieben
Pflichtenhefte: show & Bearbeiten in eigenen Tab
Pflichtenheftitems: Neuanlegen von (Unter)Funktionsblöcken
Pflichtenheftitems und Abschnitte bearbeiten
Debugcode
Pflichtenheftpunkte bearbeiten
Pflichtenhefte: Auflisten von Abschnitten
Textblöcke bearbeiten, verschieben: verschiedene Fixes
Löschen von Textblöcken
Textblöcke bearbeiten
Pflichtenhefte: Drag & Drop von Textblöcken
Pflichtenhefte: Erste Version Baumansicht Textblöcke/Abschnitte/Funktionsblöcke
kivi.reinit_widgets(): lokale Funktion local_reinit_widgets() aufrufen, wenn existent
Kaputte Symlinks in css/Mobile gelöscht oder umgebogen
PartPicker: nach Artikelauswahl custom event 'set_item:PartPicker' mit item-Daten verschicken
Verkaufs-/Einkaufsmasken: Langtext in jQuery-Popup bearbeiten
Der alte Mechanismus öffnete ein normales Popup-Fenster, in dem eineURL geladen wurde, die dann die Maske angezeigt hat. DasZurückschreiben geschah schon via JavaScript.
Mit der Methode gibt's zwei Probleme:...
Artikelstammdaten: Spracheinstellungen rein in eigenem Tab bearbeiten
kivi.popup_dialog(): Unterstützung für bereits existierende DIVs
Damit muss kein AJAX-Call mehr gemacht werden, sondern man kann denDIV initial versteckt rendern und dann beliebig oftanzeigen (öffnen)/verstecken (schließen).
Beim Anlegen von neuen Ansprechpersonen: CVars-Standardwert anzeigen
fixt #2422
Ansprechpersonen-CVar: richtig anzeigen
Tippfehler beim Verarbeiten der AJAJ-Antwort behoben.fixt #2420
Google-Maps-Karten-Symbol auch anzeigen, wenn Land leer ist
jquery.checkall für Mahnungen invertiert
Confirm bei geänderter/m Kontonummer/-namen
fixt #2319
JS-Setup: kivi.reinit_widgets() nutzen und dort Controls nur einmalig initialisieren
ClientJS: neue Funktionen "run()", "run_once_for()"; Dokumentation
ClientJS: AJAX-Form-Submit mit jQuery-Form-Plugin
jqModal-Dialoge durch jQuery-UI-Dialoge ersetzen
kivi.popup_dialog: auf jQuery UI basierende Popupdialoge
ClientJS: Funktionen zum Hinzufügen und Entfernen generischer Eventhandler
kivi.js: Funktion zum Auffinden von Funktionen über ihren Namen
Funktioniert sowohl mit globalen Funktionen als auch mit solchen inNamensräumen (Objekten):
var func = kivi.get_function_by_name("kivi.t8");
ClientJS: Daten bei AJAX-Submits als POST-Content schicken, nicht an die URL dran
Ausgehählten Tab nur dann speichern, wenn eine ID angegeben wurde
CustomerVendor: MapWidget umgebaut
CustomerVendor: namespace-Aufrufe entfernt
Geöffnete Tabs in Cookies speichern + wiederaufrufen
Karten-Icon nur anzeigen, wenn eine Adresse angegeben ist
Pfad in autocomplete_customer angepasst
ct.pl als Controller
make_defined_state auch beim Klicken ausserhalb des Pickers
Problem war, dass ein einfacher blur handler auch getriggert hat wenn das jqmaufgeht. Dafür ist der timermechanismus jetzt mit ins widget gewandert und derblur handler wird einfach abgebrochen
Partpicker: key-events auch in chrome getestet
ClientJS: automatisch Date- und Partpicker nach AJAX-Request initialisieren
PartPicker: nicht global cachen sondern mit $.data ans DOM objekt packen
Partpicker: Filtermöglichkeit nach konvertierbaren Einheiten ('convertible_unit')
Partpicker: Filtermöglichkeit nach Einheiten ('unit')
Partpicker: filter.type nur mitschicken, wenn wirklich ein Typ angegeben war
Ansonsten wird "&filter.type[]=" geschickt, was in Perl letztlich als"$::form->{type} = ['']" ankommt -- und damit ungültige Filtererstellt.
Überflüssige Funktion close_jqm_window() wieder entfernt
Die kam vermutlich beim Mergen/Rebasen vom Partpicker aus Versehenwieder hinein.
Kommentar zu jquery bug #14120 ist nicht mehr notwenidig
multiple types
ajax_autocomplete umgestellt auf get_models und inline JSON (20% schneller als template)
Bei tab und enter den ersten full match benutzen. nur wenn der nicht eindeutig ist resetten oder popup öffnen
mehr code nach js/ verlagert
caching der Widget und javascriptteile nach js/ verschoben
Verhalten bei nicht existenten Waren verbessert
- tab aus dem element resettet auf letzten Stand- enter wird ignoriert, statt wie vorher das jqm aufzumachen
Updates durch den aprtpicker sollten change trigger triggern
internal state, besseres zurücksetzen auf den letzten bekannten zustand
Diverse kleine Verbesserungen und namespace Kapselung
bei enter und nicht eindeutig -> dialog öffnen
Part Picker
Löschen von Angeboten/Aufträgen mit JavaScript-Sicherheitsabfrage
Datenbank löschen: auch benutzte auswählbar, dann aber mit Sonderwarnung
Fixt #2312.
Verwaltung von benutzerdefinierten Variablen auf Controller umgestellt
Optionales Fokus-Setzen via CSS-Klasse "initial_focus"
jqModal: open_jqm_window() auch den Requesttyp mitgeben können
JS-Multiselect2Side: Namen der temporären Controls von Original-ID und nicht -Name ableiten
Der Name ist nicht zwangsläufig eindeutig, vor allem, wenn mehrereElemente dieser Art auf einer Seite vorhanden sind. Beispiel:name="client[].users[]" mehrfach in einer Schleife ausgegeben.
JS-Variable richtig geschrieben
client_js.js: Funktionen in namespace kivi verschoben
jQuery-Script/Methode zum Anstoßen von Downloads
ClientJS: "jqmClose()" zum Schließen von jqModal-Dialogen
Verknüpfte Belege: JS-Code und CSS für jqModal verallgemeinert
ClientJS: alle Flash-Kategorien nach nächstem Standard-AJAX-Call leeren
ClientJS: Unterstützung für Browser-Redirects ("$js->redirect_to")
ClientJS: jQuery-Funktionen addClass, removeClass, toggleClass; Utility-Funktion "action_if"; Doku
JS-Übersetzung immer in HEAD laden