fix option default values
This commit is contained in:
348
inc/databap.php
348
inc/databap.php
@@ -238,7 +238,7 @@ class Databap extends PhpObject
|
|||||||
self::MSG_TABLE => array(MySqlManager::getId(self::USER_TABLE), 'nickname', MySqlManager::getId(self::CHAN_TABLE), MySqlManager::getText(self::MSG_TABLE), 'type', 'date'),
|
self::MSG_TABLE => array(MySqlManager::getId(self::USER_TABLE), 'nickname', MySqlManager::getId(self::CHAN_TABLE), MySqlManager::getText(self::MSG_TABLE), 'type', 'date'),
|
||||||
self::CHAN_TABLE => array('safe_name', MySqlManager::getText(self::CHAN_TABLE)),
|
self::CHAN_TABLE => array('safe_name', MySqlManager::getText(self::CHAN_TABLE)),
|
||||||
self::CONN_TABLE => array(MySqlManager::getId(self::USER_TABLE), MySqlManager::getId(self::CHAN_TABLE)),
|
self::CONN_TABLE => array(MySqlManager::getId(self::USER_TABLE), MySqlManager::getId(self::CHAN_TABLE)),
|
||||||
self::OPT_TABLE => array(MySqlManager::getId(self::USER_TABLE), MySqlManager::getId(self::OPTNAME_TABLE), MySqlManager::getId(self::OPTVAL_TABLE), MySqlManager::getText(self::OPT_TABLE)),
|
self::OPT_TABLE => array(MySqlManager::getId(self::USER_TABLE), MySqlManager::getId(self::OPTNAME_TABLE), MySqlManager::getId(self::OPTVAL_TABLE)),
|
||||||
self::OPTNAME_TABLE => array(MySqlManager::getText(self::OPTNAME_TABLE), 'type', 'language'),
|
self::OPTNAME_TABLE => array(MySqlManager::getText(self::OPTNAME_TABLE), 'type', 'language'),
|
||||||
self::OPTVAL_TABLE => array(MySqlManager::getId(self::OPTNAME_TABLE), MySqlManager::getText(self::OPTVAL_TABLE), 'default_value', 'language'),
|
self::OPTVAL_TABLE => array(MySqlManager::getId(self::OPTNAME_TABLE), MySqlManager::getText(self::OPTVAL_TABLE), 'default_value', 'language'),
|
||||||
self::PROC_TABLE => array(MySqlManager::getId(self::USER_TABLE), 'title', 'description', 'refer_id'),
|
self::PROC_TABLE => array(MySqlManager::getId(self::USER_TABLE), 'title', 'description', 'refer_id'),
|
||||||
@@ -271,9 +271,8 @@ class Databap extends PhpObject
|
|||||||
'type' => "varchar(2) NOT NULL",
|
'type' => "varchar(2) NOT NULL",
|
||||||
'safe_name' => "varchar(50) NOT NULL",
|
'safe_name' => "varchar(50) NOT NULL",
|
||||||
MySqlManager::getText(self::CHAN_TABLE) => "varchar(50) NOT NULL",
|
MySqlManager::getText(self::CHAN_TABLE) => "varchar(50) NOT NULL",
|
||||||
MySqlManager::getText(self::OPT_TABLE) => "varchar(100) NOT NULL",
|
|
||||||
MySqlManager::getText(self::OPTNAME_TABLE) => "varchar(100) NOT NULL",
|
MySqlManager::getText(self::OPTNAME_TABLE) => "varchar(100) NOT NULL",
|
||||||
MySqlManager::getText(self::OPTVAL_TABLE)=> "varchar(50) NOT NULL",
|
MySqlManager::getText(self::OPTVAL_TABLE)=> "varchar(100) NOT NULL",
|
||||||
'language' => "varchar(2) NOT NULL",
|
'language' => "varchar(2) NOT NULL",
|
||||||
'file_name' => "varchar(40) NOT NULL",
|
'file_name' => "varchar(40) NOT NULL",
|
||||||
'preview_name' => "varchar(40) NOT NULL",
|
'preview_name' => "varchar(40) NOT NULL",
|
||||||
@@ -367,12 +366,14 @@ class Databap extends PhpObject
|
|||||||
|
|
||||||
//Select and Default Option values
|
//Select and Default Option values
|
||||||
$asDefaultValues = array( self::OPT_CONSOLE=>array(self::OPT_VAL_YES=>false, self::OPT_VAL_NO=>true),
|
$asDefaultValues = array( self::OPT_CONSOLE=>array(self::OPT_VAL_YES=>false, self::OPT_VAL_NO=>true),
|
||||||
|
self::OPT_NICKNAME=>array('Utilisateur inconnu'=>true),
|
||||||
self::OPT_BG=>array('#04357B'=>true),
|
self::OPT_BG=>array('#04357B'=>true),
|
||||||
self::OPT_BG_2=>array('#88B2F0'=>true),
|
self::OPT_BG_2=>array('#88B2F0'=>true),
|
||||||
self::OPT_BG_3=>array('#D9E5F2'=>true),
|
self::OPT_BG_3=>array('#D9E5F2'=>true),
|
||||||
self::OPT_HOVER=>array('#EFAB00'=>true),
|
self::OPT_HOVER=>array('#EFAB00'=>true),
|
||||||
self::OPT_IMAGE_CHAT=>array('images/sap_gold_332.jpg'=>true),
|
self::OPT_IMAGE_CHAT=>array('images/sap_gold_332.jpg'=>true),
|
||||||
self::OPT_STATUS=>array('aucune mission en cours'=>true),
|
self::OPT_STATUS=>array('aucune mission en cours'=>true),
|
||||||
|
self::OPT_EMAIL=>array('email inconnu'=>true),
|
||||||
self::OPT_CHAT_HISTO=>array('0'=>true));
|
self::OPT_CHAT_HISTO=>array('0'=>true));
|
||||||
foreach($asDefaultValues as $sOptionNameId=>$asOptionValues)
|
foreach($asDefaultValues as $sOptionNameId=>$asOptionValues)
|
||||||
{
|
{
|
||||||
@@ -762,7 +763,6 @@ class Databap extends PhpObject
|
|||||||
//Checking company existency in company table
|
//Checking company existency in company table
|
||||||
$sCompanyTextCol = MySqlManager::getText(self::COMP_TABLE);
|
$sCompanyTextCol = MySqlManager::getText(self::COMP_TABLE);
|
||||||
$iCompanyId = $this->oMySql->selectInsert(self::COMP_TABLE, array($sCompanyTextCol=>$sCompany, 'logo'=>self::DEFAULT_COMPANY_LOGO), array($sCompanyTextCol));
|
$iCompanyId = $this->oMySql->selectInsert(self::COMP_TABLE, array($sCompanyTextCol=>$sCompany, 'logo'=>self::DEFAULT_COMPANY_LOGO), array($sCompanyTextCol));
|
||||||
|
|
||||||
$asInfo = array('first_name'=>$sFirstName,
|
$asInfo = array('first_name'=>$sFirstName,
|
||||||
'last_name'=>$sLastName,
|
'last_name'=>$sLastName,
|
||||||
'active'=>self::MEMBER_ACTIVE,
|
'active'=>self::MEMBER_ACTIVE,
|
||||||
@@ -772,13 +772,17 @@ class Databap extends PhpObject
|
|||||||
'led'=>'0000-00-00 00:00:00');
|
'led'=>'0000-00-00 00:00:00');
|
||||||
$iUserId = $this->oMySql->insertRow(self::USER_TABLE, $asInfo);
|
$iUserId = $this->oMySql->insertRow(self::USER_TABLE, $asInfo);
|
||||||
|
|
||||||
//Admin Options
|
//Options & default values
|
||||||
$sOptionTable = self::OPT_TABLE;
|
$this->setOptions(array(self::OPT_NICKNAME=>self::getNickNameFormat($sFirstName), self::OPT_EMAIL=>$sEmail), true, $iUserId);
|
||||||
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
|
||||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
$asInfo = array('select' => array($sOptNameIdCol, $sOptValueTextCol),
|
||||||
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
|
'from' => self::OPTVAL_TABLE,
|
||||||
$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_NICKNAME, $sOptionTextCol=>self::getNickNameFormat($sFirstName)));
|
'constraint'=> array('default_value'=>true, $sOptNameIdCol => "(".implode(", ", $oOptionNameIds).")"),
|
||||||
$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_EMAIL, $sOptionTextCol=>$sEmail));
|
'constOpe' => array('default_value'=>"=", $sOptNameIdCol=>" IN "),
|
||||||
|
'constVar' => true);
|
||||||
|
|
||||||
|
//Spread the word
|
||||||
|
$this->addMessage('Nouvel utilisateur: '.self::getNameFormat($sFirstName, $sLastName).' !', self::MESSAGE_NEWS, self::DEFAULT_CHAN_ID);
|
||||||
|
|
||||||
return $iUserId;
|
return $iUserId;
|
||||||
}
|
}
|
||||||
@@ -1284,102 +1288,30 @@ class Databap extends PhpObject
|
|||||||
{
|
{
|
||||||
return ($this->getUserClearance() >= $iClearance);
|
return ($this->getUserClearance() >= $iClearance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getOptions()
|
/* Options Management */
|
||||||
|
//TODO Create class
|
||||||
|
|
||||||
|
//TODO delete
|
||||||
|
public function migrateOptionValues()
|
||||||
{
|
{
|
||||||
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
$sResult = 'ok';
|
||||||
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
|
$asInfo = array('select' => array('id_option', 'id_option_name', 'option'),
|
||||||
$sOptNameTextCol = MySqlManager::getText(self::OPTNAME_TABLE);
|
'from' => self::OPT_TABLE,
|
||||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
'constraint'=> array('id_option_value'=>'NULL'),
|
||||||
|
'constOpe' => array('id_option_value'=>" IS "),
|
||||||
//Available Options
|
'constVar' => true);
|
||||||
$asAvailableOptions = $this->getAvailableOptions();
|
$asOptions = $this->oMySql->selectRows($asInfo, true, 'id_option');
|
||||||
|
|
||||||
//User options
|
foreach($asOptions as $iOptionId=>$asOption)
|
||||||
$asUserOptions = $this->getUserOptions();
|
|
||||||
|
|
||||||
//Build Options panel
|
|
||||||
$asSelectedOptions = array();
|
|
||||||
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
|
||||||
{
|
{
|
||||||
$sOptionName = self::getDescriptionFormat($asOption[$sOptNameTextCol]);
|
$iOptionValueId = $this->oMySql->insertRow(self::OPTVAL_TABLE, array('id_option_name'=>$asOption['id_option_name'], 'option_value'=>$asOption['option'], 'language'=>self::LANG_FR));
|
||||||
$asSelectedOptions[$sOptionName]['option_id'] = $sOptNameId;
|
if($iOptionValueId>0) $this->oMySql->updateRow(self::OPT_TABLE, $iOptionId, array('id_option_value'=>$iOptionValueId));
|
||||||
$asSelectedOptions[$sOptionName]['option_name'] = $sOptionName;
|
else $sResult = 'ko';
|
||||||
$asSelectedOptions[$sOptionName]['user_value_id'] = array_key_exists($sOptNameId, $asUserOptions)?$asUserOptions[$sOptNameId][$sOptValueIdCol]:0;
|
|
||||||
$asSelectedOptions[$sOptionName]['user_value'] = array_key_exists($sOptNameId, $asUserOptions)?$asUserOptions[$sOptNameId][$sOptionTextCol]:'';
|
|
||||||
$asSelectedOptions[$sOptionName]['type'] = $asOption['type'];
|
|
||||||
if($asOption['type']==self::OPT_SELECT)
|
|
||||||
{
|
|
||||||
$asOptionValuesInfo = array('select'=>array($sOptValueIdCol, $sOptValueTextCol),
|
|
||||||
'from'=>self::OPTVAL_TABLE,
|
|
||||||
'constraint'=>array('language'=>$this->sLanguage,
|
|
||||||
MySqlManager::getId(self::OPTNAME_TABLE)=>$sOptNameId),
|
|
||||||
'orderBy'=>array('led'=>'ASC'));
|
|
||||||
$asSelectedOptions[$sOptionName]['select'] = $this->oMySql->selectRows($asOptionValuesInfo, true, $sOptValueIdCol);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ksort($asSelectedOptions);
|
return $sResult;
|
||||||
return $this->jsonExport($asSelectedOptions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setOptions($asUserOptions, $bSilentUpdate=true)
|
|
||||||
{
|
|
||||||
$asAvailableOptions = $this->getAvailableOptions();
|
|
||||||
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
|
||||||
{
|
|
||||||
if(array_key_exists($sOptNameId, $asUserOptions))
|
|
||||||
{
|
|
||||||
switch($asOption['type'])
|
|
||||||
{
|
|
||||||
case self::OPT_SELECT: //insert id of option value table
|
|
||||||
$sUpdateCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
|
||||||
break;
|
|
||||||
case self::OPT_TEXT: //insert value
|
|
||||||
$sUpdateCol = MySqlManager::getText(self::OPT_TABLE);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
continue 2;
|
|
||||||
}
|
|
||||||
$sNewValue = $asUserOptions[$sOptNameId];
|
|
||||||
|
|
||||||
//Check identical data
|
|
||||||
$asKeys = array(MySqlManager::getId(self::USER_TABLE)=>$this->getUserId(), MySqlManager::getId(self::OPTNAME_TABLE)=>$sOptNameId);
|
|
||||||
$asData = array($sUpdateCol=>$sNewValue) + $asKeys;
|
|
||||||
$sOldValue = $this->oMySql->selectValue(self::OPT_TABLE, $sUpdateCol, $asKeys);
|
|
||||||
|
|
||||||
//Update value
|
|
||||||
if($sOldValue!=$sNewValue)
|
|
||||||
{
|
|
||||||
//Update value
|
|
||||||
$this->oMySql->insertUpdateRow(self::OPT_TABLE, $asData, array_keys($asKeys));
|
|
||||||
|
|
||||||
//Spread the word
|
|
||||||
if(!$bSilentUpdate)
|
|
||||||
{
|
|
||||||
//TODO rassembler les messages similaires dans une fonction de template
|
|
||||||
switch($sOptNameId)
|
|
||||||
{
|
|
||||||
case self::OPT_NICKNAME:
|
|
||||||
$sType = self::MESSAGE_NICK;
|
|
||||||
$sChanName = self::DEFAULT_CHAN;
|
|
||||||
$sMessage = $sOldValue.' a changé son pseudo en '.$sNewValue;
|
|
||||||
break;
|
|
||||||
case self::OPT_STATUS:
|
|
||||||
$sType = self::MESSAGE_STATUS;
|
|
||||||
$sChanName = self::DEFAULT_CHAN;
|
|
||||||
$sMessage = 'est sur une nouvelle mission : '.$this->getDescriptionFormat($sNewValue);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
continue 2;
|
|
||||||
}
|
|
||||||
$sChanId = $this->getChanId($sChanName);
|
|
||||||
$this->addMessage($sMessage, $sType, $sChanId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getAvailableOptions()
|
private function getAvailableOptions()
|
||||||
{
|
{
|
||||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||||
@@ -1402,7 +1334,9 @@ class Databap extends PhpObject
|
|||||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||||
$sOptValIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
$sOptValIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||||
|
|
||||||
if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
|
if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
|
||||||
|
elseif(empty($oOptionNameIds)) $oOptionNameIds = array_keys($this->getAvailableOptions());
|
||||||
|
|
||||||
$asInfo = array('select' => array($sOptNameIdCol, $sOptValueTextCol),
|
$asInfo = array('select' => array($sOptNameIdCol, $sOptValueTextCol),
|
||||||
'from' => self::OPTVAL_TABLE,
|
'from' => self::OPTVAL_TABLE,
|
||||||
@@ -1417,44 +1351,161 @@ class Databap extends PhpObject
|
|||||||
{
|
{
|
||||||
$asUserOptions = $this->getUserOptions($sOptionNameId, $iUserId);
|
$asUserOptions = $this->getUserOptions($sOptionNameId, $iUserId);
|
||||||
$asOptionInfo = array_shift($asUserOptions);
|
$asOptionInfo = array_shift($asUserOptions);
|
||||||
return $asOptionInfo[MySqlManager::getText(self::OPT_TABLE)];
|
return $asOptionInfo[MySqlManager::getText(self::OPTVAL_TABLE)];
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getUserOptions($oOptionNameIds=array(), $iUserId=0)
|
private function getUserOptions($oOptionNameIds=array(), $iUserId=0)
|
||||||
{
|
{
|
||||||
$iUserId = $iUserId>0?$iUserId:$this->getUserId();
|
$iUserId = $iUserId>0?$iUserId:$this->getUserId();
|
||||||
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||||
|
$sOptNameIdColOptTable = MySqlManager::getFullColumnName(self::OPT_TABLE, $sOptNameIdCol);
|
||||||
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||||
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
|
$sOptValueIdColOptTable = MySqlManager::getFullColumnName(self::OPT_TABLE, $sOptValueIdCol);
|
||||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||||
|
$sOptIdCol = MySqlManager::getId(self::OPT_TABLE);
|
||||||
|
|
||||||
if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
|
if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
|
||||||
elseif(empty($oOptionNameIds)) $oOptionNameIds = array_keys($this->getAvailableOptions());
|
elseif(empty($oOptionNameIds)) $oOptionNameIds = array_keys($this->getAvailableOptions());
|
||||||
|
|
||||||
$asUserinfo = array('select' => array($sOptNameIdCol, $sOptValueIdCol, $sOptionTextCol),
|
$asUserinfo = array('select' => array($sOptIdCol, $sOptNameIdColOptTable, $sOptValueIdColOptTable, $sOptValueTextCol),
|
||||||
'from' => self::OPT_TABLE,
|
'from' => self::OPT_TABLE,
|
||||||
'constraint'=> array($sUserIdCol=>$iUserId, $sOptNameIdCol => "(".implode(", ", $oOptionNameIds).")"),
|
'join' => array(self::OPTVAL_TABLE=>MySqlManager::getId(self::OPTVAL_TABLE)),
|
||||||
'constOpe' => array($sUserIdCol=>"=", $sOptNameIdCol=>" IN "),
|
'constraint'=> array($sUserIdCol=>$iUserId, $sOptNameIdColOptTable => "(".implode(", ", $oOptionNameIds).")"),
|
||||||
|
'constOpe' => array($sUserIdCol=>"=", $sOptNameIdColOptTable => " IN "),
|
||||||
'constVar' => true);
|
'constVar' => true);
|
||||||
$asOptions = $this->oMySql->selectRows($asUserinfo, true, $sOptNameIdCol);
|
$asOptions = $this->oMySql->selectRows($asUserinfo, true, $sOptNameIdCol);
|
||||||
foreach($oOptionNameIds as $iOptionId)
|
|
||||||
|
//No user value: adding default value to user values
|
||||||
|
$asDefaultOptions = $this->getDefaultOptionValues();
|
||||||
|
foreach($oOptionNameIds as $iOptionNameId)
|
||||||
{
|
{
|
||||||
$sNewValue = '';
|
if(!array_key_exists($iOptionNameId, $asOptions)) $asOptions[$iOptionNameId] = $asDefaultOptions[$iOptionNameId];
|
||||||
//Default value
|
|
||||||
if(!array_key_exists($iOptionId, $asOptions) || $asOptions[$iOptionId][$sOptValueIdCol]=='' && $asOptions[$iOptionId][$sOptionTextCol]=='')
|
|
||||||
{
|
|
||||||
$asDefaultOption = $this->getDefaultOptionValues($iOptionId);
|
|
||||||
$asOptions[$iOptionId][$sOptValueIdCol] = $asDefaultOption[$iOptionId][$sOptValueIdCol];
|
|
||||||
$asOptions[$iOptionId][$sOptionTextCol] = $asDefaultOption[$iOptionId][$sOptValueTextCol];
|
|
||||||
}
|
|
||||||
//Text value
|
|
||||||
elseif(!$asOptions[$iOptionId][$sOptValueIdCol]) $asOptions[$iOptionId][$sOptValueIdCol] = $asOptions[$iOptionId][$sOptionTextCol];
|
|
||||||
//Select value
|
|
||||||
else $asOptions[$iOptionId][$sOptionTextCol] = $this->oMySql->selectValue(self::OPTVAL_TABLE, $sOptValueTextCol, $asOptions[$iOptionId][$sOptValueIdCol]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $asOptions;
|
return $asOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getOptions()
|
||||||
|
{
|
||||||
|
$sOptNameTextCol = MySqlManager::getText(self::OPTNAME_TABLE);
|
||||||
|
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||||
|
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||||
|
|
||||||
|
//Available Options
|
||||||
|
$asAvailableOptions = $this->getAvailableOptions();
|
||||||
|
|
||||||
|
//User options
|
||||||
|
$asUserOptions = $this->getUserOptions();
|
||||||
|
|
||||||
|
//Build Options panel
|
||||||
|
$asSelectedOptions = array();
|
||||||
|
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
||||||
|
{
|
||||||
|
$sOptionName = self::getDescriptionFormat($asOption[$sOptNameTextCol]);
|
||||||
|
$asSelectedOptions[$sOptionName]['option_id'] = $sOptNameId;
|
||||||
|
$asSelectedOptions[$sOptionName]['option_name'] = $sOptionName;
|
||||||
|
$asSelectedOptions[$sOptionName]['user_value_id'] = $asUserOptions[$sOptNameId][$sOptValueIdCol];
|
||||||
|
$asSelectedOptions[$sOptionName]['user_value'] = $asUserOptions[$sOptNameId][$sOptValueTextCol];
|
||||||
|
$asSelectedOptions[$sOptionName]['type'] = $asOption['type'];
|
||||||
|
if($asOption['type']==self::OPT_SELECT)
|
||||||
|
{
|
||||||
|
$asOptionValuesInfo = array('select'=>array($sOptValueIdCol, $sOptValueTextCol),
|
||||||
|
'from'=>self::OPTVAL_TABLE,
|
||||||
|
'constraint'=>array('language'=>$this->sLanguage, MySqlManager::getId(self::OPTNAME_TABLE)=>$sOptNameId),
|
||||||
|
'orderBy'=>array('led'=>'ASC'));
|
||||||
|
$asSelectedOptions[$sOptionName]['select'] = $this->oMySql->selectRows($asOptionValuesInfo, true, $sOptValueIdCol);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ksort($asSelectedOptions);
|
||||||
|
return $this->jsonExport($asSelectedOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOptions($asNewOptions, $bSilentUpdate=true, $iUserId=0)
|
||||||
|
{
|
||||||
|
$sOptIdCol = MySqlManager::getId(self::OPT_TABLE);
|
||||||
|
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||||
|
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||||
|
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||||
|
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||||
|
|
||||||
|
$iUserId = ($iUserId>0)?$iUserId:$this->getUserId();
|
||||||
|
$asAvailableOptions = $this->getAvailableOptions();
|
||||||
|
$asUserOptions = $this->getUserOptions(array_keys($asAvailableOptions), $iUserId);
|
||||||
|
$asDefaultOptions = $this->getDefaultOptionValues(array_keys($asAvailableOptions));
|
||||||
|
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
||||||
|
{
|
||||||
|
if(array_key_exists($sOptNameId, $asNewOptions))
|
||||||
|
{
|
||||||
|
$sUserValue = $asUserOptions[$sOptNameId][$sOptValueTextCol];
|
||||||
|
$sUserValueId = $asUserOptions[$sOptNameId][$sOptValueIdCol];
|
||||||
|
$sUserOptId = array_key_exists($sOptIdCol, $asUserOptions[$sOptNameId])?$asUserOptions[$sOptNameId][$sOptIdCol]:0;
|
||||||
|
$sDefaultValue = $asDefaultOptions[$sOptNameId][$sOptValueTextCol];
|
||||||
|
$sDefaultValueId = $asDefaultOptions[$sOptNameId][$sOptValueIdCol];
|
||||||
|
if(!$sDefaultValueId) $this->addError('Missing option default value for option id='.$sOptNameId);
|
||||||
|
switch($asOption['type'])
|
||||||
|
{
|
||||||
|
case self::OPT_SELECT:
|
||||||
|
$sNewValueId = $asNewOptions[$sOptNameId];
|
||||||
|
$sNewValue = $this->oMySql->selectValue(self::OPTVAL_TABLE, $sOptValueTextCol, $sNewValueId);
|
||||||
|
break;
|
||||||
|
case self::OPT_TEXT:
|
||||||
|
$sNewValue = $asNewOptions[$sOptNameId];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update text
|
||||||
|
if($sNewValue!=$sUserValue)
|
||||||
|
{
|
||||||
|
//Clear user values if exist (back to default)
|
||||||
|
if(($sNewValue=='' || $sNewValue==$sDefaultValue) && $sUserOptId>0)
|
||||||
|
{
|
||||||
|
$this->oMySql->deleteRow(self::OPT_TABLE, $sUserOptId);
|
||||||
|
if($asOption['type']==self::OPT_TEXT) $this->oMySql->deleteRow(self::OPTVAL_TABLE, $sUserValueId);
|
||||||
|
}
|
||||||
|
//New or updated value
|
||||||
|
elseif($sNewValue!=$sDefaultValue)
|
||||||
|
{
|
||||||
|
//Update option values table
|
||||||
|
if($asOption['type']==self::OPT_TEXT)
|
||||||
|
{
|
||||||
|
$asData = array($sOptNameIdCol=>$sOptNameId, $sOptValueTextCol=>$sNewValue, 'language'=>self::LANG_FR);
|
||||||
|
if($sUserValueId==$sDefaultValueId) $sNewValueId = $this->oMySql->insertRow(self::OPTVAL_TABLE, $asData);
|
||||||
|
else $sNewValueId = $this->oMySql->updateRow(self::OPTVAL_TABLE, $sUserValueId, array($sOptValueTextCol=>$sNewValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update option table
|
||||||
|
$asKeys = array($sUserIdCol=>$iUserId, $sOptNameIdCol=>$sOptNameId);
|
||||||
|
$asData = array($sOptValueIdCol=>$sNewValueId) + $asKeys;
|
||||||
|
$this->oMySql->insertUpdateRow(self::OPT_TABLE, $asData, array_keys($asKeys));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Spread the word
|
||||||
|
if(!$bSilentUpdate)
|
||||||
|
{
|
||||||
|
//TODO rassembler les messages similaires dans une fonction de template
|
||||||
|
switch($sOptNameId)
|
||||||
|
{
|
||||||
|
case self::OPT_NICKNAME:
|
||||||
|
$sType = self::MESSAGE_NICK;
|
||||||
|
$sChanName = self::DEFAULT_CHAN;
|
||||||
|
$sMessage = $sUserValue.' a changé son pseudo en '.$sNewValue;
|
||||||
|
break;
|
||||||
|
case self::OPT_STATUS:
|
||||||
|
$sType = self::MESSAGE_STATUS;
|
||||||
|
$sChanName = self::DEFAULT_CHAN;
|
||||||
|
$sMessage = 'est sur une nouvelle mission : '.$this->getDescriptionFormat($sNewValue);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
$sChanId = $this->getChanId($sChanName);
|
||||||
|
$this->addMessage($sMessage, $sType, $sChanId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function getProfile($oUser)
|
public function getProfile($oUser)
|
||||||
{
|
{
|
||||||
@@ -1466,10 +1517,6 @@ class Databap extends PhpObject
|
|||||||
case is_numeric($oUser):
|
case is_numeric($oUser):
|
||||||
$iUserId = $oUser;
|
$iUserId = $oUser;
|
||||||
break;
|
break;
|
||||||
case is_string($oUser):
|
|
||||||
$oRes = $this->oMySql->selectValue(self::OPT_TABLE, MySqlManager::getId(self::USER_TABLE), array('option'=>mb_strtolower($oUser), MySqlManager::getId(self::OPTNAME_TABLE)=>self::OPT_NICKNAME));
|
|
||||||
$iUserId = !$oRes?$this->getUserId():$oRes;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
$iUserId = $this->getUserId();
|
$iUserId = $this->getUserId();
|
||||||
break;
|
break;
|
||||||
@@ -2134,39 +2181,38 @@ class Databap extends PhpObject
|
|||||||
public function getConnectedUsers($bUserRestricted=false, $bJson=true)
|
public function getConnectedUsers($bUserRestricted=false, $bJson=true)
|
||||||
{
|
{
|
||||||
$sQuery = " SELECT /* config.php 1313 */ conn2.id_channel, conn2.id_user, conn2.led, IF(DATE_SUB(NOW(), INTERVAL 1 MINUTE) < conn2.led, 0, 1) AS afk,
|
$sQuery = " SELECT /* config.php 1313 */ conn2.id_channel, conn2.id_user, conn2.led, IF(DATE_SUB(NOW(), INTERVAL 1 MINUTE) < conn2.led, 0, 1) AS afk,
|
||||||
users.first_name, users.last_name, companies.company, companies.logo, option_nickname.option AS nickname, option_status.option AS status
|
users.first_name, users.last_name, companies.company, companies.logo
|
||||||
FROM connections AS conn1
|
FROM connections AS conn1
|
||||||
LEFT JOIN connections AS conn2 ON conn2.id_channel = conn1.id_channel
|
LEFT JOIN connections AS conn2 ON conn2.id_channel = conn1.id_channel
|
||||||
LEFT JOIN users ON users.id_user = conn2.id_user
|
LEFT JOIN users ON users.id_user = conn2.id_user
|
||||||
LEFT JOIN companies ON companies.id_company = users.id_company
|
LEFT JOIN companies ON companies.id_company = users.id_company
|
||||||
LEFT JOIN `options` AS option_nickname ON option_nickname.id_user = users.id_user AND option_nickname.id_option_name = ".self::OPT_NICKNAME."
|
|
||||||
LEFT JOIN `options` AS option_status ON option_status.id_user = users.id_user AND option_status.id_option_name = ".self::OPT_STATUS."
|
|
||||||
WHERE conn2.led > DATE_SUB(NOW(), INTERVAL ".self::KEEP_ALIVE." SECOND)".
|
WHERE conn2.led > DATE_SUB(NOW(), INTERVAL ".self::KEEP_ALIVE." SECOND)".
|
||||||
($bUserRestricted?"AND conn1.id_user = ".$this->getUserId():"")."
|
($bUserRestricted?"AND conn1.id_user = ".$this->getUserId():"")."
|
||||||
GROUP BY conn2.id_channel, conn2.id_user
|
GROUP BY conn2.id_channel, conn2.id_user";
|
||||||
ORDER BY option_nickname.option ASC";
|
|
||||||
$asUserChannels = $this->oMySql->getArrayQuery($sQuery, true);
|
$asUserChannels = $this->oMySql->getArrayQuery($sQuery, true);
|
||||||
|
|
||||||
//Last messages
|
//Last messages
|
||||||
$iUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
$iUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||||
$asLastMsg = $this->oMySql->selectRows(array('select'=>array($iUserIdCol, 'MAX(led)'), 'from'=>self::MSG_TABLE), true, $iUserIdCol);
|
$asLastMsg = $this->oMySql->selectRows(array('select'=>array($iUserIdCol, 'MAX(led)'), 'from'=>self::MSG_TABLE), true, $iUserIdCol);
|
||||||
|
|
||||||
$asConnectedUsers = array();
|
$asConnectedUsers = $asUserOptions = array();
|
||||||
foreach($asUserChannels as $asUser)
|
foreach($asUserChannels as $asUser)
|
||||||
{
|
{
|
||||||
$sChanId = $asUser[MySqlManager::getId(self::CHAN_TABLE)];
|
$sChanId = $asUser[MySqlManager::getId(self::CHAN_TABLE)];
|
||||||
$iUserId = $asUser[$iUserIdCol];
|
$iUserId = $asUser[$iUserIdCol];
|
||||||
$sNickName = $asUser['nickname'];
|
if(!array_key_exists($iUserId, $asUserOptions)) $asUserOptions[$iUserId] = $this->getUserOptions(array(self::OPT_NICKNAME, self::OPT_STATUS));
|
||||||
|
$sNickName = self::getNickNameFormat($asUserOptions[$iUserId][self::OPT_NICKNAME][MySqlManager::getText(self::OPTVAL_TABLE)]);
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['id_user'] = $iUserId;
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['id_user'] = $iUserId;
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['name'] = self::getNameFormat($asUser['first_name'], $asUser['last_name']);
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['name'] = self::getNameFormat($asUser['first_name'], $asUser['last_name']);
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['company'] = self::getCompanyFormat($asUser['company']);
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['company'] = self::getCompanyFormat($asUser['company']);
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['status'] = $asUser['status'];
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['status'] = $asUserOptions[$iUserId][self::OPT_STATUS][MySqlManager::getText(self::OPTVAL_TABLE)];
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['logo'] = $asUser['logo'];
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['logo'] = $asUser['logo'];
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['nickname'] = self::getNickNameFormat($sNickName==''?$asUser['first_name']:$sNickName);
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['nickname'] = $sNickName;
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['last_activity'] = array_key_exists($iUserId, $asLastMsg)?self::getDateFormat($asLastMsg[$iUserId], self::TIME_FORMAT):'';
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['last_activity'] = array_key_exists($iUserId, $asLastMsg)?self::getDateFormat($asLastMsg[$iUserId], self::TIME_FORMAT):'';
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['ping'] = self::getDateFormat($asUser['led'], self::TIME_FORMAT);
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['ping'] = self::getDateFormat($asUser['led'], self::TIME_FORMAT);
|
||||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['afk'] = $asUser['afk'];
|
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['afk'] = $asUser['afk'];
|
||||||
}
|
}
|
||||||
|
|
||||||
return $bJson?$this->jsonExport($asConnectedUsers):$asConnectedUsers;
|
return $bJson?$this->jsonExport($asConnectedUsers):$asConnectedUsers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2180,21 +2226,16 @@ class Databap extends PhpObject
|
|||||||
private function getChatNickNames($iUserId=0)
|
private function getChatNickNames($iUserId=0)
|
||||||
{
|
{
|
||||||
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||||
$sNicknameCol = MySqlManager::getText(self::OPT_TABLE);
|
$sNicknameCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||||
$asConstraints = array(MySqlManager::getId(self::OPTNAME_TABLE)=>self::OPT_NICKNAME);
|
$sOptionNameId = MySqlManager::getFullColumnName(self::OPT_TABLE, MySqlManager::getId(self::OPTNAME_TABLE));
|
||||||
|
|
||||||
if($iUserId>0)
|
$asInfo = array('select'=>array($sUserIdCol, $sNicknameCol),
|
||||||
{
|
'from'=>self::OPT_TABLE,
|
||||||
$asConstraints[MySqlManager::getId(self::USER_TABLE)] = $iUserId;
|
'join'=> array(self::OPTVAL_TABLE=>MySqlManager::getId(self::OPTVAL_TABLE)),
|
||||||
$oResult = $this->oMySql->selectValue(self::OPT_TABLE, $sNicknameCol, $asConstraints);
|
'constraint'=>array($sOptionNameId=>self::OPT_NICKNAME));
|
||||||
}
|
if($iUserId>0) $asInfo['constraint'][MySqlManager::getId(self::USER_TABLE)] = $iUserId;
|
||||||
else
|
$oResult = $this->oMySql->selectRows($asInfo, true, $sUserIdCol);
|
||||||
{
|
if(count($oResult)==1) return $oResult[$iUserId];
|
||||||
$asInfo = array('select'=>array($sUserIdCol, $sNicknameCol),
|
|
||||||
'from'=>self::OPT_TABLE,
|
|
||||||
'constraint'=>$asConstraints);
|
|
||||||
$oResult = $this->oMySql->selectRows($asInfo, true, $sUserIdCol);
|
|
||||||
}
|
|
||||||
return $oResult;
|
return $oResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2686,8 +2727,7 @@ class Databap extends PhpObject
|
|||||||
$asOptionvalues = $this->getUserOptions($asStyleParams);
|
$asOptionvalues = $this->getUserOptions($asStyleParams);
|
||||||
foreach($asColorAnchors as $iOptionNameId=>$sColorAnchor)
|
foreach($asColorAnchors as $iOptionNameId=>$sColorAnchor)
|
||||||
{
|
{
|
||||||
$sOptionValue = (array_key_exists($iOptionNameId, $asOptionvalues) && $asOptionvalues[$iOptionNameId]['option']!='')?$asOptionvalues[$iOptionNameId]['option']:$asDefaultValues[$iOptionNameId];
|
$sStyle = str_replace($sColorAnchor, $asOptionvalues[$iOptionNameId][MySqlManager::getText(self::OPTVAL_TABLE)], $sStyle);
|
||||||
$sStyle = str_replace($sColorAnchor, $sOptionValue, $sStyle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//setting header content type
|
//setting header content type
|
||||||
|
|||||||
@@ -149,13 +149,16 @@ class Procedure extends PhpObject
|
|||||||
$iDbStepId = $this->oMySql->insertRow(Databap::STEP_TABLE, $asStepData);
|
$iDbStepId = $this->oMySql->insertRow(Databap::STEP_TABLE, $asStepData);
|
||||||
|
|
||||||
//Add new images
|
//Add new images
|
||||||
$asImgData[MySqlManager::getId(Databap::STEP_TABLE)] = $iDbStepId;
|
if(array_key_exists($iStepId, $this->asImages))
|
||||||
foreach($this->asImages[$iStepId] as $asImageInfo)
|
|
||||||
{
|
{
|
||||||
$asImgData['description'] = $asImageInfo['desc'];
|
$asImgData[MySqlManager::getId(Databap::STEP_TABLE)] = $iDbStepId;
|
||||||
$asImgData['file_name'] = $asImageInfo['name'];
|
foreach($this->asImages[$iStepId] as $asImageInfo)
|
||||||
$iDbImageId = $this->oMySql->insertRow(Databap::IMG_TABLE, $asImgData);
|
{
|
||||||
$this->saveImage($asImgData['file_name']);
|
$asImgData['description'] = $asImageInfo['desc'];
|
||||||
|
$asImgData['file_name'] = $asImageInfo['name'];
|
||||||
|
$iDbImageId = $this->oMySql->insertRow(Databap::IMG_TABLE, $asImgData);
|
||||||
|
$this->saveImage($asImgData['file_name']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -206,6 +206,9 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS)
|
|||||||
case 'reset_chan_safe_names':
|
case 'reset_chan_safe_names':
|
||||||
$sResult = $oDatabap->resetChanSafeNames();
|
$sResult = $oDatabap->resetChanSafeNames();
|
||||||
break;
|
break;
|
||||||
|
case 'migrate':
|
||||||
|
$sResult = $oDatabap->migrateOptionValues();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -260,5 +263,4 @@ $sDebug = ob_get_clean();
|
|||||||
if(Settings::DEBUG && $sDebug!='') $oDatabap->addUncaughtError($sDebug);
|
if(Settings::DEBUG && $sDebug!='') $oDatabap->addUncaughtError($sDebug);
|
||||||
|
|
||||||
echo $sResult;
|
echo $sResult;
|
||||||
//echo json_encode($sDebug);
|
|
||||||
?>
|
?>
|
||||||
2
jquery/databap.js
vendored
2
jquery/databap.js
vendored
@@ -347,7 +347,7 @@ function Databap()
|
|||||||
{
|
{
|
||||||
iDelta = $Elem.getEmptyHeight();
|
iDelta = $Elem.getEmptyHeight();
|
||||||
if(iDelta > 0) $Elem.height('-='+iDelta);
|
if(iDelta > 0) $Elem.height('-='+iDelta);
|
||||||
debug('Removing useless '+iDelta+'px from #'+$Elem.attr('id'));
|
//debug('Removing useless '+iDelta+'px from #'+$Elem.attr('id'));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ databap.pageInit = function()
|
|||||||
sp_fixes: [ ],
|
sp_fixes: [ ],
|
||||||
ehp_improvements: [ 'Possibilité d\'accéder à tous les messags non lus, mêmes plus anciens qu\'une journée. cf. <a href="#options">#options</a>',
|
ehp_improvements: [ 'Possibilité d\'accéder à tous les messags non lus, mêmes plus anciens qu\'une journée. cf. <a href="#options">#options</a>',
|
||||||
'Nouveau design',
|
'Nouveau design',
|
||||||
'Ajout des notes sans authentification : #note-<num>',
|
'Lecture de notes SAP (sans authentification) : #note-<num>',
|
||||||
'Annonceurs: Commande /news X : Vous annoncez le message X (votre message est ajouté à la liste des news automatiquement)',
|
'Annonceurs: Commande /news X : Vous annoncez le message X (votre message est ajouté à la liste des news automatiquement)',
|
||||||
'Les valeurs par default des options sont maintenant écrites',
|
'Les valeurs par default des options sont maintenant écrites',
|
||||||
'Le blog <a href="http://scn.sap.com/community/bw-hana/blog" target="_blank">SAP BW on HANA</a> a été ajouté à la liste des blogs parsés',
|
'Le blog <a href="http://scn.sap.com/community/bw-hana/blog" target="_blank">SAP BW on HANA</a> a été ajouté à la liste des blogs parsés',
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ a.button {
|
|||||||
padding:7px;
|
padding:7px;
|
||||||
margin-right:5px;
|
margin-right:5px;
|
||||||
background:$col_main_3;
|
background:$col_main_3;
|
||||||
font-size:$size_big;
|
font-size:$size_vbig;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
/*position:relative;*/
|
/*position:relative;*/
|
||||||
display:inline-block;
|
display:inline-block;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -99,16 +99,17 @@
|
|||||||
table {
|
table {
|
||||||
margin-left:68px;
|
margin-left:68px;
|
||||||
padding:10px;
|
padding:10px;
|
||||||
|
background:$col_main_3;
|
||||||
|
|
||||||
td {
|
td {
|
||||||
padding:0;
|
padding:0;
|
||||||
text-align:left;
|
text-align:left;
|
||||||
font-size:18px;
|
|
||||||
color:$col_main_1;
|
color:$col_main_1;
|
||||||
}
|
}
|
||||||
|
|
||||||
td.desc {
|
td.desc {
|
||||||
width:160px;
|
width:160px;
|
||||||
|
font-size:$size_subtitle;
|
||||||
line-height:20px;
|
line-height:20px;
|
||||||
padding:10px 0;
|
padding:10px 0;
|
||||||
}
|
}
|
||||||
@@ -119,21 +120,24 @@
|
|||||||
}
|
}
|
||||||
.feedback {
|
.feedback {
|
||||||
float:left;
|
float:left;
|
||||||
font-size:14px;
|
font-size:$size_vbig;
|
||||||
margin-top:5px;
|
margin-top:5px;
|
||||||
font-style:italic;
|
font-style:italic;
|
||||||
color:red;
|
color:red;
|
||||||
}
|
}
|
||||||
input {
|
input {
|
||||||
border:1px solid $col_main_1;
|
|
||||||
color:$col_main_1;
|
color:$col_main_1;
|
||||||
font-size:18px;
|
font-size:$size_vbig;
|
||||||
line-height:20px;
|
line-height:20px;
|
||||||
padding:2px 5px;
|
padding:2px 5px;
|
||||||
width:200px;
|
width:200px;
|
||||||
}
|
}
|
||||||
a.button {
|
a.button {
|
||||||
margin-right:0;
|
margin-right:0;
|
||||||
|
background: $col_none;
|
||||||
|
}
|
||||||
|
a.button:hover {
|
||||||
|
background: $col_hover_1;
|
||||||
}
|
}
|
||||||
a.button .fa {
|
a.button .fa {
|
||||||
margin:1px;
|
margin:1px;
|
||||||
|
|||||||
13
todo
13
todo
@@ -4,7 +4,7 @@ Todo
|
|||||||
Internal:
|
Internal:
|
||||||
- independant code/procedure/article/table/document php classes ?
|
- independant code/procedure/article/table/document php classes ?
|
||||||
- Admin param page
|
- Admin param page
|
||||||
- Independant Option Class
|
- Independant Option Class + delete 'option' column in options table
|
||||||
- put feedback box in title
|
- put feedback box in title
|
||||||
- Créer un fichier de testing
|
- Créer un fichier de testing
|
||||||
- harmonize local file access: table "files" ? No file name / extension on server
|
- harmonize local file access: table "files" ? No file name / extension on server
|
||||||
@@ -19,8 +19,9 @@ Bug fix:
|
|||||||
- Trouver une meilleure place pour le menu
|
- Trouver une meilleure place pour le menu
|
||||||
|
|
||||||
New features:
|
New features:
|
||||||
|
- aide à la saisie dans les options
|
||||||
- [1.2.0] Chat: New "Connected Users" Panel: On click, opening a sub panl with icons: profil link, status, PM.
|
- [1.2.0] Chat: New "Connected Users" Panel: On click, opening a sub panl with icons: profil link, status, PM.
|
||||||
- [1.2.0] Unread messages par user (dedicated table). No more daily cut
|
- [1.2.0] Unread messages par user (dedicated table).
|
||||||
- [1.2.0] Refiltre par type dans le search
|
- [1.2.0] Refiltre par type dans le search
|
||||||
- [1.2.0] Remplacer dans les options : oui / non par [-0] (f205) [O-] (f204)
|
- [1.2.0] Remplacer dans les options : oui / non par [-0] (f205) [O-] (f204)
|
||||||
- [1.2.0] Son pour les nouveaux messages
|
- [1.2.0] Son pour les nouveaux messages
|
||||||
@@ -57,4 +58,10 @@ Testing
|
|||||||
MEP 1.2
|
MEP 1.2
|
||||||
-------
|
-------
|
||||||
|
|
||||||
-
|
- ALTER TABLE option_values MODIFY option_value varchar(100) NOT NULL;
|
||||||
|
- insert into option_values (id_option_name, option_value, default_value, language) values (1, 'utilisateur inconnu', 1, 'FR');
|
||||||
|
- insert into option_values (id_option_name, option_value, default_value, language) values (9, 'email inconnu', 1, 'FR');
|
||||||
|
- Commit & push git
|
||||||
|
- ALTER TABLE `options` DROP `option`;
|
||||||
|
- delete migrateOptionValues(); (databap.php)
|
||||||
|
- delete case 'migrate' (index.php)
|
||||||
Reference in New Issue
Block a user