Merge branch 'master' of https://github.com/alchemy-fr/Phraseanet into PHRAS-3034-geoloc-video-timeout-patch

This commit is contained in:
aynsix
2020-05-27 09:55:13 +03:00
36 changed files with 1930 additions and 1404 deletions

33
composer.lock generated
View File

@@ -8055,39 +8055,6 @@
], ],
"time": "2016-11-25T06:54:22+00:00" "time": "2016-11-25T06:54:22+00:00"
}, },
{
"name": "phpexiftool/exiftool",
"version": "10.10",
"source": {
"type": "git",
"url": "https://github.com/alchemy-fr/exiftool.git",
"reference": "0833cab894c890353192a83011428525a318bedf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alchemy-fr/exiftool/zipball/0833cab894c890353192a83011428525a318bedf",
"reference": "0833cab894c890353192a83011428525a318bedf",
"shasum": ""
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"Perl Licensing"
],
"authors": [
{
"name": "Phil Harvey",
"email": "phil@owl.phy.queensu.ca",
"homepage": "http://www.sno.phy.queensu.ca/~phil/exiftool/"
}
],
"description": "Exiftool is a library for reading, writing and editing meta information. This package is not PHP, but required for the main PHP driver : PHP Exiftool",
"keywords": [
"exiftool",
"metadatas"
],
"time": "2016-01-25T11:10:14+00:00"
},
{ {
"name": "phpspec/prophecy", "name": "phpspec/prophecy",
"version": "v1.6.2", "version": "v1.6.2",

View File

@@ -181,11 +181,12 @@ class ArchiveJob extends AbstractJob
$dom = new \DOMDocument(); $dom = new \DOMDocument();
$dom->formatOutput = true; $dom->formatOutput = true;
/** @var \DOMElement $root */
$root = $dom->appendChild($dom->createElement('root')); $root = $dom->appendChild($dom->createElement('root'));
$nnew = $this->listFilesPhase1($app, $dom, $root, $path_in, $server_coll_id, 0, $TColls); $nnew = $this->listFilesPhase1($app, $dom, $root, $path_in, $server_coll_id, 0, $TColls);
if ($app['debug']) { if ($app['debug']) {
$this->log('debug', "=========== listFilesPhase1 ========== (returned " . $nnew . ")\n" . $dom->saveXML()); $this->log('debug', "== listFilesPhase1 returned " . $nnew . ")\n" . $dom->saveXML());
} }
if (!$this->isStarted()) { if (!$this->isStarted()) {
@@ -193,15 +194,16 @@ class ArchiveJob extends AbstractJob
} }
// wait for files to be cold // wait for files to be cold
$this->pause($cold); for($i=0; $i<($cold*2); $i++) {
if (!$this->isStarted()) {
if (!$this->isStarted()) { return;
return; }
$this->pause(0.5);
} }
$this->listFilesPhase2($app, $dom, $root, $path_in, 0); $this->listFilesPhase2($app, $dom, $root, $path_in, 0);
if ($app['debug']) { if ($app['debug']) {
$this->log('debug', "=========== listFilesPhase2 ========== : \n" . $dom->saveXML()); $this->log('debug', "== listFilesPhase2\n" . $dom->saveXML());
} }
if (!$this->isStarted()) { if (!$this->isStarted()) {
@@ -210,31 +212,35 @@ class ArchiveJob extends AbstractJob
$this->makePairs($dom, $root, $path_in, $path_archived, $path_error, false, 0, $tmask, $tmaskgrp); $this->makePairs($dom, $root, $path_in, $path_archived, $path_error, false, 0, $tmask, $tmaskgrp);
if ($app['debug']) { if ($app['debug']) {
$this->log('debug', "=========== makePairs ========== : \n" . $dom->saveXML()); $this->log('debug', "== makePairs\n" . $dom->saveXML());
}
$r = $this->removeBadGroups($app, $dom, $root, $path_in, $path_archived, $path_error, 0, $moveError);
if ($app['debug']) {
$this->log('debug', "=========== removeBadGroups ========== (returned " . ((Boolean) $r ? 'true' : 'false') . ") : \n" . $dom->saveXML());
}
$this->archive($app, $databox, $dom, $root, $path_in, $path_archived, $path_error, 0, $moveError, $moveArchived, $stat0, $stat1);
if ($app['debug']) {
$this->log('debug', "=========== archive ========== : \n" . $dom->saveXML());
} }
if (!$this->isStarted()) { if (!$this->isStarted()) {
return; return;
} }
$this->removeBadGroups($app, $dom, $root, $path_in, $path_archived, $path_error, 0, $moveError);
if ($app['debug']) {
$this->log('debug', "== removeBadGroups\n" . $dom->saveXML());
}
if (!$this->isStarted()) {
return;
}
$this->archive($app, $databox, $dom, $root, $path_in, $path_archived, $path_error, 0, $moveError, $moveArchived, $stat0, $stat1);
if ($app['debug']) {
$this->log('debug', "== archive\n" . $dom->saveXML());
}
$this->bubbleResults($dom, $root, $path_in, 0, \p4field::isyes($settings->copy_spe)); $this->bubbleResults($dom, $root, $path_in, 0, \p4field::isyes($settings->copy_spe));
if ($app['debug']) { if ($app['debug']) {
$this->log('debug', "=========== bubbleResults ========== : \n" . $dom->saveXML()); $this->log('debug', "== bubbleResults\n" . $dom->saveXML());
} }
$moved = $this->moveFiles($app, $dom, $root, $path_in, $path_archived, $path_error, 0, $moveArchived, $moveError); $moved = $this->moveFiles($app, $dom, $root, $path_in, $path_archived, $path_error, 0, $moveArchived, $moveError);
if ($app['debug']) { if ($app['debug']) {
$this->log('debug', "=========== moveFiles ========== (returned " . ($moved ? 'true' : 'false') . ") : \n" . $dom->saveXML()); $this->log('debug', "== moveFiles returned " . ($moved ? 'true' : 'false') . "\n" . $dom->saveXML());
} }
} }
} }
@@ -243,15 +249,17 @@ class ArchiveJob extends AbstractJob
{ {
$nnew = 0; $nnew = 0;
if (false !== $sxDotPhrasea = @simplexml_load_file($path . '/.phrasea.xml')) { $magicfile = $magicmethod = null;
if (($sxDotPhrasea = @simplexml_load_file($path . '/.phrasea.xml')) !== false) {
// test for magic file // test for magic file
if (($magicfile = trim((string) ($sxDotPhrasea->magicfile))) != '') { if (($magicfile = trim((string) ($sxDotPhrasea->magicfile))) != '') {
$magicmethod = strtoupper($sxDotPhrasea->magicfile['method']); $magicmethod = strtoupper($sxDotPhrasea->magicfile['method']);
if ($magicmethod == 'LOCK' && true === $app['filesystem']->exists($path . '/' . $magicfile)) { if ($magicmethod == 'LOCK' && ($app['filesystem']->exists($path . '/' . $magicfile) === true)) {
return; return 0;
} elseif ($magicmethod == 'UNLOCK' && false === $app['filesystem']->exists($path . '/' . $magicfile)) { } elseif ($magicmethod == 'UNLOCK' && ($app['filesystem']->exists($path . '/' . $magicfile) === false)) {
return; return 0;
} }
} }
@@ -278,6 +286,7 @@ class ArchiveJob extends AbstractJob
continue; continue;
} }
/** @var \DOMElement $n */
if (is_dir($path . '/' . $file)) { if (is_dir($path . '/' . $file)) {
$n = $node->appendChild($dom->createElement('file')); $n = $node->appendChild($dom->createElement('file'));
$n->setAttribute('isdir', '1'); $n->setAttribute('isdir', '1');
@@ -293,6 +302,16 @@ class ArchiveJob extends AbstractJob
foreach (["size", "ctime", "mtime"] as $k) { foreach (["size", "ctime", "mtime"] as $k) {
$n->setAttribute($k, $stat[$k]); $n->setAttribute($k, $stat[$k]);
} }
// special file
if($file == '.phrasea.xml') {
$n->setAttribute('match', '*');
}
// special file
if($file === $magicfile) {
$n->setAttribute('match', '*');
$node->setAttribute('magicfile', $magicfile);
$node->setAttribute('magicmethod', $magicmethod);
}
$nnew++; $nnew++;
} }
$n->setAttribute('cid', $server_coll_id); $n->setAttribute('cid', $server_coll_id);
@@ -335,27 +354,31 @@ class ArchiveJob extends AbstractJob
$dnl = @$xp->query('./file[@name="' . $file . '"]', $node); $dnl = @$xp->query('./file[@name="' . $file . '"]', $node);
if ($dnl && $dnl->length == 0) { if ($dnl && $dnl->length == 0) {
if (is_dir($path . '/' . $file)) { if (is_dir($path . '/' . $file)) {
/** @var \DOMElement $n */
$n = $node->appendChild($dom->createElement('file')); $n = $node->appendChild($dom->createElement('file'));
$n->setAttribute('isdir', '1'); $n->setAttribute('isdir', '1');
$n->setAttribute('name', $file); $n->setAttribute('name', $file);
$nnew += $this->listFilesPhase2($app, $dom, $n, $path . '/' . $file, $depth + 1); $nnew += $this->listFilesPhase2($app, $dom, $n, $path . '/' . $file, $depth + 1);
} else { } else {
/** @var \DOMElement $n */
$n = $node->appendChild($dom->createElement('file')); $n = $node->appendChild($dom->createElement('file'));
$n->setAttribute('name', $file); $n->setAttribute('name', $file);
$nnew++; $nnew++;
} }
$this->setBranchHot($dom, $n); $this->setBranchHot($n);
} elseif ($dnl && $dnl->length == 1) { } elseif ($dnl && $dnl->length == 1) {
$dnl->item(0)->setAttribute('temperature', 'cold'); /** @var \DOMElement $n */
$n = $dnl->item(0);
$n->setAttribute('temperature', 'cold');
if (is_dir($path . '/' . $file)) { if (is_dir($path . '/' . $file)) {
$this->listFilesPhase2($app, $dom, $dnl->item(0), $path . '/' . $file, $depth + 1); $this->listFilesPhase2($app, $dom, $n, $path . '/' . $file, $depth + 1);
} else { } else {
$stat = stat($path . '/' . $file); $stat = stat($path . '/' . $file);
foreach (["size", "ctime", "mtime"] as $k) { foreach (["size", "ctime", "mtime"] as $k) {
if ($dnl->item(0)->getAttribute($k) != $stat[$k]) { if ($n->getAttribute($k) != $stat[$k]) {
$this->setBranchHot($dom, $dnl->item(0)); $this->setBranchHot($n);
break; break;
} }
} }
@@ -399,13 +422,16 @@ class ArchiveJob extends AbstractJob
if ($dnl->length == 1) { if ($dnl->length == 1) {
// this group is old (don't care about any linked files), just flag it // this group is old (don't care about any linked files), just flag it
$n->setAttribute('grp', 'tocomplete'); $n->setAttribute('grp', 'tocomplete');
$dnl->item(0)->setAttribute('match', '*'); /** @var \DOMElement $_n */
$_n = $dnl->item(0);
$_n->setAttribute('match', '*');
// recurse only if group is ok // recurse only if group is ok
$this->makePairs($dom, $n, $path . '/' . $name, $path_archived, $path_error, true, $depth + 1, $tmask, $tmaskgrp); $this->makePairs($dom, $n, $path . '/' . $name, $path_archived, $path_error, true, $depth + 1, $tmask, $tmaskgrp);
} else { } else {
// this group in new (to be created) // this group in new (to be created)
// do we need one (or both) linked file ? (caption or representation) // do we need one (or both) linked file ? (caption or representation)
$err = false; $err = false;
/** @var \DOMElement[] $flink */
$flink = ['caption' => null, 'representation' => null]; $flink = ['caption' => null, 'representation' => null];
foreach ($flink as $linkName => $v) { foreach ($flink as $linkName => $v) {
@@ -473,12 +499,12 @@ class ArchiveJob extends AbstractJob
// this is a file // this is a file
if (!$n->getAttribute('match')) { if (!$n->getAttribute('match')) {
// because match can be set before // because match can be set before
if ($name == '.phrasea.xml') { // if ($name == '.phrasea.xml') {
// special file(s) always ok // // special file(s) always ok
$n->setAttribute('match', '*'); // $n->setAttribute('match', '*');
} else { // } else {
$this->checkMatch($dom, $n, $tmask); $this->checkMatch($dom, $n, $tmask);
} // }
} }
} }
} }
@@ -503,7 +529,7 @@ class ArchiveJob extends AbstractJob
// if root of hotfolder if hot, die... // if root of hotfolder if hot, die...
if ($depth == 0 && $node->getAttribute('temperature') == 'hot') { if ($depth == 0 && $node->getAttribute('temperature') == 'hot') {
return $ret; return;
} }
$nodesToDel = []; $nodesToDel = [];
@@ -522,7 +548,7 @@ class ArchiveJob extends AbstractJob
$name = $n->getAttribute('name'); $name = $n->getAttribute('name');
if ($n->getAttribute('isdir')) { if ($n->getAttribute('isdir')) {
$ret |= $this->removeBadGroups($app, $dom, $n, $path . '/' . $name $this->removeBadGroups($app, $dom, $n, $path . '/' . $name
, $path_archived . '/' . $name , $path_archived . '/' . $name
, $path_error . '/' . $name , $path_error . '/' . $name
, $depth + 1, $moveError); , $depth + 1, $moveError);
@@ -642,7 +668,7 @@ class ArchiveJob extends AbstractJob
} }
if ($node->getAttribute('temperature') == 'hot') { if ($node->getAttribute('temperature') == 'hot') {
return; return 0;
} }
$ret = 0; $ret = 0;
@@ -758,7 +784,7 @@ class ArchiveJob extends AbstractJob
} }
} }
if (!$n->getAttribute('keep')) { if (!$n->getAttribute('keep') && !$n->getAttribute('match')) {
$this->log('debug', sprintf('delete \'%s\'', $path . '/' . $name)); $this->log('debug', sprintf('delete \'%s\'', $path . '/' . $name));
try { try {
@@ -792,7 +818,9 @@ class ArchiveJob extends AbstractJob
if ($dnl->length == 1) { if ($dnl->length == 1) {
// the caption file exists // the caption file exists
$node->setAttribute('match', $captionFileName); $node->setAttribute('match', $captionFileName);
$dnl->item(0)->setAttribute('match', '*'); /** @var \DOMElement $n */
$n = $dnl->item(0);
$n->setAttribute('match', '*');
} else { } else {
// the caption file is missing // the caption file is missing
$node->setAttribute('match', '?'); $node->setAttribute('match', '?');
@@ -817,7 +845,7 @@ class ArchiveJob extends AbstractJob
return ($f[0] == '.' && $f != '.phrasea.xml' && $f != '.grouping.xml') || $f == 'thumbs.db' || $f == 'par-system'; return ($f[0] == '.' && $f != '.phrasea.xml' && $f != '.grouping.xml') || $f == 'thumbs.db' || $f == 'par-system';
} }
private function setBranchHot(\DOMDocument $dom, \DOMElement $node) private function setBranchHot(\DOMElement $node)
{ {
for ($n = $node; $n; $n = $n->parentNode) { for ($n = $node; $n; $n = $n->parentNode) {
if ($n->nodeType == XML_ELEMENT_NODE) { if ($n->nodeType == XML_ELEMENT_NODE) {
@@ -847,8 +875,10 @@ class ArchiveJob extends AbstractJob
if ($node->getAttribute('grp') == 'tocreate') { if ($node->getAttribute('grp') == 'tocreate') {
$representationFileName = null; $representationFileName = null;
/** @var \DOMElement $representationFileNode */
$representationFileNode = null; $representationFileNode = null;
$captionFileName = null; $captionFileName = null;
/** @var \DOMElement $captionFileNode */
$captionFileNode = null; $captionFileNode = null;
$cid = $node->getAttribute('cid'); $cid = $node->getAttribute('cid');
$genericdoc = null; $genericdoc = null;
@@ -903,6 +933,7 @@ class ArchiveJob extends AbstractJob
} }
file_put_contents($groupingFile, '<?xml version="1.0" encoding="ISO-8859-1" ?><record grouping="' . $rid . '" />'); file_put_contents($groupingFile, '<?xml version="1.0" encoding="ISO-8859-1" ?><record grouping="' . $rid . '" />');
/** @var \DOMElement $n */
$n = $node->appendChild($dom->createElement('file')); $n = $node->appendChild($dom->createElement('file'));
$n->setAttribute('name', '.grouping.xml'); $n->setAttribute('name', '.grouping.xml');
$n->setAttribute('temperature', 'cold'); $n->setAttribute('temperature', 'cold');
@@ -1025,6 +1056,8 @@ class ArchiveJob extends AbstractJob
} }
$story = \record_adapter::createStory($app, $collection); $story = \record_adapter::createStory($app, $collection);
$story->setStatus($status);
$app['subdef.substituer']->substituteDocument($story, $media); $app['subdef.substituer']->substituteDocument($story, $media);
$story->set_metadatas($metadatas->toMetadataArray($metadatasStructure), true); $story->set_metadatas($metadatas->toMetadataArray($metadatasStructure), true);
@@ -1080,12 +1113,14 @@ class ArchiveJob extends AbstractJob
$file->addAttribute(new BorderAttribute\Status($app, $status)); $file->addAttribute(new BorderAttribute\Status($app, $status));
$file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfFilepath(), new MonoValue($media->getFile()->getRealPath())))); /** @var \MediaVorus\File $mediaFile */
$file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfDirname(), new MonoValue(dirname($media->getFile()->getRealPath()))))); $mediaFile = $media->getFile();
$file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfFilepath(), new MonoValue($mediaFile->getRealPath()))));
$file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfDirname(), new MonoValue(dirname($mediaFile->getRealPath())))));
$file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfAtime(), new MonoValue($media->getFile()->getATime())))); $file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfAtime(), new MonoValue($mediaFile->getATime()))));
$file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfMtime(), new MonoValue($media->getFile()->getMTime())))); $file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfMtime(), new MonoValue($mediaFile->getMTime()))));
$file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfCtime(), new MonoValue($media->getFile()->getCTime())))); $file->addAttribute(new BorderAttribute\Metadata(new Metadata(new PhraseaTag\TfCtime(), new MonoValue($mediaFile->getCTime()))));
foreach ($metadatas as $meta) { foreach ($metadatas as $meta) {
$file->addAttribute(new BorderAttribute\Metadata($meta)); $file->addAttribute(new BorderAttribute\Metadata($meta));
@@ -1102,8 +1137,13 @@ class ArchiveJob extends AbstractJob
$record = null; $record = null;
$postProcess = function ($element, $visa, $code) use (&$record) { $postProcess = function ($element, $visa, $code) use (&$record) {
$record = $element; $r = isset($visa); // one way to avoid "variable not used" with phpstorm 10. ugly.
}; unset($r); //
$r = isset($code); // one way to avoid "variable not used" with phpstorm 10. ugly.
unset($r); //
$record = $element;
};
/** @var borderManager $borderManager */ /** @var borderManager $borderManager */
$borderManager = $app['border-manager']; $borderManager = $app['border-manager'];
@@ -1206,12 +1246,13 @@ class ArchiveJob extends AbstractJob
} }
} }
$this->archiveFileAndCaption($app, $databox, $dom, $node, $captionFileNode, $path, $path_archived, $path_error, $grp_rid, $nodesToDel, $stat0, $stat1, $moveError, $moveArchived); $this->archiveFileAndCaption($app, $databox, $node, $captionFileNode, $path, $path_archived, $path_error, $grp_rid, $nodesToDel, $stat0, $stat1, $moveError, $moveArchived);
} }
/** /**
* *
* @param \DOMDOcument $dom * @param Application $app
* @param \databox $databox
* @param \DOMElement $node * @param \DOMElement $node
* @param \DOMElement $captionFileNode * @param \DOMElement $captionFileNode
* @param string $path * @param string $path
@@ -1219,8 +1260,12 @@ class ArchiveJob extends AbstractJob
* @param string $path_error * @param string $path_error
* @param integer $grp_rid * @param integer $grp_rid
* @param array $nodesToDel out, filled with files to delete * @param array $nodesToDel out, filled with files to delete
* @param $stat0
* @param $stat1
* @param $moveError
* @param $moveArchived
*/ */
private function archiveFileAndCaption(Application $app, \databox $databox, \DOMDocument $dom, \DOMElement $node, \DOMElement $captionFileNode = null, $path, $path_archived, $path_error, $grp_rid, array &$nodesToDel, $stat0, $stat1, $moveError, $moveArchived) private function archiveFileAndCaption(Application $app, \databox $databox, \DOMElement $node, \DOMElement $captionFileNode = null, $path, $path_archived, $path_error, $grp_rid, array &$nodesToDel, $stat0, $stat1, $moveError, $moveArchived)
{ {
// quick fix to reconnect if mysql is lost // quick fix to reconnect if mysql is lost
$app->getApplicationBox()->get_connection(); $app->getApplicationBox()->get_connection();
@@ -1422,6 +1467,7 @@ class ArchiveJob extends AbstractJob
{ {
$ret = new MetadataBag(); $ret = new MetadataBag();
/** @var \databox_field $databox_field */
foreach ($metadatasStructure as $databox_field) { foreach ($metadatasStructure as $databox_field) {
if ($bag->containsKey($databox_field->get_tag()->getTagname())) { if ($bag->containsKey($databox_field->get_tag()->getTagname())) {
$ret->set($databox_field->get_name(), $bag->get($databox_field->get_tag()->getTagname())); $ret->set($databox_field->get_name(), $bag->get($databox_field->get_tag()->getTagname()));

View File

@@ -14,31 +14,31 @@ class WorkerConfigurationType extends AbstractType
$builder $builder
->add(MessagePublisher::ASSETS_INGEST_TYPE, 'text', [ ->add(MessagePublisher::ASSETS_INGEST_TYPE, 'text', [
'label' => 'Ingest retry delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Ingest retry delay in ms'
]) ])
->add(MessagePublisher::CREATE_RECORD_TYPE, 'text', [ ->add(MessagePublisher::CREATE_RECORD_TYPE, 'text', [
'label' => 'Create record retry delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Create record retry delay in ms'
]) ])
->add(MessagePublisher::SUBDEF_CREATION_TYPE, 'text', [ ->add(MessagePublisher::SUBDEF_CREATION_TYPE, 'text', [
'label' => 'Subdefinition retry delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Subdefinition retry delay in ms'
]) ])
->add(MessagePublisher::WRITE_METADATAS_TYPE, 'text', [ ->add(MessagePublisher::WRITE_METADATAS_TYPE, 'text', [
'label' => 'Metadatas retry delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Metadatas retry delay in ms'
]) ])
->add(MessagePublisher::WEBHOOK_TYPE, 'text', [ ->add(MessagePublisher::WEBHOOK_TYPE, 'text', [
'label' => 'Webhook retry delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Webhook retry delay in ms'
]) ])
->add(MessagePublisher::EXPORT_MAIL_TYPE, 'text', [ ->add(MessagePublisher::EXPORT_MAIL_TYPE, 'text', [
'label' => 'Export mail retry delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Export mail retry delay in ms'
]) ])
->add(MessagePublisher::POPULATE_INDEX_TYPE, 'text', [ ->add(MessagePublisher::POPULATE_INDEX_TYPE, 'text', [
'label' => 'Populate Index retry delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Populate Index retry delay in ms'
]) ])
->add('delayedSubdef', 'text', [ ->add('delayedSubdef', 'text', [
'label' => 'Subdef delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Subdef delay in ms'
]) ])
->add('delayedWriteMeta', 'text', [ ->add('delayedWriteMeta', 'text', [
'label' => 'Write meta delay in ms' 'label' => 'admin::workermanager:tab:workerconfig: Write meta delay in ms'
]) ])
; ;
} }

View File

@@ -13,19 +13,19 @@ class WorkerPullAssetsType extends AbstractType
$builder $builder
->add('endpointCommit', 'text', [ ->add('endpointCommit', 'text', [
'label' => 'Endpoint get commit' 'label' => 'admin::workermanager:tab:pullassets: Endpoint get commit'
]) ])
->add('endpointToken', 'text', [ ->add('endpointToken', 'text', [
'label' => 'Endpoint get token' 'label' => 'admin::workermanager:tab:pullassets: Endpoint get token'
]) ])
->add('clientSecret', 'text', [ ->add('clientSecret', 'text', [
'label' => 'Client secret' 'label' => 'admin::workermanager:tab:pullassets: Client secret'
]) ])
->add('clientId', 'text', [ ->add('clientId', 'text', [
'label' => 'Client ID' 'label' => 'admin::workermanager:tab:pullassets: Client ID'
]) ])
->add('pullInterval', 'text', [ ->add('pullInterval', 'text', [
'label' => 'Fetching interval in second' 'label' => 'admin::workermanager:tab:pullassets: Fetching interval in second'
]) ])
; ;
} }

View File

@@ -16,18 +16,18 @@ class WorkerSearchengineType extends AbstractType
$builder $builder
->add('host', 'text', [ ->add('host', 'text', [
'label' => 'Elasticsearch server host', 'label' => 'admin::workermanager:tab:searchengine: Elasticsearch server host',
'constraints' => new NotBlank(), 'constraints' => new NotBlank(),
]) ])
->add('port', 'integer', [ ->add('port', 'integer', [
'label' => 'Elasticsearch service port', 'label' => 'admin::workermanager:tab:searchengine: Elasticsearch service port',
'constraints' => [ 'constraints' => [
new Range(['min' => 1, 'max' => 65535]), new Range(['min' => 1, 'max' => 65535]),
new NotBlank() new NotBlank()
] ]
]) ])
->add('indexName', 'text', [ ->add('indexName', 'text', [
'label' => 'Elasticsearch index name', 'label' => 'admin::workermanager:tab:searchengine: Elasticsearch index name',
'constraints' => new NotBlank(), 'constraints' => new NotBlank(),
'attr' =>['data-class'=>'inline'] 'attr' =>['data-class'=>'inline']
]) ])

View File

@@ -157,8 +157,8 @@ class databox_status
* compute ((0 M s1) M s2) where M is the "mask" operator * compute ((0 M s1) M s2) where M is the "mask" operator
* nb : s1,s2 are binary mask strings as "01x0xx1xx0x", no other format (hex) supported * nb : s1,s2 are binary mask strings as "01x0xx1xx0x", no other format (hex) supported
* *
* @param $stat1 a binary mask "010x1xx0.." STRING * @param string $stat1 a binary mask "010x1xx0.."
* @param $stat2 a binary mask "x100x1..." STRING * @param string $stat2 a binary mask "x100x1..."
* *
* @return string * @return string
*/ */

View File

@@ -65,7 +65,7 @@
"normalize-css": "^2.1.0", "normalize-css": "^2.1.0",
"npm": "^6.0.0", "npm": "^6.0.0",
"npm-modernizr": "^2.8.3", "npm-modernizr": "^2.8.3",
"phraseanet-production-client": "0.34.207-d", "phraseanet-production-client": "0.34.208-d",
"requirejs": "^2.3.5", "requirejs": "^2.3.5",
"tinymce": "^4.0.28", "tinymce": "^4.0.28",
"underscore": "^1.8.3", "underscore": "^1.8.3",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-05-20T15:12:51Z" source-language="en" target-language="de" datatype="plaintext" original="not.available"> <file date="2020-05-26T10:28:28Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-05-20T15:13:16Z" source-language="en" target-language="en" datatype="plaintext" original="not.available"> <file date="2020-05-26T10:28:56Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-05-20T15:13:44Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available"> <file date="2020-05-26T10:29:25Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2020-05-20T15:14:15Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available"> <file date="2020-05-26T10:30:00Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -0,0 +1 @@
<svg color="#5cb85c" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="cogs" class="svg-inline--fa fa-cogs fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"></path></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1 @@
<svg color="#3b99fc" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="database" class="svg-inline--fa fa-database fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"></path></svg>

After

Width:  |  Height:  |  Size: 649 B

View File

@@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="database" class="svg-inline--fa fa-database fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"></path></svg>

After

Width:  |  Height:  |  Size: 633 B

View File

@@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="searchengin" class="svg-inline--fa fa-searchengin fa-w-15" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 460 512"><path fill="currentColor" d="M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"></path></svg>

After

Width:  |  Height:  |  Size: 919 B

View File

@@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="tools" class="svg-inline--fa fa-tools fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"></path></svg>

After

Width:  |  Height:  |  Size: 921 B

View File

@@ -189,6 +189,43 @@ $mainMenuLinkBackgroundHoverColor: transparent;
color: #ffffff; color: #ffffff;
} }
.select-all-line {
color: #afafaf;
cursor: pointer;
}
.users_check_line_wrap {
position: absolute;
div {
padding: 5px 10px;
background-color: #cccccc;
color: #000000;
cursor: pointer;
line-height: 1.7;
&:hover {
padding: 5px 10px;
background-color: #4d4d4d;
color: #ffffff;
}
}
}
.fa-right {
color: #2475b5;
font-size: 16px;
.select-all-line-btn & {
padding-left: 6px;
}
}
.without-border {
margin-left: 15px;
outline: none;
&:focus {
outline: none;
}
}
/******* EDIT USERS ***********************************************************/ /******* EDIT USERS ***********************************************************/
div.no_switch { div.no_switch {
width: 12px; width: 12px;
@@ -211,7 +248,7 @@ div.switch_quota.mixed,
div.switch_masks.mixed, div.switch_masks.mixed,
div.switch_time.mixed, div.switch_time.mixed,
div.switch_right.mixed { div.switch_right.mixed {
background-image: url('#{$iconsPath}ccoch2.gif'); background-image: url('#{$iconsPath}square-duotone.svg');
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center center; background-position: center center;
} }
@@ -219,7 +256,7 @@ div.switch_quota.checked,
div.switch_masks.checked, div.switch_masks.checked,
div.switch_time.checked, div.switch_time.checked,
div.switch_right.checked { div.switch_right.checked {
background-image: url('#{$iconsPath}ccoch1.gif'); background-image: url('#{$iconsPath}check-square-regular.svg');
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center center; background-position: center center;
} }
@@ -227,7 +264,7 @@ div.switch_quota.unchecked,
div.switch_masks.unchecked, div.switch_masks.unchecked,
div.switch_time.unchecked, div.switch_time.unchecked,
div.switch_right.unchecked { div.switch_right.unchecked {
background-image: url('#{$iconsPath}ccoch0.gif'); background-image: url('#{$iconsPath}square-regular.svg');
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center center; background-position: center center;
} }
@@ -912,6 +949,12 @@ span.simplecolorpicker.picker {
.ui-dialog-titlebar-close { .ui-dialog-titlebar-close {
text-indent: -9999999px; text-indent: -9999999px;
} }
.worker-info-block {
.btn-primary {
min-width: 161px;
margin-right: 15px;
}
}
@import './databases'; @import './databases';
@import './fields'; @import './fields';
@import './tables'; @import './tables';

View File

@@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="check-square" class="svg-inline--fa fa-check-square fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z"></path></svg>

After

Width:  |  Height:  |  Size: 664 B

View File

@@ -0,0 +1 @@
<svg color="#aaa8a5" aria-hidden="true" focusable="false" data-prefix="fa" data-icon="square" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="svg-inline--fa fa-square fa-w-14 fa-2x"><g class="fa-group"><path fill="currentColor" d="M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16 368a16 16 0 0 1-16 16H80a16 16 0 0 1-16-16V112a16 16 0 0 1 16-16h288a16 16 0 0 1 16 16z" class="fa-secondary"></path><path fill="currentColor" d="M64 400V112a16 16 0 0 1 16-16h288a16 16 0 0 1 16 16v288a16 16 0 0 1-16 16H80a16 16 0 0 1-16-16z" class="fa-primary"></path></g></svg>

After

Width:  |  Height:  |  Size: 635 B

View File

@@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="square" class="svg-inline--fa fa-square fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z"></path></svg>

After

Width:  |  Height:  |  Size: 424 B

View File

@@ -61,24 +61,6 @@
div.no_switch{ div.no_switch{
background-image:url(/assets/common/images/icons/ccoch5.gif); background-image:url(/assets/common/images/icons/ccoch5.gif);
} }
div.switch_quota.mixed,
div.switch_masks.mixed,
div.switch_time.mixed,
div.switch_right.mixed{
background-image:url(/assets/common/images/icons/ccoch2.gif);
}
div.switch_quota.checked,
div.switch_masks.checked,
div.switch_time.checked,
div.switch_right.checked{
background-image:url(/assets/common/images/icons/ccoch1.gif);
}
div.switch_quota.unchecked,
div.switch_masks.unchecked,
div.switch_time.unchecked,
div.switch_right.unchecked{
background-image:url(/assets/common/images/icons/ccoch0.gif);
}
td.users_col{ td.users_col{
vertical-align:middle; vertical-align:middle;
text-align:center; text-align:center;
@@ -137,40 +119,20 @@
</td> </td>
</tr> </tr>
</table> </table>
<table cellspacing="0" cellpadding="0" border="0" style="table-layout: auto;width:820px;height:67px;bottom:auto;top:50px;" class=""> <table cellspacing="0" cellpadding="0" border="0" style="table-layout: auto;width:850px;height:67px;bottom:auto;top:50px;" class="">
<thead> <thead>
<tr> <tr>
<th style="width:122px;"> <th style="width:168px;">
</th> </th>
<th colspan="26"> <th colspan="25">
<img src="/assets/common/images/lng/inclin-{{app['locale']}}.png" style="width:698px"/> <img src="/assets/common/images/lng/inclin-{{app['locale']}}.png" style="width:682px"/>
</th> </th>
</tr> </tr>
</thead> </thead>
<tbody>
<tr>
<td>
</td>
<td colspan="26">
</td>
</tr>
</tbody>
</table> </table>
<div class="" style="bottom:40px;top:127px;overflow-y:auto;overflow-x:hidden;width:850px;max-height: 450px;"> <div class="" style="bottom:40px;top:127px;overflow-y:auto;overflow-x:hidden;width:870px;max-height: 450px;">
<table class="hoverable" cellspacing="0" cellpadding="0" border="0" style="table-layout: fixed;width:820px;"> <table class="hoverable" cellspacing="0" cellpadding="0" border="0" style="table-layout: fixed;width:840px;">
<!-- <thead>
<tr>
<th style="width:122px;">
</th>
<th colspan="26">
<img src="/assets/common/images/lng/inclin-{{app['locale']}}.gif" >
</th>
</tr>
</thead>-->
<tbody> <tbody>
{% set sbas = '' %} {% set sbas = '' %}
{% for rights in datas %} {% for rights in datas %}
@@ -183,54 +145,55 @@
{% endif %} {% endif %}
<tr> <tr>
<td style="width:122px;overflow:hidden;white-space:nowrap;"> <td style="width:140px;overflow:hidden;white-space:nowrap;">
{{rights['sbas_id']|sbas_labels(app)}} {{rights['sbas_id']|sbas_labels(app)}}
</td> </td>
<td style="width:25px"></td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_access"/> <input type="hidden" name="right" value="right_access"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_actif"/> <input type="hidden" name="right" value="right_actif"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canputinalbum"/> <input type="hidden" name="right" value="right_canputinalbum"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_candwnldpreview"/> <input type="hidden" name="right" value="right_candwnldpreview"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_nowatermark"/> <input type="hidden" name="right" value="right_nowatermark"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_candwnldhd"/> <input type="hidden" name="right" value="right_candwnldhd"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_cancmd"/> <input type="hidden" name="right" value="right_cancmd"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
@@ -247,117 +210,127 @@
<td class="users_col"> <td class="users_col">
</td> </td>
<td> <td width="97" style="width: 97px;">
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canaddrecord"/> <input type="hidden" name="right" value="right_canaddrecord"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canmodifrecord"/> <input type="hidden" name="right" value="right_canmodifrecord"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_chgstatus"/> <input type="hidden" name="right" value="right_chgstatus"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_candeleterecord"/> <input type="hidden" name="right" value="right_candeleterecord"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_imgtools"/> <input type="hidden" name="right" value="right_imgtools"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canadmin"/> <input type="hidden" name="right" value="right_canadmin"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canreport"/> <input type="hidden" name="right" value="right_canreport"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canpush"/> <input type="hidden" name="right" value="right_canpush"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_manage"/> <input type="hidden" name="right" value="right_manage"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td class="users_col options"> <td class="users_col options">
<div> <div>
&#x25bc; <i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_modify_struct"/> <input type="hidden" name="right" value="right_modify_struct"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/> <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div> </div>
</td> </td>
<td style="text-align:center;width:19px;" title="{{ 'Allowed to publish' | trans }}"> <td class="main-right-item" style="text-align:center;width:19px;" title="{{ 'Allowed to publish' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_CHUPUB'), users, 'sbas')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_CHUPUB'), users, 'sbas')}}
</td> </td>
<td style="text-align:center;width:19px;" title="{{ 'Manage Thesaurus' | trans }}"> <td class="main-right-item" style="text-align:center;width:19px;" title="{{ 'Manage Thesaurus' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MODIF_TH'), users, 'sbas')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MODIF_TH'), users, 'sbas')}}
</td> </td>
<td style="text-align:center;width:19px;" title="{{ 'Manage Database' | trans }}"> <td class="main-right-item" style="text-align:center;width:19px;" title="{{ 'Manage Database' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MANAGE'), users, 'sbas')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MANAGE'), users, 'sbas')}}
</td> </td>
<td style="text-align:center;width:19px;" title="{{ 'Manage DB fields' | trans }}"> <td class="main-right-item" style="text-align:center;width:19px;" title="{{ 'Manage DB fields' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MODIFY_STRUCT'), users, 'sbas')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MODIFY_STRUCT'), users, 'sbas')}}
</td> </td>
<td style="text-align:center;width:48px;"></td> <td style="text-align:center;width:48px;">
</td>
</tr> </tr>
{% endif %} {% endif %}
<tr> <tr class="right-items">
<td style="overflow:hidden;white-space:nowrap;"> <td style="width: 140px;overflow:hidden;white-space:nowrap;" title="{{rights['base_id']|bas_labels(app)}}">
{{rights['base_id']|bas_labels(app)}} {{rights['base_id']|bas_labels(app)}}
</td> </td>
<td class="users_col case_right_access" title="{{ 'Access' | trans }}"> <td class="select-all-line" title="{{'admin::users:edit: Manage inline selection' | trans }}" style="width: 25px">
<div class="select-all-line-btn">
<i class="fa fa-caret-right fa-right"></i>
</div>
<div class="users_check_line_wrap hide">
<div class="checker check_left_right">{{'admin::users:edit: check read right' | trans }}</div>
<div class="unchecker check-all_right">{{'admin::users:edit: check all right' | trans }}</div>
</div>
</td>
<td class="users_col case_right_access left-right" title="{{ 'Access' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::ACCESS'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::ACCESS'), users, 'base')}}
</td> </td>
<td class="users_col case_right_actif" title="{{ 'Active' | trans }}"> <td class="users_col case_right_actif left-right" title="{{ 'Active' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::ACTIF'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::ACTIF'), users, 'base')}}
</td> </td>
<td class="users_col case_right_canputinalbum" title="{{ 'Allowed to add in basket' | trans }}"> <td class="users_col case_right_canputinalbum left-right" title="{{ 'Allowed to add in basket' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANPUTINALBUM'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANPUTINALBUM'), users, 'base')}}
</td> </td>
<td class="users_col case_right_candwnldpreview" title="{{ 'Access to preview' | trans }}"> <td class="users_col case_right_candwnldpreview left-right" title="{{ 'Access to preview' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDWNLDPREVIEW'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDWNLDPREVIEW'), users, 'base')}}
</td> </td>
<td class="users_col case_right_nowatermark" title="{{ 'Remove watermark' | trans }}"> <td class="users_col case_right_nowatermark left-right" title="{{ 'Remove watermark' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::NOWATERMARK'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::NOWATERMARK'), users, 'base')}}
</td> </td>
<td class="users_col case_right_candwnldhd" title="{{ 'Access to HD' | trans }}"> <td class="users_col case_right_candwnldhd left-right" title="{{ 'Access to HD' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDWNLDHD'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDWNLDHD'), users, 'base')}}
</td> </td>
<td class="users_col case_right_cancmd" title="{{ 'Allowed to order' | trans }}"> <td class="users_col case_right_cancmd left-right" title="{{ 'Allowed to order' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANCMD'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANCMD'), users, 'base')}}
</td> </td>
<td class="users_col case_right_quota" title="{{ 'Set download quotas' | trans }}"> <td class="users_col case_right_quota" title="{{ 'Set download quotas' | trans }}">
@@ -391,7 +364,7 @@
</div> </div>
</td> </td>
<td style="text-align:center;width:100px;"></td> <td style="text-align:center;width:97px;"></td>
<td class="users_col case_right_canaddrecord" title="{{ 'Allowed to add' | trans }}"> <td class="users_col case_right_canaddrecord" title="{{ 'Allowed to add' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANADDRECORD'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANADDRECORD'), users, 'base')}}
@@ -423,8 +396,8 @@
<td class="users_col case_right_modify" title="{{ 'Manage values lists' | trans }}"> <td class="users_col case_right_modify" title="{{ 'Manage values lists' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::COLL_MODIFY_STRUCT'), users, 'base')}} {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::COLL_MODIFY_STRUCT'), users, 'base')}}
</td> </td>
<td colspan="5">
<td colspan="5">
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
@@ -1099,6 +1072,31 @@
}); });
} }
}); });
$('body').click(function() {
$('.users_check_line_wrap').addClass('hide');
});
$('.select-all-line-btn').click(function (event) {
event.stopPropagation();
var top = $(this).offset().top - 50;
var left = $(this).offset().left + 60;
$('.users_check_line_wrap').addClass('hide');
$(this).closest('.select-all-line').find('.users_check_line_wrap').removeClass('hide').css('top', +top+'px');
});
$('.check_left_right').click(function () {
$(this).closest('.right-items').find('.left-right div').show().removeClass('unchecked').addClass('checked');
$(this).closest('.right-items').find('.left-right input').val(1);
$('.users_check_line_wrap').addClass('hide');
});
$('.check-all_right').click(function () {
$(this).closest('.right-items').find('div').show().removeClass('unchecked').addClass('checked');
$(this).closest('.right-items').find('input').val(1);
$('.users_check_line_wrap').addClass('hide');
});
}); });
require([ require([

View File

@@ -42,6 +42,8 @@
serverDisconnected: '{{ 'phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier' | trans | e('js') }}', serverDisconnected: '{{ 'phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier' | trans | e('js') }}',
check_all : '{{ 'Cocher toute la colonne' | trans | e('js') }}', check_all : '{{ 'Cocher toute la colonne' | trans | e('js') }}',
uncheck_all : '{{ 'Decocher toute la colonne' | trans | e('js') }}', uncheck_all : '{{ 'Decocher toute la colonne' | trans | e('js') }}',
check_left_right : '{{ 'admin::users:edit: check left right' | trans | e('js') }}',
check_all_right : '{{ 'admin::users:edit: check all right' | trans | e('js') }}',
create_template : '{{ 'Creer un model' | trans | e('js') }}', create_template : '{{ 'Creer un model' | trans | e('js') }}',
create_user : '{{ 'Creer un utilisateur' | trans | e('js') }}', create_user : '{{ 'Creer un utilisateur' | trans | e('js') }}',
annuler : '{{ 'boutton::annuler' | trans | e('js') }}', annuler : '{{ 'boutton::annuler' | trans | e('js') }}',

View File

@@ -18,12 +18,13 @@
{% if app.getAclForUser(app.getAuthenticatedUser()).is_admin() %} {% if app.getAclForUser(app.getAuthenticatedUser()).is_admin() %}
<li> <li>
<a target="right" href="{{ path('setup_display_globals') }}" class="ajax"> <a target="right" href="{{ path('setup_display_globals') }}" class="ajax">
<img src="/assets/admin/images/Setup.png" /> <img width="16" src="/assets/admin/images/tools-solid.svg" />
<span>{% trans %}Setup{% endtrans %}</span> <span>{% trans %}Setup{% endtrans %}</span>
</a> </a>
</li> </li>
<li> <li>
<a target="right" href="{{ path('admin_searchengine_form') }}"> <a target="right" href="{{ path('admin_searchengine_form') }}">
<img width="16" src="/assets/admin/images/searchengin.svg" />
<span>{{ 'SearchEngine settings' | trans }}</span> <span>{{ 'SearchEngine settings' | trans }}</span>
</a> </a>
</li> </li>
@@ -79,7 +80,7 @@
{% if app.getAclForUser(app.getAuthenticatedUser()).has_right(constant('\\ACL::TASKMANAGER')) %} {% if app.getAclForUser(app.getAuthenticatedUser()).has_right(constant('\\ACL::TASKMANAGER')) %}
<li class="{% if feature == 'workermanager' %}selected{% endif %}"> <li class="{% if feature == 'workermanager' %}selected{% endif %}">
<a target="right" href="{{ path('worker_admin') }}" class="ajax"> <a target="right" href="{{ path('worker_admin') }}" class="ajax">
<img src="/assets/admin/images/TaskManager.png" /> <img width="16" src="/assets/admin/images/cogs-solid.svg" />
<span>{{ 'Worker Manager' | trans }}</span> <span>{{ 'Worker Manager' | trans }}</span>
</a> </a>
</li> </li>
@@ -88,7 +89,7 @@
<li class="open"> <li class="open">
<div class="{% if feature == 'bases' %}selected{% endif %}" style="padding:0 0 2px 0;"> <div class="{% if feature == 'bases' %}selected{% endif %}" style="padding:0 0 2px 0;">
<a id="TREE_DATABASES" target="right" href="{{ path('admin_databases') }}" class="ajax"> <a id="TREE_DATABASES" target="right" href="{{ path('admin_databases') }}" class="ajax">
<img src="/assets/admin/images/DatabasesAvailable.png" /> <img width="16" src="/assets/admin/images/database-solid-blue.svg" />
<span>{{ 'admin::utilisateurs: bases de donnees' | trans }}</span> <span>{{ 'admin::utilisateurs: bases de donnees' | trans }}</span>
</a> </a>
</div> </div>
@@ -113,7 +114,7 @@
<li class="{% if this_is_open %}open{% endif %}"> <li class="{% if this_is_open %}open{% endif %}">
<div style="padding:0 0 2px 0;" class="{% if this_is_selected %}selected{% endif %}"> <div style="padding:0 0 2px 0;" class="{% if this_is_selected %}selected{% endif %}">
<a target="right" href="{{ path('admin_database', { 'databox_id' : sbas_id }) }}" class="ajax"> <a target="right" href="{{ path('admin_database', { 'databox_id' : sbas_id }) }}" class="ajax">
<img src="/assets/admin/images/Database.png"/> <img width="16" src="/assets/admin/images/database-solid.svg"/>
<span>{{ databox.get_label(app['locale']) }}</span> <span>{{ databox.get_label(app['locale']) }}</span>
</a> </a>
</div> </div>

View File

@@ -46,7 +46,10 @@
<option {% if parm['like_field'] == "company" %}selected="selected"{% endif %} value="company">{{ 'Push::filter on companies' | trans }}</option> <option {% if parm['like_field'] == "company" %}selected="selected"{% endif %} value="company">{{ 'Push::filter on companies' | trans }}</option>
<option {% if parm['like_field'] == "email" %}selected="selected"{% endif %} value="email">{{ 'Push::filter on emails' | trans }}</option> <option {% if parm['like_field'] == "email" %}selected="selected"{% endif %} value="email">{{ 'Push::filter on emails' | trans }}</option>
</select> </select>
<span>{{ 'Push::filter starts' | trans }}</span> <select name="like_type" class="input-medium without-border">
<option selected="selected" value="content">{{ 'admin::users:filter: content' | trans }}</option>
<option value="start_with">{{ 'admin::users:filter: start with' | trans }}</option>
</select>
<input type="text" value="{{parm['like_value']}}" name="like_value" class="input-medium"> <input type="text" value="{{parm['like_value']}}" name="like_value" class="input-medium">
<span>{{ 'Last applied template' | trans }}</span> <span>{{ 'Last applied template' | trans }}</span>
<select name="last_model" class="input-medium"> <select name="last_model" class="input-medium">

View File

@@ -7,32 +7,32 @@
<li class="worker-configuration" role="presentation"> <li class="worker-configuration" role="presentation">
<a href="#worker-configuration" aria-controls="worker-configuration" role="tab" data-toggle="tab" data-url="/admin/worker-manager/configuration"> <a href="#worker-configuration" aria-controls="worker-configuration" role="tab" data-toggle="tab" data-url="/admin/worker-manager/configuration">
{{ "Configuration" | trans }} {{ "admin::workermanager:tab:configuration: title" | trans }}
</a> </a>
</li> </li>
<li class="worker-info active" role="presentation"> <li class="worker-info active" role="presentation">
<a href="#worker-info" aria-controls="worker-info" role="tab" data-toggle="tab" data-url="/admin/worker-manager/info"> <a href="#worker-info" aria-controls="worker-info" role="tab" data-toggle="tab" data-url="/admin/worker-manager/info">
{{ "Working info" | trans }} {{ 'admin::workermanager:tab:workerinfo: title' |trans }}
</a> </a>
</li> </li>
<li class="worker-searchengine" role="presentation"> <li class="worker-searchengine" role="presentation">
<a href="#worker-searchengine" aria-controls="worker-searchengine" role="tab" data-toggle="tab" data-url="/admin/worker-manager/searchengine"> <a href="#worker-searchengine" aria-controls="worker-searchengine" role="tab" data-toggle="tab" data-url="/admin/worker-manager/searchengine">
{{ "Searchengine" | trans }} {{ 'admin::workermanager:tab:searchengine: title' |trans }}
</a> </a>
</li> </li>
<li class="worker-pull-assets" role="presentation"> <li class="worker-pull-assets" role="presentation">
<a href="#worker-pull-assets" aria-controls="worker-pull-assets" role="tab" data-toggle="tab" data-url="/admin/worker-manager/pull-assets"> <a href="#worker-pull-assets" aria-controls="worker-pull-assets" role="tab" data-toggle="tab" data-url="/admin/worker-manager/pull-assets">
{{ "Pull Assets" | trans }} {{ 'admin::workermanager:tab:pullassets: title' |trans }}
</a> </a>
</li> </li>
<li class="worker-subview" role="presentation"> <li class="worker-subview" role="presentation">
<a href="#worker-subview" aria-controls="worker-subview" role="tab" data-toggle="tab" data-url="/admin/worker-manager/subview"> <a href="#worker-subview" aria-controls="worker-subview" role="tab" data-toggle="tab" data-url="/admin/worker-manager/subview">
{{ "Subview" | trans }} {{ 'admin::workermanager:tab:subview: title' |trans }}
</a> </a>
</li> </li>
<li class="worker-metadata" role="presentation"> <li class="worker-metadata" role="presentation">
<a href="#worker-metadata" aria-controls="worker-metadata" role="tab" data-toggle="tab" data-url="/admin/worker-manager/metadata"> <a href="#worker-metadata" aria-controls="worker-metadata" role="tab" data-toggle="tab" data-url="/admin/worker-manager/metadata">
{{ "Metadata" | trans }} {{ 'admin::workermanager:tab:metadata: title' |trans }}
</a> </a>
</li> </li>
@@ -86,6 +86,6 @@
</script> </script>
{% else %} {% else %}
<h1 class="alert alert-danger"> <h1 class="alert alert-danger">
Error! can't load rabbit config. Check rabbit config to use worker. {{ 'admin::workermanager: Rabbit config error' |trans }}
</h1> </h1>
{% endif %} {% endif %}

View File

@@ -1,7 +1,6 @@
<h3> Config Worker queue retry</h3> <h1>{{ 'admin::workermanager:tab:workerconfig: title' |trans }}</h1>
<p class="alert alert-danger"> <p class="alert alert-danger">
<strong>Warning!</strong> {{ 'admin::workermanager:tab:workerconfig: warning' |trans }}
When applied, it's re-initialize and purge "retry" and "delayed" queue!
</p> </p>
<p>Set up the delay between two attempts per queue! (if not set, default 10000 millisecond)</p> <p>Set up the delay between two attempts per queue! (if not set, default 10000 millisecond)</p>
@@ -48,7 +47,7 @@
<div class="control-group"> <div class="control-group">
<input type="submit" class="btn btn-primary" value={{ "Apply in queue"|trans }} /> <input type="submit" class="btn btn-primary" value={{ "admin::workermanager:tab:workerconfig:Apply in queue"|trans }} />
</div> </div>

View File

@@ -1,56 +1,60 @@
{% if not reload %} {% if not reload %}
<h1> worker information</h1> <h1>{{ 'admin::workermanager:tab:workerinfo: description' |trans }}</h1>
<div class="worker-info-block">
<form action="{{ path("worker_admin_truncate") }}" method="POST"> <form action="{{ path("worker_admin_truncate") }}" method="POST">
<p class="alert alert-danger"> <p>
<strong>Warning!</strong> <button class="btn btn-primary">
{{ "It's delete all work information !" |trans }} {{ 'admin::workermanager:tab:workerinfo: Erase all information' |trans }}
</p> </button>
<button class="btn btn-primary"> <span class="alert alert-danger">
{{ 'Erase all information' |trans }} {{ "admin::workermanager:tab:workerinfo: Warning! Erase all information" |trans }}
</button> </span>
</p>
</form> </form>
<form action="{{ path("worker_admin_delete_finished") }}" method="POST"> <form action="{{ path("worker_admin_delete_finished") }}" method="POST">
<p class="alert alert-danger"> <p>
<strong>Warning!</strong> <button class="btn btn-primary">
{{ "It's delete all finished works !"|trans }} {{ 'admin::workermanager:tab:workerinfo: Erase all finished' | trans }}
</p> </button>
<button class="btn btn-primary"> <span class="alert alert-danger">
{{ 'Erase all finished' | trans }} {{ "admin::workermanager:tab:workerinfo: Warning! Erase all finished"|trans }}
</button> </span>
</form>
</p>
</form>
<br><br>
<button id="refresh-list" class="btn btn-success"> <button id="refresh-list" class="btn btn-success">
{{ 'Refresh list' |trans }} {{ 'admin::workermanager:tab:workerinfo: Refresh list' |trans }}
</button> </button>
<div class="controls"> <div class="controls">
<label class="checkbox inline"> <label class="checkbox inline">
<input class="running-work" type="checkbox" value="1" checked> {{ 'Display running work' | trans }} <input class="running-work" type="checkbox" value="1" checked> {{ 'admin::workermanager:tab:workerinfo: Display running work' | trans }}
</label> </label>
<label class="checkbox inline"> <label class="checkbox inline">
<input class="finished-work" type="checkbox" value="1" checked> {{ 'Display finished work' | trans }} <input class="finished-work" type="checkbox" value="1" checked> {{ 'admin::workermanager:tab:workerinfo: Display finished work' | trans }}
</label> </label>
</div> </div>
</div>
<table class="admintable"> <table class="admintable">
<thead> <thead>
<tr> <tr>
<th class="sortable">databox_id</th> <th class="sortable">{{ 'admin::workermanager:tab:workerinfo: databox_id' | trans }}</th>
<th class="sortable">record_id</th> <th class="sortable">{{ 'admin::workermanager:tab:workerinfo: record_id' | trans }}</th>
<th class="sortable">work</th> <th class="sortable">{{ 'admin::workermanager:tab:workerinfo: work' | trans }}</th>
<th class="sortable">work_on</th> <th class="sortable">{{ 'admin::workermanager:tab:workerinfo: work_on' | trans }}</th>
<th class="sortable">created</th> <th class="sortable">{{ 'admin::workermanager:tab:workerinfo: created' | trans }}</th>
<th class="sortable">published</th> <th class="sortable">{{ 'admin::workermanager:tab:workerinfo: published' | trans }}</th>
<th class="sortable">status</th> <th class="sortable">{{ 'admin::workermanager:tab:workerinfo: status' | trans }}</th>
</tr> </tr>
</thead> </thead>
<tbody class="work-list"> <tbody class="work-list">
{% endif %} {% endif %}
{% for workerRow in workerRunningJob %} {% for workerRow in workerRunningJob | sort | reverse %}
<tr> <tr>
<td>{{ workerRow.databoxId }}</td> <td>{{ workerRow.databoxId }}</td>
<td>{{ workerRow.recordId }}</td> <td>{{ workerRow.recordId }}</td>
@@ -59,9 +63,8 @@
<td>{{ workerRow.created|date('Y-m-d H:i:s') }}</td> <td>{{ workerRow.created|date('Y-m-d H:i:s') }}</td>
<td>{{ workerRow.published|date('Y-m-d H:i:s') }}</td> <td>{{ workerRow.published|date('Y-m-d H:i:s') }}</td>
<td>{{ workerRow.status }}</td> <td>{{ workerRow.status }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
{% if not reload %} {% if not reload %}
</tbody> </tbody>

View File

@@ -1 +1 @@
<h1>Write metadata setting</h1> <h1>{{ 'admin::workermanager:tab:metadata: description' |trans }}</h1>

View File

@@ -1,4 +1,4 @@
<h1>Pull Assets from uploader setting</h1> <h1>{{ 'admin::workermanager:tab:pullassets: description' |trans }}</h1>
{{ form_start(form, {'action': path('worker_admin_pullAssets')}) }} {{ form_start(form, {'action': path('worker_admin_pullAssets')}) }}
@@ -23,7 +23,7 @@
</div> </div>
<div class="control-group"> <div class="control-group">
<input type="submit" class="btn btn-primary" value={{ "Initialize pull assets"|trans }} /> <input type="submit" class="btn btn-primary" value={{ "admin::workermanager:tab:pullassets: Initialize pull assets"|trans }} />
</div> </div>
{{ form_end(form) }} {{ form_end(form) }}

View File

@@ -1,4 +1,4 @@
<h1>Populate elasticsearch index</h1> <h1>{{ 'admin::workermanager:tab:searchengine: description' |trans }}</h1>
{{ form_start(form, {'action': path('worker_admin_searchengine')}) }} {{ form_start(form, {'action': path('worker_admin_searchengine')}) }}
@@ -15,7 +15,7 @@
</div> </div>
<div class="control-group"> <div class="control-group">
<label class="control-label"> {{ 'Databox to populate' | trans }}</label> <label class="control-label"> {{ 'admin::workermanager:tab:searchengine: Databox to populate' | trans }}</label>
<div class="controls"> <div class="controls">
<label class="checkbox inline"> <label class="checkbox inline">
<input class="subdef_sbas" type="checkbox" value="0"> {{ 'All' | trans }} <input class="subdef_sbas" type="checkbox" value="0"> {{ 'All' | trans }}
@@ -32,7 +32,7 @@
<div class="control-group"> <div class="control-group">
<button type="submit" class="btn btn-primary btn-trigger " id="populateButton" form="worker_searchengine"> <button type="submit" class="btn btn-primary btn-trigger " id="populateButton" form="worker_searchengine">
{{ "Populate" |trans }} {{ "admin::workermanager:tab:searchengine: Populate" |trans }}
</button> </button>
</div> </div>
@@ -86,7 +86,7 @@
} }
}); });
} else { } else {
alert("Worker is in process to indexing one of the selected databox!!"); alert({{ "admin::workermanager:tab:searchengine: Warning Worker is in process to indexing one of the selected databox" |trans }});
} }
} }
}); });

View File

@@ -1 +1 @@
<h1>Subview setting</h1> <h1>{{ 'admin::workermanager:tab:subview: description' |trans }}</h1>

View File

@@ -7578,10 +7578,10 @@ phraseanet-common@^0.4.5-d:
js-cookie "^2.1.0" js-cookie "^2.1.0"
pym.js "^1.3.1" pym.js "^1.3.1"
phraseanet-production-client@0.34.207-d: phraseanet-production-client@0.34.208-d:
version "0.34.207-d" version "0.34.208-d"
resolved "https://registry.yarnpkg.com/phraseanet-production-client/-/phraseanet-production-client-0.34.207-d.tgz#ab5e3798972a4d6e341762eb3a5bdb855f671ef2" resolved "https://registry.yarnpkg.com/phraseanet-production-client/-/phraseanet-production-client-0.34.208-d.tgz#6e1c204c1706cdc2e3c9ad2fdc217dfe96f05688"
integrity sha512-BPX77nV9Bd5+7rwXQwiYz0y8vp+UrsBFTlb7E9xLgd6t20NagZx480+tfDwGrKQ4SMVf+DUJXAKBVVcIO8bfHw== integrity sha512-1uubAM0L0BeEeyCP0kiECnTt90EAO/u9hitWjkkqGxSiB+kJ3wTZHaM1T7+l676Ryg/wRIZBF/eu1vhGtoVAeQ==
dependencies: dependencies:
"@mapbox/mapbox-gl-language" "^0.9.2" "@mapbox/mapbox-gl-language" "^0.9.2"
"@turf/turf" "^5.1.6" "@turf/turf" "^5.1.6"