mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-17 06:53:15 +00:00
merge master into branch
This commit is contained in:
2
.env
2
.env
@@ -119,7 +119,7 @@ PHRASEANET_DOCKER_REGISTRY=local
|
||||
|
||||
# Docker images tag.
|
||||
# @run
|
||||
PHRASEANET_DOCKER_TAG=4.1.3
|
||||
PHRASEANET_DOCKER_TAG=4.1.5
|
||||
|
||||
# Application port.
|
||||
# @run
|
||||
|
180
CHANGELOG.md
180
CHANGELOG.md
@@ -1,5 +1,185 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 4.1.5
|
||||
|
||||
### Version summary :
|
||||
|
||||
- Search Engine
|
||||
- It is possible to search for records where fields are filled with a given value, eg : search record where field is fullfilled ```Title=_set_```
|
||||
- It is also possible to search record using documentary field if empty, eg : search record where "Title" field is empty ```Title=_unset_``` .
|
||||
- Display an "Unset" facet to quick filter results with no value in field.
|
||||
This is an option that the user can activate in "Prod", "workzone", "facets setting", useful to detect and fix an incomplete indexing.
|
||||
|
||||
- Record classification by drag and drop on thesaurus terms
|
||||
- This now is possible to add terms to record or story by drag and drop them to a thesaurus term.
|
||||
|
||||
- Feedback improvement:
|
||||
- Change the feedback's deadline or reopen it.
|
||||
- Add manually new user during the feedback.
|
||||
- Send manually a feedback reminder by email to selected users including a new connection link (token).
|
||||
|
||||
- Including a CGU files (as pdf) in the downloaded ZIP.
|
||||
- the attached PDF include thumbnails and description of downloaded files.
|
||||
|
||||
- Phrasea Expose in Phraseanet Production
|
||||
- Better integration between Prod and Phrasea Expose service.
|
||||
- Add mapping for fields and subdefinitions when adding records to a publication.
|
||||
|
||||
- Databox subdefs - Create watermarked subdefs.
|
||||
|
||||
- Generate sub definition for HEIC file.
|
||||
|
||||
- Worker Record Actions for replacing legacy task "record mover".
|
||||
|
||||
- Webhook Improvement
|
||||
- It is now possible to subscribe only on some events.
|
||||
- More events are emitted on record/story actions.
|
||||
- record/story creation / deletion
|
||||
- record/story editing
|
||||
- record/story status changed
|
||||
- record/story collection change
|
||||
- record/story file substitution
|
||||
- Change the webhook json content, including "before" and "after" state for
|
||||
- Collection change
|
||||
- StatusBits change
|
||||
- Indexation change
|
||||
|
||||
- docker and docker-compose
|
||||
- Add docker-compose ```profiles``` for a better stack compositing
|
||||
- Add container for legacy schedulers
|
||||
|
||||
- API improvement on story and search endpoint
|
||||
- Story search mode improvement of ```include```.
|
||||
|
||||
- Implement HTTP proxy support server side for request made by :
|
||||
- Webhook Emit
|
||||
- Geonames request
|
||||
- Communication with Phrasea Expose
|
||||
- Communication with Phrasea Uploader
|
||||
|
||||
|
||||
### Bug Fix :
|
||||
|
||||
```
|
||||
PHRAS-3566 Prod - upload - It is possible to apply status on upload even if the user does not have "Change status" right
|
||||
PHRAS-3565 Prod - Editing - fields using Geonames service - the fields are not filled anymore
|
||||
PHRAS-3544 Prod - tool - file with is not invalidate when made rotation or recreate subdefinition.
|
||||
PHRAS-3541 Prod - Image rotation NOK - ETAG is not renew - File is correctly rotated but not invalidate in browser cache.
|
||||
PHRAS-3528 Prod - export - web browser loops download zip file
|
||||
PHRAS-3509 Prod - tools - document substitution - the generation message for sub-definition is published twice.
|
||||
PHRAS-3460 Prod - Detailed view - Timeline tab (History) - events sorting is wrong and some events do not appear
|
||||
PHRAS-3386 Prod - Baskets zone is blank after re-opening the workzone
|
||||
PHRAS-3356 Prod - detailed view - related story - broken when no right to Access report
|
||||
PHRAS-3348 Prod - Feedback (AKA Validation) : Update validation expiration date do not update the validation token expiration Date
|
||||
PHRAS-3126 Prod - search bar - background blue coloration is missing when search filter is active.
|
||||
PHRAS-3032 Prod - Multi Stories editing - Editing need to be applied only on stories (not on included records).
|
||||
PHRAS-3374 Prod - upload overlay - rendering issue on Upload Overlays loading
|
||||
PHRAS-3421 Prod - expose - authentication for multi expose with password is NOK
|
||||
PHRAS-3443 Prod - Maintenance message is not displayed to the end user
|
||||
PHRAS-3490 Admin - databases - collection setting- A duplication of value occurs when deleting suggested values
|
||||
PHRAS-2832 Lightbox Error 500 when a basket contains recordid not anymore in the DB
|
||||
PHRAS-3285 Thesaurus - the Stock is not available on the candidates section of the Thesaurus
|
||||
PHRAS-3583 Search Engine - Sort records results on customer's Fields date or number return 500 error.
|
||||
PHRAS-3360 Configuration.yml , Missing "Worker" section introduce in version 4.1.1
|
||||
PHRAS-2441 Lifetimes for session in configuration.yml not taken into account , make clean between "TTL" and "lifetimes"
|
||||
```
|
||||
|
||||
### New Features :
|
||||
|
||||
```
|
||||
PHRAS-3417 Search on field with no value and generate facets
|
||||
PHRAS-3381 Prod - Thesaurus as tx - use Thesaurus for classification plan - Drag and Drop record on a terms
|
||||
PHRAS-3216 Prod - Feedback- Workzone - feedback improvement , renew user , manual
|
||||
PHRAS-3288 Prod - Workzone - Add more users in existing feedback.
|
||||
PHRAS-3287 Prod - Workzone - feedback - send a reminder email with link to feedback,
|
||||
PHRAS-3080 When a document is exported , add a PDF File with Databox's CGU
|
||||
PHRAS-2896 Generate subdef for HEIC file - HEIF (High Efficiency Image Format)
|
||||
PHRAS-3535 Prod - Feedback (AKA Validation) - Add features , send a new access token to user in message windows, reload basket after expiration date change
|
||||
PHRAS-3580 Admin - databoxs - databox subdefs - Create watermarked subdefs
|
||||
```
|
||||
|
||||
### Improvements :
|
||||
|
||||
```
|
||||
PHRAS-3584 Story - maintain a link between the story cover and the record used to define it.
|
||||
PHRAS-3536 Admin - Users list - add "last connection " colon in user list - mapped on colon "Users.last_connection" of application box
|
||||
PHRAS-3456 Admin - User registration - Send the email unlock account in first, Before e-mail for password definition
|
||||
PHRAS-3366 Admin - base base setting - Button "Re-index database now" change behavior, send a populate
|
||||
PHRAS-3524 Prod - windows Notification - Notification for a "received basket" require a double click.
|
||||
PHRAS-3522 Prod - Notification - notifications windows contain uninterpreted HTML (URL)
|
||||
PHRAS-3516 Prod - Advance search -Sort results by field type string
|
||||
PHRAS-3256 Email notification - Take the recipient language (locale) in account
|
||||
PHRAS-3519 Use "move" method after each Copy (upload, worker, API)
|
||||
PHRAS-3469 optimisation of slow request “get notifications” due to "MySQL Baskets select"
|
||||
PHRAS-3499 Worker - Stamp process - Stamp on file is made by worker export by email
|
||||
PHRAS-3447 Worker - add flock (file lock) and Get Mutex in WorkerRunningJob table
|
||||
PHRAS-3445 Worker - editrecord - explode editing mds to small message for each records - add retry and error queues
|
||||
PHRAS-3427 Worker - configuration - rabbitmq support the AMQPS SSL connection.
|
||||
PHRAS-3454 Worker - write metadata « undefined index count »
|
||||
PHRAS-3494 Docker - launch a container with worker images in legacy scheduler context "bin/console scheduler: start"
|
||||
PHRAS-3484 Docker - Check rabbitmq and Mariadb version and fix
|
||||
PHRAS-3551 Docker-compose - refacto - worker - use profile - launch one worker for each Job
|
||||
PHRAS-3463 Docker - worker container - add (again) Supervisor into it and launch "Phraseanet worker" with (env based)
|
||||
PHRAS-3372 Docker - entrypoint.sh refacto add env: for Playing upgrade, for no setup if need
|
||||
PHRAS-3364 Docker-compose - Add COMPOSE_FILE in .env - put mailhog in other docker-compose file
|
||||
PHRAS-3361 Docker-compose - Declaring a network for Phraseanet stack - stop using "default" network
|
||||
PHRAS-3346 Docker - add Healthcheck for gateway container option
|
||||
PHRAS-3324 Docker-compose.yml upgrade from 3.4 to 3.9 version and add profiles for stack compositing.
|
||||
PHRAS-3102 Docker-compose - MariaDb container- Add env for set slow query - max_connection etc ...
|
||||
PHRAS-3475 Prod - expose - expose setting , define and store mapping - which subdefinition is uploaded to an publication
|
||||
PHRAS-3474 Prod - expose - expose setting , define and store mapping for field send to expose asset description
|
||||
PHRAS-3507 Prod - Expose - Set null when user select "No parent publication" and other fix
|
||||
PHRAS-3442 Optimise List_notifications in 4.1
|
||||
PHRAS-3438 conf/configuration.yml - Set an http and ftp proxy (squid in dev mode) and use serveur Side eg worker ; geocoding request, ftp, uploader etc...
|
||||
PHRAS-3413 Webhook emit improvement , define an emit Timeout - default 30 sec - this timeout can be override in configuration.yml
|
||||
PHRAS-3399 Prod - feedback - Right issue and others improvements
|
||||
PHRAS-3394 Prod - CSS - Rewriting "black-dialog-wrap" classe
|
||||
PHRAS-3393 API V3 patch use record adapter
|
||||
PHRAS-3391 Prod - Detailed view - feedback context - add confirmation when user try to delete a Record
|
||||
PHRAS-3390 Prod - Workzone - basket tab - local menu - "Delete" action, add "Archive" and "Cancel" choice in confirmation windows
|
||||
PHRAS-3389 Search - thesaurus - Concept Path - Stop to use Thesaurus from other databox.
|
||||
PHRAS-3388 Prod - Baskets - Validation Basket - Improve validation UX - show feedback result in Detailed view
|
||||
PHRAS-3378 Prod -Detailed view - Apply number formatting to result count " Result 1 900 / 902 723"
|
||||
PHRAS-3375 Export by email - add download-link-validity: 24 , Email - download link TTL
|
||||
PHRAS-3371 Prod - Detailed View - Check navigation between records with keyboards.
|
||||
PHRAS-3353 Prod - Avoid purging the browser's local cache for JS - versioned file for commons.min.js production.mn.js
|
||||
PHRAS-3352 Prod- Workzone - keep sort (order) and filter define by the user - date or alpha
|
||||
PHRAS-3350 Password renewal and creation - link send by email - token TTL - token table of applicationBox
|
||||
PHRAS-3341 Prod - Detailed view - title bar - refactoring UX
|
||||
PHRAS-3237 Worker - Port "record mover" task as Worker And rename It "RecordsActions"
|
||||
PHRAS-3166 Worker webhook - clean old webhook table (maintains value)
|
||||
PHRAS-3146 Worker - Consuming Dead Letters - Add TTL to msg in error for auto purge
|
||||
PHRAS-3457 Notifications cleanup
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Others (change on external lib, documentation update )
|
||||
|
||||
```
|
||||
PHRAS-3534 Embed-bundle bump PDFJS version.
|
||||
PHRAS-3250 Prod - answer grid - GUI freeze at end of search query execution (after loading data)
|
||||
PHRAS-3245 Install - scheduler - stop to create (default) tasks - subview and write metadata.
|
||||
PHRAS-3266 Documentation Phraseanet - How to migrate Phraseanet data under docker
|
||||
PHRAS-3153 API V3 - Add documentation to swaggehub and serve by it - sync swaggerhub with Phraseanet github repository
|
||||
PHRAS-3335 Admin - Dashboard - requirement - fix warning
|
||||
PHRAS-3050 Documentation update for install storage option added in 4.1
|
||||
PHRAS-2487 Documentation of Add - upload asset, as record in Phraseanet, by URL
|
||||
PHRAS-3610 Documentation update search option in Elasticsearch
|
||||
PHRAS-3411 Prod - String for Thesaurus as tx windows
|
||||
```
|
||||
|
||||
Note : For technical reasons, no Docker image and packaged version have been generated for the 4.1.4 version. Therefore, the release notes below concern both versions 4.1.4 and 4.1.5.
|
||||
|
||||
|
||||
|
||||
# 4.1.4
|
||||
|
||||
|
||||
### Version summary : see upper 4.1.5
|
||||
|
||||
|
||||
|
||||
## 4.1.3
|
||||
|
||||
Release notes - Phraseanet - Version 4.1.3
|
||||
|
@@ -13,5 +13,5 @@ module.exports = {
|
||||
setupDir: _root + 'tests/setup/node.js',
|
||||
karmaConf: _root + 'config/karma.conf.js',
|
||||
// change this version when you change JS file for lazy loading
|
||||
assetFileVersion: 34
|
||||
assetFileVersion: 37
|
||||
};
|
||||
|
@@ -96,7 +96,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ if (__webpack_require__.nc) {
|
||||
/******/ script.setAttribute("nonce", __webpack_require__.nc);
|
||||
/******/ }
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=34";
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=37";
|
||||
/******/ var timeout = setTimeout(onScriptComplete, 120000);
|
||||
/******/ script.onerror = script.onload = onScriptComplete;
|
||||
/******/ function onScriptComplete() {
|
||||
|
@@ -96,7 +96,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ if (__webpack_require__.nc) {
|
||||
/******/ script.setAttribute("nonce", __webpack_require__.nc);
|
||||
/******/ }
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=34";
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=37";
|
||||
/******/ var timeout = setTimeout(onScriptComplete, 120000);
|
||||
/******/ script.onerror = script.onload = onScriptComplete;
|
||||
/******/ function onScriptComplete() {
|
||||
|
2
Phraseanet-production-client/dist/commons.js
vendored
2
Phraseanet-production-client/dist/commons.js
vendored
@@ -91,7 +91,7 @@
|
||||
/******/ if (__webpack_require__.nc) {
|
||||
/******/ script.setAttribute("nonce", __webpack_require__.nc);
|
||||
/******/ }
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=34";
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=37";
|
||||
/******/ var timeout = setTimeout(onScriptComplete, 120000);
|
||||
/******/ script.onerror = script.onload = onScriptComplete;
|
||||
/******/ function onScriptComplete() {
|
||||
|
@@ -91,7 +91,7 @@
|
||||
/******/ if (__webpack_require__.nc) {
|
||||
/******/ script.setAttribute("nonce", __webpack_require__.nc);
|
||||
/******/ }
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=34";
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=37";
|
||||
/******/ var timeout = setTimeout(onScriptComplete, 120000);
|
||||
/******/ script.onerror = script.onload = onScriptComplete;
|
||||
/******/ function onScriptComplete() {
|
||||
|
26
Phraseanet-production-client/dist/production.js
vendored
26
Phraseanet-production-client/dist/production.js
vendored
@@ -3954,6 +3954,8 @@ var workzoneFacets = function workzoneFacets(services) {
|
||||
|
||||
treeSource = _parseColors(treeSource);
|
||||
|
||||
treeSource = _colorUnsetText(treeSource);
|
||||
|
||||
return _getFacetsTree().reload(treeSource).done(function () {
|
||||
_.each((0, _jquery2.default)('#proposals').find('.fancytree-expanded'), function (element, i) {
|
||||
(0, _jquery2.default)(element).find('.fancytree-title, .fancytree-expander').css('line-height', '50px');
|
||||
@@ -4013,6 +4015,21 @@ var workzoneFacets = function workzoneFacets(services) {
|
||||
}
|
||||
}
|
||||
|
||||
function _colorUnsetText(source) {
|
||||
_.forEach(source, function (facet) {
|
||||
if (!_.isUndefined(facet.children) && facet.children.length > 0) {
|
||||
_.forEach(facet.children, function (child) {
|
||||
if (child.raw_value.toString() === '_unset_') {
|
||||
var title = child.title;
|
||||
child.title = '<span style="color:#2196f3;">' + title.toString() + '</span>';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return source;
|
||||
}
|
||||
|
||||
// from stackoverflow
|
||||
// http://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects/979325#979325
|
||||
function _sortFacets(field, reverse, primer) {
|
||||
@@ -19320,6 +19337,7 @@ var notifyLayout = function notifyLayout(services) {
|
||||
$notificationDialog.dialog('close');
|
||||
};
|
||||
|
||||
var zIndexOverlay = (0, _jquery2.default)('.ui-widget-overlay').css("z-index");
|
||||
// open the dlg (even if it is already opened when "load more")
|
||||
//
|
||||
$notificationDialog.dialog({
|
||||
@@ -19331,11 +19349,16 @@ var notifyLayout = function notifyLayout(services) {
|
||||
modal: true,
|
||||
width: 500,
|
||||
height: 400,
|
||||
dialogClass: "dialog-notification-box",
|
||||
overlay: {
|
||||
backgroundColor: '#000',
|
||||
opacity: 0.7
|
||||
},
|
||||
open: function open() {
|
||||
(0, _jquery2.default)('.ui-widget-overlay').css("z-index", (0, _jquery2.default)(".dialog-notification-box").css("z-index"));
|
||||
},
|
||||
close: function close(event, ui) {
|
||||
(0, _jquery2.default)('.ui-widget-overlay').css("z-index", zIndexOverlay);
|
||||
// destroy so it will be "fresh" on next open (scrollbar on top)
|
||||
$notificationDialog.dialog('destroy').remove();
|
||||
}
|
||||
@@ -51131,7 +51154,6 @@ var geonameDatasource = function geonameDatasource(services) {
|
||||
height: "auto",
|
||||
width: 400,
|
||||
modal: true,
|
||||
dialogClass: "dialog-edit_lat_lon",
|
||||
buttons: {
|
||||
confirmYes: function confirmYes() {
|
||||
(0, _jquery2.default)(this).dialog("close");
|
||||
@@ -68169,7 +68191,7 @@ var search = function search(services) {
|
||||
var updateFacetData = function updateFacetData() {
|
||||
appEvents.emit('facets.doLoadFacets', {
|
||||
facets: facets,
|
||||
filterFacet: (0, _jquery2.default)('#look_box_settings input[name=filter_facet]').prop('checked'),
|
||||
filterFacet: (0, _jquery2.default)('.look_box_settings input[name=filter_facet]').prop('checked'),
|
||||
facetOrder: (0, _jquery2.default)('.look_box_settings select[name=orderFacet]').val(),
|
||||
facetValueOrder: (0, _jquery2.default)('.look_box_settings select[name=facetValuesOrder]').val(),
|
||||
hiddenFacetsList: savedHiddenFacetsList
|
||||
|
@@ -3954,6 +3954,8 @@ var workzoneFacets = function workzoneFacets(services) {
|
||||
|
||||
treeSource = _parseColors(treeSource);
|
||||
|
||||
treeSource = _colorUnsetText(treeSource);
|
||||
|
||||
return _getFacetsTree().reload(treeSource).done(function () {
|
||||
_.each((0, _jquery2.default)('#proposals').find('.fancytree-expanded'), function (element, i) {
|
||||
(0, _jquery2.default)(element).find('.fancytree-title, .fancytree-expander').css('line-height', '50px');
|
||||
@@ -4013,6 +4015,21 @@ var workzoneFacets = function workzoneFacets(services) {
|
||||
}
|
||||
}
|
||||
|
||||
function _colorUnsetText(source) {
|
||||
_.forEach(source, function (facet) {
|
||||
if (!_.isUndefined(facet.children) && facet.children.length > 0) {
|
||||
_.forEach(facet.children, function (child) {
|
||||
if (child.raw_value.toString() === '_unset_') {
|
||||
var title = child.title;
|
||||
child.title = '<span style="color:#2196f3;">' + title.toString() + '</span>';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return source;
|
||||
}
|
||||
|
||||
// from stackoverflow
|
||||
// http://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects/979325#979325
|
||||
function _sortFacets(field, reverse, primer) {
|
||||
@@ -19320,6 +19337,7 @@ var notifyLayout = function notifyLayout(services) {
|
||||
$notificationDialog.dialog('close');
|
||||
};
|
||||
|
||||
var zIndexOverlay = (0, _jquery2.default)('.ui-widget-overlay').css("z-index");
|
||||
// open the dlg (even if it is already opened when "load more")
|
||||
//
|
||||
$notificationDialog.dialog({
|
||||
@@ -19331,11 +19349,16 @@ var notifyLayout = function notifyLayout(services) {
|
||||
modal: true,
|
||||
width: 500,
|
||||
height: 400,
|
||||
dialogClass: "dialog-notification-box",
|
||||
overlay: {
|
||||
backgroundColor: '#000',
|
||||
opacity: 0.7
|
||||
},
|
||||
open: function open() {
|
||||
(0, _jquery2.default)('.ui-widget-overlay').css("z-index", (0, _jquery2.default)(".dialog-notification-box").css("z-index"));
|
||||
},
|
||||
close: function close(event, ui) {
|
||||
(0, _jquery2.default)('.ui-widget-overlay').css("z-index", zIndexOverlay);
|
||||
// destroy so it will be "fresh" on next open (scrollbar on top)
|
||||
$notificationDialog.dialog('destroy').remove();
|
||||
}
|
||||
@@ -51131,7 +51154,6 @@ var geonameDatasource = function geonameDatasource(services) {
|
||||
height: "auto",
|
||||
width: 400,
|
||||
modal: true,
|
||||
dialogClass: "dialog-edit_lat_lon",
|
||||
buttons: {
|
||||
confirmYes: function confirmYes() {
|
||||
(0, _jquery2.default)(this).dialog("close");
|
||||
@@ -68169,7 +68191,7 @@ var search = function search(services) {
|
||||
var updateFacetData = function updateFacetData() {
|
||||
appEvents.emit('facets.doLoadFacets', {
|
||||
facets: facets,
|
||||
filterFacet: (0, _jquery2.default)('#look_box_settings input[name=filter_facet]').prop('checked'),
|
||||
filterFacet: (0, _jquery2.default)('.look_box_settings input[name=filter_facet]').prop('checked'),
|
||||
facetOrder: (0, _jquery2.default)('.look_box_settings select[name=orderFacet]').val(),
|
||||
facetValueOrder: (0, _jquery2.default)('.look_box_settings select[name=facetValuesOrder]').val(),
|
||||
hiddenFacetsList: savedHiddenFacetsList
|
||||
|
@@ -3204,6 +3204,10 @@ h3.metadatas-title:after {
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
#proposals #collapseOne {
|
||||
background: #292929;
|
||||
}
|
||||
|
||||
.ui-dialog .ui-dialog-content.loading,
|
||||
.loading {
|
||||
background-image: url("/assets/common/images/icons/loading.svg");
|
||||
@@ -3426,8 +3430,8 @@ h3.metadatas-title:after {
|
||||
z-index: 1999;
|
||||
}
|
||||
|
||||
.ui-dialog.ui-widget-content.dialog-edit_lat_lon {
|
||||
z-index: 2000 !important;
|
||||
.ui-dialog.ui-widget-content.dialog-notification-box {
|
||||
z-index: 1199 !important;
|
||||
}
|
||||
|
||||
.ui-dialog-titlebar {
|
||||
@@ -8850,7 +8854,7 @@ TABLE.explain3 TR TD {
|
||||
|
||||
#PREVIEWBOX,
|
||||
#EDITWINDOW {
|
||||
z-index: 2000;
|
||||
z-index: 1200;
|
||||
background-color: #1a1a1a;
|
||||
display: none;
|
||||
border: 1px solid #7f7f7f;
|
||||
|
File diff suppressed because one or more lines are too long
@@ -3219,6 +3219,10 @@ h3.metadatas-title:after {
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
#proposals #collapseOne {
|
||||
background: #c9c9c9;
|
||||
}
|
||||
|
||||
.ui-dialog .ui-dialog-content.loading,
|
||||
.loading {
|
||||
background-image: url("/assets/common/images/icons/loading.svg");
|
||||
@@ -3441,8 +3445,8 @@ h3.metadatas-title:after {
|
||||
z-index: 1999;
|
||||
}
|
||||
|
||||
.ui-dialog.ui-widget-content.dialog-edit_lat_lon {
|
||||
z-index: 2000 !important;
|
||||
.ui-dialog.ui-widget-content.dialog-notification-box {
|
||||
z-index: 1199 !important;
|
||||
}
|
||||
|
||||
.ui-dialog-titlebar {
|
||||
@@ -8865,7 +8869,7 @@ TABLE.explain3 TR TD {
|
||||
|
||||
#PREVIEWBOX,
|
||||
#EDITWINDOW {
|
||||
z-index: 2000;
|
||||
z-index: 1200;
|
||||
background-color: #d9d9d9;
|
||||
display: none;
|
||||
border: 1px solid silver;
|
||||
|
File diff suppressed because one or more lines are too long
@@ -3221,6 +3221,10 @@ h3.metadatas-title:after {
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
#proposals #collapseOne {
|
||||
background: #f8f8f8;
|
||||
}
|
||||
|
||||
.ui-dialog .ui-dialog-content.loading,
|
||||
.loading {
|
||||
background-image: url("/assets/common/images/icons/loading.svg");
|
||||
@@ -3443,8 +3447,8 @@ h3.metadatas-title:after {
|
||||
z-index: 1999;
|
||||
}
|
||||
|
||||
.ui-dialog.ui-widget-content.dialog-edit_lat_lon {
|
||||
z-index: 2000 !important;
|
||||
.ui-dialog.ui-widget-content.dialog-notification-box {
|
||||
z-index: 1199 !important;
|
||||
}
|
||||
|
||||
.ui-dialog-titlebar {
|
||||
@@ -8867,7 +8871,7 @@ TABLE.explain3 TR TD {
|
||||
|
||||
#PREVIEWBOX,
|
||||
#EDITWINDOW {
|
||||
z-index: 2000;
|
||||
z-index: 1200;
|
||||
background-color: #ffffff;
|
||||
display: none;
|
||||
border: 1px solid #bfbfbf;
|
||||
|
File diff suppressed because one or more lines are too long
@@ -103,6 +103,7 @@ const notifyLayout = (services) => {
|
||||
$notificationDialog.dialog('close');
|
||||
};
|
||||
|
||||
let zIndexOverlay = $('.ui-widget-overlay').css("z-index");
|
||||
// open the dlg (even if it is already opened when "load more")
|
||||
//
|
||||
$notificationDialog
|
||||
@@ -116,11 +117,16 @@ const notifyLayout = (services) => {
|
||||
modal: true,
|
||||
width: 500,
|
||||
height: 400,
|
||||
dialogClass: "dialog-notification-box",
|
||||
overlay: {
|
||||
backgroundColor: '#000',
|
||||
opacity: 0.7
|
||||
},
|
||||
open: function () {
|
||||
$('.ui-widget-overlay').css("z-index", $(".dialog-notification-box").css("z-index"));
|
||||
},
|
||||
close: function (event, ui) {
|
||||
$('.ui-widget-overlay').css("z-index", zIndexOverlay);
|
||||
// destroy so it will be "fresh" on next open (scrollbar on top)
|
||||
$notificationDialog.dialog('destroy').remove();
|
||||
}
|
||||
|
@@ -128,7 +128,6 @@ const geonameDatasource = (services) => {
|
||||
height: "auto",
|
||||
width: 400,
|
||||
modal: true,
|
||||
dialogClass: "dialog-edit_lat_lon",
|
||||
buttons: {
|
||||
confirmYes : function () {
|
||||
$(this).dialog("close");
|
||||
|
@@ -431,7 +431,7 @@ const search = services => {
|
||||
const updateFacetData = () => {
|
||||
appEvents.emit('facets.doLoadFacets', {
|
||||
facets: facets,
|
||||
filterFacet: $('#look_box_settings input[name=filter_facet]').prop('checked'),
|
||||
filterFacet: $('.look_box_settings input[name=filter_facet]').prop('checked'),
|
||||
facetOrder: $('.look_box_settings select[name=orderFacet]').val(),
|
||||
facetValueOrder: $('.look_box_settings select[name=facetValuesOrder]').val(),
|
||||
hiddenFacetsList: savedHiddenFacetsList
|
||||
|
@@ -156,6 +156,8 @@ const workzoneFacets = services => {
|
||||
|
||||
treeSource = _parseColors(treeSource);
|
||||
|
||||
treeSource = _colorUnsetText(treeSource);
|
||||
|
||||
return _getFacetsTree().reload(treeSource)
|
||||
.done(function () {
|
||||
_.each($('#proposals').find('.fancytree-expanded'), function (element, i) {
|
||||
@@ -215,6 +217,21 @@ const workzoneFacets = services => {
|
||||
}
|
||||
}
|
||||
|
||||
function _colorUnsetText(source) {
|
||||
_.forEach(source, function (facet) {
|
||||
if (!_.isUndefined(facet.children) && (facet.children.length > 0)) {
|
||||
_.forEach(facet.children, function (child) {
|
||||
if (child.raw_value.toString() === '_unset_') {
|
||||
var title = child.title;
|
||||
child.title = '<span style="color:#2196f3;">' + title.toString() +'</span>';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return source;
|
||||
}
|
||||
|
||||
|
||||
// from stackoverflow
|
||||
// http://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects/979325#979325
|
||||
|
@@ -1310,6 +1310,10 @@ h3.metadatas-title {
|
||||
}
|
||||
}
|
||||
|
||||
#proposals #collapseOne {
|
||||
background: $feedback;
|
||||
}
|
||||
|
||||
@import 'ui-components/jquery-ui';
|
||||
@import 'ui-components/context-menu';
|
||||
@import 'ui-components/forms';
|
||||
|
@@ -233,8 +233,9 @@ $basketBg: $darkBackgroundColor !default;
|
||||
z-index: 1999;
|
||||
}
|
||||
|
||||
.ui-dialog.ui-widget-content.dialog-edit_lat_lon {
|
||||
z-index: 2000 !important;
|
||||
.ui-dialog.ui-widget-content.dialog-notification-box {
|
||||
// just less than the PREVIEWBOX and the EDITWINDOW z-index
|
||||
z-index: 1199 !important;
|
||||
}
|
||||
|
||||
.ui-dialog-titlebar {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#PREVIEWBOX,
|
||||
#EDITWINDOW {
|
||||
z-index: 2000; // just enough uppur than a dialog z-index
|
||||
z-index: 1200;
|
||||
background-color: $modalBackground;
|
||||
display: none;
|
||||
border: $modalBorder; //1px solid $darkerBorderColor;
|
||||
|
@@ -8,7 +8,7 @@ use Alchemy\Phrasea\SearchEngine\Elastic\Search\QueryPostProcessor;
|
||||
|
||||
class ExistsExpression extends Node
|
||||
{
|
||||
const EXISTS_VALUE = '_filled_';
|
||||
const EXISTS_VALUE = '_set_';
|
||||
|
||||
private $key;
|
||||
private $value;
|
||||
|
@@ -8,7 +8,7 @@ use Alchemy\Phrasea\SearchEngine\Elastic\Search\QueryPostProcessor;
|
||||
|
||||
class MissingExpression extends Node
|
||||
{
|
||||
const MISSING_VALUE = '_empty_';
|
||||
const MISSING_VALUE = '_unset_';
|
||||
|
||||
private $key;
|
||||
private $value;
|
||||
|
@@ -55,7 +55,7 @@ class FacetsResponse
|
||||
if (!empty($aggregation['buckets'])) { // don't add to a field with no aggs (no buckets), since it will enforce display of the irrelevant facet
|
||||
if($response['aggregations'][$name . '#empty']['doc_count'] > 0) { // don't add a facet for 0 results
|
||||
$aggregation['buckets'][] = [
|
||||
'key' => '_empty_',
|
||||
'key' => '_unset_',
|
||||
'value' => $this->translator->trans('prod:workzone:facetstab:unset_field_facet_label_(%fieldname%)', ['%fieldname%' =>$name]), // special homemade prop to display a human value instead of the key
|
||||
'doc_count' => $response['aggregations'][$name . '#empty']['doc_count']
|
||||
];
|
||||
|
@@ -88,7 +88,7 @@ class Helper
|
||||
$document->formatOutput = true;
|
||||
$element = $document->createElement('cterms');
|
||||
$element->setAttribute('creation_date', date('YmdHis'));
|
||||
$element->setAttribute('next_id', 0);
|
||||
$element->setAttribute('nextid', 0);
|
||||
$element->setAttribute('version', '2.0.5');
|
||||
$document->appendChild($element);
|
||||
}
|
||||
|
@@ -59,7 +59,7 @@ class PhraseanetExtension extends \Twig_Extension
|
||||
{
|
||||
return [
|
||||
// change this version when you change JS file to force the navigation to reload js file
|
||||
'assetFileVersion' => 34
|
||||
'assetFileVersion' => 37
|
||||
];
|
||||
|
||||
}
|
||||
|
@@ -310,7 +310,7 @@ class AMQPConnection
|
||||
|
||||
public function getConnection()
|
||||
{
|
||||
if (!isset($this->connection)) {
|
||||
if (empty($this->connection)) {
|
||||
try {
|
||||
$heartbeat = $this->hostConfig['heartbeat'] ?? 60;
|
||||
|
||||
@@ -360,9 +360,9 @@ class AMQPConnection
|
||||
|
||||
public function getChannel()
|
||||
{
|
||||
if (!isset($this->channel)) {
|
||||
if (empty($this->channel)) {
|
||||
$this->getConnection();
|
||||
if (isset($this->connection)) {
|
||||
if (!empty($this->connection)) {
|
||||
$this->channel = $this->connection->channel();
|
||||
|
||||
return $this->channel;
|
||||
@@ -386,9 +386,26 @@ class AMQPConnection
|
||||
/**
|
||||
* @param $queueName
|
||||
* @return AMQPChannel|null
|
||||
* @throws Exception
|
||||
*/
|
||||
public function setQueue($queueName)
|
||||
{
|
||||
// first send heartbeat
|
||||
// catch if connection closed, and get a new one connection
|
||||
if (!empty($this->connection)) {
|
||||
try {
|
||||
$this->connection->checkHeartBeat();
|
||||
} catch(\Exception $e) {
|
||||
$this->connection = null;
|
||||
$this->channel = null;
|
||||
$this->getChannel();
|
||||
}
|
||||
} else {
|
||||
$this->connection = null;
|
||||
$this->channel = null;
|
||||
$this->getChannel();
|
||||
}
|
||||
|
||||
if (!isset($this->channel)) {
|
||||
$this->getChannel();
|
||||
if (!isset($this->channel)) {
|
||||
|
@@ -3,6 +3,7 @@
|
||||
use Alchemy\Phrasea\Application;
|
||||
use Alchemy\Phrasea\Model\Repositories\FeedItemRepository;
|
||||
use Alchemy\Phrasea\Model\Entities\FeedItem;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
class patch_415PHRAS3604 implements patchInterface
|
||||
{
|
||||
@@ -71,8 +72,13 @@ class patch_415PHRAS3604 implements patchInterface
|
||||
/** @var FeedItem $feedItem */
|
||||
foreach ($feedItemRepository->findAll() as $feedItem) {
|
||||
// if the record is not found, delete the feedItem
|
||||
if ($app->findDataboxById($feedItem->getSbasId())->getRecordRepository()->find($feedItem->getRecordId()) == null) {
|
||||
$app['orm.em']->remove($feedItem);
|
||||
try {
|
||||
if ($app->findDataboxById($feedItem->getSbasId())->getRecordRepository()->find($feedItem->getRecordId()) == null) {
|
||||
$app['orm.em']->remove($feedItem);
|
||||
}
|
||||
} catch (NotFoundHttpException $e) {
|
||||
// the referenced sbas_id is not found, so delete also the feedItem
|
||||
$app['orm.em']->remove($feedItem);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1876,7 +1876,7 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
||||
$stmt->execute([
|
||||
':coll_id' => $collection->get_coll_id(),
|
||||
':parent_record_id' => 0,
|
||||
':type' => $file ? ($file->getType() ? $file->getType()->getType() : 'unknown') : null,
|
||||
':type' => $file ? ($file->getType() ? $file->getType()->getType() : 'unknown') : 'unknown',
|
||||
':sha256' => $file ? $file->getMedia()->getHash('sha256') : null,
|
||||
':uuid' => $file ? $file->getUUID(true) : null,
|
||||
':originalname' => $file ? $file->getOriginalName() : null,
|
||||
@@ -2159,8 +2159,12 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
|
||||
|
||||
$this->app['filesystem']->remove($ftodel);
|
||||
|
||||
// delete cache of subdefs
|
||||
$this->delete_data_from_cache(self::CACHE_SUBDEFS);
|
||||
|
||||
// delete the corresponding key record_id from the cache
|
||||
$this->delete_data_from_cache();
|
||||
|
||||
$this->dispatch(RecordEvents::DELETED, new DeletedEvent($this));
|
||||
|
||||
return array_keys($ftodel);
|
||||
|
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
@@ -1,6 +1,6 @@
|
||||
<?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">
|
||||
<file date="2021-12-14T15:03:12Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
|
||||
<file date="2022-01-20T13:37:54Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
|
||||
<header>
|
||||
<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>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?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">
|
||||
<file date="2021-12-14T15:03:25Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
|
||||
<file date="2022-01-20T13:38:08Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
|
||||
<header>
|
||||
<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>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?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">
|
||||
<file date="2021-12-14T15:03:40Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
|
||||
<file date="2022-01-20T13:38:25Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
|
||||
<header>
|
||||
<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>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?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">
|
||||
<file date="2021-12-14T15:03:59Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
|
||||
<file date="2022-01-20T13:38:45Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
|
||||
<header>
|
||||
<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>
|
||||
|
@@ -1,6 +1,4 @@
|
||||
<div id="TXCLASSIFICATION">
|
||||
<h3 style="color: red">{{ 'thesaurus::edit windows title' | trans }}</h3>
|
||||
|
||||
{% if error %}
|
||||
|
||||
{{ error }}
|
||||
|
@@ -228,7 +228,7 @@
|
||||
</button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion" style="background:#292929">
|
||||
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
|
||||
<div class="card-body">
|
||||
<div class="left-facet-filter facet-filter">
|
||||
<h4>{{ 'index::advance_search: facet-order' | trans }}</h4>
|
||||
@@ -265,16 +265,17 @@
|
||||
|
||||
<div style="padding-left: 5px;">
|
||||
{% set facetFilter = app['settings'].getUserSetting(app.getAuthenticatedUser(), 'facet') %}
|
||||
{% set _empty_facetFilter = app['settings'].getUserSetting(app.getAuthenticatedUser(), 'show__empty__facet') %}
|
||||
{% set _empty_facetFilter = app['settings'].getUserSetting(app.getAuthenticatedUser(), 'show_unset_field_facet') %}
|
||||
<h5 style="font-size:13px;">{{ 'index::advance_search: facet' | trans }}</h5>
|
||||
|
||||
<label class="checkbox inline" for="ADVSRCH_FILTER_FACET" style="margin-bottom: 1em;font-size:13px;">
|
||||
<input id="ADVSRCH_FILTER_FACET" type="checkbox" name="filter_facet" {% if facetFilter == 'true' %}checked="checked"{% endif %}>
|
||||
{{ 'index::advance_search: disable-facet' | trans }}
|
||||
</label>
|
||||
<br/>
|
||||
{# TODO : make behaviour as in 4.0 #}
|
||||
{# <label class="checkbox inline" for="ADVSRCH_FILTER_FACET" style="margin-bottom: 1em;font-size:13px;">#}
|
||||
{# <input id="ADVSRCH_FILTER_FACET" type="checkbox" name="filter_facet" {% if facetFilter == 'true' %}checked="checked"{% endif %}>#}
|
||||
{# {{ 'index::advance_search: disable-facet' | trans }}#}
|
||||
{# </label>#}
|
||||
{# <br/>#}
|
||||
<label class="checkbox inline" for="ADVSRCH_UNSET_FIELD_FACET" style="margin-bottom: 1em;font-size:13px;">
|
||||
<input id="ADVSRCH_UNSET_FIELD_FACET" type="checkbox" name="show_unset_field_facet" {% if _empty_facetFilter == 'true' %}checked="checked"{% endif %}>
|
||||
<input id="ADVSRCH_UNSET_FIELD_FACET" type="checkbox" name="show_unset_field_facet" {% if _empty_facetFilter == '1' %}checked="checked"{% endif %}>
|
||||
{{ 'index::advance_search: show-unset-field-facet' | trans }}
|
||||
</label>
|
||||
|
||||
|
Reference in New Issue
Block a user