Changeset 3407122
- Timestamp:
- 12/01/2025 06:00:43 PM (3 months ago)
- Location:
- plaintracker/trunk
- Files:
-
- 11 added
- 23 deleted
- 76 edited
-
languages/plaintracker-cs_CZ.po (modified) (2 diffs)
-
languages/plaintracker-da_DK.po (modified) (2 diffs)
-
languages/plaintracker-de_DE.po (modified) (2 diffs)
-
languages/plaintracker-fr_FR.po (modified) (2 diffs)
-
languages/plaintracker-it_IT.po (modified) (2 diffs)
-
languages/plaintracker-ja_JP.po (modified) (2 diffs)
-
languages/plaintracker-nl_NL.po (modified) (2 diffs)
-
languages/plaintracker-sv_SE.po (modified) (2 diffs)
-
languages/plaintracker-zh_CN.po (modified) (2 diffs)
-
languages/plaintracker.pot (modified) (2 diffs)
-
module/web-admin-dashboard/src/Controller/AdminDashboardClockInPageController.php (modified) (3 diffs)
-
module/web-admin-dashboard/src/Controller/AdminDashboardClockOutPageController.php (modified) (4 diffs)
-
module/web-admin-record/src/Controller/AdminCreateRecordPageController.php (modified) (3 diffs)
-
module/web-admin-record/src/Controller/AdminCreateRecordSelectWorkerPageController.php (modified) (2 diffs)
-
module/web-admin-record/src/Controller/AdminRecordIdDeletePageController.php (modified) (2 diffs)
-
module/web-admin-record/src/Controller/AdminRecordIdPageController.php (modified) (3 diffs)
-
module/web-admin-record/src/Controller/AdminRecordPageConfigController.php (modified) (2 diffs)
-
module/web-admin-record/src/Controller/AdminRecordPageController.php (modified) (1 diff)
-
module/web-admin-setting/src/Controller/DatetimePageController.php (modified) (6 diffs)
-
module/web-admin-worker/src/Controller/AdminCreateWorkerPageController.php (modified) (2 diffs)
-
module/web-admin-worker/src/Controller/AdminCreateWorkerSelectUserPageController.php (modified) (3 diffs)
-
module/web-admin-worker/src/Controller/AdminWorkerIdPageController.php (modified) (3 diffs)
-
module/web-install/src/Controller/InstallController.php (modified) (3 diffs)
-
module/web-install/src/Controller/UninstallController.php (modified) (3 diffs)
-
module/web-promo/boot.php (modified) (1 diff)
-
module/web-promo/src/Controller/PromoPageController.php (modified) (6 diffs)
-
module/web-user-role-switcher/src/Html/UserRoleSwitcherWidget.php (modified) (1 diff)
-
module/web-worker-clock/src/Controller/WorkerClockInPageController.php (modified) (2 diffs)
-
module/web-worker-clock/src/Controller/WorkerClockOutPageController.php (modified) (2 diffs)
-
plaintracker.php (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
-
vendor/plainware/http/src/Server.php (modified) (1 diff)
-
vendor/plainware/rest/src/Ui/Renderer/OpenApiInfoRenderer.php (modified) (9 diffs)
-
vendor/plainware/ui-wordpress/assets/admin.css (modified) (1 diff)
-
vendor/plainware/ui-wordpress/src/Renderer/AdminMainMenuRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/assets/core.css (modified) (2 diffs)
-
vendor/plainware/ui/boot.php (modified) (3 diffs)
-
vendor/plainware/ui/src/Component/AbstractTag.php (modified) (3 diffs)
-
vendor/plainware/ui/src/Component/Attr.php (deleted)
-
vendor/plainware/ui/src/Component/Bag.php (deleted)
-
vendor/plainware/ui/src/Component/BlockList.php (added)
-
vendor/plainware/ui/src/Component/Breadcrumbs.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Component/Card.php (added)
-
vendor/plainware/ui/src/Component/Collection.php (added)
-
vendor/plainware/ui/src/Component/Container.php (deleted)
-
vendor/plainware/ui/src/Component/DateComponent.php (deleted)
-
vendor/plainware/ui/src/Component/Details.php (deleted)
-
vendor/plainware/ui/src/Component/Form.php (deleted)
-
vendor/plainware/ui/src/Component/Form/AbstractFieldset.php (added)
-
vendor/plainware/ui/src/Component/Form/AbstractInput.php (modified) (3 diffs)
-
vendor/plainware/ui/src/Component/Form/CheckboxInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/CheckboxSetInput.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Component/Form/ColorInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/ContentInput.php (deleted)
-
vendor/plainware/ui/src/Component/Form/DateFromPeriodInput.php (deleted)
-
vendor/plainware/ui/src/Component/Form/DateInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/DatePeriodInput.php (modified) (3 diffs)
-
vendor/plainware/ui/src/Component/Form/DateTimeInput.php (deleted)
-
vendor/plainware/ui/src/Component/Form/Form.php (added)
-
vendor/plainware/ui/src/Component/Form/HiddenInput.php (deleted)
-
vendor/plainware/ui/src/Component/Form/InputInterface.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/NumberInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/PasswordInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/RadioInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/RadioSetInput.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Component/Form/SelectInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/TextInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/TextareaInput.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/Form/TimeInput.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Component/Form/TimeRangeInput.php (deleted)
-
vendor/plainware/ui/src/Component/HtmlElement.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/InlineList.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Component/Menu.php (modified) (1 diff)
-
vendor/plainware/ui/src/Component/SpacedContainer.php (deleted)
-
vendor/plainware/ui/src/Component/StartEnd.php (deleted)
-
vendor/plainware/ui/src/Middleware/PageLayoutMiddleware.php (modified) (6 diffs)
-
vendor/plainware/ui/src/Renderer/BlockListRenderer.php (added)
-
vendor/plainware/ui/src/Renderer/BreadcrumbsRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/CardRenderer.php (added)
-
vendor/plainware/ui/src/Renderer/CollectionRenderer.php (added)
-
vendor/plainware/ui/src/Renderer/ContainerRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/DetailsRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/Form/ButtonRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/CheckboxInputRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/CheckboxSetInputRenderer.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Renderer/Form/ColorInputRenderer.php (added)
-
vendor/plainware/ui/src/Renderer/Form/ContentInputRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/Form/DateFromPeriodInputRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/Form/DateInputRenderer.php (modified) (5 diffs)
-
vendor/plainware/ui/src/Renderer/Form/DatePeriodInputRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/DateTimeInputRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/Form/FormRenderer.php (added)
-
vendor/plainware/ui/src/Renderer/Form/HiddenInputRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/Form/InputRenderer.php (added)
-
vendor/plainware/ui/src/Renderer/Form/NumberInputRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/PasswordInputRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/RadioInputRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/RadioSetInputRenderer.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Renderer/Form/SelectInputRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/TextInputRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/TextareaInputRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/Form/TimeInputRenderer.php (modified) (5 diffs)
-
vendor/plainware/ui/src/Renderer/Form/TimeRangeInputRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/FormRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/InlineListRenderer.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Renderer/MainMenuRenderer.php (modified) (1 diff)
-
vendor/plainware/ui/src/Renderer/PartialRenderer.php (modified) (2 diffs)
-
vendor/plainware/ui/src/Renderer/SpacedContainerRenderer.php (deleted)
-
vendor/plainware/ui/src/Renderer/StartEndRenderer.php (deleted)
-
vendor/plainware/ui/src/Ui.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
plaintracker/trunk/languages/plaintracker-cs_CZ.po
r3403602 r3407122 42 42 msgstr "Archivováno" 43 43 44 msgid "Are you sure?" 45 msgstr "" 46 47 msgid "Click a worker to clock them in." 48 msgstr "" 49 50 msgid "Click a worker to clock them out." 51 msgstr "" 52 44 53 msgid "Click to change" 45 54 msgstr "" … … 363 372 msgstr "" 364 373 374 msgid "You can add any user as a worker." 375 msgstr "" 376 365 377 msgid "You have clocked in" 366 378 msgstr "" -
plaintracker/trunk/languages/plaintracker-da_DK.po
r3403602 r3407122 42 42 msgstr "Arkiveret" 43 43 44 msgid "Are you sure?" 45 msgstr "" 46 47 msgid "Click a worker to clock them in." 48 msgstr "" 49 50 msgid "Click a worker to clock them out." 51 msgstr "" 52 44 53 msgid "Click to change" 45 54 msgstr "" … … 363 372 msgstr "" 364 373 374 msgid "You can add any user as a worker." 375 msgstr "" 376 365 377 msgid "You have clocked in" 366 378 msgstr "" -
plaintracker/trunk/languages/plaintracker-de_DE.po
r3403602 r3407122 42 42 msgstr "Archiviert" 43 43 44 msgid "Are you sure?" 45 msgstr "" 46 47 msgid "Click a worker to clock them in." 48 msgstr "" 49 50 msgid "Click a worker to clock them out." 51 msgstr "" 52 44 53 msgid "Click to change" 45 54 msgstr "" … … 363 372 msgstr "" 364 373 374 msgid "You can add any user as a worker." 375 msgstr "" 376 365 377 msgid "You have clocked in" 366 378 msgstr "" -
plaintracker/trunk/languages/plaintracker-fr_FR.po
r3403602 r3407122 42 42 msgstr "Archivé" 43 43 44 msgid "Are you sure?" 45 msgstr "" 46 47 msgid "Click a worker to clock them in." 48 msgstr "" 49 50 msgid "Click a worker to clock them out." 51 msgstr "" 52 44 53 msgid "Click to change" 45 54 msgstr "" … … 363 372 msgstr "" 364 373 374 msgid "You can add any user as a worker." 375 msgstr "" 376 365 377 msgid "You have clocked in" 366 378 msgstr "" -
plaintracker/trunk/languages/plaintracker-it_IT.po
r3403602 r3407122 42 42 msgstr "Archiviato" 43 43 44 msgid "Are you sure?" 45 msgstr "" 46 47 msgid "Click a worker to clock them in." 48 msgstr "" 49 50 msgid "Click a worker to clock them out." 51 msgstr "" 52 44 53 msgid "Click to change" 45 54 msgstr "" … … 363 372 msgstr "" 364 373 374 msgid "You can add any user as a worker." 375 msgstr "" 376 365 377 msgid "You have clocked in" 366 378 msgstr "" -
plaintracker/trunk/languages/plaintracker-ja_JP.po
r3403602 r3407122 43 43 msgstr "アーカイブ" 44 44 45 msgid "Are you sure?" 46 msgstr "" 47 48 msgid "Click a worker to clock them in." 49 msgstr "" 50 51 msgid "Click a worker to clock them out." 52 msgstr "" 53 45 54 msgid "Click to change" 46 55 msgstr "" … … 364 373 msgstr "" 365 374 375 msgid "You can add any user as a worker." 376 msgstr "" 377 366 378 msgid "You have clocked in" 367 379 msgstr "" -
plaintracker/trunk/languages/plaintracker-nl_NL.po
r3403602 r3407122 42 42 msgstr "Gearchiveerd" 43 43 44 msgid "Are you sure?" 45 msgstr "" 46 47 msgid "Click a worker to clock them in." 48 msgstr "" 49 50 msgid "Click a worker to clock them out." 51 msgstr "" 52 44 53 msgid "Click to change" 45 54 msgstr "" … … 363 372 msgstr "" 364 373 374 msgid "You can add any user as a worker." 375 msgstr "" 376 365 377 msgid "You have clocked in" 366 378 msgstr "" -
plaintracker/trunk/languages/plaintracker-sv_SE.po
r3403602 r3407122 42 42 msgstr "Arkiverade" 43 43 44 msgid "Are you sure?" 45 msgstr "" 46 47 msgid "Click a worker to clock them in." 48 msgstr "" 49 50 msgid "Click a worker to clock them out." 51 msgstr "" 52 44 53 msgid "Click to change" 45 54 msgstr "" … … 363 372 msgstr "" 364 373 374 msgid "You can add any user as a worker." 375 msgstr "" 376 365 377 msgid "You have clocked in" 366 378 msgstr "" -
plaintracker/trunk/languages/plaintracker-zh_CN.po
r3403602 r3407122 43 43 msgstr "已归档" 44 44 45 msgid "Are you sure?" 46 msgstr "" 47 48 msgid "Click a worker to clock them in." 49 msgstr "" 50 51 msgid "Click a worker to clock them out." 52 msgstr "" 53 45 54 msgid "Click to change" 46 55 msgstr "" … … 364 373 msgstr "" 365 374 375 msgid "You can add any user as a worker." 376 msgstr "" 377 366 378 msgid "You have clocked in" 367 379 msgstr "" -
plaintracker/trunk/languages/plaintracker.pot
r3403602 r3407122 30 30 msgstr "" 31 31 32 msgid "Are you sure?" 33 msgstr "" 34 35 msgid "Click a worker to clock them in." 36 msgstr "" 37 38 msgid "Click a worker to clock them out." 39 msgstr "" 40 32 41 msgid "Click to change" 33 42 msgstr "" … … 351 360 msgstr "" 352 361 362 msgid "You can add any user as a worker." 363 msgstr "" 364 353 365 msgid "You have clocked in" 354 366 msgstr "" -
plaintracker/trunk/module/web-admin-dashboard/src/Controller/AdminDashboardClockInPageController.php
r3403602 r3407122 7 7 use Plainware\DateTime\TimeFactory; 8 8 use Plainware\DateTime\DateTimeFormatter; 9 use Plainware\Ui\Component\ SpacedContainer;9 use Plainware\Ui\Component\BlockList; 10 10 use Plainware\Ui\Component\Link; 11 11 use Plainware\Ui\Component\Main; … … 66 66 } 67 67 68 $ret = new SpacedContainer();68 $ret = new BlockList(); 69 69 70 70 if ($ms) { 71 71 $menu = new Menu(); 72 $i = 1;73 72 foreach ($ms as $m) { 74 73 $link = (new Link('.', ['worker' => $m->getId()])) … … 76 75 ->prependIcon('→') 77 76 ; 78 79 $menu->add($i++, $link); 77 $menu->add($link); 80 78 } 81 79 $menu->setVertical(); 82 80 83 $ret->add(' <p>__Click a worker to clock them in.__');81 $ret->add('__Click a worker to clock them in.__'); 84 82 $ret->add($menu); 85 83 } else { -
plaintracker/trunk/module/web-admin-dashboard/src/Controller/AdminDashboardClockOutPageController.php
r3403602 r3407122 7 7 use Plainware\DateTime\TimeFactory; 8 8 use Plainware\DateTime\DateTimeFormatter; 9 use Plainware\Ui\Component\ Container;9 use Plainware\Ui\Component\BlockList; 10 10 use Plainware\Ui\Component\InlineList; 11 11 use Plainware\Ui\Component\Link; … … 84 84 } 85 85 86 $now = $this->timeFactory-> startOfDay($this->timeFactory->now());86 $now = $this->timeFactory->now(); 87 87 88 88 // worker selected, clock them in … … 95 95 } 96 96 97 $ret = new Container();97 $ret = new BlockList(); 98 98 if ($ms) { 99 99 $menu = new Menu(); 100 $i = 1;101 100 foreach ($ms as $m) { 102 101 $record = $workerToRecord[$m->getId()]; … … 117 116 ; 118 117 119 $menu->add($ i++, $link);118 $menu->add($link); 120 119 } 121 120 $menu->setVertical(); 122 121 123 $ret->add( 55, '<p>__Click a worker to clock them out.__');124 $ret->add( 60,$menu);122 $ret->add('__Click a worker to clock them out.__'); 123 $ret->add($menu); 125 124 } else { 126 $ret->add( 50,$this->renderNone());125 $ret->add($this->renderNone()); 127 126 } 128 127 -
plaintracker/trunk/module/web-admin-record/src/Controller/AdminCreateRecordPageController.php
r3403602 r3407122 6 6 use Plainware\Http\Redirect; 7 7 use Plainware\DateTime\TimeFactory; 8 use Plainware\Ui\Component\Container; 9 use Plainware\Ui\Component\Form; 10 use Plainware\Ui\Component\Form\ContentInput; 8 use Plainware\Ui\Component\Form\Form; 11 9 use Plainware\Ui\Component\Form\DateInput; 12 10 use Plainware\Ui\Component\Form\TimeInput; … … 49 47 $v = new Menu(); 50 48 $v->add( 51 20,52 49 (new Link('./worker', ['-worker' => null])) 53 50 ->setLabel($worker) 54 51 ->withAttr('title', '__Click to change__') 55 52 ); 56 $form->withInput('worker', new ContentInput()) 57 ->setLabel('__Worker__') 58 ->setValue($v) 59 ; 53 $form->add($v)->withLabel('__Worker__'); 60 54 } 61 55 62 $form->withInput('d', new DateInput()) 63 ->setLabel('__Date__') 64 ->setValue($clockIn->format('Ymd')) 65 ; 56 $form->add((new DateInput('d'))->setLabel('__Date__')->setValue($clockIn)); 66 57 67 $form->withInput('t1', new TimeInput()) 68 ->setLabel('__Clock in__') 69 ->setValue(60 * 60 * $clockIn->format('H') + 60 * $clockIn->format('i')) 70 ; 58 $form->add( 59 (new TimeInput('t1')) 60 ->setLabel('__Clock in__') 61 ->setValue(60 * 60 * $clockIn->format('H') + 60 * $clockIn->format('i')) 62 ); 71 63 72 $form->withInput('desc1', new TextareaInput()) 73 ->setLabel('__Clock-in note__') 74 ; 64 $form->add((new TextareaInput('desc1'))->setLabel('__Clock-in note__')); 75 65 76 66 $clockOut = $clockIn->modify('+4 hours'); 77 $form->withInput('t2', new TimeInput()) 78 ->setLabel('__Clock out__') 79 ->setValue(60 * 60 * $clockOut->format('H') + 60 * $clockOut->format('i')) 80 ; 67 $form->add( 68 (new TimeInput('t2')) 69 ->setLabel('__Clock out__') 70 ->setValue(60 * 60 * $clockOut->format('H') + 60 * $clockOut->format('i')) 71 ); 81 72 82 $form->withInput('desc2', new TextareaInput()) 83 ->setLabel('__Clock-out note__') 84 ; 73 $form->add((new TextareaInput('desc2'))->setLabel('__Clock-out note__')); 85 74 86 $form-> withButton('submit',new Button('__Create time record__'));75 $form->addButton(new Button('__Create time record__')); 87 76 88 $ form= $form->grab($request);77 $vs = $form->grab($request); 89 78 90 if ($form->isSubmitted()) { 91 $vs = $form->getValues(); 92 79 if ($vs) { 93 80 if ($form->isValid()) { 94 81 $d = $vs['d']; … … 96 83 $t2 = $vs['t2']; 97 84 98 $clockIn = $ this->timeFactory->fromString($d)->modify('+' . $t1 . ' seconds');99 $clockOut = $ this->timeFactory->fromString($d)->modify('+' . $t2 . ' seconds');85 $clockIn = $d->modify('+' . $t1 . ' seconds'); 86 $clockOut = $d->modify('+' . $t2 . ' seconds'); 100 87 if ($t2 <= $t1) { 101 88 $clockOut = $clockOut->modify('+1 day'); -
plaintracker/trunk/module/web-admin-record/src/Controller/AdminCreateRecordSelectWorkerPageController.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Http\Redirect; 7 use Plainware\Ui\Component\Container;8 7 use Plainware\Ui\Component\Link; 9 8 use Plainware\Ui\Component\Main; … … 48 47 $menu = new Menu(); 49 48 50 $i = 1;51 49 foreach ($ms as $m) { 52 50 $link = (new Link('..', ['worker' => $m->getId()]))->setLabel($m); 53 $menu->add($ i++, $link);51 $menu->add($link); 54 52 } 55 56 $menu->setVertical();57 53 58 54 return $menu; -
plaintracker/trunk/module/web-admin-record/src/Controller/AdminRecordIdDeletePageController.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Http\Redirect; 7 use Plainware\Ui\Component\C ontainer;7 use Plainware\Ui\Component\Card; 8 8 use Plainware\Ui\Component\Main; 9 use Plainware\Ui\Component\Section;10 9 use Plainware\Ui\Component\Link; 11 use Plainware\Ui\Component\Form ;10 use Plainware\Ui\Component\Form\Form; 12 11 use Plainware\Ui\Component\Form\Button; 13 12 use PlainTracker\Core\Action\DeleteRecordAction; … … 26 25 27 26 $form = new Form(); 28 $form->withButton('submit', new Button('__Yes, confirm deleting__'))29 ->prependIcon('×')30 ;31 32 $form->grab($request);33 if ($form->isSubmitted() && $form->isValid()) {34 $this->deleteAction->__invoke($m);35 36 return (new Redirect('../..'))37 ->withMessage('__Time record deleted__')38 ;39 }40 41 27 42 28 $info = '__This entry will be permanently deleted from the database including all 43 29 related entries without possibility to restore it later. If this is not what you 44 30 are intending to do, consider changing the entry status instead.__'; 31 $form->add(new Card($info))->withLabel('__Are you sure?__'); 45 32 46 $ret = (new Container()) 47 ->add(50, new Section($info)) 48 ->add(60, new Section($form)) 49 ; 50 $ret = new Main($ret); 33 $form->addButton((new Button('__Yes, confirm deleting__'))->prependIcon('×')); 34 35 $vs = $form->grab($request); 36 if ($vs && $form->isValid()) { 37 $this->deleteAction->__invoke($m); 38 39 return (new Redirect('../..'))->withMessage('__Time record deleted__'); 40 } 41 42 $ret = new Main($form); 51 43 52 44 return $ret; -
plaintracker/trunk/module/web-admin-record/src/Controller/AdminRecordIdPageController.php
r3403602 r3407122 9 9 use Plainware\Ui\Component\Main; 10 10 use Plainware\Ui\Component\Link; 11 use Plainware\Ui\Component\Form ;11 use Plainware\Ui\Component\Form\Form; 12 12 use Plainware\Ui\Component\Form\CheckboxInput; 13 13 use Plainware\Ui\Component\Form\ContentInput; … … 57 57 $clockOutAction = $request->getQueryParam('clockout'); 58 58 59 $form = new Form( $request);59 $form = new Form(); 60 60 61 61 $clockIn = $m->getClockIn(); 62 62 $v = 60 * 60 * $clockIn->format('H') + 60 * $clockIn->format('i'); 63 $form->withInput('t1', new TimeInput()) 64 ->setLabel('__Clock in__') 65 ->setValue($v) 66 ; 63 $form->add( 64 (new TimeInput('t1')) 65 ->setLabel('__Clock in__') 66 ->setValue($v) 67 ); 67 68 68 $form->withInput('desc1', new TextareaInput()) 69 ->setLabel('__Clock-in note__') 70 ->setValue($m->getClockInDescription()) 71 ; 69 $form->add( 70 (new TextareaInput('desc1')) 71 ->setLabel('__Clock-in note__') 72 ->setValue($m->getClockInDescription() ?? '') 73 ); 74 72 75 73 76 $clockOut = $m->getClockOut(); 74 77 75 $form-> withInput('with_clock_out', new CheckboxInput())76 ->setLabel('__With clock-out__')77 ->setValue(1)78 ->setChecked($clockOut ? true : false)79 ;78 $form->add( 79 (new CheckboxInput('with_clock_out')) 80 ->setLabel('__With clock-out__') 81 ->setValue($clockOut ? true : false) 82 ); 80 83 81 84 $v = $clockOut ?? $clockIn->modify('+4 hours'); 82 85 $v = 60 * 60 * $v->format('H') + 60 * $v->format('i'); 83 $form->withInput('t2', new TimeInput()) 84 ->setLabel('__Clock out__') 85 ->setValue($v) 86 ; 86 $form->add( 87 (new TimeInput('t2')) 88 ->setLabel('__Clock out__') 89 ->setValue($v) 90 ); 87 91 88 $form->withInput('desc2', new TextareaInput()) 89 ->setLabel('__Clock-out note__') 90 ->setValue($m->getClockOutDescription()) 91 ; 92 $form->add( 93 (new TextareaInput('desc2')) 94 ->setLabel('__Clock-out note__') 95 ->setValue($m->getClockOutDescription() ?? '') 96 ); 92 97 93 98 $form … … 96 101 ; 97 102 98 $form-> withButton('submit',new Button('__Save changes__'));103 $form->addButton(new Button('__Save changes__')); 99 104 100 $form = $form->grab($request); 101 102 if ($form->isSubmitted()) { 103 $vs = $form->getValues(); 104 105 $vs = $form->grab($request); 106 if ($vs) { 105 107 if ($form->isValid()) { 106 108 $clockIn = $clockIn->setTime(0, 0)->modify('+' . $vs['t1'] . ' seconds'); -
plaintracker/trunk/module/web-admin-record/src/Controller/AdminRecordPageConfigController.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Http\Redirect; 7 use Plainware\Ui\Component\Form ;7 use Plainware\Ui\Component\Form\Form; 8 8 use Plainware\Ui\Component\Form\DatePeriodInput; 9 9 use Plainware\Ui\Component\Form\Button; … … 17 17 18 18 $v = $request->getQueryParam('-interval') ?? '1w'; 19 $form->withInput('interval', new DatePeriodInput()) 20 ->setLabel('__Display interval__') 21 ->setValue($v) 22 ; 19 $form->add( 20 (new DatePeriodInput('interval')) 21 ->setLabel('__Display interval__') 22 ->setValue($v) 23 ); 23 24 24 $form-> withButton('submit',new Button('__Apply configuration__'));25 $form->addButton(new Button('__Apply configuration__')); 25 26 26 $form = $form->grab($request); 27 28 if ($form->isSubmitted()) { 29 $vs = $form->getValues(); 30 27 $vs = $form->grab($request); 28 if ($vs) { 31 29 if ($form->isValid()) { 32 30 return (new Redirect('..', ['interval' => $vs['interval']])) -
plaintracker/trunk/module/web-admin-record/src/Controller/AdminRecordPageController.php
r3403602 r3407122 154 154 ; 155 155 156 $menu = new Menu(); 157 $menu->add(25, $linkPrev); 158 $menu->add(50, $labelCurrent); 159 $menu->add(75, $linkNext); 156 $menu = (new Menu()) 157 ->add($linkPrev) 158 ->add($labelCurrent) 159 ->add($linkNext) 160 ; 160 161 161 162 return $menu; -
plaintracker/trunk/module/web-admin-setting/src/Controller/DatetimePageController.php
r3403602 r3407122 8 8 use Plainware\DateTime\DateTimeFormatter; 9 9 use Plainware\Ui\Component\Main; 10 use Plainware\Ui\Component\Form; 10 use Plainware\Ui\Component\Card; 11 use Plainware\Ui\Component\Form\Form; 11 12 use Plainware\Ui\Component\Form\SelectInput; 12 13 use Plainware\Ui\Component\Form\TextInput; … … 28 29 { 29 30 $form = new Form(); 30 // $form->withInput('')31 31 32 32 $try = new \DateTimeImmutable(); … … 43 43 } 44 44 $v = $this->repo->get('datetime_date_format'); 45 $form->withInput('datetime_date_format', new SelectInput($option)) 45 $form->add( 46 (new SelectInput('datetime_date_format')) 47 ->setOptions($option) 46 48 ->setLabel('__Date format__') 47 49 ->setValue($v) 48 ;50 ); 49 51 50 52 /* time format */ … … 62 64 } 63 65 $v = $this->repo->get('datetime_time_format'); 64 $form->withInput('datetime_time_format', new SelectInput($option)) 66 $form->add( 67 (new SelectInput('datetime_time_format')) 68 ->setOptions($option) 65 69 ->setLabel('__Time format__') 66 70 ->setValue($v) 67 ;71 ); 68 72 69 73 /* week starts */ … … 75 79 } 76 80 $v = $this->repo->get('datetime_week_starts'); 77 $form->withInput('datetime_week_starts', new SelectInput($option)) 81 $form->add( 82 (new SelectInput('datetime_week_starts')) 83 ->setOptions($option) 78 84 ->setLabel('__Week starts on__') 79 85 ->setValue($v) 80 ;86 ); 81 87 82 88 /* timezone */ 83 89 $v = $this->timeFactory->getTimezone(); 84 90 $v = $v->getName(); 85 $form->withInput('datetime_timezone', new TextInput()) 86 ->setLabel('__Timezone__') 87 ->setValue($v) 88 ->setDisabled() 91 $form->add(new Card($v)) 92 ->withLabel('__Timezone__') 89 93 ; 90 94 91 $form->withButton('submit', new Button()) 92 ->setLabel('__Save__') 93 ; 95 $form->addButton(new Button('__Save__')); 94 96 95 $form->grab($request); 96 if ($form->isSubmitted()) { 97 $vs = $form->getValues(); 97 $vs = $form->grab($request); 98 if ($vs) { 98 99 if ($form->isValid()) { 99 100 $props = ['datetime_date_format', 'datetime_time_format', 'datetime_week_starts']; … … 108 109 } 109 110 110 $content = $form; 111 112 $ret = new Main($content); 111 $ret = new Main($form); 113 112 114 113 return $ret; -
plaintracker/trunk/module/web-admin-worker/src/Controller/AdminCreateWorkerPageController.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Http\Redirect; 7 use Plainware\Ui\Component\Form ;7 use Plainware\Ui\Component\Form\Form; 8 8 use Plainware\Ui\Component\Form\ContentInput; 9 9 use Plainware\Ui\Component\Form\RadioSetInput; … … 35 35 36 36 $v = (new Menu()) 37 ->add( 20,(new Link('./user'))->setLabel($wpUser)->withAttr('title', '__Click to change__'))37 ->add((new Link('./user'))->setLabel($wpUser)->withAttr('title', '__Click to change__')) 38 38 ; 39 $form->withInput('user', new ContentInput()) 40 ->setLabel('__WordPress user__') 41 ->setValue($v) 42 ; 39 $form->add($v)->withLabel('__WordPress user__'); 43 40 44 $form->withInput('phone', new TextInput()) 45 ->setLabel('__Phone number__') 46 ; 41 $form->add((new TextInput('phone'))->setLabel('__Phone number__')); 47 42 48 $form->withInput('desc', new TextareaInput()) 49 ->setLabel('__Description__') 50 ->setHelp('__Visible to admin only__') 51 ; 43 $form->add( 44 (new TextareaInput('desc')) 45 ->setLabel('__Description__') 46 ->addHelp('__Visible to admin only__') 47 ); 52 48 53 49 $option = ['..' => '__View workers__', '.' => '__Add another worker__']; 54 $form->withInput('next', new RadioSetInput($option)) 55 ->setLabel('__Next action__') 56 ->setValue(current(array_keys($option))) 57 ; 50 $form->add( 51 (new RadioSetInput('next')) 52 ->setLabel('__Next action__') 53 ->setOptions($option) 54 ->setValue(current(array_keys($option))) 55 ); 58 56 59 $form-> withButton('submit',new Button('__Add worker__'));57 $form->addButton(new Button('__Add worker__')); 60 58 61 $form = $form->grab($request); 62 63 if ($form->isSubmitted()) { 64 $vs = $form->getValues(); 65 59 $vs = $form->grab($request); 60 if ($vs) { 66 61 if ($form->isValid()) { 67 62 $m = $this->createWorkerAction->__invoke($wpUser->ID, $vs['phone'], $vs['desc']); -
plaintracker/trunk/module/web-admin-worker/src/Controller/AdminCreateWorkerSelectUserPageController.php
r3403602 r3407122 6 6 use Plainware\Http\Redirect; 7 7 use Plainware\Ui\Component\Link; 8 use Plainware\Ui\Component\ Container;8 use Plainware\Ui\Component\BlockList; 9 9 use Plainware\Ui\Component\Main; 10 10 use Plainware\Ui\Component\Menu; … … 32 32 if ($ms) { 33 33 $ret = new Menu(); 34 35 $i = 1;36 34 foreach ($ms as $m) { 37 $link = (new Link('..', ['user' => $m->ID])) 38 ->setLabel($m) 39 ; 40 $ret->add($i++, $link); 35 $link = (new Link('..', ['user' => $m->ID]))->setLabel($m); 36 $ret->add($link); 41 37 } 42 38 $ret->setVertical(); … … 45 41 } 46 42 47 48 $ret = (new Container()) 49 ->add(55, '<p>__You can add any user as a worker.__</p>') 50 ->add(56, $ret) 43 $ret = (new BlockList()) 44 ->add('__You can add any user as a worker.__') 45 ->add($ret) 51 46 ; 52 47 $ret = new Main($ret); -
plaintracker/trunk/module/web-admin-worker/src/Controller/AdminWorkerIdPageController.php
r3403602 r3407122 8 8 use Plainware\Ui\Component\Main; 9 9 use Plainware\Ui\Component\Link; 10 use Plainware\Ui\Component\Form ;10 use Plainware\Ui\Component\Form\Form; 11 11 use Plainware\Ui\Component\Form\TextInput; 12 12 use Plainware\Ui\Component\Form\RadioSetInput; … … 52 52 $m = $this->repo->getById($id); 53 53 54 $form = new Form( $request);54 $form = new Form(); 55 55 56 $form->withInput('email', new TextInput()) 57 ->setLabel('__Email address__') 58 ->setValue($m->getEmail()) 59 ->setDisabled() 60 ; 56 $form->add( 57 (new TextInput('email')) 58 ->setLabel('__Email address__') 59 ->setValue($m->getEmail()) 60 ->setDisabled() 61 ); 61 62 62 $form-> withInput('phone', new TextInput())63 ->setLabel('__Phone number__')64 ->setValue($m->getPhone())65 // ->setRequired()66 ;63 $form->add( 64 (new TextInput('phone')) 65 ->setLabel('__Phone number__') 66 ->setValue($m->getPhone()) 67 ); 67 68 68 $form->withInput('description', new TextareaInput()) 69 ->setLabel('__Description__') 70 ->setValue($m->getDescription()) 71 ; 69 $form->add( 70 (new TextareaInput('description')) 71 ->setLabel('__Description__') 72 ->setValue($m->getDescription()) 73 ); 72 74 73 75 $stateOptions = [ … … 75 77 WorkerState::archived()->getId() => WorkerState::archived() 76 78 ]; 77 $form->withInput('state', new RadioSetInput($stateOptions)) 78 ->setLabel('__Status__') 79 ->setValue($m->getState()->getId()) 80 ; 79 $form->add( 80 (new RadioSetInput('state')) 81 ->setOptions($stateOptions) 82 ->setLabel('__Status__') 83 ->setValue($m->getState()->getId()) 84 ); 81 85 82 $form-> withButton('submit',new Button('__Save changes__'));86 $form->addButton(new Button('__Save changes__')); 83 87 84 $form = $form->grab($request); 85 86 if ($form->isSubmitted()) { 87 $vs = $form->getValues(); 88 88 $vs = $form->grab($request); 89 if ($vs) { 89 90 if ($form->isValid()) { 90 91 $m = ($this->changePhone)($m, $vs['phone']); -
plaintracker/trunk/module/web-install/src/Controller/InstallController.php
r3403602 r3407122 7 7 use Plainware\Http\Request; 8 8 use Plainware\Http\Redirect; 9 use Plainware\Ui\Component\ SpacedContainer;9 use Plainware\Ui\Component\BlockList; 10 10 use Plainware\Ui\Component\Dl; 11 11 use Plainware\Ui\Component\Main; 12 12 use Plainware\Ui\Component\HtmlElement; 13 use Plainware\Ui\Component\Form ;13 use Plainware\Ui\Component\Form\Form; 14 14 use Plainware\Ui\Component\Form\Button; 15 15 use PlainTracker\Core\Action\CreateWorkerAction; … … 28 28 29 29 $form = new Form(); 30 $form-> withButton('submit',new Button('__Click to install__'));30 $form->addButton(new Button('__Click to install__')); 31 31 32 $form = $form->grab($request); 33 34 if ($form->isSubmitted() && $form->isValid()) { 32 $vs = $form->grab($request); 33 if ($vs && $form->isValid()) { 35 34 $this->migrator->up(); 36 35 … … 42 41 } 43 42 44 $ret = (new SpacedContainer())43 $ret = (new BlockList()) 45 44 ->add(new HtmlElement('h1', '__Installation__')) 46 45 ->add($info) -
plaintracker/trunk/module/web-install/src/Controller/UninstallController.php
r3403602 r3407122 7 7 use Plainware\Http\Request; 8 8 use Plainware\Http\Redirect; 9 use Plainware\Ui\Component\ SpacedContainer;9 use Plainware\Ui\Component\BlockList; 10 10 use Plainware\Ui\Component\Main; 11 use Plainware\Ui\Component\Form ;11 use Plainware\Ui\Component\Form\Form; 12 12 use Plainware\Ui\Component\Form\Button; 13 13 use Plainware\Ui\Component\Link; … … 22 22 { 23 23 $form = new Form(); 24 $form-> withButton('submit',new Button('__Click to uninstall__'));24 $form->addButton(new Button('__Click to uninstall__')); 25 25 26 $form = $form->grab($request); 27 28 if ($form->isSubmitted() && $form->isValid()) { 26 $vs = $form->grab($request); 27 if ($vs && $form->isValid()) { 29 28 $this->migrator->down(); 30 29 … … 32 31 } 33 32 34 $ret = (new SpacedContainer())33 $ret = (new BlockList()) 35 34 ->add('__This operation can not be undone.__') 36 35 ->add($form) -
plaintracker/trunk/module/web-promo/boot.php
r3403602 r3407122 21 21 $pageMap 22 22 ->when('admin') 23 ->addMenuItem((new Link('./promo')) 23 ->addMenuItem( 24 (new Link('./promo')) 24 25 ->setLabel('__Pro version__')->prependIcon('☆'), 25 26 95 26 )27 ) 27 28 28 29 ->when('admin/promo') -
plaintracker/trunk/module/web-promo/src/Controller/PromoPageController.php
r3403602 r3407122 23 23 { 24 24 ob_start(); 25 ?>25 ?> 26 26 27 27 <style> … … 35 35 <section> 36 36 <div class="pw-grid-3"> 37 <?php if( 0 ): ?>37 <?php if (0) : ?> 38 38 <div class="pw-box"> 39 39 <h3 class="pw-inline-list"> … … 44 44 </p> 45 45 </div> 46 <?php endif; ?>46 <?php endif; ?> 47 47 48 48 <div class="pw-box"> … … 51 51 </h3> 52 52 <p> 53 You can export your time log records to a CSV file, then you you can further process the data with Microsoft Excel, LibreOffice Calc, or other spreadsheets application. 53 You can export your time log records to a CSV file, 54 then you you can further process the data with Microsoft Excel, 55 LibreOffice Calc, or other spreadsheets application. 54 56 </p> 55 57 </div> … … 60 62 </h3> 61 63 <p> 62 You can view the total number of time records and work duration within the selected date period with breakdown by worker. 64 You can view the total number of time records and work duration within the selected 65 date period with breakdown by worker. 63 66 </p> 64 67 </div> … … 85 88 </section> 86 89 87 <?php90 <?php 88 91 $ret = ob_get_clean(); 89 92 -
plaintracker/trunk/module/web-user-role-switcher/src/Html/UserRoleSwitcherWidget.php
r3403602 r3407122 42 42 } 43 43 44 $i = 1;45 44 $ret = new Menu(); 46 45 foreach ($items as $item_) { 47 $ret->add($i ++, $item_);46 $ret->add($item_); 48 47 } 49 48 -
plaintracker/trunk/module/web-worker-clock/src/Controller/WorkerClockInPageController.php
r3403602 r3407122 6 6 use Plainware\Http\Redirect; 7 7 use Plainware\DateTime\TimeFactory; 8 use Plainware\Ui\Component\Form ;8 use Plainware\Ui\Component\Form\Form; 9 9 use Plainware\Ui\Component\Form\TextareaInput; 10 10 use Plainware\Ui\Component\Form\Button; … … 47 47 48 48 $form = new Form(); 49 $form-> withInput('desc', (new TextareaInput())->setLabel('__Clock-in note__'));50 $form-> withButton('submit',(new Button('__Clock in__'))->prependIcon('→'));49 $form->add((new TextareaInput('desc'))->setLabel('__Clock-in note__')); 50 $form->addButton((new Button('__Clock in__'))->prependIcon('→')); 51 51 52 $form->grab($request); 53 if ($form->isSubmitted()) { 54 $vs = $form->getValues(); 52 $vs = $form->grab($request); 53 if ($vs) { 55 54 if ($form->isValid()) { 56 55 $desc = $vs['desc']; -
plaintracker/trunk/module/web-worker-clock/src/Controller/WorkerClockOutPageController.php
r3403602 r3407122 6 6 use Plainware\Http\Redirect; 7 7 use Plainware\DateTime\TimeFactory; 8 use Plainware\Ui\Component\Form ;8 use Plainware\Ui\Component\Form\Form; 9 9 use Plainware\Ui\Component\Form\TextareaInput; 10 10 use Plainware\Ui\Component\Form\Button; … … 48 48 49 49 $form = new Form(); 50 $form-> withInput('desc', (new TextareaInput())->setLabel('__Clock-out note__'));51 $form-> withButton('submit',(new Button('__Clock out__'))->prependIcon('→'));50 $form->add((new TextareaInput('desc'))->setLabel('__Clock-out note__')); 51 $form->addButton((new Button('__Clock out__'))->prependIcon('→')); 52 52 53 $form->grab($request); 54 if ($form->isSubmitted()) { 55 $vs = $form->getValues(); 53 $vs = $form->grab($request); 54 if ($vs) { 56 55 if ($form->isValid()) { 57 56 $this->clockOutAction->__invoke($worker, $now, $vs['desc']); -
plaintracker/trunk/plaintracker.php
r3403602 r3407122 4 4 Plugin URI: https://www.plaintracker.net/ 5 5 Description: A time clock plugin. Workers clock in and out, managers keep track of their time. 6 Version: 3.1. 06 Version: 3.1.1 7 7 Author: plainware.com 8 8 Author URI: https://www.plainware.com/ -
plaintracker/trunk/readme.txt
r3403602 r3407122 3 3 Tags: timeclock, employee, attendance, clock, volunteer 4 4 License: GPLv2 or later 5 Stable tag: 3.1. 05 Stable tag: 3.1.1 6 6 Requires at least: 4.8 7 7 Tested up to: 6.8 … … 68 68 69 69 == Changelog == 70 71 = 3.1.1 (2025-12-01) = 72 * Clean up some code related to web form controls. 70 73 71 74 = 3.1.0 (2025-11-26) = -
plaintracker/trunk/vendor/plainware/http/src/Server.php
r3403602 r3407122 25 25 26 26 return $this; 27 } 28 29 public function getPrefix(): string 30 { 31 return $this->prefix; 27 32 } 28 33 -
plaintracker/trunk/vendor/plainware/rest/src/Ui/Renderer/OpenApiInfoRenderer.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\ Container;6 use Plainware\Ui\Component\BlockList; 7 7 use Plainware\Ui\Component\Section; 8 8 use Plainware\Ui\Component\Table; … … 22 22 $data = YamlParser::YAMLLoadString($yamlCode); 23 23 24 $ret = new Container(); 25 26 $i = 1; 24 $ret = (new BlockList())->setSpacing(3); 25 27 26 foreach ($data['paths'] as $path => $pathMethods) { 28 27 foreach ($pathMethods as $method => $methodInfo) { 29 $ret_ = new Container();28 $ret_ = (new BlockList())->setSpacing(1); 30 29 31 30 $fullPath = $rootUri . $path; … … 33 32 $label->add(new HtmlElement('h3', strtoupper($method))); 34 33 $label->add(new HtmlElement('h3', $fullPath)); 35 $ret_->add( 10,$label);36 $ret_->add( 15,$methodInfo['description']);34 $ret_->add($label); 35 $ret_->add($methodInfo['description']); 37 36 38 37 $allParameters = $methodInfo['parameters'] ?? []; … … 42 41 $parameters['header'] = array_filter($allParameters, fn($e) => ('header' === $e['in'])); 43 42 44 $j = 25;45 43 foreach ($parameters as $in => $thisParameters) { 46 44 if (!$thisParameters) { … … 86 84 } 87 85 $params->withCell($i, 'description')->setContent($descriptionContent); 86 88 87 $i++; 89 88 } 90 89 91 $ret_->add($ j++, $params);90 $ret_->add($params); 92 91 } 93 92 … … 99 98 $requestInfo->withHeadCell('head', 'example')->setContent('__Example__'); 100 99 101 $i = 1;102 100 foreach ($requestBodyContent as $type => $typeArray) { 103 101 $schema = $typeArray['schema']; … … 144 142 ]) 145 143 ; 146 147 $i++; 148 } 149 150 $ret_->add($j++, $requestInfo); 144 } 145 146 $ret_->add($requestInfo); 151 147 } 152 148 … … 158 154 $params->withHeadCell('head', 'example')->setContent('__Example__'); 159 155 160 $i = 1;161 156 foreach ($methodInfo['responses'] as $code => $pa) { 162 157 $nameContent = ''; … … 199 194 $params->withCell($i, 'description')->setContent($descriptionContent); 200 195 $params->withCell($i, 'example')->setContent($exampleContent); 201 202 $i++; 203 } 204 205 $ret_->add(35, $params); 196 } 197 198 $ret_->add($params); 206 199 } 207 200 208 $ret->add($ i++, new Section($ret_));201 $ret->add($ret_); 209 202 } 210 203 } -
plaintracker/trunk/vendor/plainware/ui-wordpress/assets/admin.css
r3403602 r3407122 13 13 /* #pw2 td:not([role=menu]) menu > li + li { border-top: #c3c3c3 1px solid; padding-top: .25rem; margin-top: .25rem; } */ 14 14 #pw2 td a, #pw2 th a {text-decoration: underline;} 15 16 15 17 16 @media (min-width: 48em) { -
plaintracker/trunk/vendor/plainware/ui-wordpress/src/Renderer/AdminMainMenuRenderer.php
r3403602 r3407122 66 66 } 67 67 $i++; 68 }69 70 $wrappers = $el->getWrappers();71 foreach ($wrappers as $wrapper) {72 $tabMenu->wrapBy($wrapper);73 68 } 74 69 -
plaintracker/trunk/vendor/plainware/ui/assets/core.css
r3403602 r3407122 206 206 /* #pw2 .pw-block-list > * + * {margin-top: .25em;} */ 207 207 208 /* inline list */209 #pw2 .pw-inline-list {list-style-type: none;}210 #pw2 .pw-inline-list {display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: center; gap: 0.5em;}211 #pw2 .pw-inline-flex {display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: start; gap: 1rem;}212 #pw2 .pw-inline-flex > * { margin: 0; }213 #pw2 .pw-valign-top.pw-inline-list {align-items: start;}214 #pw2 .pw-inline-list img {display: block;}215 216 208 @media (min-width: 48em) { 217 209 #pw2 .pw-col-inline-flex {display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: start; gap: 1rem;} … … 433 425 /* #pw2 .pw-footer-pagemenu {margin: .5em 0 0 0;} */ 434 426 435 #pw2 label[for] {display: block; width: 100%; padding: 0; margin: 0;} 436 #pw2 table label {display: block; width: 100%;} 427 /* #pw2 label[for] {display: block; width: 100%; padding: 0; margin: 0;} */ 428 /* #pw2 table label {display: block; width: 100%;} */ 437 429 438 430 /* #pw2 label > span {display: block; padding: .5em 0;} */ 439 431 /* #pw2 td[style] span:not[style] {background-color: transparent;} */ 432 433 /* form */ 434 #pw2 label[for] {display: block; width: 100%; padding: 0; margin: 0;} 435 /* #pw2 input[type=checkbox], #pw2 input[type=radio] {margin: 0; padding: 0;} */ 436 437 #pw2 .pw-form-row {} 438 #pw2 .pw-form-hori .pw-form-row + .pw-form-row, #pw2 .pw-form-vert .pw-form-row + .pw-form-row {margin-top: .75em;} 439 440 @media (min-width: 48em) { 441 #pw2 .pw-form-hori .pw-form-label-content {display: grid; grid-template-columns: 12rem 1fr; gap: 0; align-items: start;} 442 #pw2 .pw-form-hori .pw-form-label-content > :first-child {text-align: end; margin: 0; padding: .5em; overflow: hidden;} 443 #pw2 .pw-form-hori .pw-form-emptylabel-content {margin-inline-start: 12rem;} 444 } 445 446 #pw2 label.pw-wrapping-label {padding: .5em 0; display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: center; gap: .25em;} 447 448 #pw2 .pw-inline-list img, #pw2 .pw-inline-list input {display: block;} 449 450 #pw2 .pw-form-inline .pw-form-body, 451 #pw2 .pw-form-inline .pw-form-label-content {display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: center;} 452 #pw2 .pw-form-inline .pw-form-body {gap: .5em;} 453 #pw2 .pw-form-inline .pw-form-label-content {gap: .25em;} 454 455 #pw2 .pw-form-vert .pw-form-label-content > :first-child {margin-bottom: .25em;} 456 457 /* block list */ 458 #pw2 .pw-block-list {list-style-type: none; display: block;} 459 #pw2 .pw-block-list > div + div {margin-top: .5em;} 460 #pw2 .pw-block-list.pw-spacing-1 > div + div {margin-top: .25em;} 461 #pw2 .pw-block-list.pw-spacing-3 > div + div {margin-top: 1em;} 462 #pw2 .pw-block-list.pw-spacing-0 > div + div {margin-top: 0;} 463 464 /* inline list */ 465 #pw2 .pw-inline-list {list-style-type: none;} 466 #pw2 .pw-inline-list {display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: center; gap: .5em;} 467 #pw2 .pw-inline-list.pw-spacing-1 {gap: .25em;} 468 #pw2 .pw-inline-list.pw-spacing-3 {gap: 1em;} 469 #pw2 .pw-inline-list.pw-spacing-0 {gap: 0;} 470 471 #pw2 .pw-inline-flex {display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: start; gap: 1rem;} 472 #pw2 .pw-inline-flex > * { margin: 0; } -
plaintracker/trunk/vendor/plainware/ui/boot.php
r3403602 r3407122 22 22 $app->onBoot(Ui::class, function ($ui) { 23 23 $ui 24 ->renderer(Component\LabelRow::class, Renderer\LabelRowRenderer::class) 25 ->renderer(Component\Form\Form::class, Renderer\Form\FormRenderer::class) 26 ->renderer(Component\Form\Button::class, Renderer\Form\ButtonRenderer::class) 27 ->renderer(Component\Form\AbstractInput::class, Renderer\Form\InputRenderer::class) 28 ->renderer(Component\Form\TextInput::class, Renderer\Form\TextInputRenderer::class) 29 ->renderer(Component\Form\NumberInput::class, Renderer\Form\NumberInputRenderer::class) 30 ->renderer(Component\Form\TextareaInput::class, Renderer\Form\TextareaInputRenderer::class) 31 ->renderer(Component\Form\PasswordInput::class, Renderer\Form\PasswordInputRenderer::class) 32 ->renderer(Component\Form\SelectInput::class, Renderer\Form\SelectInputRenderer::class) 33 ->renderer(Component\Form\ColorInput::class, Renderer\Form\ColorInputRenderer::class) 34 ->renderer(Component\Form\ColorPickerInput::class, Renderer\Form\ColorPickerInputRenderer::class) 35 ->renderer(Component\Form\CheckboxInput::class, Renderer\Form\CheckboxInputRenderer::class) 36 ->renderer(Component\Form\CheckboxSetInput::class, Renderer\Form\CheckboxSetInputRenderer::class) 37 ->renderer(Component\Form\RadioInput::class, Renderer\Form\RadioInputRenderer::class) 38 ->renderer(Component\Form\RadioSetInput::class, Renderer\Form\RadioSetInputRenderer::class) 39 ->renderer(Component\Form\DateInput::class, Renderer\Form\DateInputRenderer::class) 40 ->renderer(Component\Form\DatePeriodInput::class, Renderer\Form\DatePeriodInputRenderer::class) 41 ->renderer(Component\Form\TimeInput::class, Renderer\Form\TimeInputRenderer::class) 42 43 ->renderer(Component\Collection::class, Renderer\CollectionRenderer::class) 44 24 45 ->renderer(Component\AbstractTag::class, Renderer\HtmlElementRenderer::class) 25 46 ->renderer(Component\Main::class, Renderer\MainRenderer::class) 26 47 // ->renderer(Component\Main::class, Renderer\PrintViewMainRendererDecorator::class) 48 ->renderer(Component\Card::class, Renderer\CardRenderer::class) 27 49 ->renderer(Component\Link::class, Renderer\LinkRenderer::class) 28 50 ->renderer(Component\Details::class, Renderer\DetailsRenderer::class) 29 51 ->renderer(Component\Breadcrumbs::class, Renderer\BreadcrumbsRenderer::class) 30 52 ->renderer(Component\Table::class, Renderer\TableRenderer::class) 31 ->renderer(Component\Container::class, Renderer\ContainerRenderer::class)32 53 ->renderer(Component\Section::class, Renderer\SectionRenderer::class) 33 54 ->renderer(Component\StartEnd::class, Renderer\StartEndRenderer::class) … … 37 58 ->renderer(Component\Menu::class, Renderer\MenuRenderer::class) 38 59 ->renderer(Component\InlineList::class, Renderer\InlineListRenderer::class) 60 ->renderer(Component\BlockList::class, Renderer\BlockListRenderer::class) 39 61 ->renderer(Component\TabMenu::class, Renderer\TabMenuRenderer::class) 40 62 ->renderer(Component\Grid::class, Renderer\GridRenderer::class) … … 42 64 ->renderer(Component\Partial::class, Renderer\PartialRenderer::class) 43 65 ->renderer(Component\TabbedMenu::class, Renderer\TabbedMenuRenderer::class) 44 ->renderer(Component\SpacedContainer::class, Renderer\SpacedContainerRenderer::class)45 ->renderer(Component\Form::class, Renderer\FormRenderer::class)46 ->renderer(Component\Form\Button::class, Renderer\Form\ButtonRenderer::class)47 ->renderer(Component\Form\TextInput::class, Renderer\Form\TextInputRenderer::class)48 ->renderer(Component\Form\PasswordInput::class, Renderer\Form\PasswordInputRenderer::class)49 ->renderer(Component\Form\HiddenInput::class, Renderer\Form\HiddenInputRenderer::class)50 ->renderer(Component\Form\TextareaInput::class, Renderer\Form\TextareaInputRenderer::class)51 ->renderer(Component\Form\NumberInput::class, Renderer\Form\NumberInputRenderer::class)52 ->renderer(Component\Form\DateInput::class, Renderer\Form\DateInputRenderer::class)53 ->renderer(Component\Form\DatePeriodInput::class, Renderer\Form\DatePeriodInputRenderer::class)54 ->renderer(Component\Form\TimeInput::class, Renderer\Form\TimeInputRenderer::class)55 ->renderer(Component\Form\CheckboxInput::class, Renderer\Form\CheckboxInputRenderer::class)56 ->renderer(Component\Form\RadioInput::class, Renderer\Form\RadioInputRenderer::class)57 ->renderer(Component\Form\SelectInput::class, Renderer\Form\SelectInputRenderer::class)58 ->renderer(Component\Form\DateTimeInput::class, Renderer\Form\DateTimeInputRenderer::class)59 ->renderer(Component\Form\DateFromPeriodInput::class, Renderer\Form\DateFromPeriodInputRenderer::class)60 ->renderer(Component\Form\ColorPickerInput::class, Renderer\Form\ColorPickerInputRenderer::class)61 ->renderer(Component\Form\CheckboxSetInput::class, Renderer\Form\CheckboxSetInputRenderer::class)62 ->renderer(Component\Form\RadioSetInput::class, Renderer\Form\RadioSetInputRenderer::class)63 ->renderer(Component\Form\ContentInput::class, Renderer\Form\ContentInputRenderer::class)64 ->renderer(Component\Form\TimeRangeInput::class, Renderer\Form\TimeRangeInputRenderer::class)65 66 ; 66 67 }); -
plaintracker/trunk/vendor/plainware/ui/src/Component/AbstractTag.php
r3403602 r3407122 15 15 { 16 16 if (null !== $content) { 17 $th his->append($content);17 $this->append($content); 18 18 } 19 } 20 21 public function withTag(string $tag): self 22 { 23 $ret = clone $this; 24 $ret->tag = $tag; 25 26 return $ret; 19 27 } 20 28 … … 32 40 33 41 public function withAttr(string $name, $value): self 42 { 43 return $this->setAttr($name, $value); 44 } 45 46 public function setAttr(string $name, $value): self 34 47 { 35 48 if ('class' === $name) { … … 83 96 } 84 97 85 public function append($el): self98 final public function append($el): self 86 99 { 87 100 $this->children[] = $el; -
plaintracker/trunk/vendor/plainware/ui/src/Component/Breadcrumbs.php
r3403602 r3407122 6 6 { 7 7 private array $items = []; 8 private array $wrappers = [];9 8 10 9 public function __construct(array $items = []) … … 26 25 return $this->items; 27 26 } 28 29 public function wrapBy(HtmlElement $el): self30 {31 $this->wrappers[] = $el;32 33 return $this;34 }35 36 public function getWrappers(): array37 {38 return $this->wrappers;39 }40 27 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/AbstractInput.php
r3403602 r3407122 3 3 namespace Plainware\Ui\Component\Form; 4 4 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\HtmlElement; 5 7 use Plainware\Ui\Component\AbstractTag; 6 use Plainware\Ui\Component\Form\InputInterface;7 8 8 9 abstract class AbstractInput extends AbstractTag implements InputInterface 9 10 { 10 private string $name = ''; 11 private $value = null; 11 private string $name; 12 private array $errors = []; 13 private array $helps = []; 12 14 private $label = null; 13 private $help = ''; 14 private array $errors = []; 15 private bool $isDisabled = false; 16 private bool $isRequired = false; 17 private $isRequiredLabel = null; 15 private bool $required = false; 16 private $requiredLabel = null; 17 private bool $disabled = false; 18 18 19 public function isBasic(): bool 19 abstract public function grab(Request $request); 20 21 final public function __construct(string $name) 20 22 { 21 return false; 23 $this->setName($name); 24 } 25 26 public function setName(string $v): self 27 { 28 $this->name = $v; 29 30 return $this; 22 31 } 23 32 … … 25 34 { 26 35 return $this->name; 27 }28 29 public function setName(string $name): self30 {31 $this->name = $name;32 33 return $this;34 }35 36 public function getValue()37 {38 return $this->value;39 }40 41 public function setValue($value): self42 {43 $this->value = $value;44 45 return $this;46 }47 48 public function getLabel()49 {50 return $this->label;51 }52 53 public function setLabel($label): self54 {55 $this->label = $label;56 57 return $this;58 36 } 59 37 … … 70 48 } 71 49 72 public function setDisabled(bool $on = true): self50 public function addHelp($help): self 73 51 { 74 $this-> isDisabled = $on;52 $this->helps[] = $help; 75 53 76 54 return $this; 77 55 } 78 56 79 public function isDisabled(): bool57 public function getHelps(): array 80 58 { 81 return $this-> isDisabled;59 return $this->helps; 82 60 } 83 61 84 public function set Required($isRequiredLabel = '__Required field__'): self62 public function setLabel($v): self 85 63 { 86 if (false === $isRequiredLabel) { 87 $this->isRequired = false; 88 $this->isRequiredLabel = ''; 89 } else { 90 $this->isRequired = true; 91 $this->isRequiredLabel = $isRequiredLabel; 92 } 64 $this->label = $v; 93 65 94 66 return $this; 95 67 } 96 68 69 public function getLabel() 70 { 71 return $this->label; 72 } 73 97 74 public function isRequired(): bool 98 75 { 99 return $this->isRequired; 76 return $this->required; 77 } 78 79 public function setRequired($label = '__Required field__'): self 80 { 81 $this->required = true; 82 $this->requiredLabel = $label; 83 84 return $this; 100 85 } 101 86 102 87 public function getRequiredLabel() 103 88 { 104 return $this-> isRequiredLabel;89 return $this->requiredLabel; 105 90 } 106 91 107 public function setHelp($help): self92 public function isDisabled(): bool 108 93 { 109 $this->help = $help; 94 return $this->disabled; 95 } 96 97 public function setDisabled(bool $v = true): self 98 { 99 $this->disabled = $v; 110 100 111 101 return $this; 112 102 } 113 114 public function getHelp()115 {116 return $this->help;117 }118 103 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/CheckboxInput.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface;8 7 9 class CheckboxInput extends AbstractInput implements InputInterface8 class CheckboxInput extends AbstractInput 10 9 { 11 private bool $checked = false; 10 private bool $value = false; 11 private string $htmlValue = '1'; 12 12 13 public function __construct()13 public function grab(Request $request): bool 14 14 { 15 $this->setValue(1); 16 } 17 18 public function isBasic(): bool 19 { 20 return true; 21 } 22 23 public function grab(Request $request) 24 { 25 $ret = $request->getPostParam($this->getName()) ?? false; 15 $postedValue = $request->getPostParam($this->getName()); 16 $ret = (null === $postedValue) ? false : true; 26 17 27 18 return $ret; 28 19 } 29 20 30 public function set Checked(bool $checked = true): self21 public function setValue(bool $v): self 31 22 { 32 $this-> checked = $checked;23 $this->value = $v; 33 24 34 25 return $this; 35 26 } 36 27 37 public function isChecked(): bool28 public function getValue(): bool 38 29 { 39 return $this->checked; 30 return $this->value; 31 } 32 33 public function setHtmlValue(string $v): self 34 { 35 $this->htmlValue = $v; 36 37 return $this; 38 } 39 40 public function getHtmlValue(): string 41 { 42 return $this->htmlValue; 40 43 } 41 44 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/CheckboxSetInput.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\Form\ AbstractInput;7 use Plainware\Ui\Component\Form\ InputInterface;6 use Plainware\Ui\Component\Form\CheckboxInput; 7 use Plainware\Ui\Component\Form\AbstractFieldset; 8 8 9 class CheckboxSetInput extends Abstract Input implements InputInterface9 class CheckboxSetInput extends AbstractFieldset 10 10 { 11 11 private array $options = []; 12 private bool $isVertical = false; 13 14 public function __construct(array $options) 15 { 16 $this->options = $options; 17 $this->setValue([]); 18 } 19 20 public function isBasic(): bool 21 { 22 return false; 23 } 24 25 public function grab(Request $request) 26 { 27 $ret = $request->getPostParam($this->getName()) ?? []; 28 29 return $ret; 30 } 12 private array $value = []; 31 13 32 14 public function getOptions(): array … … 35 17 } 36 18 37 public function set Vertical(bool $on = true): self19 public function setOptions(array $v): self 38 20 { 39 $this-> isVertical = $on;21 $this->options = $v; 40 22 41 23 return $this; 42 24 } 43 25 44 public function isVertical(): bool26 public function grab(Request $request): array 45 27 { 46 return $this->isVertical; 28 $ret = $request->getPostParam($this->getName()) ?? []; 29 $ret = array_intersect($ret, array_keys($this->options)); 30 31 return $ret; 32 } 33 34 public function setValue(array $v): self 35 { 36 $this->value = array_intersect($v, array_keys($this->options)); 37 38 return $this; 39 } 40 41 public function getValue(): array 42 { 43 return $this->value; 47 44 } 48 45 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/ColorInput.php
r3403602 r3407122 3 3 namespace Plainware\Ui\Component\Form; 4 4 5 use Plainware\ Ui\Component\Form\TextInput;6 use Plainware\Ui\Component\Form\ InputInterface;5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\Form\AbstractInput; 7 7 8 class ColorInput extends TextInput implements InputInterface8 class ColorInput extends AbstractInput 9 9 { 10 public function __construct() 10 private string $value = '#cbe86b'; 11 12 public function grab(Request $request): ?string 11 13 { 12 $this->withAttr('type', 'color'); 13 $this->setValue('#cbe86b'); 14 return $request->getPostParam($this->getName()); 15 } 16 17 public function setValue(string $v): self 18 { 19 $this->value = $v; 20 21 return $this; 22 } 23 24 public function getValue(): string 25 { 26 return $this->value; 14 27 } 15 28 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/DateInput.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface; 6 use Plainware\Ui\Component\Form\AbstractFieldset; 8 7 9 class DateInput extends Abstract Input implements InputInterface8 class DateInput extends AbstractFieldset 10 9 { 11 public function grab(Request $request) 10 private ?\DateTimeInterface $value = null; 11 12 public function grab(Request $request): ?\DateTimeInterface 12 13 { 13 14 $ret = $request->getPostParam($this->getName()); 15 $ret = (null !== $ret) ? new \DateTimeImmutable($ret) : null; 14 16 15 17 return $ret; 16 18 } 19 20 public function setValue(?\DateTimeInterface $v): self 21 { 22 $this->value = $v; 23 24 return $this; 25 } 26 27 public function getValue(): ?\DateTimeInterface 28 { 29 return $this->value; 30 } 17 31 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/DatePeriodInput.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Time\DatePeriod; 7 use Plainware\Ui\Component\Form\AbstractInput; 8 use Plainware\Ui\Component\Form\InputInterface; 6 use Plainware\Ui\Component\Form\AbstractFieldset; 9 7 use Plainware\Ui\Component\Form\NumberInput; 10 8 use Plainware\Ui\Component\Form\SelectInput; 11 9 12 class DatePeriodInput extends Abstract Input implements InputInterface10 class DatePeriodInput extends AbstractFieldset 13 11 { 14 private NumberInput $inputQty;15 private SelectInput $inputUnit;12 private ?NumberInput $inputQty = null; 13 private ?SelectInput $inputUnit = null; 16 14 17 15 private const RANGE_DAY = 'day'; … … 19 17 private const RANGE_MONTH = 'month'; 20 18 private array $range = [self::RANGE_WEEK, 1]; 21 private int $d = 0; 22 23 public function __construct() 24 { 25 $this->inputQty = new NumberInput(); 26 $options = ['d' => '__Day__', 'w' => '__Week__', 'm' => '__Month__']; 27 $this->inputUnit = new SelectInput($options); 28 } 29 30 public function setValue($v): self 31 { 32 $qty = (int) substr($v, 0, -1); 33 $unit = substr($v, -1); 34 35 $this->inputQty->setValue($qty); 36 $this->inputUnit->setValue($unit); 37 38 return parent::setValue($v); 39 } 40 41 public function grab(Request $request) 42 { 43 $name = $this->getName(); 44 45 $retQty = $this->getInputQty() 46 ->setName($name . '_qty') 47 ->grab($request) 48 ; 49 50 $retUnit = $this->getInputUnit() 51 ->setName($name . '_unit') 52 ->grab($request) 53 ; 54 55 $ret = $retQty . $retUnit; 56 57 return $ret; 58 } 19 // private int $d = 0; 20 private string $value = '1w'; 59 21 60 22 public function getInputQty(): NumberInput 61 23 { 24 if (null === $this->inputQty) { 25 $name = $this->getName(); 26 $this->inputQty = new NumberInput($name . '_qty'); 27 } 28 62 29 return $this->inputQty; 63 30 } … … 65 32 public function getInputUnit(): SelectInput 66 33 { 34 if (null === $this->inputUnit) { 35 $name = $this->getName(); 36 $options = ['d' => '__Day__', 'w' => '__Week__', 'm' => '__Month__']; 37 $this->inputUnit = (new SelectInput($name . '_unit'))->setOptions($options); 38 } 39 67 40 return $this->inputUnit; 41 } 42 43 public function setValue(string $v): self 44 { 45 $this->value = $v; 46 47 $qty = (int) substr($v, 0, -1); 48 $unit = substr($v, -1); 49 50 $this->getInputQty()->setValue($qty); 51 $this->getInputUnit()->setValue($unit); 52 53 return $this; 54 } 55 56 public function getValue(): string 57 { 58 return $this->value; 59 } 60 61 public function grab(Request $request) 62 { 63 $retQty = $this->getInputQty()->grab($request); 64 $retUnit = $this->getInputUnit()->grab($request); 65 66 $ret = $retQty . $retUnit; 67 68 return $ret; 68 69 } 69 70 -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/InputInterface.php
r3403602 r3407122 7 7 interface InputInterface 8 8 { 9 public function isBasic(): bool; 10 public function isRequired(): bool; 11 public function setRequired($isRequiredLabel = '__Required field__'): self; 12 public function getRequiredLabel(); 9 public function setName(string $name): self; 13 10 public function getName(): string; 14 public function setName(string $name): self;15 public function getLabel();16 public function setLabel($label): self;17 public function getValue();18 public function setValue($value): self;19 11 public function grab(Request $request); 20 12 public function addError($error): self; 21 13 public function getErrors(): array; 22 public function setHelp($help): self; 23 public function getHelp(); 14 public function addHelp($help): self; 15 public function getHelps(): array; 16 public function setLabel($v): self; 17 public function getLabel(); 18 public function isRequired(): bool; 19 public function setRequired($label = '__Required field__'): self; 20 public function isDisabled(): bool; 21 public function setDisabled(bool $v = true): self; 24 22 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/NumberInput.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface;8 7 9 class NumberInput extends AbstractInput implements InputInterface8 class NumberInput extends AbstractInput 10 9 { 10 private ?int $value = null; 11 11 private float $min = 1; 12 12 private float $max = 99; 13 13 private float $step = 1; 14 14 15 public function isBasic(): bool15 public function grab(Request $request): ?int 16 16 { 17 return true;17 return (int) $request->getPostParam($this->getName()); 18 18 } 19 19 20 public function grab(Request $request)20 public function setValue(int $v): self 21 21 { 22 $ ret = $request->getPostParam($this->getName());22 $this->value = $v; 23 23 24 return $ret; 24 return $this; 25 } 26 27 public function getValue(): ?int 28 { 29 return $this->value; 25 30 } 26 31 -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/PasswordInput.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface;8 7 9 class PasswordInput extends AbstractInput implements InputInterface8 class PasswordInput extends AbstractInput 10 9 { 11 public function isBasic(): bool 10 private string $value = ''; 11 12 public function grab(Request $request): ?string 12 13 { 13 return true;14 return $request->getPostParam($this->getName()); 14 15 } 15 16 16 public function grab(Request $request)17 public function setValue(string $v): self 17 18 { 18 $ ret = $request->getPostParam($this->getName());19 $this->value = $v; 19 20 20 return $ret; 21 return $this; 22 } 23 24 public function getValue(): ?string 25 { 26 return $this->value; 21 27 } 22 28 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/RadioInput.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface;8 7 9 class RadioInput extends AbstractInput implements InputInterface8 class RadioInput extends AbstractInput 10 9 { 11 private bool $checked = false; 10 private bool $value = false; 11 private string $htmlValue = '1'; 12 12 13 public function isBasic(): bool13 public function grab(Request $request): bool 14 14 { 15 return true; 16 } 17 18 public function grab(Request $request) 19 { 20 $ret = $request->getPostParam($this->getName()) ?? false; 15 $postedValue = $request->getPostParam($this->getName()); 16 $ret = ($this->htmlValue === $postedValue) ? true : false; 21 17 22 18 return $ret; 23 19 } 24 20 25 public function set Checked(bool $checked = true): self21 public function setValue(bool $v): self 26 22 { 27 $this-> checked = $checked;23 $this->value = $v; 28 24 29 25 return $this; 30 26 } 31 27 32 public function isChecked(): bool28 public function getValue(): bool 33 29 { 34 return $this->checked; 30 return $this->value; 31 } 32 33 public function setHtmlValue(string $v): self 34 { 35 $this->htmlValue = $v; 36 37 return $this; 38 } 39 40 public function getHtmlValue(): string 41 { 42 return $this->htmlValue; 35 43 } 36 44 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/RadioSetInput.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\Form\ AbstractInput;7 use Plainware\Ui\Component\Form\ InputInterface;6 use Plainware\Ui\Component\Form\CheckboxInput; 7 use Plainware\Ui\Component\Form\AbstractFieldset; 8 8 9 class RadioSetInput extends Abstract Input implements InputInterface9 class RadioSetInput extends AbstractFieldset 10 10 { 11 private $options = []; 12 private array $optionAttr = []; 13 14 public function __construct(array $options) 15 { 16 $this->options = $options; 17 $this->setValue([]); 18 } 19 20 public function isBasic(): bool 21 { 22 return false; 23 } 24 25 public function grab(Request $request) 26 { 27 $ret = null; 28 $options = $this->getOptions(); 29 30 if (!$options) { 31 return $ret; 32 } 33 34 if (1 === count($options)) { 35 $ret = current(array_keys($options)); 36 } else { 37 $ret = $request->getPostParam($this->getName()) ?? null; 38 if (!isset($options[$ret])) { 39 $ret = null; 40 } 41 } 42 43 return $ret; 44 } 11 private array $options = []; 12 private ?string $value = null; 45 13 46 14 public function getOptions(): array … … 49 17 } 50 18 51 public function withOptionAttr($optionName, string $name, $value): self19 public function setOptions(array $v): self 52 20 { 53 $attr = $this->optionAttr[$optionName] ?? []; 54 55 if ('class' === $name) { 56 if (!isset($attr[$name])) { 57 $attr[$name] = []; 58 } 59 if (!is_array($attr[$name])) { 60 $attr[$name] = [$attr[$name] => $attr[$name]]; 61 } 62 $attr[$name][$value] = $value; 63 } else { 64 $attr[$name] = $value; 65 } 66 $this->optionAttr[$optionName] = $attr; 21 $this->options = $v; 67 22 68 23 return $this; 69 24 } 70 25 71 public function g etOptionAttr(string $optionName, string $name = '')26 public function grab(Request $request): ?string 72 27 { 73 return strlen($name) ? ($this->optionAttr[$optionName][$name] ?? null) : ($this->optionAttr[$optionName] ?? []); 28 $ret = $request->getPostParam($this->getName()); 29 if (!array_key_exists($ret, $this->options)) { 30 $ret = null; 31 } 32 33 return $ret; 34 } 35 36 public function setValue(?string $v): self 37 { 38 $this->value = array_key_exists($v, $this->options) ? $v : null; 39 40 return $this; 41 } 42 43 public function getValue(): ?string 44 { 45 return $this->value; 74 46 } 75 47 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/SelectInput.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface;8 7 9 class SelectInput extends AbstractInput implements InputInterface8 class SelectInput extends AbstractInput 10 9 { 11 private $options = []; 10 private ?string $value = ''; 11 private array $options = []; 12 12 13 public function __construct(array $options)13 public function setOptions(array $options): self 14 14 { 15 15 $this->options = $options; 16 17 return $this; 16 18 } 17 19 18 public function isBasic(): bool20 public function grab(Request $request): ?string 19 21 { 20 return true; 22 $ret = $request->getPostParam($this->getName()); 23 $this->setValue($ret); 24 25 return $ret; 21 26 } 22 27 23 public function grab(Request $request)28 public function setValue(?string $v): self 24 29 { 25 $ret = null; 26 $options = $this->getOptions(); 30 $this->value = $v; 27 31 28 if (!$options) { 29 return $ret; 30 } 32 return $this; 33 } 31 34 32 if (1 === count($options)) { 33 $ret = current(array_keys($options)); 34 } else { 35 $ret = $request->getPostParam($this->getName()) ?? null; 36 if (!isset($options[$ret])) { 37 $ret = null; 38 } 39 } 40 41 return $ret; 35 public function getValue(): ?string 36 { 37 return $this->value; 42 38 } 43 39 -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/TextInput.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface;8 7 9 class TextInput extends AbstractInput implements InputInterface8 class TextInput extends AbstractInput 10 9 { 11 public function isBasic(): bool 10 private string $value = ''; 11 12 public function grab(Request $request): ?string 12 13 { 13 return true;14 return $request->getPostParam($this->getName()); 14 15 } 15 16 16 public function grab(Request $request)17 public function setValue(string $v): self 17 18 { 18 $ ret = $request->getPostParam($this->getName());19 $this->value = $v; 19 20 20 return $ret; 21 return $this; 22 } 23 24 public function getValue(): string 25 { 26 return $this->value; 21 27 } 22 28 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/TextareaInput.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface;8 7 9 class TextareaInput extends AbstractInput implements InputInterface8 class TextareaInput extends AbstractInput 10 9 { 11 public function isBasic(): bool 10 private string $value = ''; 11 12 public function grab(Request $request): ?string 12 13 { 13 return true;14 return $request->getPostParam($this->getName()); 14 15 } 15 16 16 public function grab(Request $request)17 public function setValue(string $v): self 17 18 { 18 $ ret = $request->getPostParam($this->getName());19 $this->value = $v; 19 20 20 return $ret; 21 return $this; 22 } 23 24 public function getValue(): string 25 { 26 return $this->value; 21 27 } 22 28 } -
plaintracker/trunk/vendor/plainware/ui/src/Component/Form/TimeInput.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\Form\AbstractInput; 7 use Plainware\Ui\Component\Form\InputInterface; 6 use Plainware\Ui\Component\Form\AbstractFieldset; 8 7 9 class TimeInput extends Abstract Input implements InputInterface8 class TimeInput extends AbstractFieldset 10 9 { 10 private int $value = 0; 11 11 private int $step = 1; 12 12 13 public function grab(Request $request) 13 public function grab(Request $request): int 14 14 { 15 15 $name = $this->getName(); … … 19 19 $retH = $request->getPostParam($nameH); 20 20 $retM = $request->getPostParam($nameM); 21 21 22 $ret = ((int) $retH) * 60 * 60 + ((int) $retM) * 60; 22 23 23 24 return $ret; 25 } 26 27 public function setValue(int $v): self 28 { 29 $this->value = $v; 30 31 return $this; 32 } 33 34 public function getValue(): int 35 { 36 return $this->value; 24 37 } 25 38 -
plaintracker/trunk/vendor/plainware/ui/src/Component/HtmlElement.php
r3403602 r3407122 3 3 namespace Plainware\Ui\Component; 4 4 5 finalclass HtmlElement extends AbstractTag5 class HtmlElement extends AbstractTag 6 6 { 7 7 public function __construct(string $tag, ...$children) -
plaintracker/trunk/vendor/plainware/ui/src/Component/InlineList.php
r3403602 r3407122 6 6 { 7 7 private array $items = []; 8 private int $spacing = 2; 8 9 private bool $separateWithComma = false; 9 10 private bool $separateWithMiddot = false; … … 12 13 { 13 14 $this->items = $items; 15 } 16 17 public function setSpacing(int $v): self 18 { 19 if ($v < 0) { 20 $v = 0; 21 } 22 if ($v > 3) { 23 $v = 3; 24 } 25 $this->spacing = $v; 26 27 return $this; 28 } 29 30 public function getSpacing(): int 31 { 32 return $this->spacing; 14 33 } 15 34 -
plaintracker/trunk/vendor/plainware/ui/src/Component/Menu.php
r3403602 r3407122 3 3 namespace Plainware\Ui\Component; 4 4 5 use Plainware\Ui\Component\Link; 6 use Plainware\Ui\Component\Container; 5 class Menu 6 { 7 private array $items = []; 8 private bool $vertical = false; 7 9 8 class Menu extends Container 9 { 10 private bool $isVertical = false; 11 private $currentSlug = null; 12 13 public function addLink(int $order, string $to, array $params = []) 10 public function __construct(array $items = []) 14 11 { 15 $link = new Link($to, $params);16 17 return $this->add($order, $link);12 foreach ($items as $item) { 13 $this->add($item); 14 } 18 15 } 19 16 20 public function setCurrentSlug($currentSlug): self17 public function add($item) 21 18 { 22 $this->currentSlug = $currentSlug; 19 return $this->addWithOrder($item, 50); 20 } 21 22 public function addWithOrder($item, int $weight): self 23 { 24 $this->items[] = [$weight, $item]; 23 25 24 26 return $this; 25 27 } 26 28 27 public function get CurrentSlug()29 public function getItems(): array 28 30 { 29 return $this->currentSlug; 30 } 31 $ret = $this->items; 32 usort($ret, fn($a, $b) => ($a[0] - $b[0])); 33 $ret = array_column($ret, 1); 31 34 32 public function setVertical(bool $on = true): self 33 { 34 $this->isVertical = $on; 35 36 return $this; 35 return $ret; 37 36 } 38 37 39 38 public function isVertical(): bool 40 39 { 41 return $this->isVertical; 40 return $this->vertical; 41 } 42 43 public function setVertical(bool $v = true): self 44 { 45 $this->vertical = $v; 46 47 return $this; 42 48 } 43 49 } -
plaintracker/trunk/vendor/plainware/ui/src/Middleware/PageLayoutMiddleware.php
r3403602 r3407122 10 10 use Plainware\Ui\Ui; 11 11 use Plainware\Ui\PageMap; 12 use Plainware\Ui\Component\ SpacedContainer;12 use Plainware\Ui\Component\BlockList; 13 13 use Plainware\Ui\Component\Link; 14 14 use Plainware\Ui\Component\Section; … … 54 54 55 55 if ($errorMessages or $messages) { 56 $v = new SpacedContainer();56 $v = (new BlockList())->setSpacing(1); 57 57 foreach ($errorMessages as $msg) { 58 58 $msg = (new FlashMessage($msg))->setError(); … … 78 78 $sections = array_column($sections, 1); 79 79 80 $content = new SpacedContainer();80 $content = (new BlockList())->setSpacing(3); 81 81 foreach ($sections as $k => $v) { 82 82 $content->add($v); … … 131 131 $ret_ = new MainMenu(); 132 132 foreach ($items_ as $item) { 133 $ret_->add( 50,$item);133 $ret_->add($item); 134 134 } 135 135 $ret_->setCurrentPath($path); … … 303 303 $ret_ = new Menu(); 304 304 foreach ($items_ as $item) { 305 $ret_->add( 50,$item);305 $ret_->add($item); 306 306 } 307 307 $ret_ = $this->ui->render($ret_, $request); … … 322 322 $ret_ = new Menu(); 323 323 foreach ($items_ as $item) { 324 $ret_->add( 50,$item);324 $ret_->add($item); 325 325 } 326 326 $ret_ = $this->ui->render($ret_, $tabRootRequest); -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/BreadcrumbsRenderer.php
r3403602 r3407122 19 19 20 20 $ret = new Menu(); 21 $i_ = 1;22 21 foreach ($items as $item) { 23 22 if ($item instanceof Link) { 24 23 $item->prependIcon('←'); 25 24 } 26 $ret->add($i_++, $item); 27 } 28 29 $wrappers = $el->getWrappers(); 30 foreach (array_reverse($wrappers) as $wrapper) { 31 $ret = $wrapper->append($ret); 25 $ret->add($item); 32 26 } 33 27 -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/ButtonRenderer.php
r3403602 r3407122 6 6 use Plainware\Ui\Component\HtmlElement; 7 7 use Plainware\Ui\Component\Form\Button; 8 use Plainware\Ui\Ui;9 8 10 9 class ButtonRenderer 11 10 { 12 public $ui = Ui::class;13 14 11 public function __invoke(Button $el, Request $request) 15 12 { 16 $name = $ request->getParamName($el->getName());13 $name = $el->getName(); 17 14 18 15 $isDanger = $el->isDanger(); -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/CheckboxInputRenderer.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\ Ui;6 use Plainware\Ui\Component\Form\CheckboxInput; 7 7 use Plainware\Ui\Component\HtmlElement; 8 use Plainware\Ui\Component\ Form\CheckboxInput;8 use Plainware\Ui\Component\InlineList; 9 9 10 class CheckboxInputRenderer10 final class CheckboxInputRenderer 11 11 { 12 p ublic $ui = Ui::class;12 private static $htmlId = 1; 13 13 14 public function __invoke(CheckboxInput $el, Request $request )14 public function __invoke(CheckboxInput $el, Request $request, callable $next) 15 15 { 16 // $name = $el->getName(); 17 $name = $request->getParamName($el->getName()); 16 $el = $el 17 ->withTag('input') 18 ->withAttr('type', 'checkbox') 19 ->withAttr('value', $el->getHtmlValue()) 20 ; 18 21 19 $value = (string) $el->getValue(); 20 $isChecked = $el->isChecked(); 21 $isRequired = $el->isRequired(); 22 23 $attr = $el->getAttr(); 24 25 $ret = new HtmlElement('input'); 26 $ret->withAttr('type', 'checkbox'); 27 $ret->withAttr('name', $name); 28 $ret->withAttr('value', $value); 29 if ($isChecked) { 30 $ret->withAttr('checked', true); 31 } 32 if ($isRequired) { 33 $ret->withAttr('required', true); 22 $val = $el->getValue(); 23 if ($val) { 24 $el = $el->withAttr('checked', true); 34 25 } 35 26 36 foreach ($attr as $k_ => $v_) { 37 $ret->withAttr($k_, $v_); 27 $label = $el->getLabel(); 28 if (null !== $label) { 29 $htmlId = $el->getAttr('id'); 30 if (null === $htmlId) { 31 $htmlId = 'pw-checkbox-' . static::$htmlId++; 32 $el->withAttr('id', $htmlId); 33 } 38 34 } 39 35 40 // wrap it 41 $label = $el->getLabel(); 42 if (null === $label) { 43 return $ret; 36 $ret = $next($el, $request); 37 38 if (null !== $label) { 39 $ret = (new HtmlElement('label')) 40 ->withAttr('class', 'pw-wrapping-label') 41 ->append($ret) 42 ->append(new HtmlElement('span', $label)) 43 ; 44 44 } 45 46 if ('' !== $label) {47 $ret = (new HtmlElement('span'))48 ->withAttr('class', 'pw-inline-list')49 ->append($ret)50 ;51 $ret->append(new HtmlElement('span', $label));52 }53 54 $ret = (new HtmlElement('label'))->append($ret);55 45 56 46 return $ret; -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/CheckboxSetInputRenderer.php
r3403602 r3407122 4 4 5 5 use Plainware\Ui\Component\HtmlElement; 6 use Plainware\Ui\Component\InlineList; 6 7 use Plainware\Ui\Component\Form\CheckboxSetInput; 7 8 use Plainware\Ui\Component\Form\CheckboxInput; 8 9 9 class CheckboxSetInputRenderer10 final class CheckboxSetInputRenderer 10 11 { 11 12 public function __invoke(CheckboxSetInput $el) … … 13 14 $name = $el->getName(); 14 15 $value = $el->getValue(); 15 $isVertical = $el->isVertical();16 16 17 if ($isVertical) { 18 $ret = new HtmlElement('div'); 19 } else { 20 $ret = new HtmlElement('span'); 21 $ret->withAttr('class', 'pw-inline-list'); 22 } 17 $ret = (new InlineList()) 18 ->setSpacing(3) 19 ; 23 20 24 21 $options = $el->getOptions(); 25 foreach ($options as $k => $v) { 26 $input = new CheckboxInput(); 27 $input->setName($name . '[]'); 28 $input->setValue($k); 29 $input->setLabel($v); 30 31 $checked = in_array($k, $value) ? true : false; 32 $input->setChecked($checked); 33 34 if ($isVertical) { 35 $ret_ = new HtmlElement('div', $input); 36 } else { 37 $ret_ = new HtmlElement('span', $input); 22 foreach ($options as $k => $label) { 23 $one = (new CheckboxInput($name . '[]')) 24 ->setLabel($label) 25 ->setHtmlValue($k) 26 ; 27 if (in_array($k, $value)) { 28 $one->setValue(true); 38 29 } 39 40 $ret->append($ret_); 30 $ret->add($one); 41 31 } 42 32 -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/DateInputRenderer.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\DateTime\TimeFactory; 6 7 use Plainware\DateTime\DateTimeFormatter; 8 use Plainware\Ui\Component\HtmlElement; 7 9 use Plainware\Ui\Component\Form\Button; 10 use Plainware\Ui\Component\Form\TextInput; 8 11 use Plainware\Ui\Component\Form\DateInput; 9 use Plainware\Ui\HtmlHelper;10 12 use Plainware\Ui\Ui; 11 13 … … 13 15 { 14 16 public $dtf = DateTimeFormatter::class; 17 public $timeFactory = TimeFactory::class; 15 18 public $ui = Ui::class; 16 17 public function __invoke(DateInput $el, Request $request): string 19 private int $htmlId = 1; 20 21 public function __invoke(DateInput $el, Request $request) 18 22 { 19 $name = $request->getParamName($el->getName()); 20 $value = $el->getValue(); 21 22 23 if (null === $value) { 24 $value = ''; 25 } 26 if ($value instanceof \DateTimeInterface) { 27 $value = $value->format('Ymd'); 28 } 29 if (strlen($value) < 8) { 30 $value = ''; 31 } 32 33 $nameY = $name . '_y'; 34 $nameM = $name . '_m'; 35 $nameD = $name . '_d'; 36 37 $dt = strlen($value) ? new \DateTimeImmutable($value) : new \DateTimeImmutable(); 38 $value = $dt->format('Ymd'); 39 40 $attr = []; 41 $attr['type'] = 'text'; 42 $attr['name'] = $name; 43 $attr['value'] = $value; 44 $attr['title'] = $this->dtf->formatDateFull($dt); 45 $attr['data-pw-input-date'] = true; 46 47 $ret = []; 48 $ret[] = '<input'; 49 if ($attr) { 50 $ret[] = ' ' . HtmlHelper::attr($attr); 51 } 52 $ret[] = '>'; 53 54 $ret = join('', $ret); 55 56 $ret = $this->renderStyle($name) . $ret . $this->renderJs($name, $value, $request); 23 $pwHtmlId = 'dateinput-' . $this->htmlId++; 24 25 $name = $el->getName(); 26 $value = $el->getValue() ?? $this->timeFactory->now(); 27 28 $htmlValue = $value ? $value->format('Ymd') : ''; 29 30 $ret = (new TextInput($name)) 31 ->setValue($htmlValue) 32 ->withAttr('data-pw-input-date', true) 33 ->withAttr('data-pw-id', $pwHtmlId) 34 ; 35 36 $ret = (new HtmlElement('')) 37 ->append($this->renderStyle()) 38 ->append($ret) 39 ->append($this->renderJs($pwHtmlId, $value, $request)) 40 ; 57 41 58 42 return $ret; 59 43 } 60 44 61 p ublic function renderStyle($inputName)45 private function renderStyle() 62 46 { 63 47 static $alreadyShown = false; … … 79 63 } 80 64 81 p ublic function renderJs($inputName, $inputValue, Request $request)65 private function renderJs($pwHtmlId, $inputValue, Request $request) 82 66 { 83 67 // static $alreadyShown = false; … … 147 131 } 148 132 149 doInput(document.querySelector('input[ name="<?php echo esc_attr($inputName); ?>"]'));133 doInput(document.querySelector('input[data-pw-id="<?php echo esc_attr($pwHtmlId); ?>"]')); 150 134 // document.querySelectorAll('[data-pw-input-date]').forEach(doInput); 151 135 … … 191 175 const jsDate = new Date( d.y, d.m - 1, d.d ); 192 176 let dayOfWeek = jsDate.getDay(); 193 if( 0 == dayOfWeek ) dayOfWeek = 7;177 // if( 0 == dayOfWeek ) dayOfWeek = 7; 194 178 ret = wkdLabel[ dayOfWeek ] + ', ' + ret; 195 179 -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/DatePeriodInputRenderer.php
r3403602 r3407122 10 10 public function __invoke(DatePeriodInput $el) 11 11 { 12 $name = $el->getName(); 13 14 $el->getInputQty()->setName($name . '_qty'); 15 $el->getInputUnit()->setName($name . '_unit'); 16 17 $ret = new InlineList(); 18 $ret->add($el->getInputQty()); 19 $ret->add($el->getInputUnit()); 12 $ret = (new InlineList()) 13 ->add($el->getInputQty()) 14 ->add($el->getInputUnit()) 15 ; 20 16 21 17 return $ret; -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/NumberInputRenderer.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\NumberInput; 7 use Plainware\Ui\HtmlHelper;8 use Plainware\Ui\Ui;9 7 10 class NumberInputRenderer8 final class NumberInputRenderer 11 9 { 12 public $ui = Ui::class; 10 public function __invoke(NumberInput $el, Request $request, callable $next) 11 { 12 $el = $el 13 ->withTag('input') 14 ->withAttr('type', 'number') 15 ->withAttr('value', (string) $el->getValue()) 16 ->withAttr('min', $el->getMin()) 17 ->withAttr('max', $el->getMax()) 18 ->withAttr('step', $el->getStep()) 19 ->withAttr('size', 6) 20 ; 13 21 14 public function __invoke(NumberInput $el, Request $request): string 15 { 16 $ret = []; 17 18 $value = (string) $el->getValue(); 19 20 $attr['type'] = 'number'; 21 22 $name = $request->getParamName($el->getName()); 23 $attr['name'] = $name; 24 25 if ($el->isDisabled()) { 26 $attr['disabled'] = true; 27 } 28 if ($el->isRequired()) { 29 $attr['required'] = true; 30 } 31 32 $attr['value'] = $value; 33 $attr['min'] = $el->getMin(); 34 $attr['max'] = $el->getMax(); 35 $attr['step'] = $el->getStep(); 36 $attr['size'] = 6; 37 38 $ret[] = '<input'; 39 if ($attr) { 40 $ret[] = ' ' . HtmlHelper::attr($attr); 41 } 42 $ret[] = '>'; 43 44 $ret = join('', $ret); 45 46 return $ret; 22 return $next($el, $request); 47 23 } 48 24 } -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/PasswordInputRenderer.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\HtmlElement;7 6 use Plainware\Ui\Component\Form\PasswordInput; 8 7 9 class PasswordInputRenderer8 final class PasswordInputRenderer 10 9 { 11 public function __invoke(PasswordInput $el, Request $request )10 public function __invoke(PasswordInput $el, Request $request, callable $next) 12 11 { 13 $value = (string) $el->getValue(); 14 $name = $request->getParamName($el->getName()); 15 $attr = $el->getAttr(); 12 $el = $el 13 ->withTag('input') 14 ->withAttr('type', 'password') 15 // ->withAttr('value', $el->getValue()) 16 ; 16 17 17 $ret = new HtmlElement('input'); 18 foreach ($attr as $k => $v) { 19 $ret->withAttr($k, $v); 20 } 21 $ret->withAttr('type', 'password'); 22 $ret->withAttr('name', $name); 23 if ($el->isDisabled()) { 24 $ret->withAttr('disabled', true); 25 } 26 if ($el->isRequired()) { 27 $ret->withAttr('required', true); 28 } 29 $ret->withAttr('value', $value); 30 31 return $ret; 18 return $next($el, $request); 32 19 } 33 20 } -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/RadioInputRenderer.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\Form\RadioInput; 6 7 use Plainware\Ui\Component\HtmlElement; 7 use Plainware\Ui\Component\ Form\RadioInput;8 use Plainware\Ui\Component\InlineList; 8 9 9 class RadioInputRenderer10 final class RadioInputRenderer 10 11 { 11 public function __invoke(RadioInput $el, Request $request) 12 private static $htmlId = 1; 13 14 public function __invoke(RadioInput $el, Request $request, callable $next) 12 15 { 13 // $name = $el->getName(); 14 $name = $request->getParamName($el->getName()); 16 $el = $el 17 ->withTag('input') 18 ->withAttr('type', 'radio') 19 ->withAttr('value', $el->getHtmlValue()) 20 ; 15 21 16 $value = (string) $el->getValue(); 17 $isChecked = $el->isChecked(); 18 19 $ret = new HtmlElement('input'); 20 $ret->withAttr('type', 'radio'); 21 $ret->withAttr('name', $name); 22 $ret->withAttr('value', $value); 23 if ($isChecked) { 24 $ret->withAttr('checked', true); 22 $val = $el->getValue(); 23 if ($val) { 24 $el = $el->withAttr('checked', true); 25 25 } 26 26 27 // wrap it28 27 $label = $el->getLabel(); 29 if (!$label) { 30 return $ret; 28 if (null !== $label) { 29 $htmlId = $el->getAttr('id'); 30 if (null === $htmlId) { 31 $htmlId = 'pw-radio-' . static::$htmlId++; 32 $el->withAttr('id', $htmlId); 33 } 31 34 } 32 35 33 $ input = $ret;36 $ret = $next($el, $request); 34 37 35 $ret = (new HtmlElement('span'))->withAttr('class', 'pw-inline-list'); 36 $ret->append($input); 37 $ret->append(new HtmlElement('span', $label)); 38 39 $ret = (new HtmlElement('label'))->append($ret); 38 if (null !== $label) { 39 $ret = (new HtmlElement('label')) 40 ->withAttr('class', 'pw-wrapping-label') 41 ->append($ret) 42 ->append(new HtmlElement('span', $label)) 43 ; 44 } 40 45 41 46 return $ret; -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/RadioSetInputRenderer.php
r3403602 r3407122 3 3 namespace Plainware\Ui\Renderer\Form; 4 4 5 use Plainware\Ui\Component\HtmlElement; 5 6 use Plainware\Ui\Component\InlineList; 6 7 use Plainware\Ui\Component\Form\RadioSetInput; 7 8 use Plainware\Ui\Component\Form\RadioInput; 8 9 9 class RadioSetInputRenderer10 final class RadioSetInputRenderer 10 11 { 11 12 public function __invoke(RadioSetInput $el) … … 14 15 $value = $el->getValue(); 15 16 16 $ret = new InlineList(); 17 $ret = (new InlineList()) 18 ->setSpacing(3) 19 ; 20 17 21 $options = $el->getOptions(); 18 19 if (count($options) > 1) { 20 foreach ($options as $k => $v) { 21 $input = new RadioInput(); 22 $input->setName($name); 23 $input->setValue($k); 24 $input->setLabel($v); 25 26 $checked = ($k == $value) ? true : false; 27 $input->setChecked($checked); 28 29 $ret->add($input); 22 foreach ($options as $k => $label) { 23 $one = (new RadioInput($name)) 24 ->setLabel($label) 25 ->setHtmlValue($k) 26 ; 27 if ($k == $value) { 28 $one->setValue(true); 30 29 } 31 } elseif (1 === count($options)) { 32 $v = current($options); 33 $ret->add($v); 34 } else { 35 $ret->add('?'); 30 $ret->add($one); 36 31 } 37 32 -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/SelectInputRenderer.php
r3403602 r3407122 7 7 use Plainware\Ui\Component\HtmlElement; 8 8 9 class SelectInputRenderer9 final class SelectInputRenderer 10 10 { 11 public function __invoke(SelectInput $el, Request $request )11 public function __invoke(SelectInput $el, Request $request, callable $next) 12 12 { 13 $name = $request->getParamName($el->getName()); 13 $el = $el 14 ->withTag('select') 15 ; 14 16 15 $value = (string) $el->getValue(); 17 $value = $el->getValue(); 18 16 19 $options = $el->getOptions(); 20 foreach ($options as $k => $v) { 21 $option = (new HtmlElement('option', $v)) 22 ->withAttr('value', $k) 23 ; 24 if ($value == $k) { 25 $option->withAttr('selected', true); 26 } 17 27 18 $ret = new HtmlElement('select'); 19 $ret->withAttr('name', $name); 20 if ($el->isDisabled()) { 21 $ret->withAttr('disabled', true); 22 } 23 if ($el->isRequired()) { 24 $ret->withAttr('required', true); 28 $el->append($option); 25 29 } 26 30 27 foreach ($options as $k => $v) { 28 $ret_ = new HtmlElement('option', $v); 29 $ret_->withAttr('value', $k); 30 if ($value == $k) { 31 $ret_->withAttr('selected', true); 32 } 33 $ret->append($ret_); 34 } 35 36 return $ret; 31 return $next($el, $request); 37 32 } 38 33 } -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/TextInputRenderer.php
r3403602 r3407122 4 4 5 5 use Plainware\Http\Request; 6 use Plainware\Ui\Component\HtmlElement;7 6 use Plainware\Ui\Component\Form\TextInput; 8 use Plainware\Ui\Ui;9 7 10 class TextInputRenderer8 final class TextInputRenderer 11 9 { 12 public $ui = Ui::class; 10 public function __invoke(TextInput $el, Request $request, callable $next) 11 { 12 $el = $el 13 ->withTag('input') 14 ->withAttr('type', 'text') 15 ->withAttr('value', $el->getValue()) 16 ; 13 17 14 public function __invoke(TextInput $el, Request $request) 15 { 16 $value = (string) $el->getValue(); 17 $name = $request->getParamName($el->getName()); 18 $attr = $el->getAttr(); 19 20 $ret = new HtmlElement('input'); 21 foreach ($attr as $k => $v) { 22 $ret->withAttr($k, $v); 23 } 24 25 if (!$ret->getAttr('type')) { 26 $ret->withAttr('type', 'text'); 27 } 28 29 $ret->withAttr('name', $name); 30 if ($el->isDisabled()) { 31 $ret->withAttr('disabled', true); 32 } 33 if ($el->isRequired()) { 34 $ret->withAttr('required', true); 35 } 36 $ret->withAttr('value', $value); 37 38 return $ret; 18 return $next($el, $request); 39 19 } 40 20 } -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/TextareaInputRenderer.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Form\TextareaInput; 7 use Plainware\Ui\HtmlHelper;8 use Plainware\Ui\Ui;9 7 10 class TextareaInputRenderer8 final class TextareaInputRenderer 11 9 { 12 public $ui = Ui::class; 10 public function __invoke(TextareaInput $el, Request $request, callable $next) 11 { 12 $value = $el->getValue(); 13 $value = esc_textarea($value); 13 14 14 public function __invoke(TextareaInput $el, Request $request): string 15 { 16 $ret = []; 15 $el = $el 16 ->withTag('textarea') 17 ->setContent($value) 18 ; 17 19 18 $value = (string) $el->getValue(); 19 20 $name = $request->getParamName($el->getName()); 21 $attr['name'] = $name; 22 23 if ($el->isDisabled()) { 24 $attr['disabled'] = true; 25 } 26 if ($el->isRequired()) { 27 $attr['required'] = true; 28 } 29 30 $ret[] = '<textarea'; 31 if ($attr) { 32 $ret[] = ' ' . HtmlHelper::attr($attr); 33 } 34 $ret[] = '>'; 35 36 $ret[] = esc_textarea($value); 37 38 $ret[] = '</textarea>'; 39 40 $ret = join('', $ret); 41 42 return $ret; 20 return $next($el, $request); 43 21 } 44 22 } -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/Form/TimeInputRenderer.php
r3403602 r3407122 6 6 use Plainware\Ui\Component\Form\TimeInput; 7 7 use Plainware\Ui\Component\Form\SelectInput; 8 use Plainware\Ui\ HtmlHelper;8 use Plainware\Ui\Component\InlineList; 9 9 use Plainware\Ui\Ui; 10 10 use Plainware\DateTime\DateTimeFormatter; … … 15 15 public $dtf = DateTimeFormatter::class; 16 16 17 public function __invoke(TimeInput $el, Request $request) : string17 public function __invoke(TimeInput $el, Request $request) 18 18 { 19 $ret = [];20 21 19 $name = $el->getName(); 22 20 $value = $el->getValue(); … … 25 23 $valueM = floor(($value - $valueH * (60 * 60)) / 60); 26 24 27 $ ret[] = '<ul class="pw-inline-list">';25 $dt = new \DateTime(); 28 26 29 $today = 20250710;30 27 $options = []; 31 32 $dt = new \DateTime();33 28 foreach (range(0, 23, 1) as $k) { 34 29 $v = $k; … … 40 35 $options[$k] = $v2; 41 36 } 42 $inputHour = new SelectInput($options); 43 $inputHour->setName($name . '_h'); 44 $inputHour->setValue($valueH); 45 46 $ret[] = '<li>'; 47 $ret[] = $this->ui->render($inputHour, $request); 48 $ret[] = '</li>'; 49 50 $ret[] = '<li>:</li>'; 37 $inputHour = (new SelectInput($name . '_h')) 38 ->setOptions($options) 39 ->setValue($valueH) 40 ; 51 41 52 42 $options = []; … … 57 47 } 58 48 59 $inputMinute = new SelectInput($options); 60 $inputMinute->setName($name . '_m'); 61 $inputMinute->setValue($valueM); 49 $inputMinute = (new SelectInput($name . '_m')) 50 ->setOptions($options) 51 ->setValue($valueM) 52 ; 62 53 63 $ret[] = '<li>'; 64 $ret[] = $this->ui->render($inputMinute, $request); 65 $ret[] = '</li>'; 66 67 $ret[] = '</ul>'; 68 69 $ret = join('', $ret); 54 $ret = (new InlineList()) 55 ->add($inputHour) 56 ->add(':') 57 ->add($inputMinute) 58 ; 70 59 71 60 return $ret; -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/InlineListRenderer.php
r3403602 r3407122 10 10 public function __invoke(InlineList $el) 11 11 { 12 $spacing = $el->getSpacing(); 12 13 $items = $el->getItems(); 13 14 14 if (!$items) { 15 15 $ret = ''; … … 20 20 ->withAttr('class', 'pw-inline-list') 21 21 ; 22 23 if (2 !== $spacing) { 24 $ret->withAttr('class', 'pw-spacing-' . $spacing); 25 } 22 26 23 27 $attr = $el->getAttr(); -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/MainMenuRenderer.php
r3403602 r3407122 62 62 } 63 63 64 $wrappers = $el->getWrappers();65 foreach (array_reverse($wrappers) as $wrapper) {66 $ret = $wrapper->append($ret);67 }68 69 64 return $ret; 70 65 } -
plaintracker/trunk/vendor/plainware/ui/src/Renderer/PartialRenderer.php
r3403602 r3407122 5 5 use Plainware\Http\Request; 6 6 use Plainware\Http\Router; 7 use Plainware\Ui\Component\Co ntainer;7 use Plainware\Ui\Component\Collection; 8 8 use Plainware\Ui\Component\HtmlElement; 9 9 use Plainware\Ui\Component\InlineList; … … 81 81 $ret = array_column($ret, 1); 82 82 83 $ret_ = new Container(); 84 foreach ($ret as $k => $v) { 85 $v = new Section($v); 86 $ret_->add($k, $v); 83 $ret_ = new Collection(); 84 foreach ($ret as $v) { 85 $ret_->add(new Section($v)); 87 86 } 88 87 -
plaintracker/trunk/vendor/plainware/ui/src/Ui.php
r3403602 r3407122 42 42 } 43 43 44 /* 44 45 $funcs = $this->findRenderers(get_class($el)); 45 46 … … 63 64 } 64 65 } 66 */ 67 68 $funcs = []; 69 70 $parentClasses = class_parents($el); 71 foreach (array_reverse($parentClasses) as $parentClass) { 72 $funcs = array_merge($funcs, $this->findRenderers($parentClass)); 73 } 74 75 $interfaces = class_implements($el); 76 foreach ($interfaces as $interface) { 77 $funcs = array_merge($funcs, $this->findRenderers($interface)); 78 } 79 80 $funcs = array_merge($funcs, $this->findRenderers(get_class($el))); 65 81 66 82 if (!$funcs) {
Note: See TracChangeset
for help on using the changeset viewer.