mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 07:23:13 +00:00
PHRAS-3783 Prod - Order manager - add Download Expiration date (#4191)
* add download expiration date * add expiration info in mail * add calendar on order-manager validation * add a default config on patch if not exist * fix * add predifined expireon date * expiration override * fix order manager deny and sen in the same time * patch for todo column * bump version record acl admin fix pusher and date on order * some improvement * some fix
This commit is contained in:
2
.env
2
.env
@@ -133,7 +133,7 @@ PHRASEANET_DOCKER_REGISTRY=local
|
||||
|
||||
# Docker images tag.
|
||||
# @run
|
||||
PHRASEANET_DOCKER_TAG=4.1.7-rc2
|
||||
PHRASEANET_DOCKER_TAG=4.1.7-rc3
|
||||
|
||||
# Stack Name
|
||||
# An optionnal Name for the stack
|
||||
|
@@ -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: 74
|
||||
assetFileVersion: 75
|
||||
};
|
||||
|
@@ -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=74";
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=75";
|
||||
/******/ 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=74";
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=75";
|
||||
/******/ 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=74";
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=75";
|
||||
/******/ 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=74";
|
||||
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=75";
|
||||
/******/ var timeout = setTimeout(onScriptComplete, 120000);
|
||||
/******/ script.onerror = script.onload = onScriptComplete;
|
||||
/******/ function onScriptComplete() {
|
||||
|
173
Phraseanet-production-client/dist/production.js
vendored
173
Phraseanet-production-client/dist/production.js
vendored
@@ -65932,15 +65932,21 @@ var orderItem = function orderItem(services) {
|
||||
//$('.order_row.selected').removeClass('to_be_validated');
|
||||
});
|
||||
|
||||
(0, _jquery2.default)('.force_sender', $dialog.getDomElement()).bind('click', function () {
|
||||
if (confirm(localeService.t('forceSendDocument'))) {
|
||||
//updateValidation('validated');
|
||||
var element_id = [];
|
||||
element_id.push((0, _jquery2.default)(this).closest('.order_row').find('input[name=order_element_id]').val());
|
||||
var order_id = (0, _jquery2.default)('input[name=order_id]').val();
|
||||
do_send_documents(order_id, element_id, true);
|
||||
}
|
||||
});
|
||||
// comment on order_item.html.twig , line 171
|
||||
// $('.force_sender', $dialog.getDomElement()).bind('click', function () {
|
||||
// if (confirm(localeService.t('forceSendDocument'))) {
|
||||
// //updateValidation('validated');
|
||||
// let element_id = [];
|
||||
// element_id.push(
|
||||
// $(this)
|
||||
// .closest('.order_row')
|
||||
// .find('input[name=order_element_id]')
|
||||
// .val()
|
||||
// );
|
||||
// let order_id = $('input[name=order_id]').val();
|
||||
// do_send_documents(order_id, element_id, true);
|
||||
// }
|
||||
// });
|
||||
|
||||
(0, _jquery2.default)('#userInfo').hover(function () {
|
||||
var offset = (0, _jquery2.default)('#userInfo').position();
|
||||
@@ -66039,6 +66045,56 @@ var orderItem = function orderItem(services) {
|
||||
}
|
||||
});
|
||||
|
||||
(0, _jquery2.default)('#validation-window .expireOn').datepicker({
|
||||
beforeShow: function beforeShow(input, inst) {
|
||||
(0, _jquery2.default)(inst.dpDiv).addClass('expireOn');
|
||||
},
|
||||
changeYear: true,
|
||||
changeMonth: true,
|
||||
dateFormat: 'yy-mm-dd',
|
||||
onClose: function onClose(input, inst) {
|
||||
(0, _jquery2.default)(inst.dpDiv).removeClass('expireOn');
|
||||
}
|
||||
});
|
||||
|
||||
(0, _jquery2.default)('#expire-menu').menu({
|
||||
select: function select(event, ui) {
|
||||
var $input = (0, _jquery2.default)('input[name="expireOn"]:visible');
|
||||
var expire = (0, _jquery2.default)(ui.item[0]).data('expireon');
|
||||
if (expire === '') {
|
||||
// expireon to null = no expiration for the right
|
||||
$input.val('');
|
||||
} else {
|
||||
calculateExpireDate($input, expire);
|
||||
}
|
||||
(0, _jquery2.default)(this).hide();
|
||||
}
|
||||
}).mouseleave(function (event, ui) {
|
||||
(0, _jquery2.default)(this).hide();
|
||||
}).hide();
|
||||
|
||||
// click to ... to drop
|
||||
(0, _jquery2.default)("BUTTON.expireOn-menu").click(function (event, ui) {
|
||||
(0, _jquery2.default)("#expire-menu").css({
|
||||
top: event.clientY,
|
||||
left: event.clientX - 6
|
||||
}).show();
|
||||
return false;
|
||||
});
|
||||
|
||||
function calculateExpireDate($input, expire) {
|
||||
if (expire === null || expire === undefined || expire === '') {
|
||||
$input.val("");
|
||||
} else {
|
||||
var d = new Date();
|
||||
d.setDate(d.getDate() + parseInt(expire));
|
||||
var mm = (d.getMonth() + 1 < 10 ? '0' : '') + (d.getMonth() + 1);
|
||||
var dd = (d.getDate() < 10 ? '0' : '') + d.getDate();
|
||||
|
||||
$input.val(d.getFullYear() + '-' + mm + '-' + dd);
|
||||
}
|
||||
}
|
||||
|
||||
function createBasket($innerDialog) {
|
||||
var $form = (0, _jquery2.default)('form', $innerDialog);
|
||||
var dialog = $innerDialog.closest('.ui-dialog');
|
||||
@@ -66102,6 +66158,7 @@ var orderItem = function orderItem(services) {
|
||||
var submitTitle = window.orderItemData.translatedText.submit;
|
||||
var resetTitle = window.orderItemData.translatedText.reset;
|
||||
var dialog_buttons = {};
|
||||
|
||||
dialog_buttons[submitTitle] = function () {
|
||||
//submit documents
|
||||
submitDocuments((0, _jquery2.default)(this));
|
||||
@@ -66133,6 +66190,9 @@ var orderItem = function orderItem(services) {
|
||||
}
|
||||
}).dialog('open');
|
||||
createValidationTable();
|
||||
var $input = (0, _jquery2.default)('input[name="expireOn"]:visible');
|
||||
var defaultExpire = $input.data('default-expiration');
|
||||
calculateExpireDate($input, defaultExpire);
|
||||
}
|
||||
|
||||
function submitDocuments(dialogElem) {
|
||||
@@ -66155,15 +66215,18 @@ var orderItem = function orderItem(services) {
|
||||
return elem.elementId;
|
||||
});
|
||||
|
||||
if (validatedArrayNoForceIds.length > 0 && deniedArrayIds.length > 0) {
|
||||
do_validate_documents(order_id, validatedArrayNoForceIds, deniedArrayIds);
|
||||
} else {
|
||||
if (validatedArrayNoForceIds.length > 0) {
|
||||
do_send_documents(order_id, validatedArrayNoForceIds, false);
|
||||
}
|
||||
if (validatedArrayWithForceIds.length > 0) {
|
||||
} else if (validatedArrayWithForceIds.length > 0) {
|
||||
do_send_documents(order_id, validatedArrayWithForceIds, true);
|
||||
}
|
||||
if (deniedArrayIds.length > 0) {
|
||||
} else if (deniedArrayIds.length > 0) {
|
||||
do_deny_documents(order_id, deniedArrayIds);
|
||||
}
|
||||
}
|
||||
|
||||
dialogElem.dialog('close');
|
||||
}
|
||||
|
||||
@@ -66177,8 +66240,12 @@ var orderItem = function orderItem(services) {
|
||||
});
|
||||
|
||||
if (validatedArray.length > 0) {
|
||||
(0, _jquery2.default)("#validation-window:visible .order-expireon-wrap").show();
|
||||
(0, _jquery2.default)("#validation-window:visible input[name='expireOn']").blur();
|
||||
|
||||
var html = '';
|
||||
html += '<h5>' + window.orderItemData.translatedText.youHaveValidated + ' ' + validatedArray.length + ' ' + window.orderItemData.translatedText.item + (validatedArray.length === 1 ? '' : 's') + '</h5>';
|
||||
|
||||
html += '<table class="validation-table">';
|
||||
_underscore2.default.each(validatedArray, function (elem) {
|
||||
html += '<tr>';
|
||||
@@ -66188,6 +66255,8 @@ var orderItem = function orderItem(services) {
|
||||
});
|
||||
html += '</table>';
|
||||
(0, _jquery2.default)('.validation-content').append(html);
|
||||
} else {
|
||||
(0, _jquery2.default)("#validation-window:visible .order-expireon-wrap").hide();
|
||||
}
|
||||
|
||||
if (deniedArray.length > 0) {
|
||||
@@ -66301,11 +66370,9 @@ var orderItem = function orderItem(services) {
|
||||
|
||||
function toggleValidationButton() {
|
||||
if (readyForValidation) {
|
||||
(0, _jquery2.default)('button.validate').prop('disabled', false);
|
||||
(0, _jquery2.default)('button.validate').css('color', '#7CD21C');
|
||||
(0, _jquery2.default)('button.validate').show();
|
||||
} else {
|
||||
(0, _jquery2.default)('button.validate').prop('disabled', true);
|
||||
(0, _jquery2.default)('button.validate').css('color', '#737373');
|
||||
(0, _jquery2.default)('button.validate').hide();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66321,7 +66388,44 @@ var orderItem = function orderItem(services) {
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'elements[]': elements_ids,
|
||||
force: force ? 1 : 0
|
||||
force: force ? 1 : 0,
|
||||
expireOn: (0, _jquery2.default)('input[name="expireOn"]:visible').val()
|
||||
},
|
||||
success: function success(data) {
|
||||
var success = '0';
|
||||
|
||||
if (data.success) {
|
||||
success = '1';
|
||||
}
|
||||
|
||||
var url = '../prod/order/' + order_id + '/?success=' + success + '&action=send';
|
||||
reloadDialog(url);
|
||||
},
|
||||
error: function error() {
|
||||
(0, _jquery2.default)('button.deny, button.send', cont).prop('disabled', false);
|
||||
(0, _jquery2.default)('.activity_indicator', cont).hide();
|
||||
},
|
||||
timeout: function timeout() {
|
||||
(0, _jquery2.default)('button.deny, button.send', cont).prop('disabled', false);
|
||||
(0, _jquery2.default)('.activity_indicator', cont).hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function do_validate_documents(order_id, elements_send_ids, elements_deny_ids) {
|
||||
var cont = $dialog.getDomElement();
|
||||
|
||||
(0, _jquery2.default)('button.deny, button.send', cont).prop('disabled', true);
|
||||
(0, _jquery2.default)('.activity_indicator', cont).show();
|
||||
|
||||
_jquery2.default.ajax({
|
||||
type: 'POST',
|
||||
url: '../prod/order/' + order_id + '/validate/',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'elementsSend[]': elements_send_ids,
|
||||
'elementsDeny[]': elements_deny_ids,
|
||||
expireOn: (0, _jquery2.default)('input[name="expireOn"]:visible').val()
|
||||
},
|
||||
success: function success(data) {
|
||||
var success = '0';
|
||||
@@ -66414,24 +66518,39 @@ var orderItem = function orderItem(services) {
|
||||
}, { validated: 0, selectable: 0, waitingForValidation: 0 });
|
||||
|
||||
var html = '';
|
||||
if (countObj.validated > 0) {
|
||||
html += '<p>' + window.orderItemData.translatedText.itemsAlreadySent + ': ' + countObj.validated + '</p>';
|
||||
}
|
||||
// if (countObj.validated > 0) {
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.itemsAlreadySent +
|
||||
// ': ' +
|
||||
// countObj.validated +
|
||||
// '</p>';
|
||||
// }
|
||||
|
||||
if (countObj.waitingForValidation > 0) {
|
||||
html += '<p>' + window.orderItemData.translatedText.itemsWaitingValidation + ': ' + countObj.waitingForValidation + '</p>';
|
||||
}
|
||||
// if (countObj.waitingForValidation > 0) {
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.itemsWaitingValidation +
|
||||
// ': ' +
|
||||
// countObj.waitingForValidation +
|
||||
// '</p>';
|
||||
// }
|
||||
|
||||
//for the remaining items
|
||||
var remaining = countObj.selectable - (countObj.validated + countObj.waitingForValidation);
|
||||
if (remaining > 0) {
|
||||
html += '<p>' + window.orderItemData.translatedText.nonSentItems + ': ' + remaining + '</p>';
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.nonSentItems +
|
||||
// ': ' +
|
||||
// remaining +
|
||||
// '</p>';
|
||||
(0, _jquery2.default)('#order-action button.deny, #order-action button.send').prop('disabled', false);
|
||||
(0, _jquery2.default)('#order-action button.deny, #order-action button.send').show();
|
||||
}
|
||||
|
||||
(0, _jquery2.default)('#wrapper-multiple #text-content').empty();
|
||||
(0, _jquery2.default)('#wrapper-multiple #text-content').append(html);
|
||||
// $('#wrapper-multiple #text-content').empty();
|
||||
// $('#wrapper-multiple #text-content').append(html);
|
||||
}
|
||||
|
||||
/* *
|
||||
|
173
Phraseanet-production-client/dist/production.min.js
vendored
173
Phraseanet-production-client/dist/production.min.js
vendored
@@ -65932,15 +65932,21 @@ var orderItem = function orderItem(services) {
|
||||
//$('.order_row.selected').removeClass('to_be_validated');
|
||||
});
|
||||
|
||||
(0, _jquery2.default)('.force_sender', $dialog.getDomElement()).bind('click', function () {
|
||||
if (confirm(localeService.t('forceSendDocument'))) {
|
||||
//updateValidation('validated');
|
||||
var element_id = [];
|
||||
element_id.push((0, _jquery2.default)(this).closest('.order_row').find('input[name=order_element_id]').val());
|
||||
var order_id = (0, _jquery2.default)('input[name=order_id]').val();
|
||||
do_send_documents(order_id, element_id, true);
|
||||
}
|
||||
});
|
||||
// comment on order_item.html.twig , line 171
|
||||
// $('.force_sender', $dialog.getDomElement()).bind('click', function () {
|
||||
// if (confirm(localeService.t('forceSendDocument'))) {
|
||||
// //updateValidation('validated');
|
||||
// let element_id = [];
|
||||
// element_id.push(
|
||||
// $(this)
|
||||
// .closest('.order_row')
|
||||
// .find('input[name=order_element_id]')
|
||||
// .val()
|
||||
// );
|
||||
// let order_id = $('input[name=order_id]').val();
|
||||
// do_send_documents(order_id, element_id, true);
|
||||
// }
|
||||
// });
|
||||
|
||||
(0, _jquery2.default)('#userInfo').hover(function () {
|
||||
var offset = (0, _jquery2.default)('#userInfo').position();
|
||||
@@ -66039,6 +66045,56 @@ var orderItem = function orderItem(services) {
|
||||
}
|
||||
});
|
||||
|
||||
(0, _jquery2.default)('#validation-window .expireOn').datepicker({
|
||||
beforeShow: function beforeShow(input, inst) {
|
||||
(0, _jquery2.default)(inst.dpDiv).addClass('expireOn');
|
||||
},
|
||||
changeYear: true,
|
||||
changeMonth: true,
|
||||
dateFormat: 'yy-mm-dd',
|
||||
onClose: function onClose(input, inst) {
|
||||
(0, _jquery2.default)(inst.dpDiv).removeClass('expireOn');
|
||||
}
|
||||
});
|
||||
|
||||
(0, _jquery2.default)('#expire-menu').menu({
|
||||
select: function select(event, ui) {
|
||||
var $input = (0, _jquery2.default)('input[name="expireOn"]:visible');
|
||||
var expire = (0, _jquery2.default)(ui.item[0]).data('expireon');
|
||||
if (expire === '') {
|
||||
// expireon to null = no expiration for the right
|
||||
$input.val('');
|
||||
} else {
|
||||
calculateExpireDate($input, expire);
|
||||
}
|
||||
(0, _jquery2.default)(this).hide();
|
||||
}
|
||||
}).mouseleave(function (event, ui) {
|
||||
(0, _jquery2.default)(this).hide();
|
||||
}).hide();
|
||||
|
||||
// click to ... to drop
|
||||
(0, _jquery2.default)("BUTTON.expireOn-menu").click(function (event, ui) {
|
||||
(0, _jquery2.default)("#expire-menu").css({
|
||||
top: event.clientY,
|
||||
left: event.clientX - 6
|
||||
}).show();
|
||||
return false;
|
||||
});
|
||||
|
||||
function calculateExpireDate($input, expire) {
|
||||
if (expire === null || expire === undefined || expire === '') {
|
||||
$input.val("");
|
||||
} else {
|
||||
var d = new Date();
|
||||
d.setDate(d.getDate() + parseInt(expire));
|
||||
var mm = (d.getMonth() + 1 < 10 ? '0' : '') + (d.getMonth() + 1);
|
||||
var dd = (d.getDate() < 10 ? '0' : '') + d.getDate();
|
||||
|
||||
$input.val(d.getFullYear() + '-' + mm + '-' + dd);
|
||||
}
|
||||
}
|
||||
|
||||
function createBasket($innerDialog) {
|
||||
var $form = (0, _jquery2.default)('form', $innerDialog);
|
||||
var dialog = $innerDialog.closest('.ui-dialog');
|
||||
@@ -66102,6 +66158,7 @@ var orderItem = function orderItem(services) {
|
||||
var submitTitle = window.orderItemData.translatedText.submit;
|
||||
var resetTitle = window.orderItemData.translatedText.reset;
|
||||
var dialog_buttons = {};
|
||||
|
||||
dialog_buttons[submitTitle] = function () {
|
||||
//submit documents
|
||||
submitDocuments((0, _jquery2.default)(this));
|
||||
@@ -66133,6 +66190,9 @@ var orderItem = function orderItem(services) {
|
||||
}
|
||||
}).dialog('open');
|
||||
createValidationTable();
|
||||
var $input = (0, _jquery2.default)('input[name="expireOn"]:visible');
|
||||
var defaultExpire = $input.data('default-expiration');
|
||||
calculateExpireDate($input, defaultExpire);
|
||||
}
|
||||
|
||||
function submitDocuments(dialogElem) {
|
||||
@@ -66155,15 +66215,18 @@ var orderItem = function orderItem(services) {
|
||||
return elem.elementId;
|
||||
});
|
||||
|
||||
if (validatedArrayNoForceIds.length > 0 && deniedArrayIds.length > 0) {
|
||||
do_validate_documents(order_id, validatedArrayNoForceIds, deniedArrayIds);
|
||||
} else {
|
||||
if (validatedArrayNoForceIds.length > 0) {
|
||||
do_send_documents(order_id, validatedArrayNoForceIds, false);
|
||||
}
|
||||
if (validatedArrayWithForceIds.length > 0) {
|
||||
} else if (validatedArrayWithForceIds.length > 0) {
|
||||
do_send_documents(order_id, validatedArrayWithForceIds, true);
|
||||
}
|
||||
if (deniedArrayIds.length > 0) {
|
||||
} else if (deniedArrayIds.length > 0) {
|
||||
do_deny_documents(order_id, deniedArrayIds);
|
||||
}
|
||||
}
|
||||
|
||||
dialogElem.dialog('close');
|
||||
}
|
||||
|
||||
@@ -66177,8 +66240,12 @@ var orderItem = function orderItem(services) {
|
||||
});
|
||||
|
||||
if (validatedArray.length > 0) {
|
||||
(0, _jquery2.default)("#validation-window:visible .order-expireon-wrap").show();
|
||||
(0, _jquery2.default)("#validation-window:visible input[name='expireOn']").blur();
|
||||
|
||||
var html = '';
|
||||
html += '<h5>' + window.orderItemData.translatedText.youHaveValidated + ' ' + validatedArray.length + ' ' + window.orderItemData.translatedText.item + (validatedArray.length === 1 ? '' : 's') + '</h5>';
|
||||
|
||||
html += '<table class="validation-table">';
|
||||
_underscore2.default.each(validatedArray, function (elem) {
|
||||
html += '<tr>';
|
||||
@@ -66188,6 +66255,8 @@ var orderItem = function orderItem(services) {
|
||||
});
|
||||
html += '</table>';
|
||||
(0, _jquery2.default)('.validation-content').append(html);
|
||||
} else {
|
||||
(0, _jquery2.default)("#validation-window:visible .order-expireon-wrap").hide();
|
||||
}
|
||||
|
||||
if (deniedArray.length > 0) {
|
||||
@@ -66301,11 +66370,9 @@ var orderItem = function orderItem(services) {
|
||||
|
||||
function toggleValidationButton() {
|
||||
if (readyForValidation) {
|
||||
(0, _jquery2.default)('button.validate').prop('disabled', false);
|
||||
(0, _jquery2.default)('button.validate').css('color', '#7CD21C');
|
||||
(0, _jquery2.default)('button.validate').show();
|
||||
} else {
|
||||
(0, _jquery2.default)('button.validate').prop('disabled', true);
|
||||
(0, _jquery2.default)('button.validate').css('color', '#737373');
|
||||
(0, _jquery2.default)('button.validate').hide();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66321,7 +66388,44 @@ var orderItem = function orderItem(services) {
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'elements[]': elements_ids,
|
||||
force: force ? 1 : 0
|
||||
force: force ? 1 : 0,
|
||||
expireOn: (0, _jquery2.default)('input[name="expireOn"]:visible').val()
|
||||
},
|
||||
success: function success(data) {
|
||||
var success = '0';
|
||||
|
||||
if (data.success) {
|
||||
success = '1';
|
||||
}
|
||||
|
||||
var url = '../prod/order/' + order_id + '/?success=' + success + '&action=send';
|
||||
reloadDialog(url);
|
||||
},
|
||||
error: function error() {
|
||||
(0, _jquery2.default)('button.deny, button.send', cont).prop('disabled', false);
|
||||
(0, _jquery2.default)('.activity_indicator', cont).hide();
|
||||
},
|
||||
timeout: function timeout() {
|
||||
(0, _jquery2.default)('button.deny, button.send', cont).prop('disabled', false);
|
||||
(0, _jquery2.default)('.activity_indicator', cont).hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function do_validate_documents(order_id, elements_send_ids, elements_deny_ids) {
|
||||
var cont = $dialog.getDomElement();
|
||||
|
||||
(0, _jquery2.default)('button.deny, button.send', cont).prop('disabled', true);
|
||||
(0, _jquery2.default)('.activity_indicator', cont).show();
|
||||
|
||||
_jquery2.default.ajax({
|
||||
type: 'POST',
|
||||
url: '../prod/order/' + order_id + '/validate/',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'elementsSend[]': elements_send_ids,
|
||||
'elementsDeny[]': elements_deny_ids,
|
||||
expireOn: (0, _jquery2.default)('input[name="expireOn"]:visible').val()
|
||||
},
|
||||
success: function success(data) {
|
||||
var success = '0';
|
||||
@@ -66414,24 +66518,39 @@ var orderItem = function orderItem(services) {
|
||||
}, { validated: 0, selectable: 0, waitingForValidation: 0 });
|
||||
|
||||
var html = '';
|
||||
if (countObj.validated > 0) {
|
||||
html += '<p>' + window.orderItemData.translatedText.itemsAlreadySent + ': ' + countObj.validated + '</p>';
|
||||
}
|
||||
// if (countObj.validated > 0) {
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.itemsAlreadySent +
|
||||
// ': ' +
|
||||
// countObj.validated +
|
||||
// '</p>';
|
||||
// }
|
||||
|
||||
if (countObj.waitingForValidation > 0) {
|
||||
html += '<p>' + window.orderItemData.translatedText.itemsWaitingValidation + ': ' + countObj.waitingForValidation + '</p>';
|
||||
}
|
||||
// if (countObj.waitingForValidation > 0) {
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.itemsWaitingValidation +
|
||||
// ': ' +
|
||||
// countObj.waitingForValidation +
|
||||
// '</p>';
|
||||
// }
|
||||
|
||||
//for the remaining items
|
||||
var remaining = countObj.selectable - (countObj.validated + countObj.waitingForValidation);
|
||||
if (remaining > 0) {
|
||||
html += '<p>' + window.orderItemData.translatedText.nonSentItems + ': ' + remaining + '</p>';
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.nonSentItems +
|
||||
// ': ' +
|
||||
// remaining +
|
||||
// '</p>';
|
||||
(0, _jquery2.default)('#order-action button.deny, #order-action button.send').prop('disabled', false);
|
||||
(0, _jquery2.default)('#order-action button.deny, #order-action button.send').show();
|
||||
}
|
||||
|
||||
(0, _jquery2.default)('#wrapper-multiple #text-content').empty();
|
||||
(0, _jquery2.default)('#wrapper-multiple #text-content').append(html);
|
||||
// $('#wrapper-multiple #text-content').empty();
|
||||
// $('#wrapper-multiple #text-content').append(html);
|
||||
}
|
||||
|
||||
/* *
|
||||
|
@@ -2202,6 +2202,22 @@ span.ww_winTitle {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#ui-datepicker-div.expireOn {
|
||||
z-index: 999999 !important;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content a {
|
||||
color: #282828;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content a:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ui-selectable-helper {
|
||||
border: 1px dotted #cccccc;
|
||||
z-index: 10000;
|
||||
@@ -2376,7 +2392,7 @@ span.ww_winTitle {
|
||||
}
|
||||
|
||||
#order_manager .order_list .selectable.selected {
|
||||
background-color: #7f7f7f;
|
||||
background-color: #292929;
|
||||
border: 1px solid #4990e2;
|
||||
}
|
||||
|
||||
@@ -2641,8 +2657,8 @@ button.order_launcher.btn {
|
||||
}
|
||||
|
||||
#order-action {
|
||||
margin-top: 1.2em;
|
||||
margin-bottom: 1.5em;
|
||||
margin: 0px 0px 1.2em 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#filter_box {
|
||||
@@ -2843,6 +2859,10 @@ span.action-text i.fa-check {
|
||||
}
|
||||
|
||||
button.btn.validate {
|
||||
background-color: #5bb75b;
|
||||
background-image: linear-gradient(to bottom, #62c462, #51a351);
|
||||
border-color: #51a351 #51a351 #387038;
|
||||
color: #fff;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@@ -2217,6 +2217,22 @@ span.ww_winTitle {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#ui-datepicker-div.expireOn {
|
||||
z-index: 999999 !important;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content a {
|
||||
color: #282828;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content a:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ui-selectable-helper {
|
||||
border: 1px dotted #cccccc;
|
||||
z-index: 10000;
|
||||
@@ -2391,7 +2407,7 @@ span.ww_winTitle {
|
||||
}
|
||||
|
||||
#order_manager .order_list .selectable.selected {
|
||||
background-color: silver;
|
||||
background-color: #9c9c9c;
|
||||
border: 1px solid #4990e2;
|
||||
}
|
||||
|
||||
@@ -2656,8 +2672,8 @@ button.order_launcher.btn {
|
||||
}
|
||||
|
||||
#order-action {
|
||||
margin-top: 1.2em;
|
||||
margin-bottom: 1.5em;
|
||||
margin: 0px 0px 1.2em 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#filter_box {
|
||||
@@ -2858,6 +2874,10 @@ span.action-text i.fa-check {
|
||||
}
|
||||
|
||||
button.btn.validate {
|
||||
background-color: #5bb75b;
|
||||
background-image: linear-gradient(to bottom, #62c462, #51a351);
|
||||
border-color: #51a351 #51a351 #387038;
|
||||
color: #fff;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@@ -2219,6 +2219,22 @@ span.ww_winTitle {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#ui-datepicker-div.expireOn {
|
||||
z-index: 999999 !important;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content a {
|
||||
color: #282828;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content a:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ui-selectable-helper {
|
||||
border: 1px dotted #cccccc;
|
||||
z-index: 10000;
|
||||
@@ -2658,8 +2674,8 @@ button.order_launcher.btn {
|
||||
}
|
||||
|
||||
#order-action {
|
||||
margin-top: 1.2em;
|
||||
margin-bottom: 1.5em;
|
||||
margin: 0px 0px 1.2em 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#filter_box {
|
||||
@@ -2860,6 +2876,10 @@ span.action-text i.fa-check {
|
||||
}
|
||||
|
||||
button.btn.validate {
|
||||
background-color: #5bb75b;
|
||||
background-image: linear-gradient(to bottom, #62c462, #51a351);
|
||||
border-color: #51a351 #51a351 #387038;
|
||||
color: #fff;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@@ -204,20 +204,21 @@ const orderItem = services => {
|
||||
//$('.order_row.selected').removeClass('to_be_validated');
|
||||
});
|
||||
|
||||
$('.force_sender', $dialog.getDomElement()).bind('click', function () {
|
||||
if (confirm(localeService.t('forceSendDocument'))) {
|
||||
//updateValidation('validated');
|
||||
let element_id = [];
|
||||
element_id.push(
|
||||
$(this)
|
||||
.closest('.order_row')
|
||||
.find('input[name=order_element_id]')
|
||||
.val()
|
||||
);
|
||||
let order_id = $('input[name=order_id]').val();
|
||||
do_send_documents(order_id, element_id, true);
|
||||
}
|
||||
});
|
||||
// comment on order_item.html.twig , line 171
|
||||
// $('.force_sender', $dialog.getDomElement()).bind('click', function () {
|
||||
// if (confirm(localeService.t('forceSendDocument'))) {
|
||||
// //updateValidation('validated');
|
||||
// let element_id = [];
|
||||
// element_id.push(
|
||||
// $(this)
|
||||
// .closest('.order_row')
|
||||
// .find('input[name=order_element_id]')
|
||||
// .val()
|
||||
// );
|
||||
// let order_id = $('input[name=order_id]').val();
|
||||
// do_send_documents(order_id, element_id, true);
|
||||
// }
|
||||
// });
|
||||
|
||||
$('#userInfo').hover(
|
||||
function () {
|
||||
@@ -335,6 +336,63 @@ const orderItem = services => {
|
||||
}
|
||||
});
|
||||
|
||||
$('#validation-window .expireOn').datepicker({
|
||||
beforeShow: (input, inst) => {
|
||||
$(inst.dpDiv).addClass('expireOn');
|
||||
},
|
||||
changeYear: true,
|
||||
changeMonth: true,
|
||||
dateFormat: 'yy-mm-dd',
|
||||
onClose: (input, inst) => {
|
||||
$(inst.dpDiv).removeClass('expireOn');
|
||||
},
|
||||
});
|
||||
|
||||
$('#expire-menu')
|
||||
.menu({
|
||||
select: function (event, ui) {
|
||||
const $input = $('input[name="expireOn"]:visible');
|
||||
const expire = $(ui.item[0]).data('expireon');
|
||||
if (expire === '') {
|
||||
// expireon to null = no expiration for the right
|
||||
$input.val('')
|
||||
} else {
|
||||
calculateExpireDate($input, expire);
|
||||
}
|
||||
$(this).hide();
|
||||
}
|
||||
})
|
||||
.mouseleave(function (event, ui) {
|
||||
$(this).hide();
|
||||
})
|
||||
.hide();
|
||||
|
||||
// click to ... to drop
|
||||
$("BUTTON.expireOn-menu").click(
|
||||
function (event, ui) {
|
||||
$("#expire-menu")
|
||||
.css({
|
||||
top: event.clientY,
|
||||
left: event.clientX - 6
|
||||
})
|
||||
.show();
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
function calculateExpireDate($input, expire) {
|
||||
if (expire === null || expire === undefined || expire === '') {
|
||||
$input.val("");
|
||||
} else {
|
||||
const d = new Date();
|
||||
d.setDate(d.getDate() + parseInt(expire));
|
||||
const mm = ((d.getMonth() + 1) < 10 ? '0' : '') + (d.getMonth() + 1);
|
||||
const dd = (d.getDate() < 10 ? '0' : '') + d.getDate();
|
||||
|
||||
$input.val(d.getFullYear() + '-' + mm + '-' + dd);
|
||||
}
|
||||
}
|
||||
|
||||
function createBasket($innerDialog) {
|
||||
let $form = $('form', $innerDialog);
|
||||
let dialog = $innerDialog.closest('.ui-dialog');
|
||||
@@ -419,6 +477,7 @@ const orderItem = services => {
|
||||
let submitTitle = window.orderItemData.translatedText.submit;
|
||||
let resetTitle = window.orderItemData.translatedText.reset;
|
||||
var dialog_buttons = {};
|
||||
|
||||
dialog_buttons[submitTitle] = function () {
|
||||
//submit documents
|
||||
submitDocuments($(this));
|
||||
@@ -452,6 +511,9 @@ const orderItem = services => {
|
||||
})
|
||||
.dialog('open');
|
||||
createValidationTable();
|
||||
const $input = $('input[name="expireOn"]:visible');
|
||||
const defaultExpire = $input.data('default-expiration');
|
||||
calculateExpireDate($input, defaultExpire);
|
||||
}
|
||||
|
||||
function submitDocuments(dialogElem) {
|
||||
@@ -488,15 +550,18 @@ const orderItem = services => {
|
||||
return elem.elementId;
|
||||
});
|
||||
|
||||
if (validatedArrayNoForceIds.length > 0 && deniedArrayIds.length > 0) {
|
||||
do_validate_documents(order_id, validatedArrayNoForceIds, deniedArrayIds);
|
||||
} else {
|
||||
if (validatedArrayNoForceIds.length > 0) {
|
||||
do_send_documents(order_id, validatedArrayNoForceIds, false);
|
||||
}
|
||||
if (validatedArrayWithForceIds.length > 0) {
|
||||
} else if (validatedArrayWithForceIds.length > 0) {
|
||||
do_send_documents(order_id, validatedArrayWithForceIds, true);
|
||||
}
|
||||
if (deniedArrayIds.length > 0) {
|
||||
} else if (deniedArrayIds.length > 0){
|
||||
do_deny_documents(order_id, deniedArrayIds);
|
||||
}
|
||||
}
|
||||
|
||||
dialogElem.dialog('close');
|
||||
}
|
||||
|
||||
@@ -512,6 +577,9 @@ const orderItem = services => {
|
||||
});
|
||||
|
||||
if (validatedArray.length > 0) {
|
||||
$("#validation-window:visible .order-expireon-wrap").show();
|
||||
$("#validation-window:visible input[name='expireOn']").blur();
|
||||
|
||||
let html = '';
|
||||
html +=
|
||||
'<h5>' +
|
||||
@@ -522,6 +590,7 @@ const orderItem = services => {
|
||||
window.orderItemData.translatedText.item +
|
||||
(validatedArray.length === 1 ? '' : 's') +
|
||||
'</h5>';
|
||||
|
||||
html += '<table class="validation-table">';
|
||||
_.each(validatedArray, function (elem) {
|
||||
html += '<tr>';
|
||||
@@ -537,6 +606,8 @@ const orderItem = services => {
|
||||
});
|
||||
html += '</table>';
|
||||
$('.validation-content').append(html);
|
||||
} else {
|
||||
$("#validation-window:visible .order-expireon-wrap").hide();
|
||||
}
|
||||
|
||||
if (deniedArray.length > 0) {
|
||||
@@ -688,11 +759,9 @@ const orderItem = services => {
|
||||
|
||||
function toggleValidationButton() {
|
||||
if (readyForValidation) {
|
||||
$('button.validate').prop('disabled', false);
|
||||
$('button.validate').css('color', '#7CD21C');
|
||||
$('button.validate').show();
|
||||
} else {
|
||||
$('button.validate').prop('disabled', true);
|
||||
$('button.validate').css('color', '#737373');
|
||||
$('button.validate').hide();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -708,7 +777,49 @@ const orderItem = services => {
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'elements[]': elements_ids,
|
||||
force: force ? 1 : 0
|
||||
force: force ? 1 : 0,
|
||||
expireOn: $('input[name="expireOn"]:visible').val()
|
||||
},
|
||||
success: function (data) {
|
||||
let success = '0';
|
||||
|
||||
if (data.success) {
|
||||
success = '1';
|
||||
}
|
||||
|
||||
var url =
|
||||
'../prod/order/' +
|
||||
order_id +
|
||||
'/?success=' +
|
||||
success +
|
||||
'&action=send';
|
||||
reloadDialog(url);
|
||||
},
|
||||
error: function () {
|
||||
$('button.deny, button.send', cont).prop('disabled', false);
|
||||
$('.activity_indicator', cont).hide();
|
||||
},
|
||||
timeout: function () {
|
||||
$('button.deny, button.send', cont).prop('disabled', false);
|
||||
$('.activity_indicator', cont).hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function do_validate_documents(order_id, elements_send_ids, elements_deny_ids) {
|
||||
let cont = $dialog.getDomElement();
|
||||
|
||||
$('button.deny, button.send', cont).prop('disabled', true);
|
||||
$('.activity_indicator', cont).show();
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '../prod/order/' + order_id + '/validate/',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'elementsSend[]': elements_send_ids,
|
||||
'elementsDeny[]': elements_deny_ids,
|
||||
expireOn: $('input[name="expireOn"]:visible').val()
|
||||
},
|
||||
success: function (data) {
|
||||
let success = '0';
|
||||
@@ -817,35 +928,35 @@ const orderItem = services => {
|
||||
);
|
||||
|
||||
let html = '';
|
||||
if (countObj.validated > 0) {
|
||||
html +=
|
||||
'<p>' +
|
||||
window.orderItemData.translatedText.itemsAlreadySent +
|
||||
': ' +
|
||||
countObj.validated +
|
||||
'</p>';
|
||||
}
|
||||
// if (countObj.validated > 0) {
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.itemsAlreadySent +
|
||||
// ': ' +
|
||||
// countObj.validated +
|
||||
// '</p>';
|
||||
// }
|
||||
|
||||
if (countObj.waitingForValidation > 0) {
|
||||
html +=
|
||||
'<p>' +
|
||||
window.orderItemData.translatedText.itemsWaitingValidation +
|
||||
': ' +
|
||||
countObj.waitingForValidation +
|
||||
'</p>';
|
||||
}
|
||||
// if (countObj.waitingForValidation > 0) {
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.itemsWaitingValidation +
|
||||
// ': ' +
|
||||
// countObj.waitingForValidation +
|
||||
// '</p>';
|
||||
// }
|
||||
|
||||
//for the remaining items
|
||||
let remaining =
|
||||
countObj.selectable -
|
||||
(countObj.validated + countObj.waitingForValidation);
|
||||
if (remaining > 0) {
|
||||
html +=
|
||||
'<p>' +
|
||||
window.orderItemData.translatedText.nonSentItems +
|
||||
': ' +
|
||||
remaining +
|
||||
'</p>';
|
||||
// html +=
|
||||
// '<p>' +
|
||||
// window.orderItemData.translatedText.nonSentItems +
|
||||
// ': ' +
|
||||
// remaining +
|
||||
// '</p>';
|
||||
$('#order-action button.deny, #order-action button.send').prop(
|
||||
'disabled',
|
||||
false
|
||||
@@ -855,8 +966,8 @@ const orderItem = services => {
|
||||
).show();
|
||||
}
|
||||
|
||||
$('#wrapper-multiple #text-content').empty();
|
||||
$('#wrapper-multiple #text-content').append(html);
|
||||
// $('#wrapper-multiple #text-content').empty();
|
||||
// $('#wrapper-multiple #text-content').append(html);
|
||||
}
|
||||
|
||||
/* *
|
||||
|
@@ -336,6 +336,20 @@ span.ww_winTitle {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#ui-datepicker-div.expireOn {
|
||||
z-index: 999999 !important;
|
||||
}
|
||||
|
||||
#validation-window .ui-widget-content {
|
||||
background-color: #fff;
|
||||
a {
|
||||
color: #282828;
|
||||
&:hover {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ui-selectable-helper {
|
||||
border: 1px dotted #cccccc;
|
||||
z-index: 10000;
|
||||
@@ -508,7 +522,8 @@ span.ww_winTitle {
|
||||
}
|
||||
|
||||
#order_manager .order_list .selectable.selected {
|
||||
background-color: $darkerBorderColor;
|
||||
//background-color: $darkerBorderColor;
|
||||
background-color: $darkBackgroundColor;
|
||||
border: 1px solid #4990e2;
|
||||
}
|
||||
|
||||
@@ -766,8 +781,8 @@ button.order_launcher.btn {
|
||||
}
|
||||
|
||||
#order-action {
|
||||
margin-top: 1.2em;
|
||||
margin-bottom: 1.5em;
|
||||
margin : 0px 0px 1.2em 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#filter_box {
|
||||
@@ -966,6 +981,10 @@ span.action-text {
|
||||
}
|
||||
|
||||
button.btn.validate {
|
||||
background-color : #5bb75b;
|
||||
background-image: linear-gradient(to bottom,#62c462,#51a351);
|
||||
border-color: #51a351 #51a351 #387038;
|
||||
color: #fff;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
//border: 2px solid #f00;
|
||||
|
@@ -401,3 +401,9 @@ phraseanet-service:
|
||||
clientSecret: 239zb7mhzmu8cgg48cgok8ww4ccokw0ck8kwow4ggw80s84koc
|
||||
clientId: pull-local-test_3pj0iu
|
||||
verify_ssl: true
|
||||
|
||||
|
||||
order-manager:
|
||||
download-hd:
|
||||
expiration-days: null
|
||||
expiration-override: false
|
||||
|
@@ -55,7 +55,14 @@ class UserController extends Controller
|
||||
public function listRecordAcl(Request $request)
|
||||
{
|
||||
$rights = $this->getUserEditHelper($request);
|
||||
$results = $rights->get_user_records_rights($request->query->get('userId'), $request->query->get('databoxId'), $request->query->get('recordId'));
|
||||
$expireRight = ($request->query->get('expiredRight') == 1) ? true : false ;
|
||||
$results = $rights->get_user_records_rights(
|
||||
$request->query->get('userId'),
|
||||
$request->query->get('databoxId'),
|
||||
$request->query->get('recordId'),
|
||||
$request->query->get('type'),
|
||||
$expireRight
|
||||
);
|
||||
|
||||
return $this->app->json([
|
||||
'content' => $this->render('admin/user/records_list.html.twig', ['records_acl' => $results['records_acl']]),
|
||||
|
@@ -97,6 +97,11 @@ class Order implements ControllerProviderInterface, ServiceProviderInterface
|
||||
->bind('prod_order_deny')
|
||||
->assert('order_id', '\d+');
|
||||
|
||||
$controllers->post('/{order_id}/validate/', 'controller.prod.order:validateOrder')
|
||||
->before($ensureOrdersAdmin)
|
||||
->bind('prod_order_validate')
|
||||
->assert('order_id', '\d+');
|
||||
|
||||
return $controllers;
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,7 @@ class Version
|
||||
* @var string
|
||||
*/
|
||||
|
||||
private $number = '4.1.7-rc2';
|
||||
private $number = '4.1.7-rc3';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
|
@@ -265,7 +265,7 @@ class Edit extends \Alchemy\Phrasea\Helper\Helper
|
||||
];
|
||||
}
|
||||
|
||||
public function get_user_records_rights($userId = null, $databoxId = null, $recordId = null)
|
||||
public function get_user_records_rights($userId = null, $databoxId = null, $recordId = null, $type = null, $expiredRight = false)
|
||||
{
|
||||
$rows = [];
|
||||
$totalCount = 0;
|
||||
@@ -301,11 +301,20 @@ class Edit extends \Alchemy\Phrasea\Helper\Helper
|
||||
$params[':record_id'] = $recordId;
|
||||
}
|
||||
|
||||
if (!empty($type)) {
|
||||
$whereClause .= " AND rr.case= :case";
|
||||
$params[':case'] = $type;
|
||||
}
|
||||
|
||||
if ($expiredRight) {
|
||||
$whereClause .= " AND rr.expire_on < NOW()";
|
||||
}
|
||||
|
||||
$sql = "SELECT rr.sbas_id, rr.record_id, rr.preview, rr.document, rr.`case` as type, \n"
|
||||
. "IF(TRIM(p.last_name)!='' OR TRIM(p.first_name)!='', \n"
|
||||
. " CONCAT_WS(' ', p.last_name, p.first_name),\n"
|
||||
. " IF(TRIM(p.email)!='', p.email, p.login)\n"
|
||||
. ") as pusher_name\n"
|
||||
. ") as pusher_name, rr.expire_on\n"
|
||||
. " FROM records_rights rr \n"
|
||||
. " INNER JOIN sbas ON sbas.sbas_id = rr.sbas_id\n"
|
||||
. " JOIN Users as p ON p.id = rr.pusher_usr_id\n"
|
||||
|
@@ -145,4 +145,12 @@ class OrderRepository extends EntityRepository
|
||||
|
||||
return $builder->getQuery()->getSingleScalarResult();
|
||||
}
|
||||
|
||||
public function findAllTodo()
|
||||
{
|
||||
$qb = $this->createQueryBuilder('o');
|
||||
$qb->where('o.todo != 0');
|
||||
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
}
|
@@ -15,7 +15,7 @@ use Alchemy\Phrasea\Model\Entities\Basket;
|
||||
use Alchemy\Phrasea\Exception\LogicException;
|
||||
use Alchemy\Phrasea\Model\Entities\User;
|
||||
|
||||
class MailInfoOrderDelivered extends AbstractMail
|
||||
class MailInfoOrderDelivered extends AbstractMailWithLink
|
||||
{
|
||||
/** @var Basket */
|
||||
private $basket;
|
||||
|
@@ -144,9 +144,10 @@ class BaseOrderController extends Controller
|
||||
* @param int $order_id
|
||||
* @param array<int> $elementIds
|
||||
* @param User $acceptor
|
||||
* @param \DateTime|null $expireDate
|
||||
* @return BasketElement[]
|
||||
*/
|
||||
protected function doAcceptElements($order_id, $elementIds, User $acceptor)
|
||||
protected function doAcceptElements($order_id, $elementIds, User $acceptor, \DateTime $expireDate = null)
|
||||
{
|
||||
$elements = $this->findRequestedElements($order_id, $elementIds, $acceptor);
|
||||
$order = $this->findOr404($order_id);
|
||||
@@ -161,7 +162,25 @@ class BaseOrderController extends Controller
|
||||
$this->assertRequestedElementsWereNotAlreadyAdded($basket, $basketElements);
|
||||
|
||||
$orderValidator->accept($acceptor, $partialOrder);
|
||||
$orderValidator->grantHD($basket->getUser(), $basketElements);
|
||||
$expireOn = null;
|
||||
if ($this->app['conf']->get(['order-manager', 'download-hd', 'expiration-override'], false)) {
|
||||
if ($expireDate !== null) {
|
||||
$expireOn = $expireDate->format(DATE_ATOM);
|
||||
$expireDateTime = $expireDate;
|
||||
}
|
||||
} else {
|
||||
$expirationDays = $this->app['conf']->get(['order-manager', 'download-hd', 'expiration-days'], 15);
|
||||
|
||||
try {
|
||||
$expireDateTime = new \DateTime('+ '. $expirationDays . ' day');
|
||||
$expireOn = $expireDateTime->format(DATE_ATOM);
|
||||
} catch (\Exception $e) {
|
||||
$expireDateTime = null;
|
||||
$expireOn = null;
|
||||
}
|
||||
}
|
||||
|
||||
$orderValidator->grantHD($basket->getUser(), $basket->getPusher(), $basketElements, $expireOn);
|
||||
|
||||
try {
|
||||
$manager = $this->getEntityManager();
|
||||
@@ -172,7 +191,7 @@ class BaseOrderController extends Controller
|
||||
$manager->persist($element);
|
||||
}
|
||||
|
||||
$delivery = new OrderDelivery($order, $acceptor, count($basketElements), $partialOrder);
|
||||
$delivery = new OrderDelivery($order, $acceptor, count($basketElements), $partialOrder, $expireDateTime);
|
||||
|
||||
$this->dispatch(PhraseaEvents::ORDER_DELIVER, new OrderDeliveryEvent($delivery));
|
||||
}
|
||||
|
@@ -164,7 +164,17 @@ class ProdOrderController extends BaseOrderController
|
||||
$elementIds = $request->request->get('elements', []);
|
||||
$acceptor = $this->getAuthenticatedUser();
|
||||
|
||||
$basketElements = $this->doAcceptElements($order_id, $elementIds, $acceptor);
|
||||
if (empty($request->request->get('expireOn'))) {
|
||||
$expireOn = null;
|
||||
} else {
|
||||
try {
|
||||
$expireOn = new \DateTime($request->request->get('expireOn') . ' 23:59:59');
|
||||
} catch (\Exception $e) {
|
||||
$expireOn = null;
|
||||
}
|
||||
}
|
||||
|
||||
$basketElements = $this->doAcceptElements($order_id, $elementIds, $acceptor, $expireOn);
|
||||
|
||||
$success = !empty($basketElements);
|
||||
|
||||
@@ -216,5 +226,38 @@ class ProdOrderController extends BaseOrderController
|
||||
]);
|
||||
}
|
||||
|
||||
public function validateOrder(Request $request, $order_id)
|
||||
{
|
||||
$elementSendIds = $request->request->get('elementsSend', []);
|
||||
$elementDenyIds = $request->request->get('elementsDeny', []);
|
||||
$acceptor = $this->getAuthenticatedUser();
|
||||
|
||||
if (!empty($elementSendIds)) {
|
||||
if (empty($request->request->get('expireOn'))) {
|
||||
$expireOn = null;
|
||||
} else {
|
||||
try {
|
||||
$expireOn = new \DateTime($request->request->get('expireOn') . ' 23:59:59');
|
||||
} catch (\Exception $e) {
|
||||
$expireOn = null;
|
||||
}
|
||||
}
|
||||
|
||||
$basketElements = $this->doAcceptElements($order_id, $elementSendIds, $acceptor, $expireOn);
|
||||
}
|
||||
|
||||
if (!empty($elementDenyIds)) {
|
||||
$elementsDeny = $this->doDenyElements($order_id, $elementDenyIds, $acceptor);
|
||||
}
|
||||
|
||||
$success = !empty($basketElements) || !empty($elementsDeny);
|
||||
|
||||
return $this->app->json([
|
||||
'success' => $success,
|
||||
'msg' => $success
|
||||
? $this->app->trans('Order has been sent')
|
||||
: $this->app->trans('An error occured while sending, please retry or contact an admin if problem persists'),
|
||||
'order_id' => $order_id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@@ -36,18 +36,22 @@ class OrderDelivery
|
||||
*/
|
||||
private $partialOrder;
|
||||
|
||||
private $expireOn;
|
||||
|
||||
/**
|
||||
* @param Order $deliveredOrder
|
||||
* @param User $manager
|
||||
* @param int $quantity
|
||||
* @param \DateTime $expireOn
|
||||
* @param PartialOrder $partialOrder
|
||||
*/
|
||||
public function __construct(Order $deliveredOrder, User $manager, $quantity, PartialOrder $partialOrder)
|
||||
public function __construct(Order $deliveredOrder, User $manager, $quantity, PartialOrder $partialOrder, \DateTime $expireOn = null)
|
||||
{
|
||||
$this->order = $deliveredOrder;
|
||||
$this->admin = $manager;
|
||||
$this->quantity = $quantity;
|
||||
$this->partialOrder = $partialOrder;
|
||||
$this->expireOn = $expireOn;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -81,4 +85,9 @@ class OrderDelivery
|
||||
{
|
||||
return $this->partialOrder;
|
||||
}
|
||||
|
||||
public function getExpireOn()
|
||||
{
|
||||
return $this->expireOn;
|
||||
}
|
||||
}
|
||||
|
@@ -100,9 +100,11 @@ class OrderValidator
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
* @param User $pusher
|
||||
* @param BasketElement[] $elements
|
||||
* @param $expireOn
|
||||
*/
|
||||
public function grantHD(User $user, $elements)
|
||||
public function grantHD(User $user, User $pusher, $elements, $expireOn)
|
||||
{
|
||||
Assertion::allIsInstanceOf($elements, BasketElement::class);
|
||||
|
||||
@@ -114,7 +116,7 @@ class OrderValidator
|
||||
$element->getRecordId()
|
||||
);
|
||||
|
||||
$acl->grant_hd_on($recordReference, $user, \ACL::GRANT_ACTION_ORDER);
|
||||
$acl->grant_hd_on($recordReference, $pusher, \ACL::GRANT_ACTION_ORDER, $expireOn);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -17,7 +17,6 @@ use Alchemy\Phrasea\Model\Entities\User;
|
||||
use Alchemy\Phrasea\Notification\Deliverer;
|
||||
use Alchemy\Phrasea\Notification\Emitter;
|
||||
use Alchemy\Phrasea\Notification\Mail\MailInfoNewOrder;
|
||||
use Alchemy\Phrasea\Notification\Mail\MailInfoOrderCancelled;
|
||||
use Alchemy\Phrasea\Notification\Mail\MailInfoOrderDelivered;
|
||||
use Alchemy\Phrasea\Notification\Receiver;
|
||||
use Alchemy\Phrasea\Order\OrderDelivery;
|
||||
@@ -80,9 +79,8 @@ class MailNotifier implements ValidationNotifier
|
||||
'LOG' => $token->getValue(),
|
||||
]);
|
||||
|
||||
$mail = MailInfoOrderDelivered::create($this->application, $recipient, $sender, null);
|
||||
$mail = MailInfoOrderDelivered::create($this->application, $recipient, $sender, null, $url, $delivery->getExpireOn());
|
||||
|
||||
$mail->setButtonUrl($url);
|
||||
$mail->setBasket($basket);
|
||||
$mail->setDeliverer($delivery->getAdmin());
|
||||
|
||||
|
@@ -60,7 +60,7 @@ class PhraseanetExtension extends \Twig_Extension
|
||||
{
|
||||
return [
|
||||
// change this version when you change JS file to force the navigation to reload js file
|
||||
'assetFileVersion' => 74
|
||||
'assetFileVersion' => 75
|
||||
];
|
||||
|
||||
}
|
||||
|
@@ -221,23 +221,33 @@ class ACL implements cache_cacheableInterface
|
||||
return false;
|
||||
}
|
||||
|
||||
public function grant_hd_on(RecordReferenceInterface $record, User $pusher, $action)
|
||||
public function grant_hd_on(RecordReferenceInterface $record, User $pusher, $action, $expireOn = null)
|
||||
{
|
||||
static $stmt = null;
|
||||
if(!$stmt) {
|
||||
$sql = "REPLACE INTO records_rights\n"
|
||||
. " (id, usr_id, sbas_id, record_id, document, `case`, pusher_usr_id)\n"
|
||||
. " VALUES (null, :usr_id, :sbas_id, :record_id, 1, :case, :pusher)";
|
||||
. " (id, usr_id, sbas_id, record_id, document, `case`, pusher_usr_id, expire_on)\n"
|
||||
. " VALUES (null, :usr_id, :sbas_id, :record_id, 1, :case, :pusher, :expireOn)";
|
||||
|
||||
$stmt = $this->app->getApplicationBox()->get_connection()->prepare($sql);
|
||||
}
|
||||
|
||||
if (!empty($expireOn)) {
|
||||
try {
|
||||
$expireOn = (new DateTime($expireOn))->format(DATE_ATOM);
|
||||
} catch (\Exception $e) {
|
||||
$expireOn = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$params = [
|
||||
':usr_id' => $this->user->getId(),
|
||||
':sbas_id' => $record->getDataboxId(),
|
||||
':record_id' => $record->getRecordId(),
|
||||
':case' => $action,
|
||||
':pusher' => $pusher->getId()
|
||||
':pusher' => $pusher->getId(),
|
||||
':expireOn' => $expireOn
|
||||
];
|
||||
$stmt->execute($params);
|
||||
$stmt->closeCursor();
|
||||
@@ -1064,11 +1074,10 @@ class ACL implements cache_cacheableInterface
|
||||
/**
|
||||
* Load if needed the elements which have a HD grant
|
||||
*
|
||||
* @return Array
|
||||
* @return ACL
|
||||
*/
|
||||
protected function load_hd_grant()
|
||||
{
|
||||
|
||||
if ($this->_rights_records_preview) {
|
||||
return $this;
|
||||
}
|
||||
@@ -1082,7 +1091,7 @@ class ACL implements cache_cacheableInterface
|
||||
} catch (\Exception $e) {
|
||||
|
||||
}
|
||||
$sql = "SELECT sbas_id, record_id, preview, document FROM records_rights WHERE usr_id = :usr_id";
|
||||
$sql = "SELECT sbas_id, record_id, preview, document, expire_on FROM records_rights WHERE usr_id = :usr_id";
|
||||
|
||||
$stmt = $this->app->getApplicationBox()->get_connection()->prepare($sql);
|
||||
$stmt->execute([':usr_id' => $this->user->getId()]);
|
||||
@@ -1093,10 +1102,23 @@ class ACL implements cache_cacheableInterface
|
||||
$this->_rights_records_preview = [];
|
||||
$this->_rights_records_document = [];
|
||||
|
||||
$dateNow = new DateTime("now");
|
||||
foreach ($rs as $row) {
|
||||
$currentid = $row["sbas_id"] . "_" . $row["record_id"];
|
||||
if ($row['document'] == '1')
|
||||
if (!empty($row['expire_on'])) {
|
||||
try {
|
||||
$expireOn = new DateTime($row['expire_on']);
|
||||
|
||||
if ($expireOn < $dateNow) {
|
||||
continue;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($row['document'] == '1') {
|
||||
$this->_rights_records_document[$currentid] = $currentid;
|
||||
}
|
||||
$this->_rights_records_preview[$currentid] = $currentid;
|
||||
}
|
||||
|
||||
|
108
lib/classes/patch/417RC3PHRAS3783.php
Normal file
108
lib/classes/patch/417RC3PHRAS3783.php
Normal file
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
use Alchemy\Phrasea\Application;
|
||||
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
|
||||
use Alchemy\Phrasea\Model\Repositories\OrderRepository;
|
||||
use Alchemy\Phrasea\Model\Entities\Order;
|
||||
|
||||
class patch_417RC3PHRAS3783 implements patchInterface
|
||||
{
|
||||
/** @var string */
|
||||
private $release = '4.1.7-rc3';
|
||||
|
||||
/** @var array */
|
||||
private $concern = [base::APPLICATION_BOX];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_release()
|
||||
{
|
||||
return $this->release;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDoctrineMigrations()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function require_all_upgrades()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function concern()
|
||||
{
|
||||
return $this->concern;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function apply(base $base, Application $app)
|
||||
{
|
||||
if ($base->get_base_type() === base::DATA_BOX) {
|
||||
$this->patch_databox($base, $app);
|
||||
}
|
||||
elseif ($base->get_base_type() === base::APPLICATION_BOX) {
|
||||
$this->patch_appbox($base, $app);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function patch_databox(databox $databox, Application $app)
|
||||
{
|
||||
}
|
||||
|
||||
private function patch_appbox(base $appbox, Application $app)
|
||||
{
|
||||
$cnx = $appbox->get_connection();
|
||||
|
||||
/** @var PropertyAccess $conf */
|
||||
$conf = $app['conf'];
|
||||
|
||||
// add new conf if not exist
|
||||
// default value to 15 days ??
|
||||
// or null for download never expired
|
||||
if (!$conf->has(['order-manager', 'download-hd', 'expiration-days'])) {
|
||||
$conf->set(['order-manager', 'download-hd', 'expiration-days'], 15);
|
||||
}
|
||||
|
||||
if (!$conf->has(['order-manager', 'download-hd', 'expiration-override'])) {
|
||||
$conf->set(['order-manager', 'download-hd', 'expiration-override'], false);
|
||||
}
|
||||
|
||||
// needed to expire existing order download ???
|
||||
$expirationDays = $app['conf']->get(['order-manager', 'download-hd', 'expiration-days'], 15);
|
||||
$expireOn = (new \DateTime('+ '. $expirationDays .' day'))->format(DATE_ATOM);
|
||||
|
||||
$sql = 'UPDATE `records_rights` SET `expire_on` = :expire_on WHERE `case` = "order" AND `expire_on` IS NULL';
|
||||
$stmt = $cnx->prepare($sql);
|
||||
$stmt->execute([':expire_on' => $expireOn]);
|
||||
$stmt->closeCursor();
|
||||
|
||||
// get all todoorder an set column to 0 if all element are processed
|
||||
/** @var OrderRepository $orderRepository */
|
||||
$orderRepository = $app['repo.orders'];
|
||||
/** @var Order $order */
|
||||
foreach ($orderRepository->findAllTodo() as $order) {
|
||||
if ($order->getTotalTreatedItems() == $order->getTotal()) {
|
||||
//all element processed
|
||||
$order->setTodo(0);
|
||||
$app['orm.em']->persist($order);
|
||||
}
|
||||
}
|
||||
|
||||
$app['orm.em']->flush();
|
||||
}
|
||||
}
|
@@ -905,6 +905,14 @@
|
||||
<comment></comment>
|
||||
<collation></collation>
|
||||
</field>
|
||||
<field>
|
||||
<name>expire_on</name>
|
||||
<type>datetime</type>
|
||||
<null>yes</null>
|
||||
<extra></extra>
|
||||
<default></default>
|
||||
<comment></comment>
|
||||
</field>
|
||||
</fields>
|
||||
<indexes>
|
||||
<index>
|
||||
|
@@ -739,6 +739,10 @@
|
||||
<div id="record_acl_tab">
|
||||
<h1>User record acl</h1>
|
||||
<div style="margin-bottom: 20px;">
|
||||
<label class="checkbox" for="expired-right" style="display:inline-block;margin-right: 30px;">
|
||||
<input type="checkbox" id="expired-right" name="expired-right" value="1">
|
||||
expired right
|
||||
</label>
|
||||
<select id="acl-databox-filter">
|
||||
<option value="">{{ 'button::choose databox' | trans }}</option>
|
||||
{% for databoxId in databoxIds %}
|
||||
@@ -746,6 +750,13 @@
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
||||
<select id="acl-type-filter" style="margin-bottom: 0px;margin-left: 30px;">
|
||||
<option value="">{{ 'button::choose type' | trans }}</option>
|
||||
<option value="order">order</option>
|
||||
<option value="push">push</option>
|
||||
<option value="validate">validate</option>
|
||||
</select>
|
||||
|
||||
<input type="number" id="acl-record-filter" placeholder="recordId" style="margin-bottom: 0px;margin-left: 30px;">
|
||||
</div>
|
||||
|
||||
@@ -759,6 +770,7 @@
|
||||
<th>right on subdef</th>
|
||||
<th>type</th>
|
||||
<th>pusher name</th>
|
||||
<th>expire on</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="record_acl_list">
|
||||
@@ -770,6 +782,18 @@
|
||||
<td>{{ r_a.preview }}</td>
|
||||
<td>{{ r_a.type }}</td>
|
||||
<td>{{ r_a.pusher_name }}</td>
|
||||
<td>
|
||||
{% if r_a.expire_on %}
|
||||
{{ r_a.expire_on|date('Y-m-d H:i:s') }}
|
||||
{% if r_a.expire_on|date('Y-m-d H:i:s') > "now"|date('Y-m-d H:i:s') %}
|
||||
<i class="fa fa-check" aria-hidden="true" style="color:#7cd21c;"></i>
|
||||
{% else %}
|
||||
<i class="fa fa-times" aria-hidden="true" style="color:#d1051f;"></i>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
- <i class="fa fa-check" aria-hidden="true" style="color:#7cd21c"></i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@@ -1466,12 +1490,20 @@
|
||||
});
|
||||
|
||||
function listRecordAcl() {
|
||||
let expiredRight = 0;
|
||||
if ($("#expired-right").is(":checked"))
|
||||
{
|
||||
expiredRight = 1;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/admin/users/records-acl/",
|
||||
data: {
|
||||
databoxId : $("#acl-databox-filter").val(),
|
||||
recordId : $("#acl-record-filter").val(),
|
||||
expiredRight: expiredRight,
|
||||
type: $("#acl-type-filter").val(),
|
||||
userId: {{ main_user.getId() }}
|
||||
},
|
||||
success: function (data) {
|
||||
@@ -1521,6 +1553,14 @@
|
||||
listRecordAcl();
|
||||
});
|
||||
|
||||
$("#expired-right").on('change', function () {
|
||||
listRecordAcl();
|
||||
});
|
||||
|
||||
$("#acl-type-filter").on('change', function () {
|
||||
listRecordAcl();
|
||||
});
|
||||
|
||||
$("#basket-databox-filter").on('change', function() {
|
||||
listRecordBasket();
|
||||
});
|
||||
|
@@ -6,6 +6,18 @@
|
||||
<td>{{ r_a.preview }}</td>
|
||||
<td>{{ r_a.type }}</td>
|
||||
<td>{{ r_a.pusher_name }}</td>
|
||||
<td>
|
||||
{% if r_a.expire_on %}
|
||||
{{ r_a.expire_on|date('Y-m-d H:i:s') }}
|
||||
{% if r_a.expire_on|date('Y-m-d H:i:s') > "now"|date('Y-m-d H:i:s') %}
|
||||
<i class="fa fa-check" aria-hidden="true" style="color:#7cd21c;"></i>
|
||||
{% else %}
|
||||
<i class="fa fa-times" aria-hidden="true" style="color:#d1051f;"></i>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
- <i class="fa fa-check" aria-hidden="true" style="color:#7cd21c"></i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
|
@@ -314,6 +314,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="usr_mail"> {{ 'admin::compte-utilisateur email' | trans }}</label>
|
||||
<div class="controls">
|
||||
<input class="required" type="text" name="usr_mail" id="usr_mail" value="{{ app.getAuthenticatedUser().getEmail() }}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="sexe">{{ 'Civility' | trans }}</label>
|
||||
<div class="controls">
|
||||
@@ -339,13 +346,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="usr_mail"> {{ 'admin::compte-utilisateur email' | trans }}</label>
|
||||
<div class="controls">
|
||||
<input class="required" type="text" name="usr_mail" id="usr_mail" value="{{ app.getAuthenticatedUser().getEmail() }}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="usr_tel">{{ 'admin::compte-utilisateur telephone' | trans }}</label>
|
||||
<div class="controls">
|
||||
@@ -388,13 +388,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="usr_fax">{{ 'admin::compte-utilisateur fax' | trans }}</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="usr_fax" name="fax" value="{{ app.getAuthenticatedUser().getFax() }}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if app['conf'].get(['registry', 'actions', 'tou-validation-required-for-export']) == true %}
|
||||
<div class="well-small acceptDl-info">
|
||||
<label for="TOU_acceptOrder" class="checkbox">
|
||||
@@ -406,7 +399,7 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="form_actions buttons_line">
|
||||
<div class="form_actions buttons_line" style="margin-left: 30px;">
|
||||
<button type="button" class="order_button btn btn-primary">{{ 'boutton::commander' | trans }}</button>
|
||||
<img class="order_button_loader" src="/assets/common/images/icons/loader404040.gif" style="visibility:hidden;margin:0 5px;"/>
|
||||
<button type="button" class="close_button btn btn-inverse">{{ 'boutton::annuler' | trans }}</button>
|
||||
|
@@ -26,6 +26,32 @@
|
||||
|
||||
<div style="display:none;position:relative;" id="validation-window" >
|
||||
<div class="box">
|
||||
<div class="order-expireon-wrap">
|
||||
<span class="ui-helper-hidden-accessible"><input type="text"/></span>
|
||||
<span>{{ 'prod::order-manager download expire on' | trans }}:</span>
|
||||
<span style="font-size: 0;">
|
||||
{% set canOverride = app['conf'].get(['order-manager', 'download-hd', 'expiration-override']) ? true : false %}
|
||||
<input type="text" class="expireOn btn" name="expireOn" autocomplete="off"
|
||||
style="width: 100px; margin: 0;background-image: none; border-right: 0;border-top-right-radius: 0;border-bottom-right-radius: 0;"
|
||||
{% if not canOverride %} disabled {% endif %}
|
||||
data-default-expiration="{{ app['conf'].get(['order-manager', 'download-hd', 'expiration-days']) }}"
|
||||
/>
|
||||
<button class="expireOn-menu"
|
||||
style="border-radius: 0px 13px 13px 0px;height: 30px;border: 1px solid transparent;"
|
||||
{% if not canOverride %} disabled {% endif %} >
|
||||
<i class="fa fa-ellipsis-h"></i>
|
||||
</button>
|
||||
</span>
|
||||
<ul id="expire-menu"
|
||||
style="position:fixed; z-index: 999999; width:80px; height:auto; display:block; top:-1000px;">
|
||||
<li data-expireon="+7"><a href="#">7 days</a></li>
|
||||
<li data-expireon="+15"><a href="#">15 days</a></li>
|
||||
<li data-expireon="+20"><a href="#">20 days</a></li>
|
||||
<li data-expireon="+30"><a href="#">30 days</a></li>
|
||||
<li data-expireon="+60"><a href="#">60 days</a></li>
|
||||
<li data-expireon=""><a href="#">no limitation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="validation-content" style="float:left; width:100%;margin-top:10px;">
|
||||
</div>
|
||||
</div>
|
||||
@@ -103,8 +129,8 @@
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<button class="btn validate outline" disabled><i class="fa fa-check-circle-o"
|
||||
aria-hidden="true"></i>{{ 'order-manager::order-item: validate' |trans }}
|
||||
<button class="btn validate outline" style="display:none;"><i class="fa fa-check-circle-o" aria-hidden="true">
|
||||
</i>{{ 'order-manager::order-item: validate' |trans }}
|
||||
</button>
|
||||
<div class="order-list-container">
|
||||
<div class="order_list" style="width:40%;float:left">
|
||||
@@ -146,7 +172,7 @@
|
||||
{% trans %}Forcer l'envoi du document{% endtrans %}
|
||||
{% endset %}
|
||||
<img style="cursor:help;" src="/assets/common/images/icons/delete.png" title="{% spaceless %}{{title|e}}{% endspaceless %}" />
|
||||
<img style="cursor:pointer;" class="force_sender" src="/assets/common/images/icons/reload.png" title="{% spaceless %}{{title_send|e}}{% endspaceless %}" />
|
||||
{# <img style="cursor:pointer;" class="force_sender" src="/assets/common/images/icons/reload.png" title="{% spaceless %}{{title_send|e}}{% endspaceless %}" />#}
|
||||
{% else %}
|
||||
{% set title %}
|
||||
{% trans with {'%name%' : name} %}Document envoye par %name%{% endtrans %}
|
||||
@@ -207,14 +233,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<div id="wrapper-multiple">
|
||||
<div id="preview-layout-multiple">
|
||||
<span class="title">0</span>
|
||||
<h4 class="sub-title">{{ 'order-manager::order-item: selected-records' | trans }}</h4>
|
||||
<img class="record record_image imgTips zoomable thumb" oncontextMenu="return(false);"
|
||||
style="width:150px;height:150px;"
|
||||
src="/assets/common/images/icons/substitution/image_jpg.png" ondragstart="return false;"/>
|
||||
<div id="text-content"></div>
|
||||
</div>
|
||||
<div id="order-action" style="color:#333;">
|
||||
<button class="btn deny outline"><i class="fa fa-times"
|
||||
aria-hidden="true"></i>{{ 'Deny' | trans }}</button>
|
||||
@@ -227,6 +245,15 @@
|
||||
<img src="/assets/common/images/icons/loader000000.gif" class="activity_indicator" style="display:none;"/>
|
||||
<input name="order_id" type="hidden" value="{{ order.getId() }}" />
|
||||
</div>
|
||||
<div id="preview-layout-multiple">
|
||||
<span class="title">0</span>
|
||||
<h4 class="sub-title">{{ 'order-manager::order-item: selected-records' | trans }}</h4>
|
||||
<img class="record record_image imgTips zoomable thumb" oncontextMenu="return(false);"
|
||||
style="width:150px;height:150px;"
|
||||
src="/assets/common/images/icons/substitution/image_jpg.png" ondragstart="return false;"/>
|
||||
<div id="text-content"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="wrapper-no-item">
|
||||
<img style="width:150px;height:150px;" src="/assets/common/images/icons/substitution/image_jpg.png">
|
||||
|
Reference in New Issue
Block a user