diff --git a/core/attributedef.class.inc.php b/core/attributedef.class.inc.php index 1a148857e..6476062bd 100644 --- a/core/attributedef.class.inc.php +++ b/core/attributedef.class.inc.php @@ -5465,6 +5465,11 @@ class AttributeImage extends AttributeBlob } return '
'.$sRet.'
'; } + + static public function GetFormFieldClass() + { + return '\\Combodo\\iTop\\Form\\Field\\ImageField'; + } } /** * A stop watch is an ormStopWatch object, it is stored as several columns in the database diff --git a/sources/autoload.php b/sources/autoload.php index 3e172fcee..9dd228f55 100644 --- a/sources/autoload.php +++ b/sources/autoload.php @@ -25,6 +25,7 @@ require_once APPROOT . 'sources/form/formmanager.class.inc.php'; require_once APPROOT . 'sources/form/field/field.class.inc.php'; require_once APPROOT . 'sources/form/field/fileuploadfield.class.inc.php'; require_once APPROOT . 'sources/form/field/blobfield.class.inc.php'; +require_once APPROOT . 'sources/form/field/imagefield.class.inc.php'; require_once APPROOT . 'sources/form/field/subformfield.class.inc.php'; require_once APPROOT . 'sources/form/field/textfield.class.inc.php'; require_once APPROOT . 'sources/form/field/hiddenfield.class.inc.php'; diff --git a/sources/form/field/imagefield.class.inc.php b/sources/form/field/imagefield.class.inc.php new file mode 100644 index 000000000..41810caeb --- /dev/null +++ b/sources/form/field/imagefield.class.inc.php @@ -0,0 +1,53 @@ + + +namespace Combodo\iTop\Form\Field; + +use \utils; +use \Dict; +use \ormDocument; +use \Combodo\iTop\Form\Field\BlobField; + +/** + * Description of ImageField + * + * @author Guillaume Lajarige + */ +class ImageField extends BlobField +{ + public function GetDisplayValue() + { + if ($this->currentValue->IsEmpty()) + { + $sValue = Dict::S('Portal:File:None'); + } + else + { + $sFilename = $this->currentValue->GetFileName(); + $iSize = utils::BytesToFriendlyFormat(strlen($this->currentValue->GetData())); + $sOpenLink = $this->GetDisplayUrl(); + $sDownloadLink = $this->GetDownloadUrl(); + + $sValue = Dict::Format('Portal:File:DisplayInfo+', $sFilename, $iSize, $sOpenLink, $sDownloadLink); + } + + return $sValue; + } + +} diff --git a/sources/renderer/bootstrap/bsformrenderer.class.inc.php b/sources/renderer/bootstrap/bsformrenderer.class.inc.php index c21e30fe1..c44236cdd 100644 --- a/sources/renderer/bootstrap/bsformrenderer.class.inc.php +++ b/sources/renderer/bootstrap/bsformrenderer.class.inc.php @@ -57,7 +57,8 @@ class BsFormRenderer extends FormRenderer $this->AddSupportedField('DateTimeField', 'BsSimpleFieldRenderer'); $this->AddSupportedField('DurationField', 'BsSimpleFieldRenderer'); $this->AddSupportedField('FileUploadField', 'BsFileUploadFieldRenderer'); - $this->AddSupportedField('BlobField', 'BsSimpleFieldRenderer'); + $this->AddSupportedField('BlobField', 'BsSimpleFieldRenderer'); + $this->AddSupportedField('ImageField', 'BsSimpleFieldRenderer'); } } diff --git a/sources/renderer/bootstrap/fieldrenderer/bssimplefieldrenderer.class.inc.php b/sources/renderer/bootstrap/fieldrenderer/bssimplefieldrenderer.class.inc.php index 98ccd66c7..a10757051 100644 --- a/sources/renderer/bootstrap/fieldrenderer/bssimplefieldrenderer.class.inc.php +++ b/sources/renderer/bootstrap/fieldrenderer/bssimplefieldrenderer.class.inc.php @@ -280,7 +280,8 @@ EOF $oOutput->AddHtml(''); break; - case 'Combodo\\iTop\\Form\\Field\\BlobField': + case 'Combodo\\iTop\\Form\\Field\\BlobField': + case 'Combodo\\iTop\\Form\\Field\\ImageField': $oOutput->AddHtml('
'); // Showing label / value only if read-only but not hidden if (!$this->oField->GetHidden()) @@ -289,7 +290,16 @@ EOF { $oOutput->AddHtml(''); } - $oOutput->AddHtml('
')->AddHtml($this->oField->GetDisplayValue(), false)->AddHtml('
'); + $oOutput->AddHtml('
'); + if($sFieldClass === 'Combodo\\iTop\\Form\\Field\\ImageField') + { + $oOutput->AddHtml('', false); + } + else + { + $oOutput->AddHtml($this->oField->GetDisplayValue(), false); + } + $oOutput->AddHtml('
'); } $oOutput->AddHtml(''); $oOutput->AddHtml('
');