diff --git a/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php b/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php index 1917d3f581..e88852d5b8 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php @@ -37,9 +37,22 @@ class ToolsController extends Controller $metadata = false; $record = null; + $recordAccessibleSubdefs = array(); if (count($records) == 1) { $record = $records->first(); + + // fetch subdef list: + $subdefs = $record->get_subdefs(); + + foreach ($subdefs as $subdef) { + $permalink = $subdef->get_permalink(); + $recordAccessibleSubdefs[] = array( + 'name' => $subdef->get_name(), + 'state' => $permalink->get_is_activated() + ); + } + if (!$record->isStory()) { try { $metadata = $this->getExifToolReader() @@ -56,6 +69,7 @@ class ToolsController extends Controller return $this->render('prod/actions/Tools/index.html.twig', [ 'records' => $records, 'record' => $record, + 'recordSubdefs' => $recordAccessibleSubdefs, 'metadatas' => $metadata, ]); } @@ -268,6 +282,44 @@ class ToolsController extends Controller return $this->app->json($return); } + /** + * Edit a record share state + * @param Application $app + * @param Request $request + * @param $base_id + * @param $record_id + * @return \Symfony\Component\HttpFoundation\JsonResponse + */ + public function editRecordSharing(Request $request, $base_id, $record_id) + { + + $record = new \record_adapter($this->app, \phrasea::sbasFromBas($this->app, $base_id), $record_id); + $subdefName = (string)$request->request->get('name'); + $state = $request->request->get('state') == 'true' ? true : false; + $return = ['success' => false, 'message' => 'document type not found']; + + $acl = $this->getAclForUser(); + if (!$acl->has_access_to_subdef($record, $subdefName) || !$acl->is_admin()) { + $this->app->abort(403); + } + + $subdefs = $record->get_subdefs(); + + foreach ($subdefs as $subdef) { + if ($subdef->get_name($subdefName) === $subdefName) { + $permalink = $subdef->get_permalink(); + try { + $permalink->set_is_activated($state); + $return = ['success' => true, 'state' => $permalink->get_is_activated()]; + } catch (\Exception $e) { + $return = ['success' => false, 'state' => $permalink->get_is_activated()]; + } + } + } + + return $this->app->json($return); + } + /** * @return Reader */ diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Prod/Tools.php b/lib/Alchemy/Phrasea/ControllerProvider/Prod/Tools.php index d908cbae06..580ea49bb3 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Prod/Tools.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Prod/Tools.php @@ -66,6 +66,8 @@ class Tools implements ControllerProviderInterface, ServiceProviderInterface $controllers->post('/thumb-extractor/apply/', 'controller.prod.tools:applyThumbnailExtractionAction'); + $controllers->post('/sharing-editor/{base_id}/{record_id}/', 'controller.prod.tools:editRecordSharing'); + return $controllers; } } diff --git a/templates/web/prod/Share/record.html.twig b/templates/web/prod/Share/record.html.twig index 2f9621b439..c0b5776e9a 100644 --- a/templates/web/prod/Share/record.html.twig +++ b/templates/web/prod/Share/record.html.twig @@ -11,21 +11,20 @@ {% if url is not empty %}