From 38731234f03c07f061973db7fc33e8e1869cc326 Mon Sep 17 00:00:00 2001 From: Andrei Shapiro Date: Wed, 14 Feb 2024 08:22:29 +0300 Subject: [PATCH 1/8] feat: add new action for room scan and waiting page --- controller/DeliveryServer.php | 13 +++ .../templates/DeliveryServer/waiting_page.tpl | 102 ++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 views/templates/DeliveryServer/waiting_page.tpl diff --git a/controller/DeliveryServer.php b/controller/DeliveryServer.php index bb4cbdb1..103e4b5c 100755 --- a/controller/DeliveryServer.php +++ b/controller/DeliveryServer.php @@ -235,6 +235,19 @@ public function initDeliveryExecution(): void } } + public function startRoomScan(): void + { + $redirectUrl = _url( + 'runDeliveryExecution', + 'DeliveryServer', + 'taoDelivery', + ['deliveryExecution' => $this->getCurrentDeliveryExecution()->getIdentifier()] + ); + + $this->setData('delivery-execution-url', $redirectUrl); + $this->setView('DeliveryServer/waiting_page.tpl', 'taoDelivery'); + } + /** * Displays the execution screen * diff --git a/views/templates/DeliveryServer/waiting_page.tpl b/views/templates/DeliveryServer/waiting_page.tpl new file mode 100644 index 00000000..0bdeab5f --- /dev/null +++ b/views/templates/DeliveryServer/waiting_page.tpl @@ -0,0 +1,102 @@ + + + + + + + + + + <?= Layout::getTitle() ?> + + + + + + + + render() + : '' ?> + + + + + Start test + + From 9854ac05e0a8b126acf195f24098996aa2bb0117 Mon Sep 17 00:00:00 2001 From: Andrei Shapiro Date: Wed, 21 Feb 2024 10:06:33 +0300 Subject: [PATCH 2/8] chore: clean code --- controller/DeliveryServer.php | 11 +- .../templates/DeliveryServer/waiting_page.tpl | 158 ++++++++---------- 2 files changed, 74 insertions(+), 95 deletions(-) diff --git a/controller/DeliveryServer.php b/controller/DeliveryServer.php index 103e4b5c..d5022bf9 100755 --- a/controller/DeliveryServer.php +++ b/controller/DeliveryServer.php @@ -235,16 +235,9 @@ public function initDeliveryExecution(): void } } - public function startRoomScan(): void + public function waitingPage(): void { - $redirectUrl = _url( - 'runDeliveryExecution', - 'DeliveryServer', - 'taoDelivery', - ['deliveryExecution' => $this->getCurrentDeliveryExecution()->getIdentifier()] - ); - - $this->setData('delivery-execution-url', $redirectUrl); + $this->setData('delivery-execution-url', $this->getGetParameter('deliveryExecutionUrl')); $this->setView('DeliveryServer/waiting_page.tpl', 'taoDelivery'); } diff --git a/views/templates/DeliveryServer/waiting_page.tpl b/views/templates/DeliveryServer/waiting_page.tpl index 0bdeab5f..fefcfb88 100644 --- a/views/templates/DeliveryServer/waiting_page.tpl +++ b/views/templates/DeliveryServer/waiting_page.tpl @@ -1,102 +1,88 @@ - - - - + + + + - + <?= Layout::getTitle() ?> - <?= Layout::getTitle() ?> + - - - Start test - + .button:disabled { + box-shadow: rgba(60, 64, 67, .3) 0 1px 3px 0, rgba(60, 64, 67, .15) 0 4px 8px 3px; + } + + + + + From 3dd30d957f067d1ead7aea98ec9bc1dee1521c71 Mon Sep 17 00:00:00 2001 From: Andrei Shapiro Date: Wed, 21 Feb 2024 16:23:21 +0300 Subject: [PATCH 3/8] chore: use existing endpoint --- controller/DeliveryServer.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/controller/DeliveryServer.php b/controller/DeliveryServer.php index d5022bf9..810b83c6 100755 --- a/controller/DeliveryServer.php +++ b/controller/DeliveryServer.php @@ -235,12 +235,6 @@ public function initDeliveryExecution(): void } } - public function waitingPage(): void - { - $this->setData('delivery-execution-url', $this->getGetParameter('deliveryExecutionUrl')); - $this->setView('DeliveryServer/waiting_page.tpl', 'taoDelivery'); - } - /** * Displays the execution screen * @@ -251,6 +245,13 @@ public function waitingPage(): void */ public function runDeliveryExecution(): void { + if ($this->hasGetParameter('waitingPage')) { + $this->setData('delivery-execution-url', $this->getGetParameter('deliveryExecutionUrl')); + $this->setView('DeliveryServer/waiting_page.tpl', 'taoDelivery'); + + return; + } + $deliveryExecution = $this->getCurrentDeliveryExecution(); if (!in_array($deliveryExecution->getState()->getUri(), $this->getDeliveryServer()->getResumableStates())) { From b4c66b2c4dc0dcefd8934458c26ebdc3e986c463 Mon Sep 17 00:00:00 2001 From: jsconan Date: Fri, 23 Feb 2024 16:17:37 +0100 Subject: [PATCH 4/8] feat: use the list box design for presenting the start action --- controller/DeliveryServer.php | 1 + .../templates/DeliveryServer/waiting_page.tpl | 102 +++--------------- 2 files changed, 15 insertions(+), 88 deletions(-) diff --git a/controller/DeliveryServer.php b/controller/DeliveryServer.php index 810b83c6..3e246583 100755 --- a/controller/DeliveryServer.php +++ b/controller/DeliveryServer.php @@ -247,6 +247,7 @@ public function runDeliveryExecution(): void { if ($this->hasGetParameter('waitingPage')) { $this->setData('delivery-execution-url', $this->getGetParameter('deliveryExecutionUrl')); + $this->setData('block-title', __('Authorized, you may proceed')); $this->setView('DeliveryServer/waiting_page.tpl', 'taoDelivery'); return; diff --git a/views/templates/DeliveryServer/waiting_page.tpl b/views/templates/DeliveryServer/waiting_page.tpl index fefcfb88..7565ce7f 100644 --- a/views/templates/DeliveryServer/waiting_page.tpl +++ b/views/templates/DeliveryServer/waiting_page.tpl @@ -1,88 +1,14 @@ - - - - - - - - <?= Layout::getTitle() ?> - - - - - - - +
+
    +
  • +
    +

    +
    + + + +
    +
    +
  • +
+
From 57853210a9f5faea16f9cad486094ea3ba99b0b3 Mon Sep 17 00:00:00 2001 From: jsconan Date: Fri, 23 Feb 2024 16:23:48 +0100 Subject: [PATCH 5/8] feat: use the delivery layout for the waiting page, factorize the page setup --- controller/DeliveryServer.php | 61 +++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/controller/DeliveryServer.php b/controller/DeliveryServer.php index 3e246583..c7d5b9b3 100755 --- a/controller/DeliveryServer.php +++ b/controller/DeliveryServer.php @@ -116,32 +116,7 @@ public function index() } $this->setData('availableDeliveries', $deliveryData); - /** - * Header & footer info - */ - $this->setData('showControls', $this->showControls()); - $this->setData('userLabel', tao_helpers_Display::htmlEscape($session->getUserLabel())); - - // Require JS config - $this->setData('client_config_url', $this->getClientConfigUrl()); - $this->setData('client_timeout', $this->getClientTimeout()); - - $loaderRenderer = new \Renderer(Template::getTemplate('DeliveryServer/blocks/loader.tpl', 'taoDelivery')); - $loaderRenderer->setData('client_config_url', $this->getClientConfigUrl()); - $loaderRenderer->setData('parameters', ['messages' => $this->getViewDataFromRequest()]); - - /* @var $urlRouteService DefaultUrlService */ - $urlRouteService = $this->getServiceManager()->get(DefaultUrlService::SERVICE_ID); - $this->setData('logout', $urlRouteService->getUrl('logoutDelivery', [])); - - /** - * Layout template + real template inclusion - */ - $this->setData('additional-header', $loaderRenderer); - $this->setData('content-template', 'DeliveryServer/index.tpl'); - $this->setData('content-extension', 'taoDelivery'); - $this->setData('title', __('TAO: Test Selection')); - $this->setView('DeliveryServer/layout.tpl', 'taoDelivery'); + $this->setTemplate('DeliveryServer/index.tpl', __('TAO: Test Selection')); } /** @@ -248,7 +223,7 @@ public function runDeliveryExecution(): void if ($this->hasGetParameter('waitingPage')) { $this->setData('delivery-execution-url', $this->getGetParameter('deliveryExecutionUrl')); $this->setData('block-title', __('Authorized, you may proceed')); - $this->setView('DeliveryServer/waiting_page.tpl', 'taoDelivery'); + $this->setTemplate('DeliveryServer/waiting_page.tpl', __('Waiting page')); return; } @@ -353,6 +328,38 @@ public function finishDeliveryExecution() $this->redirect($this->getReturnUrl()); } + protected function setTemplate(string $template, string $title) + { + $session = common_session_SessionManager::getSession(); + + /** + * Header & footer info + */ + $this->setData('showControls', $this->showControls()); + $this->setData('userLabel', tao_helpers_Display::htmlEscape($session->getUserLabel())); + + // Require JS config + $this->setData('client_config_url', $this->getClientConfigUrl()); + $this->setData('client_timeout', $this->getClientTimeout()); + + $loaderRenderer = new \Renderer(Template::getTemplate('DeliveryServer/blocks/loader.tpl', 'taoDelivery')); + $loaderRenderer->setData('client_config_url', $this->getClientConfigUrl()); + $loaderRenderer->setData('parameters', ['messages' => $this->getViewDataFromRequest()]); + + /* @var $urlRouteService DefaultUrlService */ + $urlRouteService = $this->getServiceManager()->get(DefaultUrlService::SERVICE_ID); + $this->setData('logout', $urlRouteService->getUrl('logoutDelivery', [])); + + /** + * Layout template + real template inclusion + */ + $this->setData('additional-header', $loaderRenderer); + $this->setData('content-template', $template); + $this->setData('content-extension', 'taoDelivery'); + $this->setData('title', $title); + $this->setView('DeliveryServer/layout.tpl', 'taoDelivery'); + } + /** * Initialize the result server using the delivery configuration and for this results session submission * From 27c4a65018e5aafb3e5c5480aaaf6aa7ca2a65c8 Mon Sep 17 00:00:00 2001 From: jsconan Date: Fri, 23 Feb 2024 16:25:15 +0100 Subject: [PATCH 6/8] feat: center the action block in the waiting page --- controller/DeliveryServer.php | 1 + views/css/delivery.css | 2 +- views/css/delivery.css.map | 2 +- views/scss/delivery.scss | 8 ++++++++ views/templates/DeliveryServer/layout.tpl | 2 +- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/controller/DeliveryServer.php b/controller/DeliveryServer.php index c7d5b9b3..c00db316 100755 --- a/controller/DeliveryServer.php +++ b/controller/DeliveryServer.php @@ -223,6 +223,7 @@ public function runDeliveryExecution(): void if ($this->hasGetParameter('waitingPage')) { $this->setData('delivery-execution-url', $this->getGetParameter('deliveryExecutionUrl')); $this->setData('block-title', __('Authorized, you may proceed')); + $this->setData('scope', 'waiting-page'); $this->setTemplate('DeliveryServer/waiting_page.tpl', __('Waiting page')); return; diff --git a/views/css/delivery.css b/views/css/delivery.css index ea959ab6..53ddd760 100644 --- a/views/css/delivery.css +++ b/views/css/delivery.css @@ -1,3 +1,3 @@ -body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>.lft{float:right}body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>.rgt{float:left}body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>[role=menu]>.settings-menu{padding-left:20px}body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>[role=menu]>.settings-menu>.plain>*{float:right;padding-left:0px;padding-right:15px}body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>[role=menu]>.settings-menu>.plain>*:before{right:7px}body.delivery-scope[dir=rtl] .content-wrap [role=menubar] .icon-logout{transform:scaleX(-1)}body.delivery-scope[dir=rtl] .test-listing .icon-continue,body.delivery-scope[dir=rtl] .test-listing .icon-play{transform:rotate(180deg);display:inline-block}html{width:100% !important}.delivery-scope{min-height:300px;-webkit-touch-callout:none}.delivery-scope .no-controls{margin-bottom:0 !important}.delivery-scope .no-controls:after{height:0 !important}.delivery-scope .section-container .content-block.iframe-block{padding:0}.delivery-scope .section-container .content-block.iframe-block iframe{width:100%}.delivery-scope .title-box{font-size:16px;font-size:1.6rem;padding:22px 40px 0}.delivery-scope .test-listing{display:block;width:500px;margin:auto}.delivery-scope .test-listing h1{font-family:"Source Sans Pro",sans-serif;font-size:22px;font-size:2.2rem;font-weight:normal}.delivery-scope .test-listing h2{font-family:"Source Sans Pro",sans-serif;font-size:18px;font-size:1.8rem;margin:30px 0 10px}.delivery-scope .test-listing .entry-point-box{margin-top:0}.delivery-scope .test-listing .action{display:inline-block;position:absolute;padding:20px;right:-1px;bottom:-1px;height:62px;background:inherit;color:#276d9b;text-shadow:none;border-bottom:3px solid}.delivery-scope .test-listing .action:focus{outline:3px solid #276d9b;outline-offset:3px}.delivery-scope .test-listing .action:hover{color:#4f83a7} +body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>.lft{float:right}body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>.rgt{float:left}body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>[role=menu]>.settings-menu{padding-left:20px}body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>[role=menu]>.settings-menu>.plain>*{float:right;padding-left:0px;padding-right:15px}body.delivery-scope[dir=rtl] .content-wrap [role=menubar]>[role=menu]>.settings-menu>.plain>*:before{right:7px}body.delivery-scope[dir=rtl] .content-wrap [role=menubar] .icon-logout{transform:scaleX(-1)}body.delivery-scope[dir=rtl] .test-listing .icon-continue,body.delivery-scope[dir=rtl] .test-listing .icon-play{transform:rotate(180deg);display:inline-block}html{width:100% !important}.delivery-scope{min-height:300px;-webkit-touch-callout:none}.delivery-scope .no-controls{margin-bottom:0 !important}.delivery-scope .no-controls:after{height:0 !important}.delivery-scope .section-container .content-block.iframe-block{padding:0}.delivery-scope .section-container .content-block.iframe-block iframe{width:100%}.delivery-scope .title-box{font-size:16px;font-size:1.6rem;padding:22px 40px 0}.delivery-scope .test-listing{display:block;width:500px;margin:auto}.delivery-scope .test-listing h1{font-family:"Source Sans Pro",sans-serif;font-size:22px;font-size:2.2rem;font-weight:normal}.delivery-scope .test-listing h2{font-family:"Source Sans Pro",sans-serif;font-size:18px;font-size:1.8rem;margin:30px 0 10px}.delivery-scope .test-listing .entry-point-box{margin-top:0}.delivery-scope .test-listing .action{display:inline-block;position:absolute;padding:20px;right:-1px;bottom:-1px;height:62px;background:inherit;color:#276d9b;text-shadow:none;border-bottom:3px solid}.delivery-scope .test-listing .action:focus{outline:3px solid #276d9b;outline-offset:3px}.delivery-scope .test-listing .action:hover{color:#4f83a7}.waiting-page .content-wrap{display:flex;flex-direction:column} /*# sourceMappingURL=delivery.css.map */ \ No newline at end of file diff --git a/views/css/delivery.css.map b/views/css/delivery.css.map index 369958a9..f2118512 100644 --- a/views/css/delivery.css.map +++ b/views/css/delivery.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../scss/inc/rtl/_header.scss","../scss/inc/rtl/_content.scss","../scss/delivery.scss","../../../tao/views/node_modules/@oat-sa/tao-core-ui/scss/inc/_functions.scss","../../../tao/views/node_modules/@oat-sa/tao-core-ui/scss/inc/_variables.scss","../../../tao/views/node_modules/@oat-sa/tao-core-ui/scss/inc/_colors.scss"],"names":[],"mappings":"AAOQ,+DACI,YAEJ,+DACI,WAEJ,qFACI,kBACA,8FACI,YACA,iBACA,mBACA,qGACI,UAIZ,uEACI,qBCpBR,gHACI,yBACA,qBCJR,KACI,sBAEJ,gBACI,iBACA,2BAEA,6BACI,2BACA,mCACI,oBAMA,+DACI,UACA,sEACI,WAMhB,2BC4LI,eACA,iBD3LA,oBAIJ,8BACI,cACA,YACA,YACA,iCACI,YE9BE,6BD+MN,eACA,iBDhLI,mBAEJ,iCACI,YEnCE,6BD+MN,eACA,iBD3KI,mBAEJ,+CACI,aAEJ,sCACI,qBACA,kBACA,aACA,WACA,YACA,YACA,mBACA,MGmBM,QHlBN,iBACA,wBACA,4CACI,0BACA,mBAEJ,4CACI,MGYO","file":"delivery.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../scss/inc/rtl/_header.scss","../scss/inc/rtl/_content.scss","../scss/delivery.scss","../../../tao/views/node_modules/@oat-sa/tao-core-ui/scss/inc/_functions.scss","../../../tao/views/node_modules/@oat-sa/tao-core-ui/scss/inc/_variables.scss","../../../tao/views/node_modules/@oat-sa/tao-core-ui/scss/inc/_colors.scss"],"names":[],"mappings":"AAOQ,+DACI,YAEJ,+DACI,WAEJ,qFACI,kBACA,8FACI,YACA,iBACA,mBACA,qGACI,UAIZ,uEACI,qBCpBR,gHACI,yBACA,qBCJR,KACI,sBAEJ,gBACI,iBACA,2BAEA,6BACI,2BACA,mCACI,oBAMA,+DACI,UACA,sEACI,WAMhB,2BC4LI,eACA,iBD3LA,oBAIJ,8BACI,cACA,YACA,YACA,iCACI,YE9BE,6BD+MN,eACA,iBDhLI,mBAEJ,iCACI,YEnCE,6BD+MN,eACA,iBD3KI,mBAEJ,+CACI,aAEJ,sCACI,qBACA,kBACA,aACA,WACA,YACA,YACA,mBACA,MGmBM,QHlBN,iBACA,wBACA,4CACI,0BACA,mBAEJ,4CACI,MGYO,QHJnB,4BACI,aACA","file":"delivery.css"} \ No newline at end of file diff --git a/views/scss/delivery.scss b/views/scss/delivery.scss index 487d275d..e33f9e8c 100644 --- a/views/scss/delivery.scss +++ b/views/scss/delivery.scss @@ -69,4 +69,12 @@ html { } } } + +} + +.waiting-page { + .content-wrap{ + display: flex; + flex-direction: column; + } } diff --git a/views/templates/DeliveryServer/layout.tpl b/views/templates/DeliveryServer/layout.tpl index 90e032b6..15005acc 100644 --- a/views/templates/DeliveryServer/layout.tpl +++ b/views/templates/DeliveryServer/layout.tpl @@ -24,7 +24,7 @@ use oat\tao\model\theme\Theme; ? get_data('additional-header')->render() : '' ?> - +
From 59bf2e9d6e92d018efb16eae9116a3883912783e Mon Sep 17 00:00:00 2001 From: jsconan Date: Fri, 23 Feb 2024 16:33:43 +0100 Subject: [PATCH 7/8] feat: hide the home and logout button in the waiting page --- controller/DeliveryServer.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/controller/DeliveryServer.php b/controller/DeliveryServer.php index c00db316..84863e54 100755 --- a/controller/DeliveryServer.php +++ b/controller/DeliveryServer.php @@ -224,6 +224,8 @@ public function runDeliveryExecution(): void $this->setData('delivery-execution-url', $this->getGetParameter('deliveryExecutionUrl')); $this->setData('block-title', __('Authorized, you may proceed')); $this->setData('scope', 'waiting-page'); + $this->setData('hideHomeButton', true); + $this->setData('hideLogoutButton', true); $this->setTemplate('DeliveryServer/waiting_page.tpl', __('Waiting page')); return; From a9f197f5a9c130520e3b640ceb603651421cdd94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20CONAN?= Date: Fri, 23 Feb 2024 16:58:55 +0100 Subject: [PATCH 8/8] refactor: change the helper visibility to private MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Gabriel Felipe Soares Signed-off-by: Jean-Sébastien CONAN --- controller/DeliveryServer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controller/DeliveryServer.php b/controller/DeliveryServer.php index 84863e54..8d17f6aa 100755 --- a/controller/DeliveryServer.php +++ b/controller/DeliveryServer.php @@ -331,7 +331,7 @@ public function finishDeliveryExecution() $this->redirect($this->getReturnUrl()); } - protected function setTemplate(string $template, string $title) + private function setTemplate(string $template, string $title) { $session = common_session_SessionManager::getSession();