PHRAS-3429 set assets order in publication

This commit is contained in:
aynsix
2021-04-29 17:35:43 +03:00
parent 690c2ecaf8
commit d8d5a1cb40
22 changed files with 2068 additions and 1845 deletions

View File

@@ -80,11 +80,15 @@ class PSExposeController extends Controller
*/
public function updatePublicationPermissionAction(PhraseaApplication $app, Request $request)
{
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$request->get('exposeName')];
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$exposeClient = $this->getExposeClient($request->get('exposeName'));
$accessToken = $this->getAndSaveToken($exposeConfiguration, $request->get('exposeName'));
if ($exposeClient == null) {
return $app->json([
'success' => false,
'message' => "Expose configuration not set!"
]);
}
$accessToken = $this->getAndSaveToken($request->get('exposeName'));
try {
$guzzleParams = [
@@ -151,7 +155,7 @@ class PSExposeController extends Controller
]);
}
$accessToken = $this->getAndSaveToken($exposeConfiguration, $request->get('exposeName'));
$accessToken = $this->getAndSaveToken($request->get('exposeName'));
if ($exposeConfiguration == null ) {
return $this->render("prod/WorkZone/ExposeList.html.twig", [
@@ -203,7 +207,7 @@ class PSExposeController extends Controller
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$accessToken = $this->getAndSaveToken($exposeConfiguration, $request->get('exposeName'));
$accessToken = $this->getAndSaveToken($request->get('exposeName'));
$publication = [];
@@ -278,12 +282,15 @@ class PSExposeController extends Controller
{
$page = $request->get('page')?:1;
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$request->get('exposeName')];
$exposeClient = $this->getExposeClient($request->get('exposeName'));
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$accessToken = $this->getAndSaveToken($exposeConfiguration, $request->get('exposeName'));
if ($exposeClient == null) {
return $app->json([
'success' => false,
'message' => "Expose configuration not set!"
]);
}
$accessToken = $this->getAndSaveToken($request->get('exposeName'));
$resPublication = $exposeClient->get('/publications/' . $request->get('publicationId') . '/assets?page=' . $page , [
'headers' => [
@@ -332,12 +339,14 @@ class PSExposeController extends Controller
]);
}
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$request->get('exposeName')];
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$exposeClient = $this->getExposeClient($exposeName);
if ($exposeClient == null) {
return $app->json([
'success' => false,
'message' => "Expose configuration not set!"
]);
}
$accessToken = $this->getAndSaveToken($exposeName);
$profiles = [];
$basePath = '';
@@ -392,12 +401,12 @@ class PSExposeController extends Controller
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
try {
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$response = $this->postPublication($exposeClient, $accessToken, json_decode($request->get('publicationData'), true));
if ($response->getStatusCode() == 401) {
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$response = $this->postPublication($exposeClient, $accessToken, json_decode($request->get('publicationData'), true));
}
@@ -440,19 +449,21 @@ class PSExposeController extends Controller
public function updatePublicationAction(PhraseaApplication $app, Request $request)
{
$exposeName = $request->get('exposeName');
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$exposeName];
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$exposeClient = $this->getExposeClient($exposeName);
if ($exposeClient == null) {
return $app->json([
'success' => false,
'message' => "Expose configuration not set!"
]);
}
try {
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$response = $this->putPublication($exposeClient, $request->get('publicationId'), $accessToken, json_decode($request->get('publicationData'), true));
if ($response->getStatusCode() == 401) {
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$response = $this->putPublication($exposeClient, $request->get('publicationId'), $accessToken, json_decode($request->get('publicationData'), true));
}
@@ -475,6 +486,46 @@ class PSExposeController extends Controller
]);
}
/**
* Update assets positions
* Require params "exposeName" and "listPositions" of the assets
*
* @param PhraseaApplication $app
* @param Request $request
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function updatePublicationAssetsOrderAction(PhraseaApplication $app, Request $request)
{
$exposeName = $request->get('exposeName');
$exposeClient = $this->getExposeClient($exposeName);
if ($exposeClient == null) {
return $app->json([
'success' => false,
'message' => "Expose configuration not set!"
]);
}
try {
$accessToken = $this->getAndSaveToken($exposeName);
$listPositions = json_decode($request->get('listPositions'), true);
foreach ($listPositions as $pubAssetId => $pos) {
$this->putPublicationAsset($exposeClient, $pubAssetId, $accessToken, ['position' => $pos]);
}
} catch (\Exception $e) {
return $app->json([
'success' => false,
'message' => "An error occurred when updating assets order! ". $e->getMessage()
]);
}
return $app->json([
'success' => true,
'message' => "Assets order successfully updated!"
]);
}
/**
* Delete a Publication
* require params "exposeName" and "publicationId"
@@ -487,18 +538,21 @@ class PSExposeController extends Controller
{
$exposeName = $request->get('exposeName');
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$exposeName];
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$exposeClient = $this->getExposeClient($exposeName);
if ($exposeClient == null) {
return $app->json([
'success' => false,
'message' => "Expose configuration not set!"
]);
}
try {
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$response = $this->removePublication($exposeClient, $request->get('publicationId'), $accessToken);
if ($response->getStatusCode() == 401) {
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$response = $this->removePublication($exposeClient, $request->get('publicationId'), $accessToken);
}
@@ -533,18 +587,22 @@ class PSExposeController extends Controller
{
$exposeName = $request->get('exposeName');
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$exposeName];
$exposeClient = $this->getExposeClient($exposeName);
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
if ($exposeClient == null) {
return $app->json([
'success' => false,
'message' => "Expose configuration not set!"
]);
}
try {
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$response = $this->removeAssetPublication($exposeClient, $request->get('publicationId'), $request->get('assetId'), $accessToken);
if ($response->getStatusCode() == 401) {
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$response = $this->removeAssetPublication($exposeClient, $request->get('publicationId'), $request->get('assetId'), $accessToken);
}
@@ -590,9 +648,7 @@ class PSExposeController extends Controller
]);
}
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$exposeName];
$accessToken = $this->getAndSaveToken($exposeConfiguration, $exposeName);
$accessToken = $this->getAndSaveToken($exposeName);
$this->getEventDispatcher()->dispatch(WorkerEvents::EXPOSE_UPLOAD_ASSETS, new ExposeUploadEvent($lst, $exposeName, $publicationId, $accessToken));
@@ -678,13 +734,13 @@ class PSExposeController extends Controller
/**
* Get Token and save in session
* @param $config
* @param $exposeName
*
* @return mixed
*/
private function getAndSaveToken($config, $exposeName)
private function getAndSaveToken($exposeName)
{
$config = $this->getExposeConfiguration($exposeName);
$session = $this->getSession();
$passSessionName = $this->getPassSessionName($exposeName);
@@ -752,6 +808,17 @@ class PSExposeController extends Controller
]);
}
private function putPublicationAsset(Client $exposeClient, $publicationAssetId, $token, $publicationAssetData)
{
return $exposeClient->put('/publication-assets/' . $publicationAssetId, [
'headers' => [
'Authorization' => 'Bearer '. $token,
'Content-Type' => 'application/json'
],
'json' => $publicationAssetData
]);
}
private function removePublication(Client $exposeClient, $publicationId, $token)
{
return $exposeClient->delete('/publications/' . $publicationId, [
@@ -770,6 +837,35 @@ class PSExposeController extends Controller
]);
}
/**
* @param $exposeName
* @return Client|null
*/
private function getExposeClient($exposeName)
{
$exposeConfiguration = $this->getExposeConfiguration($exposeName);
if ($exposeConfiguration === null) {
return null;
}
return new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
}
/**
* @param $exposeName
* @return array|null
*/
private function getExposeConfiguration($exposeName)
{
$exposeConfiguration = $this->app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
try {
$exposeConfiguration = $exposeConfiguration[$exposeName];
} catch (\Exception $e) {
return null;
}
return $exposeConfiguration;
}
/**
* @return EventDispatcherInterface