diff --git a/sources/Renderer/Bootstrap/FieldRenderer/BsLinkedSetFieldRenderer.php b/sources/Renderer/Bootstrap/FieldRenderer/BsLinkedSetFieldRenderer.php
index 4c914bba9..df9cf6b5d 100644
--- a/sources/Renderer/Bootstrap/FieldRenderer/BsLinkedSetFieldRenderer.php
+++ b/sources/Renderer/Bootstrap/FieldRenderer/BsLinkedSetFieldRenderer.php
@@ -24,6 +24,7 @@ use ApplicationContext;
use AttributeFriendlyName;
use Combodo\iTop\Form\Field\DateTimeField;
use Combodo\iTop\Form\Field\Field;
+use Combodo\iTop\Portal\Helper\ApplicationHelper;
use Combodo\iTop\Renderer\Bootstrap\BsFieldRendererMappings;
use Combodo\iTop\Renderer\FieldRenderer;
use Combodo\iTop\Renderer\RenderingOutput;
@@ -192,7 +193,7 @@ EOF
"render": function(data, type, row)
{
var oCheckboxElem = $('{$sSelectionInputHtml}');
- if(row.limited_access)
+ if(row.limited_access)
{
oCheckboxElem.html('-');
}
@@ -221,7 +222,8 @@ EOF
"className": {$sIsEditable} && aColumnProperties.mandatory ? 'mandatory' : '',
"render": function(data, type, row){
var cellElem;
-
+ var metadataNames = ['object_class', 'object_id', 'attribute_code', 'attribute_type', 'value_raw'];
+
// Preparing the cell data
if(data.url !== undefined)
{
@@ -232,8 +234,19 @@ EOF
{
cellElem = $('');
}
- cellElem.html('' + data.value_html + '');
-
+ for(var sPropName in row.attributes[data.prefix+data.attribute_code])
+ {
+ var propValue = row.attributes[data.prefix+data.attribute_code][sPropName];
+ if(sPropName === 'value_html')
+ {
+ cellElem.html(propValue);
+ }
+ else if(metadataNames.indexOf(sPropName) > -1)
+ {
+ cellElem.attr('data-'+sPropName.replace('_', '-'), propValue)
+ }
+ }
+
return cellElem.prop('outerHTML');
},
});
@@ -242,7 +255,6 @@ EOF
for(sKey in oColumnProperties_{$this->oField->GetGlobalId()})
{
aColumnProperties = oColumnProperties_{$this->oField->GetGlobalId()}[sKey];
-
// Level main column
aColumnsDefinition.push({
"width": "auto",
@@ -254,7 +266,8 @@ EOF
"data": "attributes." + sKey,
"className": aColumnProperties.mandatory ? 'mandatory' : '',
"render": function(data, type, row){
- var cellElem;
+ var cellElem;
+ var metadataNames = ['object_class', 'object_id', 'attribute_code', 'attribute_type', 'value_raw'];
// Preparing the cell data
if(data.url !== undefined)
@@ -266,7 +279,19 @@ EOF
{
cellElem = $('');
}
- cellElem.html('' + data.value_html + '');
+
+ for(var sPropName in row.attributes[data.attribute_code])
+ {
+ var propValue = row.attributes[data.attribute_code][sPropName];
+ if(sPropName === 'value_html')
+ {
+ cellElem.html(propValue);
+ }
+ else if(metadataNames.indexOf(sPropName) > -1)
+ {
+ cellElem.attr('data-'+sPropName.replace('_', '-'), propValue)
+ }
+ }
return cellElem.prop('outerHTML');
},
@@ -820,14 +845,30 @@ JS
if ($sAttCode !== 'id') {
- // Prepare attribute properties
- $aAttProperties = array(
- 'att_code' => $sAttCode,
- );
-
// Retrieve attribute definition
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
+ // Prepare attribute properties
+ $aAttProperties = [
+ 'prefix'=> $sAttribueKeyPrefix,
+ 'object_class' => $sClass,
+ 'object_id' => $oItem->GetKey(),
+ 'attribute_code' => $sAttCode,
+ 'attribute_type' => get_class($oAttDef),
+ ];
+ // - Value raw
+ // For simple fields, we get the raw (stored) value as well
+ $bExcludeRawValue = false;
+ foreach (ApplicationHelper::GetAttDefClassesToExcludeFromMarkupMetadataRawValue() as $sAttDefClassToExclude)
+ {
+ if (is_a($oAttDef, $sAttDefClassToExclude, true))
+ {
+ $bExcludeRawValue = true;
+ break;
+ }
+ }
+ $aAttProperties['value_raw'] = ($bExcludeRawValue === false) ? $oItem->Get($sAttCode) : null;
+
// External key specific
if ($bIsEditable) {