diff --git a/js/links/links_view_table_widget.js b/js/links/links_view_table_widget.js index b71f372d7..feb21d8fc 100644 --- a/js/links/links_view_table_widget.js +++ b/js/links/links_view_table_widget.js @@ -100,7 +100,14 @@ $(function() ModifyLinkedObject: function (sLinkedObjectKey) { const me = this; - + + // Specify that external key to host object will be readonly + let aReadOnlyParams = { + 'readonly': { + } + } + aReadOnlyParams['readonly'][this.options.external_key_to_me] = 1; + // link object modification iTopObjectWorker.ModifyObject(this.options.link_class, sLinkedObjectKey, function () { $(this).find("form").remove(); @@ -109,7 +116,8 @@ $(function() if(data.success) { me.$tableSettingsDialog.DataTableSettings('DoRefresh'); } - }); + }, + aReadOnlyParams); }, }); diff --git a/js/object/object-worker.js b/js/object/object-worker.js index f389e9c95..86f6fe2af 100644 --- a/js/object/object-worker.js +++ b/js/object/object-worker.js @@ -5,16 +5,29 @@ const iTopObjectWorker = new function(){ const ROUTE_CREATE_OBJECT = 'object.new'; const ROUTE_MODIFY_OBJECT = 'object.modify'; const ROUTE_GET_OBJECT = 'object.get'; - - const CallAjaxCreateObject = function(sClass, oOnModalCloseCallback = null, oOnFormSubmittedCallback = null){ + + /** + * CallAjaxCreateObject. + * + * @param {string} sClass + * @param oOnModalCloseCallback + * @param oOnFormSubmittedCallback + * @param {Object} aAdditionalData + * @constructor + */ + const CallAjaxCreateObject = function(sClass, oOnModalCloseCallback = null, oOnFormSubmittedCallback = null, aAdditionalData = []){ + let aData = $.extend( + { + class: sClass, + }, + aAdditionalData + ); let oOptions = { title: Dict.S('UI:Object:Modal:Title'), content: { endpoint: `${ROUTER_BASE_URL}?route=${ROUTE_CREATE_OBJECT}`, - data: { - class: sClass, - } + data: aData }, extra_options: { callback_on_modal_close: oOnModalCloseCallback @@ -34,18 +47,23 @@ const iTopObjectWorker = new function(){ * @param {string} sObjectKey * @param oOnModalCloseCallback * @param oOnFormSubmittedCallback + * @param {Object} aAdditionalData * @constructor */ - const CallAjaxModifyObject = function(sObjectClass, sObjectKey, oOnModalCloseCallback, oOnFormSubmittedCallback){ - + const CallAjaxModifyObject = function(sObjectClass, sObjectKey, oOnModalCloseCallback, oOnFormSubmittedCallback, aAdditionalData = []){ + let aData = $.extend( + { + class: sObjectClass, + id: sObjectKey, + }, + aAdditionalData + ); + let oOptions = { title: Dict.S('UI:Links:ActionRow:Modify:Modal:Title'), content: { endpoint: `${ROUTER_BASE_URL}?route=${ROUTE_MODIFY_OBJECT}`, - data: { - class: sObjectClass, - id: sObjectKey, - }, + data: aData, }, extra_options: { callback_on_modal_close: oOnModalCloseCallback @@ -64,14 +82,19 @@ const iTopObjectWorker = new function(){ * @param {string} sObjectClass * @param {string} sObjectId * @param oOnResponseCallback + * @param {Object} aAdditionalData * @constructor */ - const CallAjaxGetObject = function(sObjectClass, sObjectId, oOnResponseCallback){ - - $.post(`${ROUTER_BASE_URL}?route=${ROUTE_GET_OBJECT}`, { - object_class: sObjectClass, - object_key: sObjectId, - }, oOnResponseCallback); + const CallAjaxGetObject = function(sObjectClass, sObjectId, oOnResponseCallback, aAdditionalData = []){ + let aData = $.extend( + { + object_class: sObjectClass, + object_key: sObjectId, + }, + aAdditionalData + ) + + $.post(`${ROUTER_BASE_URL}?route=${ROUTE_GET_OBJECT}`, aData, oOnResponseCallback); }; diff --git a/sources/Controller/Base/Layout/ObjectController.php b/sources/Controller/Base/Layout/ObjectController.php index 30b673b6b..4a0ccf1b4 100644 --- a/sources/Controller/Base/Layout/ObjectController.php +++ b/sources/Controller/Base/Layout/ObjectController.php @@ -242,6 +242,8 @@ JS // Prepare web page (should more likely be some kind of response object like for Symfony) $aFormExtraParams = array('wizard_container' => 1); + FormHelper::UpdateFlagsFromContext($oObj, $aFormExtraParams); + if ($this->IsHandlingXmlHttpRequest()) { $oPage = new AjaxPage(''); $aFormExtraParams['js_handlers'] = [];