Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/oat-sa/tao-core into fix…
Browse files Browse the repository at this point in the history
…/AUT-3923/textreader-image-figure-support
  • Loading branch information
olga-kulish committed Nov 12, 2024
2 parents 79051d2 + 23e0517 commit a1fd7e2
Show file tree
Hide file tree
Showing 112 changed files with 8,502 additions and 248 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ Here you can find the environment variables including feature flags
| DATA_STORE_STATISTIC_PUB_SUB_TOPIC | Topic name for statistic metadata Pub/Sub | - |
| REDIRECT_AFTER_LOGOUT_URL | Allows to configure the redirect after logout via environment variable. The fallback is the configured redirect on urlroute.conf.php | - |
| PORTAL_URL | The Portal url used on the back button of Portal theme | - |
| FEATURE_FLAG_TRANSLATION_ENABLED | Enable access to items/tests translations feature | - |


# Routing
Expand Down
19 changes: 17 additions & 2 deletions actions/class.Main.php
Original file line number Diff line number Diff line change
Expand Up @@ -521,11 +521,13 @@ private function getSections($shownExtension, $shownStructure)
$sections = [];
$user = $this->getSession()->getUser();
$structure = MenuService::getPerspective($shownExtension, $shownStructure);
$sectionVisibilityFilter = $this->getSectionVisibilityFilter();

if (!is_null($structure)) {
foreach ($structure->getChildren() as $section) {
$resolver = new ActionResolver($section->getUrl());

if (!$this->getSectionVisibilityFilter()->isVisible($section->getId())) {
if (!$sectionVisibilityFilter->isVisible($section->getId())) {
continue;
}

Expand All @@ -540,6 +542,19 @@ private function getSections($shownExtension, $shownStructure)

if (FuncProxy::accessPossible($user, $resolver->getController(), $resolver->getAction())) {
foreach ($section->getActions() as $action) {
$sectionPath = $sectionVisibilityFilter->createSectionPath(
[
$section->getId(),
$action->getId()
]
);

if (!$sectionVisibilityFilter->isVisible($sectionPath)) {
$section->removeAction($action);

continue;
}

$this->propagate($action);
$resolver = new ActionResolver($action->getUrl());
if (
Expand Down Expand Up @@ -580,7 +595,7 @@ protected function getUserService()
return $this->getServiceLocator()->get(tao_models_classes_UserService::SERVICE_ID);
}

private function getSectionVisibilityFilter(): SectionVisibilityFilterInterface
private function getSectionVisibilityFilter(): SectionVisibilityFilter
{
if (empty($this->sectionVisibilityFilter)) {
$this->sectionVisibilityFilter = $this->getServiceLocator()->get(SectionVisibilityFilter::SERVICE_ID);
Expand Down
168 changes: 168 additions & 0 deletions actions/class.Translation.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
<?php

/**
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; under version 2
* of the License (non-upgradable).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Copyright (c) 2024 (original work) Open Assessment Technologies SA;
*/

declare(strict_types=1);

use oat\tao\model\http\HttpJsonResponseTrait;
use oat\tao\model\Translation\Command\UpdateTranslationCommand;
use oat\tao\model\Translation\Service\ResourceTranslationRetriever;
use oat\tao\model\Translation\Service\ResourceTranslatableRetriever;
use oat\tao\model\Translation\Service\TranslationCreationService;
use oat\tao\model\Translation\Service\TranslationDeletionService;
use oat\tao\model\Translation\Service\TranslationSyncService;
use oat\tao\model\Translation\Service\TranslationUpdateService;

class tao_actions_Translation extends tao_actions_CommonModule
{
use HttpJsonResponseTrait;

/**
* @requiresRight id WRITE
*/
public function update(): void
{
try {
$resource = $this->getTranslationUpdateService()->update(
new UpdateTranslationCommand(
$this->getRequestParameter('id'),
$this->getRequestParameter('progress'),
)
);

$this->setSuccessJsonResponse(
[
'resourceUri' => $resource->getUri()
]
);
} catch (Throwable $exception) {
$this->setErrorJsonResponse($exception->getMessage());
}
}

/**
* @requiresRight id WRITE
*/
public function delete(): void
{
try {
$resource = $this->getTranslationDeletionService()->deleteByRequest($this->getPsrRequest());

$this->setSuccessJsonResponse(
[
'resourceUri' => $resource->getUri()
]
);
} catch (Throwable $exception) {
$this->setErrorJsonResponse($exception->getMessage());
}
}

/**
* @requiresRight id WRITE
*/
public function translate(): void
{
try {
$newResource = $this->getTranslationCreationService()->createByRequest($this->getPsrRequest());

$this->setSuccessJsonResponse(
[
'resourceUri' => $newResource->getUri()
]
);
} catch (Throwable $exception) {
$this->setErrorJsonResponse($exception->getMessage());
}
}

/**
* @requiresRight id READ
*/
public function translations(): void
{
try {
$this->setSuccessJsonResponse(
$this->getResourceTranslationRetriever()->getByRequest($this->getPsrRequest())
);
} catch (Throwable $exception) {
$this->setErrorJsonResponse($exception->getMessage());
}
}

/**
* @requiresRight id READ
*/
public function translatable(): void
{
try {
$this->setSuccessJsonResponse(
$this->getResourceTranslatableRetriever()->getByRequest($this->getPsrRequest())
);
} catch (Throwable $exception) {
$this->setErrorJsonResponse($exception->getMessage());
}
}

/**
* @requiresRight id WRITE
*/
public function sync(): void
{
try {
$test = $this->getTranslationSyncService()->syncByRequest($this->getPsrRequest());

$this->setSuccessJsonResponse([
'resourceUri' => $test->getUri(),
]);
} catch (Throwable $exception) {
$this->setErrorJsonResponse($exception->getMessage());
}
}

private function getResourceTranslationRetriever(): ResourceTranslationRetriever
{
return $this->getPsrContainer()->get(ResourceTranslationRetriever::class);
}

private function getResourceTranslatableRetriever(): ResourceTranslatableRetriever
{
return $this->getPsrContainer()->get(ResourceTranslatableRetriever::class);
}

private function getTranslationCreationService(): TranslationCreationService
{
return $this->getPsrContainer()->get(TranslationCreationService::class);
}

private function getTranslationUpdateService(): TranslationUpdateService
{
return $this->getPsrContainer()->get(TranslationUpdateService::class);
}

private function getTranslationSyncService(): TranslationSyncService
{
return $this->getPsrContainer()->get(TranslationSyncService::class);
}

private function getTranslationDeletionService(): TranslationDeletionService
{
return $this->getPsrContainer()->get(TranslationDeletionService::class);
}
}
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
"oat-sa/jig": "~0.2",
"oat-sa/composer-npm-bridge": "~0.4.2||dev-master",
"oat-sa/oatbox-extension-installer": "~1.1||dev-master",
"oat-sa/generis": ">=15.36.4",
"oat-sa/generis": ">=15.39.0",
"composer/package-versions-deprecated": "^1.11",
"paragonie/random_compat": "^2.0",
"phpdocumentor/reflection-docblock": "^5.2",
Expand Down
Loading

0 comments on commit a1fd7e2

Please sign in to comment.