skeleton.git
3 years agoCommon, Generator, jquery.global.js dev-wk
hamatoma [Tue, 22 Jan 2019 08:42:53 +0000 (09:42 +0100)]
Common, Generator, jquery.global.js

* Common: neu: arrayInsert(), arrayMoveUp(), arrayMoveDown()
* Generator:
** Korrekturen für Seitentyp 'collect'
** neu: Option sql.selectors
** automatische Filterfelder für Selektoren
** Umstellung von replaceMacrosModel() auf replaceMacrosMethod():
   Je Methode ein Aufruf.
** Option noupdate entfernt
** neu Option selector:<id> für Paragraphen
** neu Option is.selector und is.db für Felder
** neu Option order:<idlist> für Paragraph table
* jquery.global.js: Icons auf Collect-Seite lösen Button aus

3 years agoGenerator: Refactoring: Bau von seitenspezifischem SQL+Model+View
hamatoma [Sun, 13 Jan 2019 14:33:29 +0000 (15:33 +0100)]
Generator: Refactoring: Bau von seitenspezifischem SQL+Model+View

* Option body.getall entfällt. Warnung bei Nutzung
* buildModelOfTable(): je 1 Schleife für DB-Tables und Pages statt
  verschachtelte Schleifen
* neu: Pagetyp "collect"
* X_GET_ALL umbenannt in X_GETALL
* neu: GenDbJoin, Option db.join
* GenPage.sqlOfMethods ersetzt sqlGetAll und sqlGetAllCount
* Optionsbehandlung in GenPage.__construct() verschoben nach
  addPageOption()
* neu: GenPage.finish()
* neu: GenTableCollection
* SQL-Fehler:  deletedat zu <table>.deletedat ("ambigious column")
* Sysflags: Fehler: SQL_OBTAIN_DATA_ORDER ergänzt

3 years agoV2019.01.08.00 Generator, Sysflags, Roles
hamatoma [Tue, 8 Jan 2019 13:05:19 +0000 (14:05 +0100)]
V2019.01.08.00 Generator, Sysflags, Roles

* Generator:
** neu: PHP_HOOK_CONTROLLER_CUSTOMIZED_METHODS
** Refaktoring: Optionen texts und values bei fields, dbreferences,
   dbfields. Snippets: Aufruf von InputFields::fillComboBox()
* Roles: jetzt von Generator erzeugt
* Sysflags: alle obtainX()-Funktionen hinzugefügt

3 years agoV2019.01.07.01 fitness #1+#4 Mitarbeiter, Db, Generator, Sysflag
hamatoma [Mon, 7 Jan 2019 08:20:26 +0000 (09:20 +0100)]
V2019.01.07.01 fitness #1+#4 Mitarbeiter, Db, Generator, Sysflag

* #1:
** Filter "Rolle" entfernt
** In Liste Geschlecht und Anzeigename entfernt
* Db: Fehler in Fehlermeldung ("table does not exist")
* #4: Common: Ungefiltert -> Gesamt
* Generator:
** Combobox in dbfield-Definition mit Texten und Werten
** Fehler bei "default.order"
** Fehler bei Berechnung der gefilterten Datensätze
** Fehler beim Generierung SQL-Statement von XgetAllCount()
* Sysflag-Module durch Generator erzeugt

3 years agoV2019.01.06.00 #2+#5, Users
hamatoma [Mon, 7 Jan 2019 00:07:17 +0000 (01:07 +0100)]
V2019.01.06.00 #2+#5, Users

* Closes #2
* Closes #5
* Syntax in users.module aktualisiert
* Neu: Löschen und Papierkorb
* Keine Abkürzungen in Überschriften

3 years agoGenerator
hamatoma [Sun, 6 Jan 2019 13:49:00 +0000 (14:49 +0100)]
Generator

* Definition für deletedat: kein Default
* Papierkorb: Breadcrumb mit base als Parent

3 years agoGenerator, Roles, global.css, Common
hama [Mon, 31 Dec 2018 09:06:48 +0000 (10:06 +0100)]
Generator, Roles, global.css, Common

* Generator: Warnungen reduziert
** Optionen newignore und editignore entfernt
** Aktion bei Delete-Seiten von Button-Option gesteuert:
   delete.direct oder delete.trash
** buildViewSelector() aus buildView() herausgezogen
** neu: panel.fieldgroup.header
** neu: Optionen "null" und "default:<val>" für dbfield-Objekte
** implizite Definition von Feldern deletedat und deletedby
** Paneltyp "trash" für Papierkorb, Restaurierung funktioniert
* Roles: Modul Roles mittels Generator funktioniert

* global.css:
** neu: fieldset.fieldgroup-header
** tab-pane: Tabellen mit weißem Hintergrund

* Common:
** Neu: moveFromTrash(), moveIntoTrash()

3 years agoGenerator, InputField
hama [Sun, 30 Dec 2018 15:48:58 +0000 (16:48 +0100)]
Generator, InputField

* Generator:
** Fehlermeldung, wenn kein Filterparagraph gefunden
** Syntax: field.option:<X> jetzt <X>
   <X>: undef readonly disabled isfilter hidden
* InputField: comboboxFromArray() berücksichtigt Option "undef"

3 years agoCommon, Generator
hama [Sat, 29 Dec 2018 01:47:28 +0000 (02:47 +0100)]
Common, Generator

* Common: error: closing </div> in replaceInHtmlWithErrors
* Generator:
** Refactored: delete page

3 years agoGenerator
hama [Fri, 28 Dec 2018 00:36:04 +0000 (01:36 +0100)]
Generator

* Generator:
** neu: checkAndPrepare()
** neu: selectors (option.page)
** neu: parentPage
** neu: verschieden Snippets für new und edit

3 years agoCommon, FieldSet, Generator
hama [Mon, 24 Dec 2018 08:26:12 +0000 (09:26 +0100)]
Common, FieldSet, Generator

* Common:
** Texte für "alt"-Texte von Icons (Edit + Delete)
** neu: replaceInHtmlWithErrors() ersetzt replaceInHtml()
** replaceInHtmlWithErrors() ersetzt alle globalen Makros

* FieldSet:
** Ids für InputField-Instanzen
** neu: setAttributeForAll()
** Fehlermeldung, wenn Feld doppelt definiert

* Generator
** neu: Seitentyp "delete"
** neu: Tabellen  mit Spalte für Lösch-Icon
** neu getOptionParameter()
** Fehler: getXAll() wird jetzt für jede Seite vom Typ base erzeugt
** Fehler: Macro ###errors## wird jetzt vor den Buttons gesetzt, wenn
   nicht anderst definiert
** Fehler: Redirect-Block: jetzt mit Vorgabe von Zielseite
** Fehler: save.and.edit nutzt jetzt Page-spezifische DB-Tabelle für
   Link
** neu: Button-Action: delete.direct
** field.option: readonly jetzt ohne Prefix "field.option"
** neu: delete.by.dialog für panel.table
** Umbau: Links in Tabelle für Edieren/Löschen jetzt in Snippets (statt
   PHP-Code)
** Fehler: Doppelte Feld-Definitionen in Edit/New entfernt
** Fehler: Mehrfachdefinitionen in erzeugten SQL-Snippets entfernt

3 years agoGenerator, rungenerator.php, init_project.sh
hama [Wed, 19 Dec 2018 16:47:57 +0000 (17:47 +0100)]
Generator, rungenerator.php, init_project.sh

* Generator:
** Support für common-Seiten entfernt
** Jede Page mit Typ base hat eigene getXAll()-Methode im Modell
** Generierung getXAll() in GenPage verlagert
** option.dbtable sql.getall nach option.page verlagert
** Hook-Name mit Tabelle und evt. Seite
** Bedingte Optionen entfernt (nur bei "common" notwendig)
** neu: option.field

* rungenerator.php:
** Verlagerung von rungenerator-Umgebung aus Skeleton nach Fitness
** akten.module+akten.snippets.php etc verlagert nach Fitness

* init_project.sh
** Einbindung von skeleton/tools/generator für rungenerator.php
** Fix: Erzeugung des Links von /public/css/vendor

3 years agoGenerator, *.module
hama [Mon, 17 Dec 2018 15:43:22 +0000 (16:43 +0100)]
Generator, *.module

* Generator:
* neu: panel.tabs.modules.and.tab.many
* panel.tabs.modules.and.tab jetzt mit Rahmen und Abstand (oben/unten)

* *.module
** Neu(e) X umbenannt in Neuanlage, "Ändern X" in "Bearbeiten"
** Button "Schließen" statt "Abbruch"

3 years agoTools
hama [Mon, 17 Dec 2018 07:56:31 +0000 (08:56 +0100)]
Tools

* init_project.sh: Korrektur Erstellung makelinks.nano
* Templates für version.php, local.css und overview.local.css

3 years agonanoscript
Winfried Kappeler [Fri, 7 Dec 2018 11:10:31 +0000 (12:10 +0100)]
nanoscript

* Fehler: os.path.exists

3 years agonanoshell:
Winfried Kappeler [Fri, 7 Dec 2018 09:42:15 +0000 (10:42 +0100)]
nanoshell:

* Variablenexpansion auch in Zuweisung
* Reihenfolge Parameter in ensure.link geändert: target source
* Test mit --test, sonst Aufruf mit script

3 years agonanoshell: Win10-Korrekturen
Winfried Kappeler [Fri, 7 Dec 2018 00:19:11 +0000 (01:19 +0100)]
nanoshell: Win10-Korrekturen

3 years agonanoshell
Winfried Kappeler [Wed, 5 Dec 2018 15:04:49 +0000 (16:04 +0100)]
nanoshell

3 years agoinit_project.sh erweitert für nanoshell.py, nanoshell.py
hama [Wed, 5 Dec 2018 11:26:36 +0000 (12:26 +0100)]
init_project.sh erweitert für nanoshell.py, nanoshell.py

3 years agoGenerator, Snippets, Common
hama [Sun, 2 Dec 2018 22:16:43 +0000 (23:16 +0100)]
Generator, Snippets, Common

* Generator:
** Ausgabe nicht benutzter Hooks
** Entfernung "page common":
** Hooks aus new und edit jetzt mit Seitennamen, z.B.
   HOOK_NEW_BEFORE_INSERT
** neu: replaceFieldAssignmentsAndArgumentList()
** defaultOrder bei dbtable
** Fix: Erkennung mehrerer Optionen für dbtable
** Model für mehrere Tabellen
** einer Seite kann eine Tabelle zugeordnet werden: db.table:<table>
** "buttonAbbruch"... bekommt CSS-Klasse button-close
** createNewX umbenannt in insertX
* Snippets
** neu: getKeys()
** neu: Makro #load(<snippet>)#
* Common: neu: getTwoColumns(), fillComboboxFromDb()

4 years agoNutzung von publicDirectoryPrefix bei CSS
Reinhard [Wed, 21 Nov 2018 15:02:14 +0000 (16:02 +0100)]
Nutzung von publicDirectoryPrefix bei CSS

4 years agoMultisites, Generator
hama [Wed, 21 Nov 2018 12:41:05 +0000 (13:41 +0100)]
Multisites, Generator

* Multisites: Damit die App auch in Multisiteumgebungen läuft, gibt es
  den neuen Konfigurationsparameter publicDirectoryPrefix
* Generator:
** Mitgliedernr + -name über den Tabs von editMitgl, akten...
** Fix: Anzeige der Akten eines Mitglieds: voher nicht mitgliederspez.

4 years agoGenerator Common MViewC
hama [Wed, 21 Nov 2018 07:29:28 +0000 (08:29 +0100)]
Generator Common MViewC

* Generator:
** Beratungen: Angezeigte Spalten, Sortierspalten
** Mitglieder: Ändern: save.and.edit
** Optionen newignore und editignore
** Fix: Weiterreichen der Option "undef" von dbfields

* Common:
** jquery.v1.js umbenannt in jquery.global.js
** Dialog "Seite verlassen?" als HTML

* MViewC:
** new: answerAjax()

4 years agoGenerator, Common, CSS
hama [Fri, 16 Nov 2018 10:15:06 +0000 (11:15 +0100)]
Generator, Common, CSS

* Generator:
** dbtable jetzt mit Parameter "column_prefix"
** Field-Option "noupdate"
** update<table>() bekommt keine Felder mit noupdate als Parameter
** Verstecktes Feld buttonAbortJS
** Für jede Seite wird eine Funktion ajax() generiert.
** neu: PHP_HOOK_MODEL_GET_ALL_ADAPTION
** Robustheit: kein Absturz, wenn Fehler bei dbtable-Definition
** Fehler bei Redirection-Block: Erkennung von save.*-Button
** Anpassungen dbtable in akten, beratungen und zahlungen
** Akten: Dateinamen werden mit laufender Nummer erweitert
  (Versionierung)
** Termine: neue Spalten Status, Erledigt und "Erledigt von"
** Dashboard: weniger Spalten

* Common: neu testEditChanged() und testNewChanged()

* CSS: body class="page-type-edit"

4 years agoDashboard Unittest CSS DB
hama [Wed, 14 Nov 2018 07:26:00 +0000 (08:26 +0100)]
Dashboard Unittest CSS DB

* Dashboard
** Implementierung ohne DB-Konfiguration
** Kacheln: Geburtstage, Offene Posten, Termine und Anwesend

* Unittest:
** skeletontestcase hatte Abhängigkeit von aktuellem Projekt
** Test für Dashboard

* CSS:
** lokale bootstrap-Dateien (nicht aus dem Netz)
** Dashboard-Definitionen in overview.global.css
** global.css: neu: overflow

* DB: neu: changeTruncatedColumn()

4 years agoCSS, Settings, Common, Users, Zahlungen
hama [Mon, 12 Nov 2018 21:45:59 +0000 (22:45 +0100)]
CSS, Settings, Common, Users, Zahlungen

* CSS
** neu: .selected-text
* Settings:
** Abhängigkeit von Users entfernt
** Nach erfolgreicher Änderung: Weiterleitung auf Login
* Common:
** changePassword() verschoben von Users
** Fehler in findNextId(): Default-Wert für Parameter $condition
* Users: jetzt aus dem Generator
* Zahlungen: Umbau der Tabelle

4 years agoGenerator, Common, CryptoEngine, DB, CSS
hama [Mon, 12 Nov 2018 12:19:11 +0000 (13:19 +0100)]
Generator, Common, CryptoEngine, DB, CSS

* Generator
** Fehler in findFilter(): Suchen in auch in children
** Option is.filter
** Parameter für get<table>All(): auch einfache Felder mit is.filter
** neu: option.edit und option.new:
   GenConditionalOptions(): Attribute für Common-Felder nur für
   edit/new
** Refactoring "Redirekt-Block"
** Buttons: Refactoring für Linkdefinition, neu: save.and.edit
** Korrekturen von Combobox-Definitionen als field
** Modulübergreifende Tabs: tabs.modules und tab.module
** Fehler: option.module project:x war wirkungslos
* Grüne Icons für Starter

* Common
** Model: neu findNextId()
** View: fillUserCombobox(): Anzeige der neuen Spalte user_displayname
* CryptoEngine: neu: oneTimePad(), testCharSet() und unpackOneTimePad()
* DB: Fehler in _checkCondition() und _skipLines()

* CSS: Tabs

4 years agoGenerator, Bool-Felder, DB, InputField, Modul zutritte funktioniert
hama [Sun, 4 Nov 2018 22:31:29 +0000 (23:31 +0100)]
Generator, Bool-Felder, DB, InputField, Modul zutritte funktioniert

* Generator:
** dbfield:
*** Neu: Datentyp bool
*** Neu: Option bool.string
** field: neu: Datentyp bool
** Fehler: filterfield mit Mode "combobox" erzeugen jetzt Combobox
** SQL-Tabellendefinition: bool-Felder als CHAR(1)

* DB: neu: changeBoolColumn()
* InputField: neu: Datentyp 'bool'

4 years agoGenerator Validator MViewC, Akten, Termine
hama [Sun, 4 Nov 2018 14:31:30 +0000 (15:31 +0100)]
Generator Validator MViewC, Akten, Termine

* Generator:
** neu: Feldtyp file für Dateiupload
* neu: Page-Option file.upload
* neu: PHP_HOOK_x_END
* Fehler: SQL-Statement für getXxxAll(): Treffer, wenn :<param> NULL
* Fehler bei Filtermodus int.upperbound (fehlendes Template)
* Modul Akten funktioniert
* Modul Termine funktioniert

* common.validator:
** neu: Dateiupload
** Datetime: zusätzliches Trennzeichen '-'

* MViewC::rowFromDatabase: neu: Möglichkeit, direkt XML-Text einzufügen

4 years ago"Passwort vergessen", "Passwort ändern" Generator
hama [Fri, 2 Nov 2018 21:42:46 +0000 (22:42 +0100)]
"Passwort vergessen", "Passwort ändern" Generator

* "Passwort vergessen":
** changePasswordByToken() verlagert von users nach common
** Configurations ohne Zugriffskontrolle wenn Aufruf aus /login
** Fehler in Snippets bei Pw-Vergleich
** Absolute URL in Email

* Generator:
** Fehler bei mehr als einem Button je Seite

4 years ago"Passwort vergessen" lauffähig, EMail verschicken lauffähig
hama [Fri, 2 Nov 2018 15:14:53 +0000 (16:14 +0100)]
"Passwort vergessen" lauffähig, EMail verschicken lauffähig

* setNewToken() und userByLogin() verschoben von users nach common
* smtp.php: Anpassen an PHP7

4 years agoGenerator, InputField
hama [Fri, 2 Nov 2018 12:44:33 +0000 (13:44 +0100)]
Generator, InputField

* Generator
** Dokumentationsmarken: @doc
** Refaktoring: GenField-Optionen: options und fieldOptions
** neues Element filler: GenFiller
** Fehler: SQL-Tabellendefinition Feldtyp text ab 256 Byte
** Modul Beratungen funktioniert
** neue Hooks
** neuer Filtertyp equal

* InputField: readonly und disabled auch per Option

4 years agoGenerator, Validator, Db, InputField, Settings, StringUtils
hama [Wed, 31 Oct 2018 22:39:02 +0000 (23:39 +0100)]
Generator, Validator, Db, InputField, Settings, StringUtils

* Generator:
** Nicht-DB-Felder in panel.common
** Initialisierung von Datumsobergrenzen
** Option hidden.field bei DB-Feldern
** Readonly-Felder bekommen CSS-Klasse readonly
** Joins in filterfield-Objekten
** mitglieder.module und zahlungen.module funktionieren

* Validator: Fehler: Syntax von Währungswerten
* Db: neu: changeCurrencyColumn()
* InputField: automatische Korrektur von $dataType (von $displayType)
* Settings: Normierung Layout
* StringUtils::stringToDateTime(): akzeptiert auch DateTime als
  Parametertyp

4 years agoCSS, Common, Generator, Layout, Tools
hama [Wed, 31 Oct 2018 09:03:57 +0000 (10:03 +0100)]
CSS, Common, Generator, Layout, Tools

* CSS:
** css/common/global.css enthält projektübergreifende Definitionen
** css/overview/overview.global.css enthält projektübergreifende
   Definitionen von overview

* Common
** base.snippets.html:
*** APP_NAME aus Pfad für CSS entfernt
*** Id von navbar: umgesetzt auf navbarTop
*** Klassen paging-block und paging-text gesetzt
** Validator: neu: Syntaxprüfung für Feldtyp "currency"

* Generator:
** Join-Option für DB-Felder
** Feldtyp "currency"
** pendingHTML für Seiten: Problem "SNIPPET_ROW" gelöst.
** readonly-Attribut bei dbreferences
** neu: GenMarker
** panel.common kann jetzt explizite und importierte Felder mischen
** Objekte (GenPage, GenParagraph..) können Destructor finish() haben
** nur SQL-Definitionen für Main-Table
** Fehler: Initialwert für undefiniertes Datum: jetzt 1.1.1900

* Layout:
** Filter in configurations normiert
** Filter in sysflags normiert
** Filter in users normiert
** Layout in settings normiert

* Tools:
** Tippfehler in init_project.sh
** Links für pdf.css, jquery.datetimepicker.css global.css und
   overview.global.css

4 years agoAbreviations (Unittest)
hama [Fri, 26 Oct 2018 09:43:47 +0000 (11:43 +0200)]
Abreviations (Unittest)

* verschoben von timetracking nach skeleton

4 years agoLogin, Abbreviations, Checkboxen, CryptoEngine
hama [Fri, 26 Oct 2018 09:24:55 +0000 (11:24 +0200)]
Login, Abbreviations, Checkboxen, CryptoEngine

* Login
** Automatische Anmeldung
** Speichern Anmeldename und Passwort in Cookies (optional)
** Login-Management verschoben von login/users nach common
** Checkbox "Angemeldet bleiben" in Login-Dialog
** Seitenüberschrift (local_title)

* neu: lib\CryptoEngine für Verschlüsselung in Cookie
* Abbreviations: Verlagerung von timetracking nach skeleton
* Checkboxen: allgemeine Behandlung

4 years agoGenerator
hama [Mon, 22 Oct 2018 14:30:55 +0000 (16:30 +0200)]
Generator

* mehr Hooks für den Controller
* Buttons: url mit Parametern, z.B.
  redirect:*.newTimecontrol?projectID=<project>
* kein Fehler, wenn bei edit die ID fehlt: Weiterleitung auf base
* Modul Tickets vollständig aus Generator
* Umbenennung der Filtervariablen: Hook-Code korrigiert

4 years agoGenerator, Sysflags, table2view.py
hama [Mon, 22 Oct 2018 06:57:53 +0000 (08:57 +0200)]
Generator, Sysflags, table2view.py

* Generator
** neues Makro ~project~
** Fehler: Datenfeldkorrekturen in create_...() und update...()
** Datentyp "date" wird mit DateTime() implementiert
** korrekte Namensbildung bei Parametern für Filterfelder
** Beispielcode für Starter verbessert (in <table>.sql)

* Sysflags: neu obtainByScope()

* table2view: Erzeugt aus *.module Beispielcode für *.module

4 years agoCommon: Filter ohne Paging
hama [Fri, 19 Oct 2018 05:55:28 +0000 (07:55 +0200)]
Common: Filter ohne Paging

* Fix: Legende wurde falsch ersetzt
* user.module umbenannt in users.module
* neu: roles.module

4 years agoGenerator, ShrinkDb.py
hama [Wed, 17 Oct 2018 22:19:51 +0000 (00:19 +0200)]
Generator, ShrinkDb.py

* Generator
** Erzeugung des Moduls users funktioniert
** Tabellenname und Modulname dürfen verschieden sein:
   loginusers / users
** dbfield: Option "combobox"
** + PHP_HOOK_MODEL_CREATE_NEW PHP_HOOK_MODEL_UPDATE
* ShrinkDb.py: Script zum Erzeugen der Datenbank

4 years agoEtliche Module verlagert nach Projekt timetracking
hama [Wed, 17 Oct 2018 08:05:19 +0000 (10:05 +0200)]
Etliche Module verlagert nach Projekt timetracking

4 years agoGenerator, Common, Db VorAuslagerungTimetracking
hama [Wed, 17 Oct 2018 06:18:19 +0000 (08:18 +0200)]
Generator, Common, Db

* Generator
** Edit mit Tabs und eingebetter Tabelle kann realisiert werden
** neue Hooks
** Optionen:
*** field.option:undef
*** option.page
*** include:configuration und include:snippets
*** dbtable:<table> (GenFilter und GenTable)
** Referenzen erzeugen Combobox
** GenParagraph->widgets ist ein flaches Feld
** Trennung von PHP_MODEL_CONVERSION_GET_ALL_DATETIME und
   PHP_MODEL_CONVERSION_DATETIME
** panel.fieldgroup + panel.tab.container

* Common
** Makro SNIPPET_COMMON_IMG_EDIT für Edit-Icon
** activateTab()

* Db: private _hasTable() wird zu public hasTable()

4 years agoGenerator
hama [Tue, 9 Oct 2018 14:41:05 +0000 (16:41 +0200)]
Generator

* Datentyp-Korrektur bei Model-Funktionen
* Fix: SQL-Parameter mit Parameternamen ohne "filter"

4 years agoGenerator MViewC
hama [Mon, 8 Oct 2018 21:39:33 +0000 (23:39 +0200)]
Generator MViewC

* Generator
** Modul "Projects" wird komplett mit Generator erzeugt
** neu: option.module project:<project>
** Parameter von Filterfeldern ohne "filter"
** neue Option bei dbfield: width:<width> field.option
** neue Optionen dbtable: sql.getall sql.getall.count
   body.getall heads viewed
** Fix: Filterfelder: Übernahme der Breiten
** filterfield-Option: combo umbenannt in combobox

* MViewC: getConfiguration: Existenzprüfung bei Include

4 years agoGenerator, Db, FileUtils
hama [Sun, 7 Oct 2018 14:30:16 +0000 (16:30 +0200)]
Generator, Db, FileUtils

* Generator:
** Dummy-MainTable, wenn keine Tabelle existiert
** kein Fehler, wenn keine Tabelle existiert
** Fehler bei Datumskonvertierungen
** Zusätzliche Hooks bei Seitentyp "standard"
** Bei Seitenreferenzen (redirect:...) ist '*' das aktuelle Modul
** Relative URLs bei Breadcrumbs

* Db: executeScript() ausgelagert, damit SQL-Code als
  Zeilenliste übergeben werden kann
* FileUtils: Fehler in rmDirTree: Kein Löschen der Datei
  wenn diese ein Verzeichnis ist

4 years agoGenerator
hama [Sun, 7 Oct 2018 01:23:19 +0000 (03:23 +0200)]
Generator

* Beispielanwendung "moduledefs" wird komplett erzeugt
* Fehlerbereinigungen

4 years agoGenerator, FieldSet, InputField
hama [Sat, 6 Oct 2018 18:46:30 +0000 (20:46 +0200)]
Generator, FieldSet, InputField

* Generator
** Tabs innerhalb einer Seite funktionieren
** Fix: Reihenfolge der verschachtelten Paragraphen
** ReadOnly-Attribut von Feldern
** Fehlermeldungen mit Ausgabe des Fehlerzeilentexts
* FieldSet: Setzen des ReadOnly-Attributes
* InputField: ReadOnly-Attribut

4 years agoGenerator
hama [Thu, 4 Oct 2018 21:20:37 +0000 (23:20 +0200)]
Generator

* Verbesserungen Hooks:
** Hooks für Seiten vom Typ "standard"
** Kommentar vor und nach Hook-Code
* Implementierung "field" und "dbreference"
* Implementierung "tabs"
* JS: Tabs-Umschaltung per (verstecktem) Button, damit POST verwendet
  wird

4 years agoGenerator
hama [Mon, 1 Oct 2018 23:02:27 +0000 (01:02 +0200)]
Generator

* Spaltensortierung in Tabelle
* Unique-Test im Validator
* Vollständige Prüfung von Optionen bei dbfields

4 years agoGenerator
hama [Sun, 30 Sep 2018 22:48:55 +0000 (00:48 +0200)]
Generator

* neu: GenTabPanel und GenTabs
* neu: paragraph panel.fields.common
* neu: paragraph panel.tab
* neu: page mit Optionen, paragraph mit Optionen
* neu: Trennung von Seitennamen und Seitentyp
* neu: Seitentyp standard

4 years agoGenerator: Fehlerbereinigung
hama [Sun, 30 Sep 2018 18:22:28 +0000 (20:22 +0200)]
Generator: Fehlerbereinigung

4 years agoGenerator: Fehlerbereinigung, neues Modul ModuleDefs
hama [Thu, 27 Sep 2018 17:07:40 +0000 (19:07 +0200)]
Generator: Fehlerbereinigung, neues Modul ModuleDefs

4 years agoGenerator: Fehlerbereinigung
hama [Wed, 26 Sep 2018 21:23:01 +0000 (23:23 +0200)]
Generator: Fehlerbereinigung

4 years agoGenerator,Stringutils,Snippets
hama [Wed, 26 Sep 2018 14:15:46 +0000 (16:15 +0200)]
Generator,Stringutils,Snippets

* Generator:
** PHP-Erzeugung vollständig, syntaxfehlerfrei, ungetestet
** View-Cache entfernt
* StringUtils: neu: skip(), startsWith()
* Snippets: getSnippet() jetzt mit $defaultValue

4 years agoGenerator
hama [Mon, 24 Sep 2018 09:41:59 +0000 (11:41 +0200)]
Generator

* Erzeugung der SQL-Snippets funktioniert
* neuer Modus bei Filterfeld: date.lowerbound und date.upperbound
* Refactoring: einheitlich Schnittstelle von replaceMacro*()

4 years agoGenerator, StringUtils
hama [Sun, 23 Sep 2018 22:04:11 +0000 (00:04 +0200)]
Generator, StringUtils

* Generator:
** Erzeugung des Models funktioniert
** Syntaxänderung: end.xxx statt endxxx
** GenDbField: Option auto.user, secondary
* StringUtils: neu: capitalize(), startsWith()

4 years agoGenerator, StringUtils, UnitTest
hama [Sat, 22 Sep 2018 21:57:03 +0000 (23:57 +0200)]
Generator, StringUtils, UnitTest

* Generator:
** Erzeugen controller.php funktioniert
** Optionen für Module: blocked.roles
* UnitTest: Tests in Skeleton lauffähig
* StringUtils: scanFromTo()
* Refactoring: falscher Vergleich mit null korrigiert (=== statt ==)

4 years agoGenerator, StringUtils
hama [Fri, 21 Sep 2018 21:45:33 +0000 (23:45 +0200)]
Generator, StringUtils

* Generator:
** "paragraph table" funktioniert
** autodbfields umbenannt in fill.from.db.table

* StringUtils: neu: scanFrom()

4 years agoGenerator, Snippets
hama [Fri, 21 Sep 2018 14:43:57 +0000 (16:43 +0200)]
Generator, Snippets

* Generator:
** Erstellen Snippets für common, new und edit funktionieren
** Syntax für paragraph geändert: Untertypen panel.none, panel.fields
** Widgets als Kinder von Paragraphen: empty.line
** option.table und option.panel

* Snippets:
* Konstruktor ohne Config::get() aufrufbar

4 years agoGenerator
hama [Wed, 19 Sep 2018 18:45:28 +0000 (20:45 +0200)]
Generator

* Parser funktioniert
* Generieren SQL-Script funktioniert
* Generieren Modul-Konfiguration funktioniert

4 years agoAbreviations mit Paging, Wildcards in Filter mit Suchmuster
hama [Fri, 14 Sep 2018 08:30:41 +0000 (10:30 +0200)]
Abreviations mit Paging, Wildcards in Filter mit Suchmuster

* Übersicht
** Sortierung der Spalten Kürzel und Name
** Blättern der Liste
** Legende mit Paging-Info
** Fix: Filter Name und Kürzel waren vertauscht (in der
   Wirkung)
* Alle Filter mit Suchmuster: Jetzt sind auch Wildcards '*'
  und '?' möglich

4 years agoV2018.09.07.00: Paging mit Bootstrap-Pagination
hama [Fri, 7 Sep 2018 09:56:57 +0000 (11:56 +0200)]
V2018.09.07.00: Paging mit Bootstrap-Pagination

* Paging-Mechanismus mit Dropdown-Menü entfernt
* Paging-Mechanismus mit Bootstrap-Pagination implementiert

* Common.view:
** neu: addPagingSnippet()
** Voreingestellte Zeilen-pro-Seite: 10

* jquery.v1.js:
** Klick auf Seitensymbol speichert Index und klickt auf buttonSort

* Projects:
** Umstellung auf Paging-Mechanismus mit Bootstrap-Pagination
** Bei Änderung eines Filter-Feldes automatisch Neuanzeige

* Timecontrols:
** Paging-Mechanismus mit Bootstrap-Pagination
** Bei Änderung eines Filter-Feldes automatisch Neuanzeige

4 years agoV2018.09.05.01: Multiline support for in-table-editing
hama [Wed, 5 Sep 2018 13:07:59 +0000 (15:07 +0200)]
V2018.09.05.01: Multiline support for in-table-editing

* Newlines are shown as '<br>'
* Encoding: jquery.v1.js
* Decoding: timecontrols.view.php

4 years agoV2018.09.05.00: Validierung In-Tabellen-Felder in Timecontrol
hama [Wed, 5 Sep 2018 10:38:21 +0000 (12:38 +0200)]
V2018.09.05.00: Validierung In-Tabellen-Felder in Timecontrol

* Pflichtfelder Datum, Start, Text und Mitarbeiter
* Bezeichnung der Felder in Fehlermeldung

4 years agoVerschiebung von JS-Script nach skeleton
hama [Sun, 2 Sep 2018 19:57:42 +0000 (21:57 +0200)]
Verschiebung von JS-Script nach skeleton

4 years agoV2018.01.09.00: In-Tabellen-Änderung
hama [Sun, 2 Sep 2018 14:59:25 +0000 (16:59 +0200)]
V2018.01.09.00: In-Tabellen-Änderung

* Commons
** Zusätzliche Zeile mit Hilfe- bzw. Fehlertext
** aktuelle Seite in HTML.data-url
* FieldSet: Reihenfolge der aufgerufenen Validators umgekehrt:
  zuerst den allgemeinen, dann den speziellen
* Timecontrols:
** Zusatzzeile für Hilfe/Fehlermeldungen
** Speichern der geänderten Felder
** Validierung mittels AJAX

4 years agoV2018.08.30.00: Änderungen in Tabellenspalten
hama [Fri, 31 Aug 2018 05:46:38 +0000 (07:46 +0200)]
V2018.08.30.00: Änderungen in Tabellenspalten

* Common:
** Config: Texte zum Einschalten, Speichern, Abbrechen
** Snippets: Definiton der Icons zum Einschalten, Speichern, Abbrechen
   Gemeinsames Feld "keyInTable"
** View: Neu: copyComboBox(), prepareEditableRow()
** replaceInHtml(): Ersetzen von ###SNIPPET_COMMON*
* init_project: Korrekturen für Links unter Windows (Batchdatei)
* InputField: neu copyCombobox()
* TimeControls:
* Snippets: nur noch eine <form>, Felder für In-Tabellen-Edit
* View:
* Behandlung von buttonNewTimecontrols
* Initialisierung der In-Tabellen-Edit-Felder
* Liste der letzten 3 Jahre jetzt dynamisch

4 years agoProjects
hama [Mon, 20 Aug 2018 09:50:23 +0000 (11:50 +0200)]
Projects

* Projects: Umbau, nur noch eine <form> (Vorbereitung auf Table-Editing)

4 years agoV2018.08.20: Common, Projects
hama [Mon, 20 Aug 2018 08:10:00 +0000 (10:10 +0200)]
V2018.08.20: Common, Projects

* Common:
** Refactoring: gemeinsame Definition des Sortier-Icons
   SNIPPET_SORT_BUTTON.
** Parametrierbare Snippets
* Projects: Umstellung auf SNIPPET_SORT_BUTTON
* Timecontrols: Umstellung auf SNIPPET_SORT_BUTTON

4 years agoProjects, Common, Bootstrap, DB
hama [Sun, 12 Aug 2018 22:04:21 +0000 (00:04 +0200)]
Projects, Common, Bootstrap, DB

* Common: Paging (Begrenzung der Datensätze in Liste)
** Anzahl in Legende des Filters
** Zeilenzahl über Combobox wählbar (in Zelle [0,0] der Tabelle)
** Navigation: nächste, vorige, erste, letzte Seite
** addPagingFields() addPagingAndSortingFields() addSortingFields()
** getPagingAndSortingData()
* Projects: Paging in Übersicht
** setLegendWithPages()
* Bootstrap: 4.0.0 -> 4.1.3
* DB: PDO -> \PDO, columnsToCount()

4 years agoV2018.07.23.00: Zeiterfassung Projects Tool
hama [Mon, 23 Jul 2018 13:31:55 +0000 (15:31 +0200)]
V2018.07.23.00: Zeiterfassung Projects Tool

* Änderung "Zeiterfassung":bei "Abbrechen" wurde weiße Seite erzeugt
* Projects:
** Übersichtstabelle: Nach Spalten sortierbar
** Schmales Browserfenster: Übersichtstabelle war nicht seitlich
   scrollbar
** Übersicht: Button "Suchen" volle Breite
** Änderung Ticket: die Übersicht über Zeiterfassungen ist nach Spalten
   sortierbar
** Button "Suchen" hat volle Breite
* Tool: Seite "Access denied" jetzt mit Link auf Anmeldung
* Rechtschreibfehler criteria -= criterion

4 years agoV2018.07.20.01: Billings, Timecontrol
Winfried Kappeler [Fri, 20 Jul 2018 11:50:57 +0000 (13:50 +0200)]
V2018.07.20.01: Billings, Timecontrol

* Billings: Combobox für Projekt länger, Texte standardisiert
* Timecontrol: Bei Änderung Zeiterfassung: Combobox für Projekt länger

4 years agoV2018.07.20.00: Combobox, Unittests, InputFields, Projects
Winfried Kappeler [Fri, 20 Jul 2018 11:15:49 +0000 (13:15 +0200)]
V2018.07.20.00: Combobox, Unittests, InputFields, Projects

* Combobox:
** Combobox für Projekt/Benutzer und Kunde sind konfigurierbar
** Erstellen mit einem Aufruf, z.B. fillProjectCombobox()
** Automatische Sortierung nach dem ersten Feld
* Unittests: Anpassungen an Änderungen, z.B. Comboboxen
* InputField: Rückbau von comboboxFromDb() auf Einfachstvariante
  Zusammengesetzte Texte sind ja über Modul common möglich
* Projects: Spalte "Mitarbeiter" mit Kürzel statt Namen

4 years agoV2018.07.18.00 Comboboxen Unittests Projects
Winfried Kappeler [Wed, 18 Jul 2018 08:15:10 +0000 (10:15 +0200)]
V2018.07.18.00 Comboboxen Unittests Projects

* Comboboxen: Anzeige von "<langname> (<kurzname>)"
* Unittests: Anpassungen Comboboxen
* Projects: Sortierung Übersicht durch Icon in Spaltenüberschrift

4 years agoBug #31: Timecontrol: Mischung Name/Abkürzung
Winfried Kappeler [Mon, 16 Jul 2018 13:05:09 +0000 (15:05 +0200)]
Bug #31: Timecontrol: Mischung Name/Abkürzung

* In den Comboboxen/Übersichtsspalten werden jetzt bevorzugt
  Abkürzungen verwendet. Ausnahme sind Statusangaben, da diese
  kurze Namen haben und die einstelligen Abkürzungen nicht
  leicht verständlich sind
* Spalte LPH entfernt (immer leer)

4 years agoBug #33: Neuanlage Zeiterfassung: nur aktive Projekt in Auswahl
Winfried Kappeler [Mon, 16 Jul 2018 08:44:24 +0000 (10:44 +0200)]
Bug #33: Neuanlage Zeiterfassung: nur aktive Projekt in Auswahl

4 years agoV2018.07.11.00: tools
Winfried Kappeler [Wed, 11 Jul 2018 10:14:03 +0000 (12:14 +0200)]
V2018.07.11.00: tools

* init_projects.sh verschoben nach tools
* skeletonversion.php wird per Link im abgeleiteten Projekt eingebunden
* Erzeugung nginx-Konfiguration
* Erzeugung makelinks.bat

4 years agoStart
Winfried Kappeler [Mon, 9 Jul 2018 22:47:19 +0000 (00:47 +0200)]
Start