This commit is contained in:
2014-12-13 03:18:04 +01:00
parent ae20f82a43
commit 0e4b1a3e6d
24 changed files with 499 additions and 497 deletions

View File

@@ -7,8 +7,8 @@
class Databap extends PhpObject class Databap extends PhpObject
{ {
//Common Constants //Common Constants
const VERSION = '1.0.3'; //Versioning: <Main_Version>.<Enhancement_Package>.<Patch>-<Release_Candidate> const VERSION = '1.1.0'; //Versioning: <Main_Version>.<Enhancement_Package>.<Patch>-<Release_Candidate>
const VERSION_DATE = '27/11/2014'; const VERSION_DATE = '13/12/2014';
const EXPECTED_PAGE_COOKIE = 'exp_page'; const EXPECTED_PAGE_COOKIE = 'exp_page';
const MAIN_SEPARATOR = ' '; const MAIN_SEPARATOR = ' ';
const DATE_FORMAT = 'd/m/Y'; const DATE_FORMAT = 'd/m/Y';
@@ -136,10 +136,7 @@ class Databap extends PhpObject
const OPT_STATUS = 7; const OPT_STATUS = 7;
const OPT_CONSOLE = 8; const OPT_CONSOLE = 8;
const OPT_EMAIL = 9; const OPT_EMAIL = 9;
const OPT_CHAT_HISTO = 10;
//Options Values Id Constants
const OPT_CONSOLE_YES = 1;
const OPT_CONSOLE_NO = 2;
//Options Values Constants //Options Values Constants
const OPT_VAL_YES = 'oui'; const OPT_VAL_YES = 'oui';
@@ -242,7 +239,7 @@ class Databap extends PhpObject
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), MySqlManager::getText(self::OPT_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), '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'),
self::STEP_TABLE => array(MySqlManager::getId(self::PROC_TABLE), 'description'), self::STEP_TABLE => array(MySqlManager::getId(self::PROC_TABLE), 'description'),
self::IMG_TABLE => array(MySqlManager::getId(self::PROC_TABLE), MySqlManager::getId(self::STEP_TABLE), 'description', 'file_name'), self::IMG_TABLE => array(MySqlManager::getId(self::PROC_TABLE), MySqlManager::getId(self::STEP_TABLE), 'description', 'file_name'),
@@ -285,7 +282,8 @@ class Databap extends PhpObject
'logo' => "varchar(20) NOT NULL", 'logo' => "varchar(20) NOT NULL",
'date' => "date NOT NULL", 'date' => "date NOT NULL",
'system' => "varchar(3)", 'system' => "varchar(3)",
'extension' => "varchar(10)" 'extension' => "varchar(10)",
'default_value'=>"tinyint(1) DEFAULT 0"
); );
$asOptions['constraints'] = array $asOptions['constraints'] = array
( (
@@ -355,18 +353,31 @@ class Databap extends PhpObject
$sOptionValueCol = MySqlManager::getText(self::OPTVAL_TABLE); $sOptionValueCol = MySqlManager::getText(self::OPTVAL_TABLE);
$sOptionNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE); $sOptionNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
$sOptionValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE); $sOptionValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
$iNicknameOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_NICKNAME, $sOptionNameCol=>'pseudo du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_NICKNAME, $sOptionNameCol=>'pseudo du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$iBgColorOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_BG, $sOptionNameCol=>'couleur de fond', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_BG, $sOptionNameCol=>'couleur de fond', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$iBgColorOpt2Id = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_BRIGHT_BG, $sOptionNameCol=>'couleur de fond 2 (claire)', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_BRIGHT_BG, $sOptionNameCol=>'couleur de fond 2 (claire)', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$iHoverColorOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_HOVER, $sOptionNameCol=>'couleur de survol', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_HOVER, $sOptionNameCol=>'couleur de survol', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$iChatImageOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_IMAGE_CHAT, $sOptionNameCol=>'image du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_IMAGE_CHAT, $sOptionNameCol=>'image du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$iStatusOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_STATUS, $sOptionNameCol=>'mission en cours', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_STATUS, $sOptionNameCol=>'mission en cours', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$iConsoleOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_CONSOLE, $sOptionNameCol=>'afficher la console du chat', 'type'=>self::OPT_SELECT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_CONSOLE, $sOptionNameCol=>'afficher la console du chat', 'type'=>self::OPT_SELECT, 'language'=>self::LANG_FR));
$iEmailOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_EMAIL, $sOptionNameCol=>'Email', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_EMAIL, $sOptionNameCol=>'email', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_CHAT_HISTO, $sOptionNameCol=>'nombre de jours d\'historique dans le chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
//Console Option //Select and Default Option values
$asConsoleValues = array(self::OPT_CONSOLE_YES=>self::OPT_VAL_YES, self::OPT_CONSOLE_NO=>self::OPT_VAL_NO); $asDefaultValues = array( self::OPT_CONSOLE=>array(self::OPT_VAL_YES=>false, self::OPT_VAL_NO=>true),
foreach($asConsoleValues as $sConsoleValId=>$sConsoleValue){$this->oMySql->insertRow(self::OPTVAL_TABLE, array($sOptionValueIdCol=>$sConsoleValId, $sOptionNameIdCol=>self::OPT_CONSOLE, $sOptionValueCol=>$sConsoleValue, 'language'=>self::LANG_FR));} self::OPT_BG=>array('#04357B'=>true),
self::OPT_BRIGHT_BG=>array('#D9E5F2'=>true),
self::OPT_HOVER=>array('#EFAB00'=>true),
self::OPT_IMAGE_CHAT=>array('images/sap_gold_332.jpg'=>true),
self::OPT_STATUS=>array('aucune mission en cours'=>true),
self::OPT_CHAT_HISTO=>array('0'=>true));
foreach($asDefaultValues as $sOptionNameId=>$asOptionValues)
{
foreach($asOptionValues as $sOptionValue=>$bDefault)
{
$this->oMySql->insertRow(self::OPTVAL_TABLE, array($sOptionNameIdCol=>$sOptionNameId, $sOptionValueCol=>$sOptionValue, 'default_value'=>$bDefault, 'language'=>self::LANG_FR));
}
}
//Insert default and all channels //Insert default and all channels
$this->oMySql->insertRow(self::CHAN_TABLE, array('safe_name'=>self::getChanSafeName(self::ALL_CHAN_TEXT), MySqlManager::getText(self::CHAN_TABLE)=>self::ALL_CHAN_TEXT)); $this->oMySql->insertRow(self::CHAN_TABLE, array('safe_name'=>self::getChanSafeName(self::ALL_CHAN_TEXT), MySqlManager::getText(self::CHAN_TABLE)=>self::ALL_CHAN_TEXT));
@@ -430,9 +441,9 @@ class Databap extends PhpObject
'pm_separator'=>self::PM_SEP, 'pm_separator'=>self::PM_SEP,
'reboot_delay'=>self::REBOOT_DELAY, 'reboot_delay'=>self::REBOOT_DELAY,
'versionHtml'=>$this->getItemBlock(), 'versionHtml'=>$this->getItemBlock(),
'opt_console_no'=>self::OPT_CONSOLE_NO,
'types'=>$this->getTypeInfo('title'), 'types'=>$this->getTypeInfo('title'),
'msg_types'=>self::$MESSAGE_TYPES); 'msg_types'=>self::$MESSAGE_TYPES,
'cur_date'=>date(self::DATE_FORMAT));
$oPage->setTag('constants', $this->jsonConvert($asConstants)); $oPage->setTag('constants', $this->jsonConvert($asConstants));
//Variables //Variables
@@ -440,7 +451,7 @@ class Databap extends PhpObject
$asVars['user_id'] = $this->getUserId(); $asVars['user_id'] = $this->getUserId();
$asVars['hash_to_page'] = $this->getPagesFromHash(); $asVars['hash_to_page'] = $this->getPagesFromHash();
$asVars['page_to_hash'] = array_flip($asVars['hash_to_page']); $asVars['page_to_hash'] = array_flip($asVars['hash_to_page']);
$asVars['opt_console'] = $this->getUserOptionValue(self::OPT_CONSOLE); $asVars['opt_console'] = ($this->getUserOptionValue(self::OPT_CONSOLE)==self::OPT_VAL_YES);
$oPage->setTag('variables', $this->jsonConvert($asVars)); $oPage->setTag('variables', $this->jsonConvert($asVars));
return $oPage->getMask(); return $oPage->getMask();
@@ -587,7 +598,9 @@ class Databap extends PhpObject
$sSAPDomain = 'http://scn.sap.com'; $sSAPDomain = 'http://scn.sap.com';
$asBlogPaths = array( '/community/data-warehousing/bw/blog', $asBlogPaths = array( '/community/data-warehousing/bw/blog',
'/community/data-warehousing/blog', '/community/data-warehousing/blog',
'/community/bw-hana/blog'); '/community/bw-hana/blog',
'/community/businessobjects-design-studio/blog',
'/community/businessobjects-analysis-ms-office/blog');
foreach($asBlogPaths as $sSAPBlogPath) foreach($asBlogPaths as $sSAPBlogPath)
{ {
$sSAPBlogUrl = $sSAPDomain.$sSAPBlogPath; $sSAPBlogUrl = $sSAPDomain.$sSAPBlogPath;
@@ -761,14 +774,7 @@ class Databap extends PhpObject
$sUserIdCol = MySqlManager::getId(self::USER_TABLE); $sUserIdCol = MySqlManager::getId(self::USER_TABLE);
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE); $sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE); $sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
$sOptionValIdCol = MySqlManager::getId(self::OPTVAL_TABLE); $this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_NICKNAME, $sOptionTextCol=>self::getNickNameFormat($sFirstName)));
$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_NICKNAME, $sOptionTextCol=>$sFirstName));
//$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_BG, $sOptionTextCol=>'#04357B'));
//$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_BRIGHT_BG, $sOptionTextCol=>'#D9E5F2'));
//$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_HOVER, $sOptionTextCol=>'#EFAB00'));
//$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_TOKEN, $sOptionTextCol=>$this->generateExternalAccessLink('rss', $iUserId)));
//$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_IMAGE_CHAT, $sOptionTextCol=>'images/sap_gold_332.jpg'));
$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_CONSOLE, $sOptionValIdCol=>self::OPT_CONSOLE_NO));
$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_EMAIL, $sOptionTextCol=>$sEmail)); $this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_EMAIL, $sOptionTextCol=>$sEmail));
return $iUserId; return $iUserId;
@@ -1312,7 +1318,8 @@ class Databap extends PhpObject
public function setOptions($asUserOptions, $bSilentUpdate=true) public function setOptions($asUserOptions, $bSilentUpdate=true)
{ {
foreach($this->getAvailableOptions() as $sOptNameId=>$asOption) $asAvailableOptions = $this->getAvailableOptions();
foreach($asAvailableOptions as $sOptNameId=>$asOption)
{ {
if(array_key_exists($sOptNameId, $asUserOptions)) if(array_key_exists($sOptNameId, $asUserOptions))
{ {
@@ -1377,11 +1384,34 @@ class Databap extends PhpObject
return $this->oMySql->selectRows($asInfo, true, $sOptNameIdCol); return $this->oMySql->selectRows($asInfo, true, $sOptNameIdCol);
} }
private function getDefaultOptionValue($sOptionNameId)
{
$asDefaultOptions = $this->getDefaultOptionValues($sOptionNameId);
$asOptionInfo = array_shift($asDefaultOptions);
return $asOptionInfo[MySqlManager::getText(self::OPTVAL_TABLE)];
}
private function getDefaultOptionValues($oOptionNameIds=array(), $bOptValId=true)
{
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
$sOptValIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
$asInfo = array('select' => array($sOptNameIdCol, $sOptValueTextCol),
'from' => self::OPTVAL_TABLE,
'constraint'=> array('default_value'=>true, $sOptNameIdCol => "(".implode(", ", $oOptionNameIds).")"),
'constOpe' => array('default_value'=>"=", $sOptNameIdCol=>" IN "),
'constVar' => true);
if($bOptValId) $asInfo['select'][] = $sOptValIdCol;
return $this->oMySql->selectRows($asInfo, true, $sOptNameIdCol);
}
private function getUserOptionValue($sOptionNameId, $iUserId=0) private function getUserOptionValue($sOptionNameId, $iUserId=0)
{ {
$asUserOptions = $this->getUserOptions($sOptionNameId, $iUserId); $asUserOptions = $this->getUserOptions($sOptionNameId, $iUserId);
$asOptionInfo = array_shift($asUserOptions); $asOptionInfo = array_shift($asUserOptions);
return $asOptionInfo[MySqlManager::getId(self::OPTVAL_TABLE)]; return $asOptionInfo[MySqlManager::getText(self::OPT_TABLE)];
} }
private function getUserOptions($oOptionNameIds=array(), $iUserId=0) private function getUserOptions($oOptionNameIds=array(), $iUserId=0)
@@ -1391,25 +1421,31 @@ class Databap extends PhpObject
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE); $sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE); $sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE); $sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
if(!is_array($oOptionNameIds)) if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
{ elseif(empty($oOptionNameIds)) $oOptionNameIds = array_keys($this->getAvailableOptions());
$oOptionNameIds = array($oOptionNameIds);
}
$asUserinfo = array('select' => array($sOptNameIdCol, $sOptValueIdCol, $sOptionTextCol), $asUserinfo = array('select' => array($sOptNameIdCol, $sOptValueIdCol, $sOptionTextCol),
'from' => self::OPT_TABLE, 'from' => self::OPT_TABLE,
'constraint'=>array($sUserIdCol=>$iUserId)); 'constraint'=> array($sUserIdCol=>$iUserId, $sOptNameIdCol => "(".implode(", ", $oOptionNameIds).")"),
if(count($oOptionNameIds)>0) 'constOpe' => array($sUserIdCol=>"=", $sOptNameIdCol=>" IN "),
{ 'constVar' => true);
$asUserinfo['constraint'][$sOptNameIdCol] = "(".implode(", ", $oOptionNameIds).")";
$asUserinfo['constOpe'] = array($sUserIdCol=>"=", $sOptNameIdCol=>" IN ");
$asUserinfo['constVar'] = true;
}
$asOptions = $this->oMySql->selectRows($asUserinfo, true, $sOptNameIdCol); $asOptions = $this->oMySql->selectRows($asUserinfo, true, $sOptNameIdCol);
foreach($asOptions as $iOptionId=>$asOption) foreach($oOptionNameIds as $iOptionId)
{ {
if(!$asOption[$sOptValueIdCol]) $asOptions[$iOptionId][$sOptValueIdCol] = $asOptions[$iOptionId][$sOptionTextCol]; $sNewValue = '';
//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;
} }
@@ -1559,7 +1595,7 @@ class Databap extends PhpObject
foreach($asMessages as $iChanId=>$sMsgChanName) foreach($asMessages as $iChanId=>$sMsgChanName)
{ {
$asPm = $this->isPmChan($sMsgChanName); $asPm = $this->isPmChan($sMsgChanName);
$this->addMessage(' de '.$asUserInfo['company'].' ('.($sStatus==''?'aucune mission en cours':$this->getDescriptionFormat($sStatus)).') rejoint '.($asPm['is_pm']?'le chan priv&eacute;':'#'.$sMsgChanName), self::MESSAGE_CONN, $iChanId); $this->addMessage(' de '.$asUserInfo['company'].' ('.$this->getDescriptionFormat($sStatus).') rejoint '.($asPm['is_pm']?'le chan priv&eacute;':'#'.$sMsgChanName), self::MESSAGE_CONN, $iChanId);
} }
//Send invites to attendees //Send invites to attendees
@@ -1922,21 +1958,23 @@ class Databap extends PhpObject
$sConnTableUserIdCol = MySqlManager::getFullColumnName(self::CONN_TABLE, MySqlManager::getId(self::USER_TABLE)); $sConnTableUserIdCol = MySqlManager::getFullColumnName(self::CONN_TABLE, MySqlManager::getId(self::USER_TABLE));
$sConnTableChanIdCol = MySqlManager::getFullColumnName(self::CONN_TABLE, MySqlManager::getId(self::CHAN_TABLE)); $sConnTableChanIdCol = MySqlManager::getFullColumnName(self::CONN_TABLE, MySqlManager::getId(self::CHAN_TABLE));
//channel related messages //User channels related messages
$sCurDate = date(Databap::DATE_SQL_FORMAT); $iCurTimeStamp = time();
$sCurDate = date(Databap::DATE_SQL_FORMAT, $iCurTimeStamp);
$sLimitDate = date(Databap::DATE_SQL_FORMAT, $iCurTimeStamp - $this->getUserOptionValue(self::OPT_CHAT_HISTO)*24*60*60);
$asInfo = array('select' => array($sMsgTableChanIdCol, $sMsgIdCol, $sMsgTextCol, 'type', $sMsgTableLed, 'first_name', 'last_name', $sUserIdCol, 'nickname'), $asInfo = array('select' => array($sMsgTableChanIdCol, $sMsgIdCol, $sMsgTextCol, 'type', $sMsgTableLed, 'first_name', 'last_name', $sUserIdCol, 'nickname'),
'from' => self::CONN_TABLE, 'from' => self::CONN_TABLE,
'joinOn' => array( self::MSG_TABLE =>array($sMsgTableChanIdCol, '=', $sConnTableChanIdCol), 'joinOn' => array( self::MSG_TABLE =>array($sMsgTableChanIdCol, '=', $sConnTableChanIdCol),
self::USER_TABLE=>array($sUserTableUserIdCol, '=', $sMsgTableUserIdCol)), self::USER_TABLE=>array($sUserTableUserIdCol, '=', $sMsgTableUserIdCol)),
'constraint'=> array($sConnTableUserIdCol=>$this->getUserId(), $sMsgIdCol=>$iFirstMsgId, 'date'=>$sCurDate), 'constraint'=> array($sConnTableUserIdCol=>$this->getUserId(), $sMsgIdCol=>$iFirstMsgId, 'date'=>$sLimitDate),
'constOpe' => array($sConnTableUserIdCol=>'=', $sMsgIdCol=>'>', 'date'=>'=')); 'constOpe' => array($sConnTableUserIdCol=>'=', $sMsgIdCol=>'>', 'date'=>'>='));
$asSqlMessages = $this->oMySql->selectRows($asInfo, true, 'id_message'); $asSqlMessages = $this->oMySql->selectRows($asInfo, true, 'id_message');
//Global messages //Global messages
$asInfo['from'] = self::MSG_TABLE; $asInfo['from'] = self::MSG_TABLE;
$asInfo['joinOn'] = array(self::USER_TABLE=>array($sUserTableUserIdCol, '=', $sMsgTableUserIdCol)); $asInfo['joinOn'] = array(self::USER_TABLE=>array($sUserTableUserIdCol, '=', $sMsgTableUserIdCol));
$asInfo['constraint'] = array($sMsgTableChanIdCol=>self::ALL_CHAN_ID, $sMsgIdCol=>$iFirstMsgId, 'date'=>$sCurDate); $asInfo['constraint'] = array($sMsgTableChanIdCol=>self::ALL_CHAN_ID, $sMsgIdCol=>$iFirstMsgId, 'date'=>$sLimitDate);
$asInfo['constOpe'] = array($sMsgTableChanIdCol=>'=', $sMsgIdCol=>'>', 'date'=>'='); $asInfo['constOpe'] = array($sMsgTableChanIdCol=>'=', $sMsgIdCol=>'>', 'date'=>'>=');
$asSqlGlobalMessages = $this->oMySql->selectRows($asInfo, true, 'id_message'); $asSqlGlobalMessages = $this->oMySql->selectRows($asInfo, true, 'id_message');
//Invites messages //Invites messages
@@ -1953,13 +1991,9 @@ class Databap extends PhpObject
//Sort out messages for Json Export //Sort out messages for Json Export
$iPrefixLen = mb_strlen(self::JSON_PREFIX); $iPrefixLen = mb_strlen(self::JSON_PREFIX);
//$iConsoleDisplay = $this->getUserOptionValue(self::OPT_CONSOLE);
$asMessages = array('messages'=>array(), 'last_message_id'=>0); $asMessages = array('messages'=>array(), 'last_message_id'=>0);
foreach($asSqlMessages as $iMessageId=>$asMessageInfo) foreach($asSqlMessages as $iMessageId=>$asMessageInfo)
{ {
//Connection message filter
//if($iConsoleDisplay==self::OPT_CONSOLE_NO && $asMessageInfo['type']==self::MESSAGE_CONN) continue;
//General message info //General message info
$iChanId = $asMessageInfo[MySqlManager::getId(self::CHAN_TABLE)]; $iChanId = $asMessageInfo[MySqlManager::getId(self::CHAN_TABLE)];
$iUserId = $asMessageInfo[MySqlManager::getId(self::USER_TABLE)]; $iUserId = $asMessageInfo[MySqlManager::getId(self::USER_TABLE)];
@@ -1968,6 +2002,7 @@ class Databap extends PhpObject
$asMessages['messages'][$iMessageId]['id_user'] = $iUserId; $asMessages['messages'][$iMessageId]['id_user'] = $iUserId;
$asMessages['messages'][$iMessageId]['message'] = $asMessageInfo[$sMsgTextCol]; $asMessages['messages'][$iMessageId]['message'] = $asMessageInfo[$sMsgTextCol];
$asMessages['messages'][$iMessageId]['msg_class'] = $sMessageType; $asMessages['messages'][$iMessageId]['msg_class'] = $sMessageType;
$asMessages['messages'][$iMessageId]['date'] = self::getDateFormat($asMessageInfo['led'], self::DATE_FORMAT);
$asMessages['messages'][$iMessageId]['time'] = self::getDateFormat($asMessageInfo['led'], self::TIME_FORMAT); $asMessages['messages'][$iMessageId]['time'] = self::getDateFormat($asMessageInfo['led'], self::TIME_FORMAT);
$asMessages['messages'][$iMessageId]['name'] = self::getNameFormat($asMessageInfo['first_name'], $asMessageInfo['last_name']); $asMessages['messages'][$iMessageId]['name'] = self::getNameFormat($asMessageInfo['first_name'], $asMessageInfo['last_name']);
$asMessages['messages'][$iMessageId]['nickname'] = self::getNickNameFormat($asMessageInfo['nickname']); $asMessages['messages'][$iMessageId]['nickname'] = self::getNickNameFormat($asMessageInfo['nickname']);
@@ -2566,11 +2601,17 @@ class Databap extends PhpObject
} }
} }
public function checkValue($sTableName, $asConstraints) private function checkValue($sTableName, $asConstraints)
{ {
return $this->oMySql->selectValue($sTableName, 'COUNT(1)', $asConstraints); return $this->oMySql->selectValue($sTableName, 'COUNT(1)', $asConstraints);
} }
public function getUrlAvailability($sLink)
{
$bAvailable = !$this->checkValue(self::URL_TABLE, array('phrase'=>$sLink));
return self::getJsonPostResult($bAvailable, '');
}
public function resetChanSafeNames() public function resetChanSafeNames()
{ {
$iChanIdCol = MySqlManager::getId(self::CHAN_TABLE); $iChanIdCol = MySqlManager::getId(self::CHAN_TABLE);
@@ -2628,23 +2669,18 @@ class Databap extends PhpObject
public function getStyleSheet() public function getStyleSheet()
{ {
$sStyle = file_get_contents(self::STYLE_PATH); $sStyle = file_get_contents(self::STYLE_PATH);
$asDefaultColors = array( self::OPT_BG=>'#04357B', $asStyleParams = array(self::OPT_BG, self::OPT_BRIGHT_BG, self::OPT_HOVER, self::OPT_IMAGE_CHAT);
self::OPT_BRIGHT_BG=>'#D9E5F2',
self::OPT_HOVER=>'#EFAB00',
self::OPT_IMAGE_CHAT=>'images/sap_gold_332.jpg');
//Inserting Color Ids //Inserting Color Anchors
foreach($asDefaultColors as $iOptionNameId=>$sDefaultColor) $asDefaultValues = $this->getDefaultOptionValues($asStyleParams, false);
{ foreach($asDefaultValues as $iOptionNameId=>$sDefaultValue) $asColorAnchors[$iOptionNameId] = '[OPT#'.$iOptionNameId.']';
$asColorAnchors[$iOptionNameId] = '[OPT#'.$iOptionNameId.']'; $sStyle = str_replace($asDefaultValues, $asColorAnchors, $sStyle);
}
$sStyle = str_replace($asDefaultColors, $asColorAnchors, $sStyle);
//Switching color Ids with user colors //Switching color Anchors with user colors
$asOptionvalues = $this->getUserOptions(array_keys($asDefaultColors)); $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']:$asDefaultColors[$iOptionNameId]; $sOptionValue = (array_key_exists($iOptionNameId, $asOptionvalues) && $asOptionvalues[$iOptionNameId]['option']!='')?$asOptionvalues[$iOptionNameId]['option']:$asDefaultValues[$iOptionNameId];
$sStyle = str_replace($sColorAnchor, $sOptionValue, $sStyle); $sStyle = str_replace($sColorAnchor, $sOptionValue, $sStyle);
} }

View File

@@ -129,7 +129,7 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS)
$sResult = $oDatabap->uploadFile('doc'); $sResult = $oDatabap->uploadFile('doc');
break; break;
case 'url': case 'url':
$sResult = $oDatabap->checkValue(Databap::URL_TABLE, array('phrase'=>$sLink)); $sResult = $oDatabap->getUrlAvailability($sLink);
break; break;
case 'user_info': case 'user_info':
$sResult = $oDatabap->getUserInfo($oDatabap->getUserId(), true); $sResult = $oDatabap->getUserInfo($oDatabap->getUserId(), true);

4
jquery/common.js vendored
View File

@@ -88,7 +88,7 @@ $.prototype.getEmptyHeight = function()
//debug('#'+$(this).attr('id')+'|.'+$(this).attr('class')+' gives '+$(this).outerHeight(true)); //debug('#'+$(this).attr('id')+'|.'+$(this).attr('class')+' gives '+$(this).outerHeight(true));
iTotalHeight += $(this).outerHeight(true); iTotalHeight += $(this).outerHeight(true);
}); });
return $This.height() - iTotalHeight; return $This.innerHeight() - iTotalHeight;
}; };
$.prototype.getEmptyWidth = function() $.prototype.getEmptyWidth = function()
@@ -98,7 +98,7 @@ $.prototype.getEmptyWidth = function()
{ {
iTotalWidth += $(this).outerWidth(true); iTotalWidth += $(this).outerWidth(true);
}); });
return $This.width() - iTotalWidth; return $This.innerWidth() - iTotalWidth;
}; };
$.prototype.addDefaultValue = function(sDefaultValue, sInitValue) $.prototype.addDefaultValue = function(sDefaultValue, sInitValue)

97
jquery/databap.js vendored
View File

@@ -163,100 +163,7 @@ function Databap()
this.initMenu = function() this.initMenu = function()
{ {
//Hover Event: open/close self.$menu.find('a').each(function(){$(this).attr('title', $(this).find('span').text());});
self.$menu.hover
(
self.openMenu,
function()
{
closeMenu = true;
if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);
oMenuTimer = setTimeout(self.closeMenu, 1000);
}
);
//Close on click
self.$menu.find('a').click(self.instantCloseMenu);
};
this.openMenu = function()
{
//Disable closing
closeMenu = false;
if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);
//If not already opened / about to open
if(typeof openedMenu == 'undefined' || openedMenu != true)
{
openedMenu = true;
self.$menu.find('#menu_title').hide();
//Main shadow
self.$main.add(self.$title)
.click(self.instantCloseMenu)
.fadeTo('fast', 0.2);
//Switch useless button
self.$menu.find('.useless_button').removeClass('round').addClass('tiny_top_right');
//Move menu items
var iVPos = Math.max(0, $(window).scrollTop() - 46 - 46);
self.$menu.find('#menu_items').css('margin-top', iVPos);
//Expand menu
self.$menu
.stop()
.animate
(
{width:'300px'/*, borderWidth:'10px'*/},
'fast',
function()
{
self.$menu.find('#menu_box').show();
$(this).addClass('opened');
}
);
}
};
this.instantCloseMenu = function()
{
closeMenu=true;
if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);
self.closeMenu();
};
this.closeMenu = function()
{
if(closeMenu == true)
{
if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);
//Switch uselecc button
self.$menu.find('.useless_button').removeClass('tiny_top_right').addClass('round');
//Main shadow
self.$main.add(self.$title)
.off('click')
.fadeTo('fast', 1);
//Reduce menu
self.$menu.find('#menu_box').hide();
self.$menu
.stop()
.animate
(
{width:'20px'/*, borderWidth:'0'*/},
'fast',
function()
{
self.$menu.find('#menu_title').show();
$(this).removeClass('opened');
}
);
openedMenu = false;
closeMenu = false;
}
}; };
this.setInitEnd = function(bEnded, bAddScrollBar) this.setInitEnd = function(bEnded, bAddScrollBar)
@@ -440,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'));
} }
}; };

View File

@@ -22,7 +22,7 @@
<div id="chat_messages"></div> <div id="chat_messages"></div>
</div> </div>
</div> </div>
<div id="chat_input" class="tiny_round"> <div id="chat_input" class="round">
<form id="chat_form" name="chat_form"> <form id="chat_form" name="chat_form">
<i id="message_img" class="fa fa-fw fa-20 fa-c-comment"></i><input type="text" id="message" name="message" value="" maxlength="500" autofocus /> <i id="message_img" class="fa fa-fw fa-20 fa-c-comment"></i><input type="text" id="message" name="message" value="" maxlength="500" autofocus />
<input type="hidden" id="chan" name="chan" value="" maxlength="50" /> <input type="hidden" id="chan" name="chan" value="" maxlength="50" />
@@ -252,7 +252,7 @@ function setChanButton()
.append .append
( (
$('<span>', {id:'join_chan_input'}) $('<span>', {id:'join_chan_input'})
.text('#') .append($('<span>', {'class':'hash'}).text('#'))
.append .append
( (
$('<input>', {type:'text', id:'input_chan', 'class':'round'}) $('<input>', {type:'text', id:'input_chan', 'class':'round'})
@@ -755,7 +755,7 @@ function addMessage(message_info, bReset)
break; break;
case databap.consts.msg_types.conn: case databap.consts.msg_types.conn:
updateUsersList = true; updateUsersList = true;
msg_body = (self.vars2('opt_console')==self.consts.opt_console_no)?'':'<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>'; msg_body = (!self.vars2('opt_console'))?'':'<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
bSystemMsg = true; bSystemMsg = true;
break; break;
case databap.consts.msg_types.img: case databap.consts.msg_types.img:
@@ -809,7 +809,7 @@ function addMessage(message_info, bReset)
if(msg_body != '') if(msg_body != '')
{ {
//Adding message to channel panel //Adding message to channel panel
$Message = $('<p class="'+message_info.msg_class+' class_'+sChanKeyName+' hide round_right"></p>').append('<span class="time">'+message_info.time+'</span>', msg_body); $Message = $('<p>', {'class':message_info.msg_class+' class_'+sChanKeyName+' hide round_right'}).append($('<span>', {'class':'time'}).text(((message_info.date==databap.consts.cur_date)?'':message_info.date+' - ')+message_info.time), msg_body);
$Message.find('.chan_link').click(function(){joinChan($(this).find('.chan_text').text());}); $Message.find('.chan_link').click(function(){joinChan($(this).find('.chan_text').text());});
$Message.find('.user').click(setPm); $Message.find('.user').click(setPm);
databap.getMainElem('#chat_messages').append($Message); databap.getMainElem('#chat_messages').append($Message);

View File

@@ -55,6 +55,10 @@ databap.onResize = function()
//Read Code //Read Code
self.setScrollBarSize('optimize'); self.setScrollBarSize('optimize');
//FIXME
$('#reader_subbox').height('+=1px');
self.updateScrollBar();
}; };
databap.onQuit = function(){ return (self.tmp('started') === false); }; databap.onQuit = function(){ return (self.tmp('started') === false); };
@@ -142,31 +146,31 @@ function checkUrlAvailability(phrase, bTriggered)
databap.getInfo databap.getInfo
( (
'url', 'url',
function(bExist) function(oData)
{ {
var availabilityClass, availabilityText; var availabilityClass, availabilityText;
var $link = databap.getMainElem('#link_result'); var $link = databap.getMainElem('#link_result');
if(bExist=='0') if(oData.result==databap.consts.success)
{ {
availabilityClass = 'available'; availabilityClass = 'available';
availabilityText = 'Disponible'; availabilityText = 'Disponible';
if($link.is(':hidden')) $link.show('fast'); if($link.is(':hidden')) $link.fadeIn('fast');
} }
else else
{ {
availabilityClass = 'unavailable'; availabilityClass = 'unavailable';
availabilityText = 'Indisponible'; availabilityText = 'Indisponible';
if($link.is(':visible')) $link.hide('fast'); if($link.is(':visible')) $link.fadeOut('fast');
} }
var $AvailableBox = databap.getMainElem('#available_phrase'); var $AvailableBox = databap.getMainElem('#available_phrase');
$AvailableBox $AvailableBox
.removeClass('available unavailable') .removeClass('available unavailable')
.addClass(availabilityClass); .addClass(availabilityClass);
$AvailableBox.find('#available_phrase_text').text(availabilityText); $AvailableBox.find('#available_phrase_text').text(availabilityText);
$AvailableBox.show('fast'); $AvailableBox.fadeIn('fast');
}, },
{link_escaped:phrase}, {link_escaped:phrase},
'html', 'json',
function(){}, function(){},
true true
); );

View File

@@ -39,26 +39,26 @@
</table> </table>
</div> </div>
<div id="menu" class="round"> <div id="menu" class="round">
<div id="menu_title"><i class="fa fa-c-next"></i></div> <!-- <div id="menu_title"><i class="fa fa-c-next"></i></div> -->
<div id="menu_box"> <div id="menu_box">
<ul id="menu_items"> <ul id="menu_items">
<li><i class="fa fa-fw fa-20 fa-c-next fa-rotate-90"></i>menu</li> <!-- <li><i class="fa fa-fw fa-20 fa-c-next fa-rotate-90"></i>menu</li> -->
<li><a href="#accueil"><i class="fa fa-fw fa-20 fa-c-welcome"></i>accueil</a></li> <li><a href="#accueil"><i class="fa fa-fw fa-20 fa-c-welcome"></i>&nbsp;<span>accueil</span></a></li>
<li><a href="#code"><i class="fa fa-fw fa-20 fa-c-code"></i>ajouter du code</a></li> <li><a href="#code"><i class="fa fa-fw fa-20 fa-c-code"></i>&nbsp;<span>ajouter du code</span></a></li>
<li><a href="#procedure"><i class="fa fa-fw fa-20 fa-c-procedure"></i>ajouter une proc&eacute;dure</a></li> <li><a href="#procedure"><i class="fa fa-fw fa-20 fa-c-procedure"></i>&nbsp;<span>ajouter une procédure</span></a></li>
<li><a href="#table"><i class="fa fa-fw fa-20 fa-c-table"></i>ajouter une table</a></li> <li><a href="#table"><i class="fa fa-fw fa-20 fa-c-table"></i>&nbsp;<span>ajouter une table</span></a></li>
<li><a href="#doc"><i class="fa fa-fw fa-20 fa-c-doc"></i>ajouter une doc</a></li> <li><a href="#doc"><i class="fa fa-fw fa-20 fa-c-doc"></i>&nbsp;<span>ajouter une doc</span></a></li>
<li><a href="#liste"><i class="fa fa-fw fa-20 fa-c-list"></i>liste compl&egrave;te</a></li> <li><a href="#liste"><i class="fa fa-fw fa-20 fa-c-list"></i>&nbsp;<span>liste complète</span></a></li>
<li><a href="#note"><i class="fa fa-fw fa-20 fa-c-note"></i>Note OSS</a></li> <li><a href="#note"><i class="fa fa-fw fa-20 fa-c-note"></i>&nbsp;<span>Note OSS</span></a></li>
<li><a href="#profil"><i class="fa fa-fw fa-20 fa-c-profile"></i>profil</a></li> <li><a href="#profil"><i class="fa fa-fw fa-20 fa-c-profile"></i>&nbsp;<span>profil</span></a></li>
<li><a href="#chat"><i class="fa fa-fw fa-20 fa-c-chat"></i>chat</a></li> <li><a href="#chat"><i class="fa fa-fw fa-20 fa-c-chat"></i>&nbsp;<span>chat</span></a></li>
<li><a href="#options"><i class="fa fa-fw fa-20 fa-c-options"></i>paramètres</a></li> <li><a href="#options"><i class="fa fa-fw fa-20 fa-c-options"></i>&nbsp;<span>paramètres</span></a></li>
<li><a href="[#]rss_link[#]" target="_blank"><i class="fa fa-fw fa-20 fa-c-rss"></i>flux Rss</a></li> <li><a href="[#]rss_link[#]" target="_blank"><i class="fa fa-fw fa-20 fa-c-rss"></i>&nbsp;<span>flux Rss</span></a></li>
<li><a href="#logout"><i class="fa fa-fw fa-20 fa-c-logmeout"></i>quitter</a></li> <li><a href="#logout"><i class="fa fa-fw fa-20 fa-c-logmeout"></i>&nbsp;<span>quitter</span></a></li>
<li class="mobile"><a id="close_menu_ln"><i class="fa fa-fw fa-20 fa-c-fold"></i>fermer</a></li> <li class="mobile"><a id="close_menu_ln"><i class="fa fa-fw fa-20 fa-c-fold"></i>&nbsp;<span>fermer</span></a></li>
</ul> </ul>
</div> </div>
<a href="[#]index_link[#]" class="useless_button round" title="The Secret Useless Button"></a> <!-- <a href="[#]index_link[#]" class="useless_button round" title="The Secret Useless Button"></a> -->
</div> </div>
<div id="main_container" class="round"> <div id="main_container" class="round">
<div id="page_title"> <div id="page_title">

View File

@@ -1,5 +1,5 @@
<div id="logout"> <div id="logout">
<p><i class="fa fa-spin fa-c-loading"></i>Déconnexion...</p> <p class="round"><i class="fa fa-spin fa-20 fa-inline fa-c-loading"></i>Déconnexion...</p>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
self.getInfo('log_me_out', function(){document.location='';}); self.getInfo('log_me_out', function(){document.location='';});

View File

@@ -17,7 +17,9 @@ databap.pageInit = function()
.addButton('ok', 'Ok', function($This){$This.submit();}, 'submit', 'heavy') .addButton('ok', 'Ok', function($This){$This.submit();}, 'submit', 'heavy')
.submit(function(){databap.goToInternalLink('note', $('#note_id').val())}); .submit(function(){databap.goToInternalLink('note', $('#note_id').val())});
$Frame.css('height', 'calc(100% - '+($('#note_form').outerHeight()+14)+'px)'); $Frame
.css('height', 'calc(100% - '+($('#note_form').outerHeight()+10)+'px)')
.hide();
//Start fetching note //Start fetching note
var iNote = databap.vars.id; var iNote = databap.vars.id;
@@ -26,6 +28,7 @@ databap.pageInit = function()
$('#note_id').val(iNote).focus(); $('#note_id').val(iNote).focus();
self.addBufferIcon(); self.addBufferIcon();
$Frame $Frame
.show('slow')
.attr('src', 'index.php?a=note&id='+iNote) .attr('src', 'index.php?a=note&id='+iNote)
.load(databap.resetIcon); .load(databap.resetIcon);

View File

@@ -1,4 +1,3 @@
<div id="procedure_box">
<div id="procedure"> <div id="procedure">
<form id="procedure_form" name="procedure_form"> <form id="procedure_form" name="procedure_form">
<input type="hidden" id="procedure_id" name="procedure_id" value="0" /> <input type="hidden" id="procedure_id" name="procedure_id" value="0" />
@@ -10,6 +9,8 @@
</a> </a>
<a id="share" class="button round"><i class="fa fa-c-share"></i>Partager</a> <a id="share" class="button round"><i class="fa fa-c-share"></i>Partager</a>
</div> </div>
<div id="scrollbox">
<div id="scrollcontent">
<div id="titles_edit" class="hide"> <div id="titles_edit" class="hide">
<div id="procedure_title" class="step_box round"> <div id="procedure_title" class="step_box round">
<p class="step_nb_box">Titre</p> <p class="step_nb_box">Titre</p>
@@ -26,6 +27,8 @@
<p class="read_description"><span id="description_read" class="read"></span></p> <p class="read_description"><span id="description_read" class="read"></span></p>
</div> </div>
<div id="procedure_steps"></div> <div id="procedure_steps"></div>
</div>
</div>
<div class="proc_menu" id="bottom_menu"> <div class="proc_menu" id="bottom_menu">
<a id="add_step" class="button round"><i class="fa fa-c-add"></i>Ajouter une &eacute;tape</a> <a id="add_step" class="button round"><i class="fa fa-c-add"></i>Ajouter une &eacute;tape</a>
<a id="submit_procedure" class="button round"><i class="fa fa-c-ok"></i>Valider</a> <a id="submit_procedure" class="button round"><i class="fa fa-c-ok"></i>Valider</a>
@@ -37,7 +40,6 @@
</div> </div>
</form> </form>
</div> </div>
</div>
<div id="models" class="hide"> <div id="models" class="hide">
<div id="step_model"> <div id="step_model">
<table id="step" class="step_box round"> <table id="step" class="step_box round">
@@ -77,7 +79,7 @@ databap.pageInit = function()
{ {
databap.vars.mode = ''; databap.vars.mode = '';
self.tmp('started', false); self.tmp('started', false);
self.initScrollBar('#main', '#procedure_box', '#procedure'); self.initScrollBar('#main', '#scrollbox', '#scrollcontent');
//Get step HTML //Get step HTML
self.vars.stepHtml = self.getMainElem('#step_model').html(); self.vars.stepHtml = self.getMainElem('#step_model').html();

View File

@@ -35,19 +35,19 @@ databap.pageInit = function()
//Add EHP improvements, SP bug fixes and WIP //Add EHP improvements, SP bug fixes and WIP
var $ActivityBox, sIcon; var $ActivityBox, sIcon;
var asActivityTypes = { var asActivityTypes = {
sp_fixes: [ 'Réparation des fichiers téléchargés (documentation)', sp_fixes: [ ],
'Réparation du /img dans le chat : Le type de l\'image est lu dans le header de la requête http et non dans l\'extension'], 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: [ 'Utilisation des # pour les accès aux pages, compatible avec les boutons prec/suiv des navigateurs. Ex: <a href="#chat">databap.lutran.fr#chat</a>', 'Nouveau design',
'Mot de passe personnalisé et modifiable dans les <a href="#options">options</a>', 'Ajout des notes sans authentification : #note-<num>',
'paramètre dans les <a href="#options">options</a> pour supprimer les messages d\'arrivée et de départ des gens (console)', 'Annonceurs: Commande /news X : Vous annoncez le message X (votre message est ajouté à la liste des news automatiquement)',
'Téléversement de documentation', 'Les valeurs par default des options sont maintenant écrites',
'Documentation de tables ECC / BW', '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',
'Homogénéisation des icônes', 'Le blog <a href="http://www.biportal.org/sap_bi_blog" target="_blank">BI Portal</a> a été ajouté à la liste des blogs parsés',
'Recherche élargie sur tous les types de documents (codes, procédures, docs, articles et tables)', 'Le blog <a href="http://sapbwbw.com/" target="_blank">SAP BW BW</a> a été ajouté à la liste des blogs parsés',
'Commande /invite X : invite X à rejoindre le chan ouvert (Cf. Clippy)', 'Le blog <a href="http://scn.sap.com/community/businessobjects-design-studio/blog" target="_blank">SAP Design Studio</a> a été ajouté à la liste des blogs parsés',
'Des filtres peuvent être appliqués à la liste complète des documents'], 'Le blog <a href="http://scn.sap.com/community/businessobjects-analysis-ms-office/blog" target="_blank">SAP Analysis for Office</a> a été ajouté à la liste des blogs parsés'],
wip: [ 'Filtre par type de documents (table, code, procédure, ...) applicable post-recherche (affinage)', wip: [ 'Filtre par type de documents (table, code, procédure, ...) applicable post-recherche (affinage)',
'Messages non lus mémorisés par utilisateur. Possibilité d\'accéder à tous les messags non lus, mêmes plus anciens qu\'une journée<span class="round milestone"><i class="fa fa-c-version"></i>1.1</span>', 'Messages non lus mémorisés par utilisateur',
'Son lors de nouveaux messages (chat)', 'Son lors de nouveaux messages (chat)',
'lecteur de fichier online (pdf, txt, image, word ?)', 'lecteur de fichier online (pdf, txt, image, word ?)',
'Version compatible mobile (surtout pour le chat)', 'Version compatible mobile (surtout pour le chat)',

View File

@@ -1,8 +1,35 @@
/* Fonts */
@font-face {
font-family: 'Databap';
font-style: normal;
font-weight: 400;
src: local('Databap'), url(style/databap_normal_normal.woff) format('woff');
}
@font-face {
font-family: 'Databap';
font-style: normal;
font-weight: 700;
src: local('Databap Bold'), local('Databap-Bold'), url(style/databap_normal_bold.woff) format('woff');
}
@font-face {
font-family: 'Databap';
font-style: italic;
font-weight: 400;
src: local('Databap Italic'), local('Databap-Italic'), url(style/databap_italic_normal.woff) format('woff');
}
@font-face {
font-family: 'Databap';
font-style: italic;
font-weight: 700;
src: local('Databap Bold Italic'), local('Databap-BoldItalic'), url(style/databap_italic_bold.woff) format('woff');
}
/* Standard Tags */ /* Standard Tags */
body, html { body, html {
background:$col_none; background:$col_none;
font-family:Verdana, Arial; font-family: 'Databap', sans-serif;
color:$col_main_1; color:$col_main_1;
background:$col_main_1; background:$col_main_1;
padding:0; padding:0;
@@ -24,13 +51,12 @@ table td {
} }
input, textarea, select { input, textarea, select {
font-family:Verdana, Arial; font-family: 'Databap', sans-serif;
font-size:12px; font-size:$size_big;
background:none; background:$col_none;
border:none; border:none;
} }
input[type=text], input[type=password] { input[type=text], input[type=password] {
border:2px solid $col_main_1;
padding:5px; padding:5px;
width:200px; width:200px;
} }
@@ -41,8 +67,6 @@ input[type=button]:hover, input[type=submit]:hover, input[type=password]:hover,
input[disabled="disabled"], textarea[disabled="disabled"], input:disabled, textarea:disabled { input[disabled="disabled"], textarea[disabled="disabled"], input:disabled, textarea:disabled {
background-color:$col_main_2; background-color:$col_main_2;
border-color:$col_main_2;
border:2px solid $col_main_1;
} }
input[disabled="disabled"]:hover, textarea[disabled="disabled"]:hover, input:disabled:hover, textarea:disabled:hover { input[disabled="disabled"]:hover, textarea[disabled="disabled"]:hover, input:disabled:hover, textarea:disabled:hover {
@@ -57,9 +81,17 @@ input[type=button], .clickable {
cursor:pointer; cursor:pointer;
} }
iframe {
width:100%;
height:100%;
margin: 0;
overflow: hidden;
background:$col_main_3;
border:none;
}
select { select {
background:$col_none; background:$col_none;
border:2px solid $col_main_1;
padding:5px; padding:5px;
color:$col_main_1; color:$col_main_1;
margin:0; margin:0;
@@ -103,6 +135,13 @@ img {
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='$fromColor', endColorstr='$ToColor',GradientType=1 ); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='$fromColor', endColorstr='$ToColor',GradientType=1 );
} }
@mixin round($TopLeft, $TopRight, $BottomLeft, $BottomLeft) {
-moz-border-radius:$TopLeft $TopRight $BottomLeft $BottomLeft;
-webkit-border-radius:$TopLeft $TopRight $BottomLeft $BottomLeft;
-khtml-border-radius:$TopLeft $TopRight $BottomLeft $BottomLeft;
border-radius:$TopLeft $TopRight $BottomLeft $BottomLeft;
}
/* Classes */ /* Classes */
.round_top { .round_top {
@@ -185,21 +224,21 @@ img {
.error, .error a { .error, .error a {
color:$col_error; color:$col_error;
border-color:$col_error; border-color:$col_error;
font-size:14px; font-size:$size_vbig;
font-weight:bold; font-weight:bold;
} }
.warning, .warning a { .warning, .warning a {
color:$col_warning; color:$col_warning;
border-color:$col_warning; border-color:$col_warning;
font-size:13px; font-size:$size_vbig;
font-style:italic; font-style:italic;
} }
.success, .success a { .success, .success a {
color:$col_success; color:$col_success;
border-color:$col_success; border-color:$col_success;
font-size:13px; font-size:$size_vbig;
} }
.default_text { .default_text {
@@ -209,10 +248,9 @@ img {
a.button { a.button {
padding:7px; padding:7px;
margin-right:5px; margin-right:5px;
background:$col_main_2; background:$col_main_3;
font-size:12px; font-size:$size_big;
cursor:pointer; cursor:pointer;
border:1px solid $col_main_1;
/*position:relative;*/ /*position:relative;*/
display:inline-block; display:inline-block;
} }
@@ -300,19 +338,18 @@ a[href^="table"].internal_link span.item {
.author_box { .author_box {
padding:5px 10px; padding:5px 10px;
border:1px solid $col_main_1;
color:$col_main_1; color:$col_main_1;
font-style:italic; font-style:italic;
font-size:12px; font-size:$size_big;
} }
.author_box:nth-child(odd) { .author_box:nth-child(odd) {
background:$col_main_3; background:$col_none;
} }
.author_box:nth-child(even) { .author_box:nth-child(even) {
background:$col_main_2; background:$col_main_4;
} }
.author_box:hover { .author_box:hover a {
border-color:$col_hover_1; color:$col_hover_1;
} }
.author_box a { .author_box a {
@@ -329,7 +366,7 @@ a[href^="table"].internal_link span.item {
.author_box span.description { .author_box span.description {
font-weight:bold; font-weight:bold;
font-style:normal; font-style:normal;
font-size:13px; font-size:$size_vbig;
} }
.author_box span.rank { .author_box span.rank {
@@ -340,9 +377,6 @@ a[href^="table"].internal_link span.item {
.standalone .author_box { .standalone .author_box {
margin-top:10px; margin-top:10px;
} }
.standalone .author_box:hover {
color:$col_hover_1;
}
.hide, .mobile { .hide, .mobile {
display:none; display:none;
@@ -354,18 +388,17 @@ a[href^="table"].internal_link span.item {
margin-top:5px; margin-top:5px;
margin-bottom:5px; margin-bottom:5px;
padding:10px; padding:10px;
background:$col_main_2; background:$col_main_3;
color:$col_main_1; color:$col_main_1;
border: 2px solid $col_main_1;
} }
.step_box:nth-child(even) { .step_box:nth-child(even) {
background:$col_main_3; background:$col_main_4;
} }
.step_box input, .step_box textarea, .step_box select, .step_box .read.textarea, .step_box .read.input { .step_box input, .step_box textarea, .step_box select, .step_box .read.textarea, .step_box .read.input {
margin-top:10px; margin-top:10px;
background:$col_none; background:$col_none;
font-size:14px; font-size:$size_vbig;
border-width:1px; border-width:1px;
} }
.step_box input:disabled, .step_box textarea:disabled, .step_box select:disabled, .step_box input:hover:disabled, .step_box textarea:hover:disabled, .step_box select:hover:disabled { .step_box input:disabled, .step_box textarea:disabled, .step_box select:disabled, .step_box input:hover:disabled, .step_box textarea:hover:disabled, .step_box select:hover:disabled {
@@ -378,7 +411,6 @@ a[href^="table"].internal_link span.item {
height:200px; height:200px;
padding:5px; padding:5px;
background:$col_none; background:$col_none;
border:1px solid $col_main_1;
} }
.step_box .read.textarea, .step_box .read.input { .step_box .read.textarea, .step_box .read.input {
border-color:$col_main_2; border-color:$col_main_2;
@@ -388,7 +420,7 @@ a[href^="table"].internal_link span.item {
background-color:$col_main_3; background-color:$col_main_3;
} }
.step_box:nth-child(even) .read.textarea { .step_box:nth-child(even) .read.textarea {
background-color:$col_main_2; background-color:$col_main_4;
} }
.step_box .read.input { .step_box .read.input {
background-color:$col_main_2; background-color:$col_main_2;
@@ -462,7 +494,6 @@ a[href^="table"].internal_link span.item {
height:100%; height:100%;
height:210px; height:210px;
z-index:2; z-index:2;
border:1px solid $col_main_1;
background:$col_none; background:$col_none;
text-align:center; text-align:center;
} }
@@ -498,7 +529,7 @@ a[href^="table"].internal_link span.item {
} }
.uploader_item_size, .uploader_item_cancel { .uploader_item_size, .uploader_item_cancel {
font-size:12px; font-size:$size_big;
font-weight: normal; font-weight: normal;
} }
@@ -515,7 +546,7 @@ a.uploader_item_cancel {
.uploader_box .image_action { .uploader_box .image_action {
font-size:12px; font-size:$size_big;
} }
.uploader_box .image_action input { .uploader_box .image_action input {

View File

@@ -4,8 +4,9 @@
/* Main colors */ /* Main colors */
$col_main_1: #04357B; $col_main_1: #04357B;
$col_main_2: #D9E5F2; $col_main_2: /*#D9E5F2;*/#88B2F0;
$col_main_3: #DCF2FB; $col_main_3: /*#DCF2FB;*/#D9E5F2;
$col_main_4:#f2f5f9;
/* Flashy hover colors */ /* Flashy hover colors */
$col_hover_1: #EFAB00; $col_hover_1: #EFAB00;
@@ -13,10 +14,22 @@ $col_hover_2: #F2E1B5;
/* Traffic light colors */ /* Traffic light colors */
$col_success: green; $col_success: green;
$col_success_2:#B2D6B2;
$col_warning: orange; $col_warning: orange;
$col_error: red; $col_error: red;
$col_error_2:#F6D3D3;
/* Technical colors */ /* Technical colors */
$col_none: #FFFFFF; $col_none: #FFFFFF;
$col_black: #000000; $col_black: #000000;
$col_main_4: #0C8BCE;
/* Font size */
$size_small:9px;
$size_medium:10px;
$size_big:11px;
$size_vbig:13px;
$size_vvbig:15px;
$size_subtitle:16px;
$size_title:20px;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -10,7 +10,7 @@
#container { #container {
background:$col_main_1; background:$col_main_1;
padding:10px 10px 1px; padding:10px 10px 1px 1px;
} }
/* Header */ /* Header */
@@ -49,7 +49,6 @@
#search_btn_submit { #search_btn_submit {
background:$col_main_2; background:$col_main_2;
border-left:2px solid $col_main_1;
height:20px; height:20px;
padding-top:5px; padding-top:5px;
} }
@@ -62,28 +61,26 @@
/* Main */ /* Main */
#main_container { #main_container {
background:$col_none; background:$col_main_2;
margin-left:30px; margin-left:35px;
position:relative; position:relative;
overflow:hidden; overflow:hidden;
border:10px solid $col_none; border:10px solid $col_main_2;
} }
#page_title { #page_title .side_margins {
margin-bottom:10px; margin:0 0 10px 0;
} }
#page_title h1 { #page_title h1 {
margin:0 -12px 12px; padding:2px 0; /*To fit the icon in*/
padding:12px 10px; margin:0;
width:100%; width:100%;
border:2px solid $col_main_1; font-family: 'Databap', sans-serif;
font-family:Arial;
font-size:32px; font-size:32px;
line-height:32px; line-height:32px;
font-style:italic; font-style:italic;
font-weight:600; font-weight:bold;
@include gradient-diag($col_main_2, $col_none, 25%, 75%);
} }
#page_title h1 #title_feedback { #page_title h1 #title_feedback {
@@ -109,32 +106,11 @@
#menu { #menu {
position:absolute; position:absolute;
width:20px; width:auto;
padding:10px 0; padding:10px 0;
z-index:10; z-index:10;
border-right:0 solid $col_main_1;
background: $col_main_2; #menu_title {
background: -moz-linear-gradient(top, $col_main_2 0%, $col_none 25%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$col_main_2), color-stop(25%,$col_none));
background: -webkit-linear-gradient(top, $col_main_2 0%,$col_none 25%);
background: -o-linear-gradient(top, $col_main_2 0%,$col_none 25%);
background: -ms-linear-gradient(top, $col_main_2 0%,$col_none 25%);
background: linear-gradient(to bottom, $col_main_2 0%,$col_none 25%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='$col_main_2', endColorstr='$col_none',GradientType=0 );
}
#menu.opened {
background: $col_none;
background: -moz-linear-gradient(left, $col_none 75%, rgba(255,255,255,0) 100%);
background: -webkit-gradient(linear, left top, right top, color-stop(75%,$col_none), color-stop(100%,rgba(255,255,255,0)));
background: -webkit-linear-gradient(left, $col_none 75%,rgba(255,255,255,0) 100%);
background: -o-linear-gradient(left, $col_none 75%,rgba(255,255,255,0) 100%);
background: -ms-linear-gradient(left, $col_none 75%,rgba(255,255,255,0) 100%);
background: linear-gradient(to right, $col_none 75%,rgba(255,255,255,0) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='$col_none', endColorstr='#00ffffff',GradientType=1 );
}
#menu #menu_title {
position:relative; position:relative;
padding:0; padding:0;
margin:21px 0 0 0; margin:21px 0 0 0;
@@ -145,13 +121,7 @@
font-weight:bold; font-weight:bold;
} }
#menu #menu_box { #menu_box ul {
display:none;
color:$col_main_1;
text-align:center;
}
#menu #menu_box ul {
margin:0; margin:0;
padding:0; padding:0;
text-align:left; text-align:left;
@@ -159,9 +129,9 @@
list-style:none; list-style:none;
} }
#menu #menu_box ul li { #menu_box ul li {
padding:10px 10px 10px 0;
margin:0; margin:0;
padding:5px 3px 5px 15px;
list-style:none; list-style:none;
cursor:pointer; cursor:pointer;
line-height:20px; line-height:20px;
@@ -170,50 +140,56 @@
text-transform:capitalize; text-transform:capitalize;
} }
#menu #menu_box ul li:FIRST-CHILD { #menu_box ul li:FIRST-CHILD {
padding-left:5px; padding-top:0;
font-weight: bold;
} }
#menu #menu_box ul li a { #menu_box ul li:FIRST-CHILD a {
color:$col_main_1; padding-top:8px;
display:block; }
#menu_box ul li a {
padding:10px 0 10px 0;
color:$col_main_2;
display:inline-block;
width:100%; width:100%;
} }
#menu #menu_box ul li:hover a {
#menu_box ul li:hover a {
color:$col_hover_1; color:$col_hover_1;
} }
#menu #menu_box ul li#rss_ln a { #menu_box a.active {
background:#88B2F0;
color:$col_hover_1;
padding-right: 10px;
@include round(10px, 10px, 10px, 10px);
}
#menu_box ul li a span {
display: none;
}
#menu_box a.active span {
display:inline-block;
text-transform:capitalize;
background:#04357B;
}
#menu_box ul li a.active .fa {
margin-right:10px;
}
#menu_box ul li#rss_ln a {
color:$col_main_1; color:$col_main_1;
} }
#menu #menu_box ul li#quick_code_access_ln input {
border:2px solid $col_main_1;
width:60px;
padding:0 5px;
font-size:16px;
color:$col_main_1;
}
#menu #menu_box ul li .fa {
margin-right:5px;
}
#menu .useless_button {
width:0;
height:0;
position:absolute;
bottom:5px;
left:5px;
border:5px solid $col_main_1;
} }
/* Welcome */ /* Welcome */
#welcome #welcome_container { #welcome #welcome_container {
border:2px solid $col_main_1; background:$col_main_3;
background:$col_main_2;
padding:10px; padding:10px;
} }
@@ -230,13 +206,13 @@
} }
#welcome #welcome_container ul li { #welcome #welcome_container ul li {
font-size:13px; font-size:$size_vbig;
margin-top:10px; margin-top:10px;
font-weight: bold; font-weight: bold;
} }
#welcome #welcome_container ul li ul { #welcome #welcome_container ul li ul {
font-size:12px; font-size:$size_big;
margin-top:2px; margin-top:2px;
} }
@@ -285,7 +261,7 @@
/* Add Code */ /* Add Code */
#add_code_container, #add_code_container input { #add_code_container, #add_code_container input {
font-size:14px; font-size:$size_vbig;
} }
#add_code_container table { #add_code_container table {
@@ -308,12 +284,11 @@
margin:0 -10px; margin:0 -10px;
padding:10px 6px 10px 10px; padding:10px 6px 10px 10px;
width:100%; width:100%;
border:2px solid $col_main_1;
min-height:100px; min-height:100px;
height:300px; height:300px;
font-family:courier; font-family:Courier New, Courier;
color:$col_black; color:$col_black;
font-size:14px; font-size:$size_vbig;
} }
#add_code_container .loggued { #add_code_container .loggued {
@@ -321,7 +296,6 @@
} }
#add_code_container input[type=text] { #add_code_container input[type=text] {
border:2px solid $col_main_1;
width:400px; width:400px;
padding:5px; padding:5px;
color:$col_main_1; color:$col_main_1;
@@ -342,15 +316,13 @@
#link_result, #available_phrase { #link_result, #available_phrase {
display:none; display:none;
border:2px solid;
margin-left:15px; margin-left:15px;
padding:5px; padding:5px;
font-size:14px; font-size:$size_vbig;
} }
#link_result { #link_result {
color:$col_main_1; color:$col_main_1;
border-color:$col_main_1;
} }
#available_phrase { #available_phrase {
@@ -359,11 +331,11 @@
#available_phrase.available { #available_phrase.available {
color:$col_success; color:$col_success;
border-color:$col_success; background:$col_success_2;
} }
#available_phrase.unavailable { #available_phrase.unavailable {
color:$col_error; color:$col_error;
border-color:$col_error; background:$col_error_2;
} }
/* read code */ /* read code */
@@ -380,7 +352,6 @@
#code_container .code_reader { #code_container .code_reader {
margin:10px 0 0 0; margin:10px 0 0 0;
border:2px solid $col_main_1;
padding:0; padding:0;
background:#b5b5c6; background:#b5b5c6;
background:$col_main_1; background:$col_main_1;
@@ -431,7 +402,7 @@
border-left:1px dotted #398c8c; border-left:1px dotted #398c8c;
background:$col_none; background:$col_none;
font-family:Courier New, Courier; font-family:Courier New, Courier;
font-size:12px; font-size:$size_big;
line-height:12px; line-height:12px;
text-indent:20px; text-indent:20px;
color:#398c8c; color:#398c8c;
@@ -447,7 +418,7 @@
} }
#code_container .code_reader ol li:hover, #code_container .code_reader ol li.code_hover { #code_container .code_reader ol li:hover, #code_container .code_reader ol li.code_hover {
background-color:$col_main_2; background-color:$col_main_3;
} }
#code_container .code_reader .core {color:#0000ff; text-transform:uppercase;} #code_container .code_reader .core {color:#0000ff; text-transform:uppercase;}
@@ -483,7 +454,7 @@
color:$col_black; color:$col_black;
} }
#code_container .code_reader ol li span.code, ol li span.comment { #code_container .code_reader ol li span.code, ol li span.comment {
font-size:14px; font-size:$size_vbig;
margin-left:15px; margin-left:15px;
} }
#code_container .code_reader ol li span.comment span, #code_container .code_reader ol li span.code span.comment { #code_container .code_reader ol li span.comment span, #code_container .code_reader ol li span.code span.comment {
@@ -568,7 +539,7 @@
#search .summary { #search .summary {
margin: 10px 0 0px 5px; margin: 10px 0 0px 5px;
font-size:14px; font-size:$size_vbig;
font-style: italic; font-style: italic;
} }
@@ -597,7 +568,6 @@
width:96px; width:96px;
height:96px; height:96px;
background:url("images/avatar_96.png") 0 0 no-repeat; background:url("images/avatar_96.png") 0 0 no-repeat;
border:2px solid $col_main_1;
float:left; float:left;
} }
@@ -612,8 +582,7 @@
margin-left:110px; /* 96 (picture) + 10 (margin) + 4 (borders) */ margin-left:110px; /* 96 (picture) + 10 (margin) + 4 (borders) */
padding:10px 16px; padding:10px 16px;
height:76px; /* 96 (picture height) - 20 (padding) */ height:76px; /* 96 (picture height) - 20 (padding) */
border:2px solid $col_main_1; background:$col_main_3;
background:$col_main_2;
} }
#profile .user .fa { #profile .user .fa {
@@ -640,18 +609,17 @@
#profile #history_subbox { #profile #history_subbox {
margin-top:10px; margin-top:10px;
border:2px solid $col_main_1;
} }
#profile #user_history p.history_line { #profile #user_history p.history_line {
padding:5px 10px; padding:5px 10px;
font-size:14px; font-size:$size_vbig;
} }
#profile #user_history p.history_line:nth-child(odd) { #profile #user_history p.history_line:nth-child(odd) {
background:$col_main_2; background:$col_none;
} }
#profile #user_history p.history_line:nth-child(even) { #profile #user_history p.history_line:nth-child(even) {
background:$col_none; background:$col_main_4;
} }
#profile #user_history p.history_line:FIRST-CHILD { #profile #user_history p.history_line:FIRST-CHILD {
-moz-border-radius-topleft: 10px; -moz-border-radius-topleft: 10px;
@@ -692,9 +660,9 @@
#chat #chat_room { #chat #chat_room {
margin-right:175px; /* 165px + 10px (margin-left) */ margin-right:175px; /* 165px + 10px (margin-left) */
border:2px solid $col_main_1;
background:$col_none; background:$col_none;
height:100%; height:100%;
padding:5px;
} }
.g_white_transparent { .g_white_transparent {
@@ -727,7 +695,7 @@
#chat #chat_room #chat_container { #chat #chat_room #chat_container {
clear:both; clear:both;
margin:5px 5px 0; padding-bottom:5px;
} }
#chat #chat_room #chat_container #chat_messages_box { #chat #chat_room #chat_container #chat_messages_box {
position:relative; position:relative;
@@ -762,7 +730,7 @@
/*background-color:white;*/ /*background-color:white;*/
} }
#chat_messages p.A, #chat_messages p.PA, #chat_messages p.E, #chat_messages p.PE, #chat_messages p.N { #chat_messages p.A, #chat_messages p.PA, #chat_messages p.E, #chat_messages p.PE, #chat_messages p.N {
background-color:$col_main_2; background-color:$col_main_3;
font-style:italic; font-style:italic;
} }
#chat_messages p.C { #chat_messages p.C {
@@ -772,11 +740,11 @@
} }
#chat_messages p span.time { #chat_messages p span.time {
color:$col_hover_1; color:$col_hover_1;
font-size:10px; font-size:$size_small;
font-style:normal; font-style:normal;
} }
#chat_messages p a.user, #chat_messages p span.console { #chat_messages p a.user, #chat_messages p span.console {
font-size:12px; font-size:$size_medium;
font-weight:bold; font-weight:bold;
color:$col_main_1; color:$col_main_1;
} }
@@ -788,7 +756,7 @@
} }
#chat_messages p span.text { #chat_messages p span.text {
margin-left:5px; margin-left:5px;
font-size:13px; font-size:$size_big;
} }
#chat_messages p span.action { #chat_messages p span.action {
font-style:italic; font-style:italic;
@@ -819,10 +787,10 @@
#chat_messages .help p { #chat_messages .help p {
padding:0 5px; padding:0 5px;
color:#666666; color:#666666;
font-size:10px; font-size:$size_medium;
} }
#chat_messages .help p.title { #chat_messages .help p.title {
font-size:14px; font-size:$size_big;
padding:3px 5px; padding:3px 5px;
border-bottom:1px dashed #666666; border-bottom:1px dashed #666666;
letter-spacing:0; letter-spacing:0;
@@ -832,7 +800,7 @@
} }
#chat_messages .help p.subtitle { #chat_messages .help p.subtitle {
margin-top:5px; margin-top:5px;
font-size:12px; font-size:$size_medium;
} }
#chat_messages .help p.item { #chat_messages .help p.item {
margin-top:1px; margin-top:1px;
@@ -847,24 +815,24 @@
} }
#chat #chat_input { #chat #chat_input {
margin:5px; background:$col_main_3;
padding:0 5px; color:#94BDF9;
background:$col_main_1; overflow: hidden;
} }
#chat #chat_input .fa { #chat #chat_input .fa {
color:$col_main_2; color:$col_main_1;
margin-right:2px; margin-right:3px;
margin-left:3px;
} }
#chat #chat_input input#message { #chat #chat_input input#message {
color:$col_none; background:$col_main_3;
margin:0; margin:0;
padding:7px 0; padding:7px 0;
border:none; border:none;
min-width:200px; min-width:200px;
font-size:13px; font-size:$size_vbig;
line-height:13px;
} }
#chat #chat_input input#message:hover, #chat #chat_input input#message:focus { #chat #chat_input input#message:hover, #chat #chat_input input#message:focus {
@@ -883,25 +851,26 @@
#chat #sidebar .sidebar_box { #chat #sidebar .sidebar_box {
position:relative; position:relative;
border:2px solid $col_main_1;
font-weight:bold; font-weight:bold;
padding:0; padding:0;
margin-bottom:10px; margin-bottom:10px;
overflow: hidden;
} }
#chat #sidebar .sidebar_box_title { #chat #sidebar .sidebar_box_title {
background-color:$col_main_2; background-color:$col_main_3;
text-align:center; text-align:center;
font-size:$size_subtitle;
} }
#chat #sidebar .sidebar_box_content { #chat #sidebar .sidebar_box_content {
border-top:2px solid $col_main_1; background:$col_none;
font-size:12px; font-size:$size_medium;
font-weight:normal; font-weight:normal;
} }
#chat #sidebar .help_paperclip { #chat #sidebar .help_paperclip {
background: transparent url('images/ms_paperclip_112.jpg') 50% 50% no-repeat; background: $col_none url('images/ms_paperclip_112.jpg') 50% 50% no-repeat;
height:109px; height:109px;
} }
@@ -916,7 +885,7 @@
} }
#chat #sidebar p.connected_user { #chat #sidebar p.connected_user {
font-size:16px; font-size:$size_vbig;
} }
#chat #sidebar a.connected_user_logo img { #chat #sidebar a.connected_user_logo img {
vertical-align:middle; vertical-align:middle;
@@ -944,22 +913,20 @@
} }
#chat #chat_chan { #chat #chat_chan {
margin-bottom: -2px;
} }
#chat #chat_chan .tab_bar { #chat #chat_chan .tab_bar {
font-weight:bold; font-weight:bold;
text-align:right; margin:0 0 0 5px; /* 165px + the round corner */
margin:0 184px 0 0; /* 165px + the round corner */
} }
#chat #chat_chan .tab_bar span.chan { #chat #chat_chan .tab_bar span.chan {
display: inline-block; display: inline-block;
background-color:$col_main_2; background-color:$col_main_3;
padding:2px 8px; padding:2px 8px;
border:2px solid $col_main_1;
margin-left:5px; margin-left:5px;
color:$col_main_1; color:$col_main_1;
font-size:$size_vvbig;
} }
#chat #chat_chan .tab_bar span#join_chan { #chat #chat_chan .tab_bar span#join_chan {
@@ -995,9 +962,12 @@
color:$col_hover_1; color:$col_hover_1;
} }
#chat #chat_chan .tab_bar span#join_chan .hash {
margin-left:5px;
}
#chat #chat_chan .tab_bar span#join_chan input, #chat #chat_chan .tab_bar span#join_chan input:hover { #chat #chat_chan .tab_bar span#join_chan input, #chat #chat_chan .tab_bar span#join_chan input:hover {
border:none; border:none;
font-size:14px; font-size:$size_vvbig;
padding:0; padding:0;
margin:0; margin:0;
width:70px; width:70px;
@@ -1022,10 +992,10 @@
padding:6px 5px; padding:6px 5px;
} }
#chat #news .new:nth-child(even) { #chat #news .new:nth-child(even) {
background:$col_main_3; background:$col_none;
} }
#chat #news .new:nth-child(odd) { #chat #news .new:nth-child(odd) {
background:$col_main_2; background:$col_main_4;
} }
#chat #news .new:last-child { #chat #news .new:last-child {
-moz-border-radius:0 0 10px 10px; -moz-border-radius:0 0 10px 10px;
@@ -1044,8 +1014,7 @@
/* Options */ /* Options */
#options .options_box { #options .options_box {
background:$col_main_2; background:$col_main_3;
border:2px solid $col_main_1;
width:490px; width:490px;
float:left; float:left;
margin:0 10px 10px 0; margin:0 10px 10px 0;
@@ -1068,10 +1037,10 @@
} }
#options .options_box input[type=text], #options .options_box input[type=password], #options .options_box select { #options .options_box input[type=text], #options .options_box input[type=password], #options .options_box select {
font-size:14px; font-size:$size_big;
background:$col_none; background:$col_none;
border-width:1px; border-width:1px;
font-size:14px; font-size:$size_vbig;
padding:5px; padding:5px;
float:right; float:right;
} }
@@ -1082,7 +1051,6 @@
} }
#options .options_box select { #options .options_box select {
border:1px solid $col_main_1;
color:$col_main_1; color:$col_main_1;
} }
@@ -1103,19 +1071,23 @@
background-color:$col_hover_1 background-color:$col_hover_1
} }
#procedure #procedure_steps .step_box:LAST-CHILD {
margin-bottom:0;
}
#titles_read p.read_title { #titles_read p.read_title {
border-bottom:1px solid $col_main_1; border-bottom:1px solid $col_main_1;
font-weight:bold; font-weight:bold;
} }
#titles_read p.read_details { #titles_read p.read_details {
font-size:12px; font-size:$size_big;
font-style:italic; font-style:italic;
margin:3px 0 15px 0; margin:3px 0 15px 0;
} }
#titles_read p.read_description { #titles_read p.read_description {
font-size:14px; font-size:$size_vbig;
} }
#titles_read p.read_description .fa { #titles_read p.read_description .fa {
@@ -1158,6 +1130,10 @@
background:$col_none; background:$col_none;
} }
#procedure #procedure_title {
margin-top:0;
}
#procedure #bottom_menu { #procedure #bottom_menu {
margin:10px 0 0 0; margin:10px 0 0 0;
} }
@@ -1189,7 +1165,7 @@
} }
#procedure .thumbnail_desc { #procedure .thumbnail_desc {
font-size:12px; font-size:$size_big;
} }
/* Procedure - Uploader */ /* Procedure - Uploader */
@@ -1199,7 +1175,7 @@
} }
#procedure .uploader_box .error { #procedure .uploader_box .error {
font-size:12px; font-size:$size_big;
margin:10px 0; margin:10px 0;
} }
@@ -1214,6 +1190,10 @@
margin-bottom:10px; margin-bottom:10px;
} }
#doc .step_box:nth-child(odd) {
background:$col_main_4;
}
#doc #attach_file { #doc #attach_file {
margin-top:10px; margin-top:10px;
} }
@@ -1309,7 +1289,7 @@
#footer p, #footer a { #footer p, #footer a {
color:$col_none; color:$col_none;
margin:0; margin:0;
font-size:9px; font-size:$size_small;
} }
#footer a { #footer a {
@@ -1320,8 +1300,9 @@
#logout p { #logout p {
font-size:18px; font-size:18px;
color:$col_main_1; background-color:$col_main_3;
margin-top:25px; margin-top:25px;
padding:5px;
} }
/* Note */ /* Note */
@@ -1330,14 +1311,6 @@
height:100%; height:100%;
} }
#note_frame {
width:calc(100% - 4px);
height:calc(100% - 4px);
border: 2px solid $col_main_1;
margin: 0;
overflow: hidden;
}
#note_form { #note_form {
margin-bottom: 10px; margin-bottom: 10px;
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -5,8 +5,7 @@
@import 'fa-custom'; @import 'fa-custom';
@import 'common'; @import 'common';
/* Fix librairies location */ /* FIXME librairies location */
/* FIXME */
@font-face { @font-face {
font-family: 'FontAwesome'; font-family: 'FontAwesome';
src: url('fontawesome-webfont.eot?v=4.2.0'); src: url('fontawesome-webfont.eot?v=4.2.0');
@@ -14,6 +13,30 @@
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@font-face {
font-family: 'Databap';
font-style: normal;
font-weight: 400;
src: local('Databap'), url(databap_normal_normal.woff) format('woff');
}
@font-face {
font-family: 'Databap';
font-style: normal;
font-weight: 700;
src: local('Databap Bold'), local('Databap-Bold'), url(databap_normal_bold.woff) format('woff');
}
@font-face {
font-family: 'Databap';
font-style: italic;
font-weight: 400;
src: local('Databap Italic'), local('Databap-Italic'), url(databap_italic_normal.woff) format('woff');
}
@font-face {
font-family: 'Databap';
font-style: italic;
font-weight: 700;
src: local('Databap Bold Italic'), local('Databap-BoldItalic'), url(databap_italic_bold.woff) format('woff');
}
/* Logon */ /* Logon */

40
todo
View File

@@ -8,22 +8,24 @@ Internal:
- 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
- Supprimer l'extension pendant le stockage et la remettre dans la getDownload(). La stocker en base.
- Mettre tous les docs/img dans table FILES
Bug fix: Bug fix:
- add big company logo in db (new col). Use it in profile ? - add big company logo in db (new col). Use it in profile ?
- [1.0.3] Resize .gif + fix unresized ones - [1.1.1] Resize .gif + fix unresized ones
- Fix les "xxx se déconnecte" intempestives - Fix les "xxx se déconnecte" intempestives
- code reader : mettre la scrollbar à l'intérieur du code - code reader : mettre la scrollbar à l'intérieur du code
- Trouver une meilleure place pour le menu - Trouver une meilleure place pour le menu
New features: New features:
- [1.1.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.1.0] Unread messages par user (dedicated table). No more daily cut - [1.2.0] Unread messages par user (dedicated table). No more daily cut
- [1.1.0] Refiltre par type dans le search - [1.2.0] Refiltre par type dans le search
- [1.1.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.1.0] Son pour les nouveaux messages - [1.2.0] Son pour les nouveaux messages
- [1.1.0] Chat : compatibilité mobile (utiliser la fonctionnalité ff) - [1.2.0] Chat : compatibilité mobile (utiliser la fonctionnalité ff)
- [1.1.0] search : add tagname, like code:blabla to search blabla in codes only - [1.2.0] search : add tagname, like code:blabla to search blabla in codes only
- [1.2.0] Delete phrases table / généraliser ? ne pas oublier la item list - [1.2.0] Delete phrases table / généraliser ? ne pas oublier la item list
- [1.3.0] Reward on post - [1.3.0] Reward on post
- modification code : possibilité de modifier la description d'un code après enregistrement + entre les versions - modification code : possibilité de modifier la description d'un code après enregistrement + entre les versions
@@ -36,15 +38,10 @@ New features:
Design Design
- profil : donner la possibilité de mettre des images de profil - profil : donner la possibilité de mettre des images de profil
EHP 1 EHP 2
----- -----
- Annonceurs: Commande /news X : Vous annoncez le message X (votre message est ajouté à la liste des news automatiquement) -
- 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://www.biportal.org/sap_bi_blog" target="_blank">BI Portal</a> a été ajouté à la liste des blogs parsés
- Le blog <a href="http://sapbwbw.com/" target="_blank">SAP BW BW</a> a été ajouté à la liste des blogs parsés
- Interface menu modifié
- Ajout des notes sans authentification : #note-<num>
Testing Testing
------- -------
@@ -56,3 +53,16 @@ Testing
- mysql --local-infile - mysql --local-infile
- LOAD DATA LOCAL INFILE '/var/www/databap/test.csv' INTO TABLE tables CHARACTER SET UTF8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'; - LOAD DATA LOCAL INFILE '/var/www/databap/test.csv' INTO TABLE tables CHARACTER SET UTF8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\';
- Rebuild search : ?a=build_index - Rebuild search : ?a=build_index
MEP 1.1
-------
ALTER TABLE option_values add default_value tinyint(1) default 0 after option_value;
update option_values set default_value = 1 where id_option_value = 2;
insert into option_names (id_option_name, option_name, type, language) values (10, 'Chat: nombre de jours d\'historique', 'T', 'FR');
insert into option_values (id_option_name, option_value, default_value, language) values (2, '#04357B', 1, 'FR');
insert into option_values (id_option_name, option_value, default_value, language) values (3, '#D9E5F2', 1, 'FR');
insert into option_values (id_option_name, option_value, default_value, language) values (4, '#EFAB00', 1, 'FR');
insert into option_values (id_option_name, option_value, default_value, language) values (6, 'images/sap_gold_332.jpg', 1, 'FR');
insert into option_values (id_option_name, option_value, default_value, language) values (7, 'aucune mission en cours', 1, 'FR');
insert into option_values (id_option_name, option_value, default_value, language) values (10, '0', 1, 'FR');