mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-19 15:22:17 +02:00
Merge branch 'release/2.6' of https://github.com/Combodo/iTop.git into release/2.6
This commit is contained in:
@@ -2485,7 +2485,7 @@ EOF
|
|||||||
$sJsonFieldsMap = json_encode($aFieldsMap);
|
$sJsonFieldsMap = json_encode($aFieldsMap);
|
||||||
$sState = $this->GetState();
|
$sState = $this->GetState();
|
||||||
$sSessionStorageKey = $sClass.'_'.$iKey;
|
$sSessionStorageKey = $sClass.'_'.$iKey;
|
||||||
$sTempId = session_id().'_'.$iTransactionId;
|
$sTempId = utils::GetUploadTempId($iTransactionId);
|
||||||
$oPage->add_ready_script(InlineImage::EnableCKEditorImageUpload($this, $sTempId));
|
$oPage->add_ready_script(InlineImage::EnableCKEditorImageUpload($this, $sTempId));
|
||||||
|
|
||||||
$oPage->add_script(
|
$oPage->add_script(
|
||||||
@@ -2784,7 +2784,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Note: This part (inline images activation) is duplicated in self::DisplayModifyForm and several other places. Maybe it should be refactored so it automatically activates when an HTML field is present, or be an option of the attribute. See bug n°1240.
|
// Note: This part (inline images activation) is duplicated in self::DisplayModifyForm and several other places. Maybe it should be refactored so it automatically activates when an HTML field is present, or be an option of the attribute. See bug n°1240.
|
||||||
$sTempId = session_id().'_'.$iTransactionId;
|
$sTempId = utils::GetUploadTempId($iTransactionId);
|
||||||
$oPage->add_ready_script(InlineImage::EnableCKEditorImageUpload($this, $sTempId));
|
$oPage->add_ready_script(InlineImage::EnableCKEditorImageUpload($this, $sTempId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ class privUITransactionSession
|
|||||||
// Strictly speaking, the two lines below should be grouped together
|
// Strictly speaking, the two lines below should be grouped together
|
||||||
// by a critical section
|
// by a critical section
|
||||||
// sem_acquire($rSemIdentified);
|
// sem_acquire($rSemIdentified);
|
||||||
$id = str_replace(array('.', ' '), '', microtime()); //1 + count($_SESSION['transactions']);
|
$id = static::GetUserPrefix() . str_replace(array('.', ' '), '', microtime()); //1 + count($_SESSION['transactions']);
|
||||||
$_SESSION['transactions'][$id] = true;
|
$_SESSION['transactions'][$id] = true;
|
||||||
// sem_release($rSemIdentified);
|
// sem_release($rSemIdentified);
|
||||||
|
|
||||||
@@ -174,6 +174,17 @@ class privUITransactionSession
|
|||||||
// sem_release($rSemIdentified);
|
// sem_release($rSemIdentified);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a string to prefix transaction ID with info from the current user.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected static function GetUserPrefix()
|
||||||
|
{
|
||||||
|
$sPrefix = 'u'.UserRights::GetUserId();
|
||||||
|
return $sPrefix.'-';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -206,7 +217,7 @@ class privUITransactionFile
|
|||||||
throw new Exception('The directory "'.APPROOT.'data/transactions" must be writable to the application.');
|
throw new Exception('The directory "'.APPROOT.'data/transactions" must be writable to the application.');
|
||||||
}
|
}
|
||||||
self::CleanupOldTransactions();
|
self::CleanupOldTransactions();
|
||||||
$id = basename(tempnam(APPROOT.'data/transactions', self::GetUserPrefix()));
|
$id = basename(tempnam(APPROOT.'data/transactions', static::GetUserPrefix()));
|
||||||
self::Info('GetNewTransactionId: Created transaction: '.$id);
|
self::Info('GetNewTransactionId: Created transaction: '.$id);
|
||||||
|
|
||||||
return (string)$id;
|
return (string)$id;
|
||||||
@@ -310,6 +321,11 @@ class privUITransactionFile
|
|||||||
return $aResult;
|
return $aResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a prefix based on the user login instead of its ID for a better usage in tempnam()
|
||||||
|
*
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
protected static function GetUserPrefix()
|
protected static function GetUserPrefix()
|
||||||
{
|
{
|
||||||
$sPrefix = substr(UserRights::GetUser(), 0, 10);
|
$sPrefix = substr(UserRights::GetUser(), 0, 10);
|
||||||
|
|||||||
@@ -527,7 +527,7 @@ class utils
|
|||||||
/**
|
/**
|
||||||
* Returns a unique tmp id for the current upload based on the transaction system (db).
|
* Returns a unique tmp id for the current upload based on the transaction system (db).
|
||||||
*
|
*
|
||||||
* Build as session_id() . '_' . static::GetNewTransactionId()
|
* Build as static::GetNewTransactionId()
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@@ -537,7 +537,7 @@ class utils
|
|||||||
{
|
{
|
||||||
$sTransactionId = static::GetNewTransactionId();
|
$sTransactionId = static::GetNewTransactionId();
|
||||||
}
|
}
|
||||||
return session_id() . '_' . $sTransactionId;
|
return $sTransactionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function ReadFromFile($sFileName)
|
public static function ReadFromFile($sFileName)
|
||||||
|
|||||||
@@ -416,9 +416,11 @@ EOF
|
|||||||
* Get the fragment of javascript needed to complete the initialization of
|
* Get the fragment of javascript needed to complete the initialization of
|
||||||
* CKEditor when creating/modifying an object
|
* CKEditor when creating/modifying an object
|
||||||
*
|
*
|
||||||
* @param DBObject $oObject The object being edited
|
* @param \DBObject $oObject The object being edited
|
||||||
* @param string $sTempId The concatenation of session_id().'_'.$iTransactionId.
|
* @param string $sTempId Generated through utils::GetUploadTempId($iTransactionId)
|
||||||
|
*
|
||||||
* @return string The JS fragment to insert in "on document ready"
|
* @return string The JS fragment to insert in "on document ready"
|
||||||
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function EnableCKEditorImageUpload(DBObject $oObject, $sTempId)
|
public static function EnableCKEditorImageUpload(DBObject $oObject, $sTempId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -197,7 +197,20 @@ class AttachmentPlugIn implements iApplicationUIExtension, iApplicationObjectExt
|
|||||||
$this->m_bDeleteEnabled = $bEnabled;
|
$this->m_bDeleteEnabled = $bEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function DisplayAttachments($oObject, WebPage $oPage, $bEditMode = false)
|
/**
|
||||||
|
* @param \DBObject $oObject
|
||||||
|
* @param \WebPage $oPage
|
||||||
|
* @param bool $bEditMode
|
||||||
|
*
|
||||||
|
* @throws \CoreCannotSaveObjectException
|
||||||
|
* @throws \CoreException
|
||||||
|
* @throws \CoreUnexpectedValue
|
||||||
|
* @throws \MissingQueryArgument
|
||||||
|
* @throws \MySQLException
|
||||||
|
* @throws \MySQLHasGoneAwayException
|
||||||
|
* @throws \OQLException
|
||||||
|
*/
|
||||||
|
public function DisplayAttachments(DBObject $oObject, WebPage $oPage, $bEditMode = false)
|
||||||
{
|
{
|
||||||
// Exit here if the class is not allowed
|
// Exit here if the class is not allowed
|
||||||
if (!$this->IsTargetObject($oObject)) return;
|
if (!$this->IsTargetObject($oObject)) return;
|
||||||
@@ -206,7 +219,7 @@ class AttachmentPlugIn implements iApplicationUIExtension, iApplicationObjectExt
|
|||||||
$oSet = new DBObjectSet($oSearch, array(), array('class' => get_class($oObject), 'item_id' => $oObject->GetKey()));
|
$oSet = new DBObjectSet($oSearch, array(), array('class' => get_class($oObject), 'item_id' => $oObject->GetKey()));
|
||||||
|
|
||||||
$iTransactionId = $oPage->GetTransactionId();
|
$iTransactionId = $oPage->GetTransactionId();
|
||||||
$sTempId = session_id().'_'.$iTransactionId;
|
$sTempId = utils::GetUploadTempId($iTransactionId);
|
||||||
$oSearchTemp = DBObjectSearch::FromOQL("SELECT Attachment WHERE temp_id = :temp_id");
|
$oSearchTemp = DBObjectSearch::FromOQL("SELECT Attachment WHERE temp_id = :temp_id");
|
||||||
$oSetTemp = new DBObjectSet($oSearchTemp, array(), array('temp_id' => $sTempId));
|
$oSetTemp = new DBObjectSet($oSearchTemp, array(), array('temp_id' => $sTempId));
|
||||||
|
|
||||||
@@ -494,7 +507,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Attach new (temporary) attachments
|
// Attach new (temporary) attachments
|
||||||
$sTempId = session_id().'_'.$sTransactionId;
|
$sTempId = utils::GetUploadTempId($sTransactionId);
|
||||||
// The object is being created from a form, check if there are pending attachments
|
// The object is being created from a form, check if there are pending attachments
|
||||||
// for this object, but deleting the "new" ones that were already removed from the form
|
// for this object, but deleting the "new" ones that were already removed from the form
|
||||||
$sOQL = 'SELECT Attachment WHERE temp_id = :temp_id';
|
$sOQL = 'SELECT Attachment WHERE temp_id = :temp_id';
|
||||||
@@ -535,7 +548,7 @@ EOF
|
|||||||
$oSearch = DBObjectSearch::FromOQL("SELECT Attachment WHERE item_class = :class AND item_id = :item_id");
|
$oSearch = DBObjectSearch::FromOQL("SELECT Attachment WHERE item_class = :class AND item_id = :item_id");
|
||||||
$oSet = new DBObjectSet($oSearch, array(), array('class' => get_class($oObject), 'item_id' => $oObject->GetKey()));
|
$oSet = new DBObjectSet($oSearch, array(), array('class' => get_class($oObject), 'item_id' => $oObject->GetKey()));
|
||||||
// Attach new (temporary) attachments
|
// Attach new (temporary) attachments
|
||||||
$sTempId = session_id().'_'.$sTransactionId;
|
$sTempId = utils::GetUploadTempId($sTransactionId);
|
||||||
while ($oAttachment = $oSet->Fetch())
|
while ($oAttachment = $oSet->Fetch())
|
||||||
{
|
{
|
||||||
$oTempAttachment = clone $oAttachment;
|
$oTempAttachment = clone $oAttachment;
|
||||||
|
|||||||
@@ -1224,7 +1224,7 @@ class ObjectFormManager extends FormManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Processing temporary attachments
|
// Processing temporary attachments
|
||||||
$sTempId = session_id() . '_' . $this->oForm->GetTransactionId();
|
$sTempId = utils::GetUploadTempId($this->oForm->GetTransactionId());
|
||||||
$sOQL = 'SELECT Attachment WHERE temp_id = :temp_id';
|
$sOQL = 'SELECT Attachment WHERE temp_id = :temp_id';
|
||||||
$oSearch = DBObjectSearch::FromOQL($sOQL);
|
$oSearch = DBObjectSearch::FromOQL($sOQL);
|
||||||
$oSet = new DBObjectSet($oSearch, array(), array('temp_id' => $sTempId));
|
$oSet = new DBObjectSet($oSearch, array(), array('temp_id' => $sTempId));
|
||||||
@@ -1254,7 +1254,7 @@ class ObjectFormManager extends FormManager
|
|||||||
protected function CancelAttachments()
|
protected function CancelAttachments()
|
||||||
{
|
{
|
||||||
// Processing temporary attachments
|
// Processing temporary attachments
|
||||||
$sTempId = session_id() . '_' . $this->oForm->GetTransactionId();
|
$sTempId = utils::GetUploadTempId($this->oForm->GetTransactionId());
|
||||||
$sOQL = 'SELECT Attachment WHERE temp_id = :temp_id';
|
$sOQL = 'SELECT Attachment WHERE temp_id = :temp_id';
|
||||||
$oSearch = DBObjectSearch::FromOQL($sOQL);
|
$oSearch = DBObjectSearch::FromOQL($sOQL);
|
||||||
$oSet = new DBObjectSet($oSearch, array(), array('temp_id' => $sTempId));
|
$oSet = new DBObjectSet($oSearch, array(), array('temp_id' => $sTempId));
|
||||||
|
|||||||
@@ -904,7 +904,7 @@ try
|
|||||||
// Called when a creation/modification form is cancelled by the end-user
|
// Called when a creation/modification form is cancelled by the end-user
|
||||||
// Let's take this opportunity to inform the plug-ins so that they can perform some cleanup
|
// Let's take this opportunity to inform the plug-ins so that they can perform some cleanup
|
||||||
$iTransactionId = utils::ReadParam('transaction_id', 0, false, 'transaction_id');
|
$iTransactionId = utils::ReadParam('transaction_id', 0, false, 'transaction_id');
|
||||||
$sTempId = session_id().'_'.$iTransactionId;
|
$sTempId = utils::GetUploadTempId($iTransactionId);
|
||||||
InlineImage::OnFormCancel($sTempId);
|
InlineImage::OnFormCancel($sTempId);
|
||||||
foreach(MetaModel::EnumPlugins('iApplicationUIExtension') as $oExtensionInstance)
|
foreach(MetaModel::EnumPlugins('iApplicationUIExtension') as $oExtensionInstance)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class BsFileUploadFieldRenderer extends FieldRenderer
|
|||||||
$sObjectClass = get_class($this->oField->GetObject());
|
$sObjectClass = get_class($this->oField->GetObject());
|
||||||
$sIsDeleteAllowed = ($this->oField->GetAllowDelete() && !$this->oField->GetReadOnly()) ? 'true' : 'false';
|
$sIsDeleteAllowed = ($this->oField->GetAllowDelete() && !$this->oField->GetReadOnly()) ? 'true' : 'false';
|
||||||
$sDeleteBtn = Dict::S('Portal:Button:Delete');
|
$sDeleteBtn = Dict::S('Portal:Button:Delete');
|
||||||
$sTempId = session_id() . '_' . $this->oField->GetTransactionId();
|
$sTempId = utils::GetUploadTempId($this->oField->GetTransactionId());
|
||||||
$sUploadDropZoneLabel = Dict::S('Portal:Attachments:DropZone:Message');
|
$sUploadDropZoneLabel = Dict::S('Portal:Attachments:DropZone:Message');
|
||||||
|
|
||||||
// Starting field container
|
// Starting field container
|
||||||
|
|||||||
Reference in New Issue
Block a user