mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-18 16:18:47 +02:00
Allow n:n links to link several times to the same remote object (if "duplicates)=> true in the linkedset definition)
SVN:trunk[917]
This commit is contained in:
@@ -1078,7 +1078,7 @@ EOF
|
||||
|
||||
case 'LinkedSet':
|
||||
$aEventsList[] ='change';
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iId, $sNameSuffix);
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iId, $sNameSuffix, $oAttDef->DuplicatesAllowed());
|
||||
$sHTMLValue = $oWidget->Display($oPage, $value);
|
||||
break;
|
||||
|
||||
|
||||
@@ -36,14 +36,16 @@ class UILinksWidget
|
||||
protected $m_sExtKeyToRemote;
|
||||
protected $m_sLinkedClass;
|
||||
protected $m_sRemoteClass;
|
||||
protected $m_bDuplicatesAllowed;
|
||||
protected static $iWidgetIndex = 0;
|
||||
|
||||
public function __construct($sClass, $sAttCode, $iInputId, $sNameSuffix = '')
|
||||
public function __construct($sClass, $sAttCode, $iInputId, $sNameSuffix = '', $bDuplicatesAllowed = false)
|
||||
{
|
||||
$this->m_sClass = $sClass;
|
||||
$this->m_sAttCode = $sAttCode;
|
||||
$this->m_sNameSuffix = $sNameSuffix;
|
||||
$this->m_iInputId = $iInputId;
|
||||
$this->m_bDuplicatesAllowed = $bDuplicatesAllowed;
|
||||
$this->m_aEditableFields = array();
|
||||
self::$iWidgetIndex++;
|
||||
|
||||
@@ -222,8 +224,9 @@ class UILinksWidget
|
||||
$aForm[$key] = $this->GetFormRow($oPage, $oLinkedObj, $oCurrentLink, $aArgs);
|
||||
}
|
||||
$sHtmlValue .= $this->DisplayFormTable($oPage, $this->m_aTableConfig, $aForm);
|
||||
$sDuplicates = ($this->m_bDuplicatesAllowed) ? 'true' : 'false';
|
||||
$oPage->add_ready_script(<<<EOF
|
||||
oWidget$iWidgetIndex = new LinksWidget('{$this->m_sAttCode}{$this->m_sNameSuffix}', '{$this->m_sClass}', '{$this->m_sAttCode}', '{$this->m_iInputId}', '{$this->m_sNameSuffix}');
|
||||
oWidget$iWidgetIndex = new LinksWidget('{$this->m_sAttCode}{$this->m_sNameSuffix}', '{$this->m_sClass}', '{$this->m_sAttCode}', '{$this->m_iInputId}', '{$this->m_sNameSuffix}', $sDuplicates);
|
||||
oWidget$iWidgetIndex.Init();
|
||||
EOF
|
||||
);
|
||||
@@ -383,7 +386,7 @@ EOF
|
||||
// No remote class specified use the one defined in the linkedset
|
||||
$oFilter = new DBObjectSearch($this->m_sRemoteClass);
|
||||
}
|
||||
if (count($aAlreadyLinkedIds) > 0)
|
||||
if (!$this->m_bDuplicatesAllowed && count($aAlreadyLinkedIds) > 0)
|
||||
{
|
||||
// Positive IDs correspond to existing link records
|
||||
// negative IDs correspond to "remote" objects to be linked
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
// JavaScript Document
|
||||
function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix)
|
||||
function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates)
|
||||
{
|
||||
this.id = id;
|
||||
this.iInputId = iInputId;
|
||||
this.sClass = sClass;
|
||||
this.sAttCode = sAttCode;
|
||||
this.sSuffix = sSuffix;
|
||||
this.bDuplicates = bDuplicates;
|
||||
var me = this;
|
||||
this.Init = function()
|
||||
{
|
||||
@@ -64,7 +65,8 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix)
|
||||
{
|
||||
var theMap = { sAttCode: me.sAttCode,
|
||||
iInputId: me.iInputId,
|
||||
sSuffix: me.sSuffix
|
||||
sSuffix: me.sSuffix,
|
||||
bDuplicates: me.bDuplicates
|
||||
}
|
||||
|
||||
// Gather the parameters from the search form
|
||||
@@ -112,6 +114,7 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix)
|
||||
var theMap = { sAttCode: me.sAttCode,
|
||||
iInputId: me.iInputId,
|
||||
sSuffix: me.sSuffix,
|
||||
bDuplicates: me.bDuplicates,
|
||||
'class': me.sClass
|
||||
}
|
||||
|
||||
|
||||
@@ -62,8 +62,9 @@ switch($operation)
|
||||
$sAttCode = utils::ReadParam('sAttCode', '');
|
||||
$iInputId = utils::ReadParam('iInputId', '');
|
||||
$sSuffix = utils::ReadParam('sSuffix', '');
|
||||
$bDuplicates = (utils::ReadParam('bDuplicates', 'false') == 'false') ? false : true;
|
||||
$aAlreadyLinked = utils::ReadParam('aAlreadyLinked', array());
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iInputId, $sSuffix);
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iInputId, $sSuffix, $bDuplicates);
|
||||
$oWidget->SearchObjectsToAdd($oPage, $sRemoteClass, $aAlreadyLinked);
|
||||
break;
|
||||
|
||||
@@ -72,8 +73,9 @@ switch($operation)
|
||||
$sAttCode = utils::ReadParam('sAttCode', '');
|
||||
$iInputId = utils::ReadParam('iInputId', '');
|
||||
$sSuffix = utils::ReadParam('sSuffix', '');
|
||||
$bDuplicates = (utils::ReadParam('bDuplicates', 'false') == 'false') ? false : true;
|
||||
$aLinkedObjectIds = utils::ReadParam('selectObject', array());
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iInputId, $sSuffix);
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iInputId, $sSuffix, $bDuplicates);
|
||||
$oWidget->DoAddObjects($oPage, $aLinkedObjectIds);
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user