mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Plugin system enhancements (Custom user's settings tabs)
This commit is contained in:
parent
a3f28b09f6
commit
9a58fd0a66
13 changed files with 398 additions and 16 deletions
|
|
@ -176,7 +176,7 @@ abstract class AbstractPlugin
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $sName
|
||||
*
|
||||
|
|
@ -354,4 +354,67 @@ abstract class AbstractPlugin
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sName
|
||||
* @param string $sPlace
|
||||
* @param string $sHtml
|
||||
* @param bool $bPrepend = false
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
protected function ajaxResponse($sFunctionName, $aData)
|
||||
{
|
||||
if ($this->oPluginManager)
|
||||
{
|
||||
return $this->oPluginManager->AjaxResponseHelper(
|
||||
$this->oPluginManager->convertPluginFolderNameToClassName($this->Name()).'::'.$sFunctionName, $aData);
|
||||
}
|
||||
|
||||
return \json_encode($aData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sKey
|
||||
* @param mixed $mDefault = null
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function ajaxParam($sKey, $mDefault = null)
|
||||
{
|
||||
if ($this->oPluginManager)
|
||||
{
|
||||
return $this->oPluginManager->Actions()->GetActionParam($sKey, $mDefault);
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getUserSettings()
|
||||
{
|
||||
if ($this->oPluginManager)
|
||||
{
|
||||
return $this->oPluginManager->GetUserPluginSettings($this->Name());
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aSettings
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function saveUserSettings($aSettings)
|
||||
{
|
||||
if ($this->oPluginManager && \is_array($aSettings))
|
||||
{
|
||||
return $this->oPluginManager->SaveUserPluginSettings($this->Name(), $aSettings);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ class Manager
|
|||
*
|
||||
* @return string
|
||||
*/
|
||||
private function convertPluginFolderNameToClassName($sFolderName)
|
||||
public function convertPluginFolderNameToClassName($sFolderName)
|
||||
{
|
||||
$aParts = \array_map('ucfirst', \array_map('strtolower',
|
||||
\explode(' ', \preg_replace('/[^a-z0-9]+/', ' ', $sFolderName))));
|
||||
|
|
@ -515,19 +515,19 @@ class Manager
|
|||
|
||||
/**
|
||||
* @param string $sActionName
|
||||
* @param mixed $mCallbak
|
||||
* @param mixed $mCallback
|
||||
*
|
||||
* @return \RainLoop\Plugins\Manager
|
||||
*/
|
||||
public function AddAdditionalAjaxAction($sActionName, $mCallbak)
|
||||
public function AddAdditionalAjaxAction($sActionName, $mCallback)
|
||||
{
|
||||
if ($this->bIsEnabled && \is_callable($mCallbak) && 0 < \strlen($sActionName))
|
||||
if ($this->bIsEnabled && \is_callable($mCallback) && 0 < \strlen($sActionName))
|
||||
{
|
||||
$sActionName = 'Do'.$sActionName;
|
||||
$sActionName = 'DoPlugin'.$sActionName;
|
||||
|
||||
if (!isset($this->aAdditionalAjax[$sActionName]))
|
||||
{
|
||||
$this->aAdditionalAjax[$sActionName] = $mCallbak;
|
||||
$this->aAdditionalAjax[$sActionName] = $mCallback;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -562,6 +562,82 @@ class Manager
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sFunctionName
|
||||
* @param mixed $mData
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function AjaxResponseHelper($sFunctionName, $mData)
|
||||
{
|
||||
return $this->oActions->DefaultResponse($sFunctionName, $mData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sPluginName
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetUserPluginSettings($sPluginName)
|
||||
{
|
||||
$oAccount = $this->oActions->GetAccount();
|
||||
if ($oAccount)
|
||||
{
|
||||
$oSettings = $this->oActions->SettingsProvider()->Load($oAccount);
|
||||
if ($oSettings)
|
||||
{
|
||||
$aData = $oSettings->GetConf('Plugins', array());
|
||||
if (isset($aData[$sPluginName]) && \is_array($aData[$sPluginName]))
|
||||
{
|
||||
return $aData[$sPluginName];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sPluginName
|
||||
* @param array $aSettings
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function SaveUserPluginSettings($sPluginName, $aSettings)
|
||||
{
|
||||
$oAccount = $this->oActions->GetAccount();
|
||||
if ($oAccount && \is_array($aSettings))
|
||||
{
|
||||
$oSettings = $this->oActions->SettingsProvider()->Load($oAccount);
|
||||
if ($oSettings)
|
||||
{
|
||||
$aData = $oSettings->GetConf('Plugins', array());
|
||||
if (!\is_array($aData))
|
||||
{
|
||||
$aData = array();
|
||||
}
|
||||
|
||||
$aPluginSettings = array();
|
||||
if (isset($aData[$sPluginName]) && \is_array($aData[$sPluginName]))
|
||||
{
|
||||
$aPluginSettings = $aData[$sPluginName];
|
||||
}
|
||||
|
||||
foreach ($aSettings as $sKey => $mValue)
|
||||
{
|
||||
$aPluginSettings[$sKey] = $mValue;
|
||||
}
|
||||
|
||||
$aData[$sPluginName] = $aPluginSettings;
|
||||
$oSettings->SetConf('Plugins',$aData);
|
||||
|
||||
return $this->oActions->SettingsProvider()->Save($oAccount, $oSettings);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sLang
|
||||
* @param array $sActionName
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue