Changeset 3406711
- Timestamp:
- 12/01/2025 10:37:31 AM (3 months ago)
- Location:
- plain-event-calendar/trunk
- Files:
-
- 9 added
- 25 deleted
- 55 edited
-
module/web-admin-event/src/Controller/EventController.php (modified) (2 diffs)
-
module/web-admin-event/src/Controller/EventCreateController.php (modified) (2 diffs)
-
module/web-admin-event/src/Controller/EventIdController.php (modified) (4 diffs)
-
module/web-admin-event/src/Controller/EventIdDeleteController.php (modified) (2 diffs)
-
module/web-admin-setting-rest/src/Controller/AdminRestSettingPageController.php (modified) (4 diffs)
-
module/web-admin-setting/src/Controller/DatetimePageController.php (modified) (5 diffs)
-
module/web-front/src/Controller/EventController.php (modified) (2 diffs)
-
module/web-install/src/Controller/InstallController.php (modified) (3 diffs)
-
module/web-install/src/Controller/UninstallController.php (modified) (3 diffs)
-
plain-event-calendar.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) (4 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/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 (deleted)
-
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/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 (deleted)
-
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/MenuRenderer.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
-
plain-event-calendar/trunk/module/web-admin-event/src/Controller/EventController.php
r3400983 r3406711 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; … … 31 30 $ret = $this->render($ms); 32 31 } else { 33 $ret = new Redirect('./create'); 34 return $ret; 32 return new Redirect('./create'); 35 33 } 36 34 37 $content = new Container(); 38 $content->add(25, new Section($ret)); 39 40 $ret = new Main($content); 35 $ret = new Main($ret); 41 36 42 37 return $ret; -
plain-event-calendar/trunk/module/web-admin-event/src/Controller/EventCreateController.php
r3403596 r3406711 6 6 use Plainware\Http\Redirect; 7 7 use Plainware\Ui\Component\Main; 8 use Plainware\Ui\Component\ Link;9 use Plainware\Ui\Component\Form ;8 use Plainware\Ui\Component\Form\Button; 9 use Plainware\Ui\Component\Form\Form; 10 10 use Plainware\Ui\Component\Form\DateInput; 11 11 use Plainware\Ui\Component\Form\RadioSetInput; 12 12 use Plainware\Ui\Component\Form\TextInput; 13 13 use Plainware\Ui\Component\Form\TextareaInput; 14 use Plainware\Ui\Component\Form\Button;15 14 use PlainEventCalendar\Core\Action\CreateEventAction; 16 15 … … 18 17 { 19 18 public $createEventAction = CreateEventAction::class; 19 private ?Form $form = null; 20 21 private function form(): Form 22 { 23 if ($this->form) { 24 return $this->form; 25 } 26 27 $form = new Form(); 28 29 $form->add((new TextInput('title'))->setLabel('__Event name__')->setRequired()); 30 $form->add((new DateInput('d1'))->setLabel('__Start date__')); 31 $form->add((new DateInput('d2'))->setLabel('__End date__')); 32 $form->add((new TextareaInput('description'))->setLabel('__Event description__')); 33 $form->add((new RadioSetInput('next'))->setLabel('__Next action__')); 34 35 $form->addButton(new Button('__Create event__')); 36 37 return $this->form = $form; 38 } 20 39 21 40 public function __invoke(Request $request) 22 41 { 23 $form = new Form($request);42 $form = $this->form(); 24 43 25 $form->withInput('title', new TextInput()) 26 ->setLabel('__Event name__') 27 ->setRequired() 28 ; 44 $options = ['back' => '__Get back to event list__', 'self' => '__Add another event__']; 45 $v = $request->getQueryParam('next'); 46 if (!isset($options[$v])) { 47 $v = current(array_keys($options)); 48 } 49 $form->input('next')->setOptions($options)->setValue($v); 29 50 30 $form->withInput('d1', new DateInput()) 31 ->setLabel('__Start date__') 32 ->setRequired() 33 ; 51 if ($vs = $form->grab($request)) { 52 if (!strlen($vs['title'])) { 53 $form->input('title')->addError('__Required field__'); 54 } 55 $d1 = $vs['d1']; 56 $d2 = $vs['d2']; 57 if ($d2 < $d1) { 58 $form->input('d2')->addError('__The end date should be after the start date__'); 59 } 60 } 34 61 35 $form->withInput('d2', new DateInput()) 36 ->setLabel('__End date__') 37 ->setRequired() 38 ; 62 if ($form->isValid()) { 63 $this->createEventAction->__invoke($d1, $d2, $vs['title'], $vs['description']); 39 64 40 $form->withInput('description', new TextareaInput()) 41 ->setLabel('__Event description__') 42 ; 43 44 $options = [ 45 'back' => '__Get back to event list__', 46 'self' => '__Add another event__', 47 ]; 48 $next = $request->getQueryParam('next'); 49 if (!isset($options[$next])) { 50 $next = current(array_keys($options)); 51 } 52 $form->withInput('next', new RadioSetInput($options)) 53 ->setLabel('__Next action__') 54 ->setValue($next) 55 ; 56 57 $form->withButton('submit', new Button('__Create event__')); 58 59 $form = $form->grab($request); 60 61 if ($form->isSubmitted() && $form->isValid()) { 62 $vs = $form->getValues(); 63 64 if (!strlen($vs['title'])) { 65 $form->withInput('title')->addError('__Required field__'); 65 $msg = '__Event created__'; 66 $next = $vs['next'] ?? $next; 67 if ('self' == $next) { 68 return (new Redirect('.', ['next' => $next]))->withMessage($msg); 66 69 } else { 67 } 68 69 $d1 = new \DateTimeImmutable($vs['d1']); 70 $d2 = new \DateTimeImmutable($vs['d2']); 71 72 if ($d2 < $d1) { 73 $form->withInput('d2')->addError('__The end date should be after the start date__'); 74 } 75 76 if ($form->isValid()) { 77 $this->createEventAction->__invoke( 78 $d1, 79 $d2, 80 $vs['title'], 81 $vs['description'] 82 ); 83 84 $msg = '__Event created__'; 85 $next = $vs['next'] ?? $next; 86 if ('self' == $next) { 87 return (new Redirect('.', ['next' => $next]))->withMessage($msg); 88 } else { 89 return (new Redirect('..'))->withMessage($msg); 90 } 70 return (new Redirect('..'))->withMessage($msg); 91 71 } 92 72 } -
plain-event-calendar/trunk/module/web-admin-event/src/Controller/EventIdController.php
r3403596 r3406711 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\Button; 11 use Plainware\Ui\Component\Form\Form; 11 12 use Plainware\Ui\Component\Form\DateInput; 12 13 use Plainware\Ui\Component\Form\TextInput; 13 14 use Plainware\Ui\Component\Form\TextareaInput; 14 use Plainware\Ui\Component\Form\Button;15 15 use PlainEventCalendar\Core\Action\RescheduleEventAction; 16 16 use PlainEventCalendar\Core\Action\RenameEventAction; … … 24 24 public $rescheduleEventAction = RescheduleEventAction::class; 25 25 public $renameEventAction = RenameEventAction::class; 26 private ?Form $form = null; 26 27 27 28 public function title(Request $request) … … 39 40 } 40 41 42 private function form(): Form 43 { 44 if ($this->form) { 45 return $this->form; 46 } 47 48 $form = new Form(); 49 50 $form->add((new TextInput('title'))->setLabel('__Event name__')->setRequired()); 51 $form->add((new DateInput('d1'))->setLabel('__Start date__')); 52 $form->add((new DateInput('d2'))->setLabel('__End date__')); 53 $form->add((new TextareaInput('description'))->setLabel('__Event description__')); 54 55 $form->addButton(new Button('__Save changes__')); 56 57 return $this->form = $form; 58 } 59 41 60 public function __invoke(Request $request) 42 61 { … … 44 63 $m = $this->repo->getById($id); 45 64 46 $form = new Form($request);65 $form = $this->form(); 47 66 48 $form->withInput('title', new TextInput()) 49 ->setLabel('__Event name__') 50 ->setValue($m->getTitle()) 51 ->setRequired() 52 ; 67 $vs = [ 68 'title' => $m->getTitle(), 69 'd1' => $m->getStartDate(), 70 'd2' => $m->getEndDate(), 71 'description' => $m->getDescription(), 72 ]; 73 $form->setValues($vs); 53 74 54 $form->withInput('d1', new DateInput()) 55 ->setLabel('__Start date__') 56 ->setValue($m->getStartDate()) 57 ->setRequired() 58 ; 75 if ($vs = $form->grab($request)) { 76 if (!strlen($vs['title'])) { 77 $form->input('title')->addError('__Required field__'); 78 } 79 $d1 = $vs['d1']; 80 $d2 = $vs['d2']; 81 if ($d2 < $d1) { 82 $form->input('d2')->addError('__The end date should be after the start date__'); 83 } 84 } 59 85 60 $form->withInput('d2', new DateInput()) 61 ->setLabel('__End date__') 62 ->setValue($m->getEndDate()) 63 ->setRequired() 64 ; 86 if ($form->isValid()) { 87 $msgs = []; 65 88 66 $form->withInput('description', new TextareaInput()) 67 ->setLabel('__Event description__') 68 ->setValue($m->getDescription()) 69 ; 70 71 $form->withButton('submit', new Button('__Save changes__')); 72 73 $form = $form->grab($request); 74 75 if ($form->isSubmitted() && $form->isValid()) { 76 $vs = $form->getValues(); 77 78 if (!strlen($vs['title'])) { 79 $form->withInput('title')->addError('__Required field__'); 80 } else { 89 if (($d1 != $m->getStartDate()) or ($d2 != $m->getEndDate())) { 90 $this->rescheduleEventAction->__invoke($m, $d1, $d2); 91 $msgs[] = '__Event rescheduled__'; 81 92 } 82 93 83 $d1 = new \DateTimeImmutable($vs['d1']); 84 $d2 = new \DateTimeImmutable($vs['d2']); 85 86 if ($d2 < $d1) { 87 $form->withInput('d2')->addError('__The end date should be after the start date__'); 94 if (($vs['title'] != $m->getTitle()) or ($vs['description'] != $m->getDescription())) { 95 $this->renameEventAction->__invoke($m, $vs['title'], $vs['description']); 96 $msgs[] = '__Event detail changed__'; 88 97 } 89 98 90 if ($form->isValid()) { 91 $msgs = []; 99 $ret = new Redirect('..'); 100 foreach ($msgs as $msg) { 101 $ret = $ret->withMessage($msg); 102 } 92 103 93 if (($d1 != $m->getStartDate()) or ($d2 != $m->getEndDate())) { 94 $this->rescheduleEventAction->__invoke($m, $d1, $d2); 95 $msgs[] = '__Event rescheduled__'; 96 } 97 98 if (($vs['title'] != $m->getTitle()) or ($vs['description'] != $m->getDescription())) { 99 $this->renameEventAction->__invoke($m, $vs['title'], $vs['description']); 100 $msgs[] = '__Event detail changed__'; 101 } 102 103 $ret = new Redirect('..'); 104 foreach ($msgs as $msg) { 105 $ret = $ret->withMessage($msg); 106 } 107 108 return $ret; 109 } 104 return $ret; 110 105 } 111 106 -
plain-event-calendar/trunk/module/web-admin-event/src/Controller/EventIdDeleteController.php
r3400983 r3406711 7 7 use Plainware\Ui\Component\Main; 8 8 use Plainware\Ui\Component\Link; 9 use Plainware\Ui\Component\Form ;9 use Plainware\Ui\Component\Form\Form; 10 10 use Plainware\Ui\Component\Form\Button; 11 11 use PlainEventCalendar\Core\Action\DeleteEventAction; … … 23 23 $m = $this->repo->getById($id); 24 24 25 $form = new Form($request); 25 $form = new Form(); 26 $form->append(new Button('__Yes, delete event__')); 26 27 27 $form-> withButton('submit', new Button('__Yes, delete event__'));28 $form->grab($request); 28 29 29 $form = $form->grab($request); 30 if ($form->isValid()) { 31 $this->deleteEventAction->__invoke($m); 30 32 31 if ($form->isSubmitted() && $form->isValid()) { 32 if ($form->isValid()) { 33 $this->deleteEventAction->__invoke($m); 34 35 return (new Redirect('../..')) 36 ->withMessage('__Event deleted__') 37 ; 38 } 33 return (new Redirect('../..'))->withMessage('__Event deleted__'); 39 34 } 40 35 -
plain-event-calendar/trunk/module/web-admin-setting-rest/src/Controller/AdminRestSettingPageController.php
r3403596 r3406711 7 7 use Plainware\Http\Redirect; 8 8 use Plainware\DateTime\DateTimeFormatter; 9 use Plainware\Ui\Component\Container;10 9 use Plainware\Ui\Component\Main; 11 use Plainware\Ui\Component\Section;12 use Plainware\Ui\Component\Form;13 use Plainware\Ui\Component\Form\TextInput;14 use Plainware\Ui\Component\Form\CheckboxInput;15 10 use Plainware\Ui\Component\Form\SelectInput; 16 11 use Plainware\Ui\Component\Form\Button; 12 use Plainware\Ui\Component\Form\Form; 13 use Plainware\Ui\Component\Form\CheckboxInput; 14 use Plainware\Ui\Component\Form\TextInput; 17 15 use PlainEventCalendar\Core\Repo\SettingRepo; 18 16 use PlainEventCalendar\Rest\Service\TokenManager; … … 24 22 public $dtf = DateTimeFormatter::class; 25 23 public $tokenManager = TokenManager::class; 24 private ?Form $form = null; 26 25 27 26 public function title(Request $request) … … 32 31 public function __invoke(Request $request) 33 32 { 34 $form = new Form();33 $form = $this->form(); 35 34 36 $try = new \DateTimeImmutable(); 37 38 /* enabled */ 39 $on = $this->repo->get('api_on') ?? true; 40 $form->withInput('on', new CheckboxInput()) 41 ->setLabel('__Enable REST API__') 42 ->setValue(1) 43 ->setChecked($on) 44 ; 35 /* enabled? */ 36 $settingValue = $this->repo->get('api_on') ?? true; 37 $on = (null === $settingValue) ? true : ($settingValue ? true : false); 38 $form->input('on')->setValue($on); 45 39 46 40 /* auth token */ 47 41 $v = $this->tokenManager->get(); 48 $form->withInput('token', new TextInput()) 49 ->setLabel('__Authentication token__') 50 ->setHelp('__This token is required for creating, updating and deleting.__') 51 ->setValue($v) 52 ; 42 $form->input('token')->setValue($v); 53 43 54 $form->withInput('token_name', new TextInput()) 55 ->setLabel('__HTTP header name for the authentication token__') 56 ->setValue('X-WP-PlainEventCalendar-Token') 57 ->setDisabled() 58 ; 44 /* token name */ 45 $v = 'X-WP-PlainEventCalendar-Token'; 46 $form->input('token_name')->setValue($v); 47 48 if ($vs = $form->grab($request)) { 49 } 50 51 if ($form->isValid()) { 52 $v = $vs['on'] ? 1 : 0; 53 $this->repo->set('api_on', $v); 54 if (isset($vs['token'])) { 55 $this->tokenManager->set($vs['token']); 56 } 57 58 return (new Redirect('.'))->withMessage('__Settings updated__'); 59 } 60 61 $ret = new Main($form); 62 63 return $ret; 64 } 65 66 private function form(): Form 67 { 68 if ($this->form) { 69 return $this->form; 70 } 71 72 $form = new Form(); 73 $form->add((new CheckboxInput('on'))->setLabel('__Enable REST API__')); 74 $form->add( 75 (new TextInput('token')) 76 ->setLabel('__Authentication token__') 77 ->addHelp('__This token is required for creating, updating and deleting.__') 78 ); 79 $form->add( 80 (new TextInput('token_name')) 81 ->setLabel('__HTTP header name for the authentication token__') 82 ->addHelp('__Supply the above token code with this HTTP header.__') 83 ->withAttr('onclick', 'this.focus(); this.select();') 84 ->withAttr('readonly', true) 85 ); 59 86 60 87 $form … … 63 90 ; 64 91 65 $form->withButton('submit', new Button()) 66 ->setLabel('__Save__') 67 ; 92 $form->addButton(new Button('__Save__')); 68 93 69 $form->grab($request); 70 if ($form->isSubmitted()) { 71 $vs = $form->getValues(); 72 if ($form->isValid()) { 73 $v = $vs['on'] ? 1 : 0; 74 $this->repo->set('api_on', $v); 75 76 if (isset($vs['token'])) { 77 $v = $vs['token']; 78 $this->tokenManager->set($v); 79 } 80 81 return (new Redirect('.'))->withMessage('__Settings updated__'); 82 } 83 } 84 85 $content = $form; 86 87 $ret = new Main($content); 88 89 return $ret; 94 return $this->form = $form; 90 95 } 91 96 } -
plain-event-calendar/trunk/module/web-admin-setting/src/Controller/DatetimePageController.php
r3403596 r3406711 7 7 use Plainware\DateTime\DateTimeFormatter; 8 8 use Plainware\Ui\Component\Main; 9 use Plainware\Ui\Component\Form ;9 use Plainware\Ui\Component\Form\Form; 10 10 use Plainware\Ui\Component\Form\SelectInput; 11 11 use Plainware\Ui\Component\Form\Button; 12 use Plainware\Ui\Component\Form\FormLabelRow; 12 13 use PlainEventCalendar\Core\Repo\SettingRepo; 13 14 … … 16 17 public $repo = SettingRepo::class; 17 18 public $dtf = DateTimeFormatter::class; 18 19 public function title(Request $request) 20 { 21 return '__Date and time__'; 22 } 19 private ?Form $form = null; 23 20 24 21 public function __invoke(Request $request) 25 22 { 26 $form = new Form(); 27 // $form->withInput('') 23 $form = $this->form(); 28 24 29 $try = new \DateTimeImmutable(); 25 $props = ['datetime_date_format', 'datetime_time_format', 'datetime_week_starts']; 26 $values = array_combine($props, array_map(fn($k) => $this->repo->get($k), $props)); 27 $form->setValues($values); 30 28 31 /* date format */ 29 if ($values = $form->grab($request)) { 30 } 31 32 if ($form->isValid()) { 33 $values = array_intersect_key($values, array_combine($props, $props)); 34 foreach ($values as $k => $v) { 35 $this->repo->set($k, $v); 36 } 37 38 return (new Redirect('..'))->withMessage('__Settings updated__'); 39 } 40 41 $form->addButton(new Button('__Save__')); 42 $ret = new Main($form); 43 44 return $ret; 45 } 46 47 private function form(): Form 48 { 49 if ($this->form) { 50 return $this->form; 51 } 52 53 $ret = new Form(); 54 55 /* time format */ 32 56 $option = [ 33 57 'j M Y', 'F j, Y', 'n/j/Y', 'm/d/Y', 'm-d-Y', 'm.d.Y', 'j/n/Y', … … 35 59 ]; 36 60 $option = array_flip($option); 61 62 $try = new \DateTimeImmutable(); 37 63 foreach (array_keys($option) as $k) { 38 64 $thisView = $try->format($k); 39 65 $option[$k] = $thisView; 40 66 } 41 $ v = $this->repo->get('datetime_date_format');42 $form->withInput('datetime_date_format', new SelectInput($option))43 ->setLabel('__Date format__')44 ->setValue($v)45 ;67 $ret->add( 68 (new SelectInput('datetime_date_format')) 69 ->setOptions($option) 70 ->setLabel('__Date format__') 71 ); 46 72 47 73 /* time format */ … … 58 84 $option[$k] = $thisView; 59 85 } 60 $ v = $this->repo->get('datetime_time_format');61 $form->withInput('datetime_time_format', new SelectInput($option))62 ->setLabel('__Time format__')63 ->setValue($v)64 ;86 $ret->add( 87 (new SelectInput('datetime_time_format')) 88 ->setOptions($option) 89 ->setLabel('__Time format__') 90 ); 65 91 66 92 /* week starts */ … … 68 94 $option = array_flip($option); 69 95 foreach (array_keys($option) as $k) { 70 $thisView = $this->dtf->formatDayOfWeek($k); 71 $option[$k] = $thisView; 96 $option[$k] = $this->dtf->formatDayOfWeek($k); 72 97 } 73 $ v = $this->repo->get('datetime_week_starts');74 $form->withInput('datetime_week_starts', new SelectInput($option))75 ->setLabel('__Week starts on__')76 ->setValue($v)77 ;98 $ret->add( 99 (new SelectInput('datetime_week_starts')) 100 ->setOptions($option) 101 ->setLabel('__Week starts on__') 102 ); 78 103 79 $form->withButton('submit', new Button()) 80 ->setLabel('__Save__') 81 ; 82 83 $form->grab($request); 84 if ($form->isSubmitted()) { 85 $vs = $form->getValues(); 86 if ($form->isValid()) { 87 $props = ['datetime_date_format', 'datetime_time_format', 'datetime_week_starts']; 88 foreach ($props as $k) { 89 $this->repo->set($k, $vs[$k]); 90 } 91 92 return (new Redirect('..')) 93 ->withMessage('__Settings updated__') 94 ; 95 } 96 } 97 98 $content = $form; 99 100 $ret = new Main($content); 101 102 return $ret; 104 return $this->form = $ret; 103 105 } 104 106 } -
plain-event-calendar/trunk/module/web-front/src/Controller/EventController.php
r3400983 r3406711 5 5 use Plainware\Http\Request; 6 6 use Plainware\Ui\Component\Main; 7 use Plainware\Ui\Component\SpacedContainer; 8 use Plainware\Ui\Component\Container; 7 use Plainware\Ui\Component\BlockList; 9 8 use Plainware\Ui\Component\Section; 10 9 use Plainware\Ui\Component\Table; … … 43 42 public function render(array $ms) 44 43 { 45 $ret = new Container();44 $ret = (new BlockList())->setSpacing(3); 46 45 47 $ii = 1;48 46 foreach ($ms as $m) { 49 $content = new Container(); 50 $jj = 1; 47 $content = (new BlockList())->setSpacing(1); 51 48 52 49 $dateView = $this->dtf->formatDateRange($m->getStartDate(), $m->getEndDate()); 53 50 $dateView = '<p>' . esc_html($dateView) . '</p>'; 54 $content->add($ jj++, $dateView);51 $content->add($dateView); 55 52 56 53 $descriptionView = $m->getDescription(); 57 54 if (strlen($descriptionView)) { 58 $content->add($ jj++, $descriptionView);55 $content->add($descriptionView); 59 56 } 60 57 61 58 $title = $m->getTitle(); 62 59 $title = esc_html($title); 63 $ret->add( $ii++,new Section($content, $title));60 $ret->add(new Section($content, $title)); 64 61 } 65 62 -
plain-event-calendar/trunk/module/web-install/src/Controller/InstallController.php
r3400983 r3406711 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 … … 26 26 27 27 $form = new Form(); 28 $form-> withButton('submit',new Button('__Click to install__'));28 $form->append(new Button('__Click to install__')); 29 29 30 $form = $form->grab($request); 31 32 if ($form->isSubmitted() && $form->isValid()) { 30 $form->grab($request); 31 if ($form->isValid()) { 33 32 $this->migrator->up(); 34 33 … … 36 35 } 37 36 38 $ret = (new SpacedContainer())37 $ret = (new BlockList()) 39 38 ->add(new HtmlElement('h1', '__Installation__')) 40 39 ->add($info) -
plain-event-calendar/trunk/module/web-install/src/Controller/UninstallController.php
r3403596 r3406711 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; … … 24 24 $form->withButton('submit', new Button('__Click to uninstall__')); 25 25 26 $form = $form->grab($request); 27 28 if ($form->isSubmitted() && $form->isValid()) { 26 $form->grab($request); 27 if ($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) -
plain-event-calendar/trunk/plain-event-calendar.php
r3403596 r3406711 3 3 Plugin Name: Plain Event Calendar 4 4 Description: A simple event calendar to manage and publish your events. 5 Version: 2.0. 75 Version: 2.0.8 6 6 Author: plainware 7 7 Text Domain: plain-event-calendar -
plain-event-calendar/trunk/readme.txt
r3403596 r3406711 3 3 Tags: event calendar, event manager, calendar, events, school, university, church 4 4 License: GPLv2 or later 5 Stable tag: 2.0. 75 Stable tag: 2.0.8 6 6 Requires at least: 4.1 7 7 Tested up to: 6.8 … … 49 49 == Changelog == 50 50 51 = 2.0.8 (2025-12-01) = 52 * Framework code update. 53 51 54 = 2.0.7 (2025-11-26) = 52 55 * BUG: date and time format settings didn't take effect. -
plain-event-calendar/trunk/vendor/plainware/http/src/Server.php
r3403596 r3406711 25 25 26 26 return $this; 27 } 28 29 public function getPrefix(): string 30 { 31 return $this->prefix; 27 32 } 28 33 -
plain-event-calendar/trunk/vendor/plainware/rest/src/Ui/Renderer/OpenApiInfoRenderer.php
r3403596 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui-wordpress/assets/admin.css
r3372822 r3406711 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) { -
plain-event-calendar/trunk/vendor/plainware/ui-wordpress/src/Renderer/AdminMainMenuRenderer.php
r3400983 r3406711 66 66 } 67 67 $i++; 68 }69 70 $wrappers = $el->getWrappers();71 foreach ($wrappers as $wrapper) {72 $tabMenu->wrapBy($wrapper);73 68 } 74 69 -
plain-event-calendar/trunk/vendor/plainware/ui/assets/core.css
r3400983 r3406711 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 #pw2 .pw-form .pw-form-raw-item {padding: .5em 0;} 441 @media (min-width: 48em) { 442 #pw2 .pw-form-hori .pw-form-label-content {display: grid; grid-template-columns: 12rem 1fr; gap: 0; align-items: start;} 443 #pw2 .pw-form-hori .pw-form-label-content > :first-child {text-align: end; margin: 0; padding: .5em; overflow: hidden;} 444 #pw2 .pw-form-hori .pw-form-emptylabel-content {margin-inline-start: 12rem;} 445 } 446 447 #pw2 .pw-form-inline .pw-form-body, 448 #pw2 .pw-form-inline .pw-form-label-content {display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: center;} 449 #pw2 .pw-form-inline .pw-form-body {gap: .5em;} 450 #pw2 .pw-form-inline .pw-form-label-content {gap: .25em;} 451 452 #pw2 .pw-form-vert .pw-form-label-content > :first-child {margin-bottom: .25em;} 453 454 /* block list */ 455 #pw2 .pw-block-list {list-style-type: none; display: block;} 456 #pw2 .pw-block-list > div + div {margin-top: .5em;} 457 #pw2 .pw-block-list.pw-spacing-1 > div + div {margin-top: .25em;} 458 #pw2 .pw-block-list.pw-spacing-3 > div + div {margin-top: 1em;} 459 #pw2 .pw-block-list.pw-spacing-0 > div + div {margin-top: 0;} 460 461 /* inline list */ 462 #pw2 .pw-inline-list {list-style-type: none;} 463 #pw2 .pw-inline-list {display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; align-items: center; gap: .5em;} 464 #pw2 .pw-valign-top.pw-inline-list {align-items: start;} 465 #pw2 .pw-inline-list.pw-spacing-1 {gap: .25em;} 466 #pw2 .pw-inline-list.pw-spacing-3 {gap: 1em;} 467 #pw2 .pw-inline-list.pw-spacing-0 {gap: 0;} 468 /* #pw2 .pw-inline-list {align-items: baseline;} */ 469 #pw2 .pw-inline-list img, #pw2 .pw-inline-list input {display: block;} 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; } 473 -
plain-event-calendar/trunk/vendor/plainware/ui/boot.php
r3400983 r3406711 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\TimeInput::class, Renderer\Form\TimeInputRenderer::class) 41 42 ->renderer(Component\Collection::class, Renderer\CollectionRenderer::class) 43 24 44 ->renderer(Component\AbstractTag::class, Renderer\HtmlElementRenderer::class) 25 45 ->renderer(Component\Main::class, Renderer\MainRenderer::class) … … 29 49 ->renderer(Component\Breadcrumbs::class, Renderer\BreadcrumbsRenderer::class) 30 50 ->renderer(Component\Table::class, Renderer\TableRenderer::class) 31 ->renderer(Component\Container::class, Renderer\ContainerRenderer::class)32 51 ->renderer(Component\Section::class, Renderer\SectionRenderer::class) 33 52 ->renderer(Component\StartEnd::class, Renderer\StartEndRenderer::class) … … 37 56 ->renderer(Component\Menu::class, Renderer\MenuRenderer::class) 38 57 ->renderer(Component\InlineList::class, Renderer\InlineListRenderer::class) 58 ->renderer(Component\BlockList::class, Renderer\BlockListRenderer::class) 39 59 ->renderer(Component\TabMenu::class, Renderer\TabMenuRenderer::class) 40 60 ->renderer(Component\Grid::class, Renderer\GridRenderer::class) … … 42 62 ->renderer(Component\Partial::class, Renderer\PartialRenderer::class) 43 63 ->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 64 ; 66 65 }); -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/AbstractTag.php
r3372822 r3406711 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; -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Breadcrumbs.php
r3372822 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/AbstractInput.php
r3372822 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/CheckboxInput.php
r3372822 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/CheckboxSetInput.php
r3372822 r3406711 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 private array $options = [];12 private bool $isVertical = false;11 private array $options; 12 private array $value = []; 13 13 14 public function __construct(array $options )14 public function __construct(array $options = []) 15 15 { 16 16 $this->options = $options; 17 $this->setValue([]);18 }19 20 public function isBasic(): bool21 {22 return false;23 }24 25 public function grab(Request $request)26 {27 $ret = $request->getPostParam($this->getName()) ?? [];28 29 return $ret;30 17 } 31 18 … … 35 22 } 36 23 37 public function set Vertical(bool $on = true): self24 public function setOptions(array $v): self 38 25 { 39 $this-> isVertical = $on;26 $this->options = $v; 40 27 41 28 return $this; 42 29 } 43 30 44 public function isVertical(): bool31 public function grab(Request $request): array 45 32 { 46 return $this->isVertical; 33 $ret = $request->getPostParam($this->getName()) ?? []; 34 $ret = array_intersect($ret, array_keys($this->options)); 35 36 return $ret; 37 } 38 39 public function setValue(array $v): self 40 { 41 $this->value = array_intersect($v, array_keys($this->options)); 42 43 return $this; 44 } 45 46 public function getValue(): array 47 { 48 return $this->value; 47 49 } 48 50 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/ColorInput.php
r3372822 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/DateInput.php
r3403596 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/InputInterface.php
r3372822 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/NumberInput.php
r3372822 r3406711 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 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/PasswordInput.php
r3372822 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/RadioInput.php
r3332867 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/RadioSetInput.php
r3372822 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/SelectInput.php
r3372822 r3406711 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 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/TextInput.php
r3332867 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/TextareaInput.php
r3332867 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Form/TimeInput.php
r3400983 r3406711 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 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/HtmlElement.php
r3372822 r3406711 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) -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/InlineList.php
r3372822 r3406711 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 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Component/Menu.php
r3394866 r3406711 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 = []; 7 8 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 = []) 9 public function __construct(array $items = []) 14 10 { 15 $link = new Link($to, $params);16 17 return $this->add($order, $link);11 foreach ($items as $item) { 12 $this->add($item); 13 } 18 14 } 19 15 20 public function setCurrentSlug($currentSlug): self16 public function add($item) 21 17 { 22 $this->currentSlug = $currentSlug; 18 return $this->addWithOrder($item, 50); 19 } 20 21 public function addWithOrder($item, int $weight): self 22 { 23 $this->items[] = [$weight, $item]; 23 24 24 25 return $this; 25 26 } 26 27 27 public function get CurrentSlug()28 public function getItems(): array 28 29 { 29 return $this->currentSlug; 30 } 30 $ret = $this->items; 31 usort($ret, fn($a, $b) => ($a[0] - $b[0])); 32 $ret = array_column($ret, 1); 31 33 32 public function setVertical(bool $on = true): self 33 { 34 $this->isVertical = $on; 35 36 return $this; 37 } 38 39 public function isVertical(): bool 40 { 41 return $this->isVertical; 34 return $ret; 42 35 } 43 36 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Middleware/PageLayoutMiddleware.php
r3400983 r3406711 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); -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/BreadcrumbsRenderer.php
r3394866 r3406711 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 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/ButtonRenderer.php
r3394866 r3406711 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(); -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/CheckboxInputRenderer.php
r3394866 r3406711 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 $label = (new HtmlElement('label', $label)) 40 ->withAttr('for', $htmlId); 41 ; 42 $ret = (new InlineList()) 43 ->setSpacing(1) 44 ->add($ret) 45 ->add($label) 46 ; 44 47 } 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 48 56 49 return $ret; -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/CheckboxSetInputRenderer.php
r3372822 r3406711 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 ->withAttr('class', 'pw-form-raw-item') 20 ; 23 21 24 22 $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); 23 foreach ($options as $k => $label) { 24 $one = (new CheckboxInput($name . '[]')) 25 ->setLabel($label) 26 ->setHtmlValue($k) 27 ; 28 if (in_array($k, $value)) { 29 $one->setValue(true); 38 30 } 39 40 $ret->append($ret_); 31 $ret->add($one); 41 32 } 42 33 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/DateInputRenderer.php
r3394866 r3406711 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 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/NumberInputRenderer.php
r3394866 r3406711 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(TextInput $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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/PasswordInputRenderer.php
r3394866 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/RadioInputRenderer.php
r3394866 r3406711 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 $label = (new HtmlElement('label', $label)) 40 ->withAttr('for', $htmlId); 41 ; 42 $ret = (new InlineList()) 43 ->setSpacing(1) 44 ->add($ret) 45 ->add($label) 46 ; 47 } 40 48 41 49 return $ret; -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/RadioSetInputRenderer.php
r3372822 r3406711 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 ->withAttr('class', 'pw-form-raw-item') 20 ; 21 17 22 $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); 23 foreach ($options as $k => $label) { 24 $one = (new RadioInput($name)) 25 ->setLabel($label) 26 ->setHtmlValue($k) 27 ; 28 if ($k === $value) { 29 $one->setValue(true); 30 30 } 31 } elseif (1 === count($options)) { 32 $v = current($options); 33 $ret->add($v); 34 } else { 35 $ret->add('?'); 31 $ret->add($one); 36 32 } 37 33 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/SelectInputRenderer.php
r3394866 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/TextInputRenderer.php
r3394866 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/TextareaInputRenderer.php
r3394866 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/Form/TimeInputRenderer.php
r3400983 r3406711 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; … … 44 39 $inputHour->setValue($valueH); 45 40 46 $ret[] = '<li>';47 $ret[] = $this->ui->render($inputHour, $request);48 $ret[] = '</li>';49 50 $ret[] = '<li>:</li>';51 52 41 $options = []; 53 42 $step = $el->getStep(); … … 60 49 $inputMinute->setName($name . '_m'); 61 50 $inputMinute->setValue($valueM); 51 52 $ret = (new InlineList()) 53 ->add($inputHour) 54 ->add(':') 55 ->add($inputMinute) 56 ; 57 58 return $ret; 59 60 61 62 63 64 65 $ret[] = '<li>'; 66 $ret[] = $this->ui->render($inputHour, $request); 67 $ret[] = '</li>'; 68 69 $ret[] = '<li>:</li>'; 70 62 71 63 72 $ret[] = '<li>'; -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/InlineListRenderer.php
r3372822 r3406711 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(); -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/MainMenuRenderer.php
r3400983 r3406711 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 } -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/MenuRenderer.php
r3400983 r3406711 32 32 } 33 33 34 $isVertical = $el->isVertical(); 34 // $isVertical = $el->isVertical(); 35 $isVertical = false; 35 36 36 37 $ret = new HtmlElement('div'); -
plain-event-calendar/trunk/vendor/plainware/ui/src/Renderer/PartialRenderer.php
r3400983 r3406711 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 -
plain-event-calendar/trunk/vendor/plainware/ui/src/Ui.php
r3394866 r3406711 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.