mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-17 06:53:15 +00:00
PHRAS-3429 set assets order in publication
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user