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
+109 -73
View File
@@ -7,8 +7,8 @@
class Databap extends PhpObject
{
//Common Constants
const VERSION = '1.0.3'; //Versioning: <Main_Version>.<Enhancement_Package>.<Patch>-<Release_Candidate>
const VERSION_DATE = '27/11/2014';
const VERSION = '1.1.0'; //Versioning: <Main_Version>.<Enhancement_Package>.<Patch>-<Release_Candidate>
const VERSION_DATE = '13/12/2014';
const EXPECTED_PAGE_COOKIE = 'exp_page';
const MAIN_SEPARATOR = ' ';
const DATE_FORMAT = 'd/m/Y';
@@ -136,10 +136,7 @@ class Databap extends PhpObject
const OPT_STATUS = 7;
const OPT_CONSOLE = 8;
const OPT_EMAIL = 9;
//Options Values Id Constants
const OPT_CONSOLE_YES = 1;
const OPT_CONSOLE_NO = 2;
const OPT_CHAT_HISTO = 10;
//Options Values Constants
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::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::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::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'),
@@ -285,7 +282,8 @@ class Databap extends PhpObject
'logo' => "varchar(20) NOT NULL",
'date' => "date NOT NULL",
'system' => "varchar(3)",
'extension' => "varchar(10)"
'extension' => "varchar(10)",
'default_value'=>"tinyint(1) DEFAULT 0"
);
$asOptions['constraints'] = array
(
@@ -355,18 +353,31 @@ class Databap extends PhpObject
$sOptionValueCol = MySqlManager::getText(self::OPTVAL_TABLE);
$sOptionNameIdCol = MySqlManager::getId(self::OPTNAME_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));
$iBgColorOptId = $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));
$iHoverColorOptId = $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));
$iStatusOptId = $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));
$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_NICKNAME, $sOptionNameCol=>'pseudo du chat', '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));
$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_HOVER, $sOptionNameCol=>'couleur de survol', '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));
$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_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_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
$asConsoleValues = array(self::OPT_CONSOLE_YES=>self::OPT_VAL_YES, self::OPT_CONSOLE_NO=>self::OPT_VAL_NO);
foreach($asConsoleValues as $sConsoleValId=>$sConsoleValue){$this->oMySql->insertRow(self::OPTVAL_TABLE, array($sOptionValueIdCol=>$sConsoleValId, $sOptionNameIdCol=>self::OPT_CONSOLE, $sOptionValueCol=>$sConsoleValue, 'language'=>self::LANG_FR));}
//Select and Default Option values
$asDefaultValues = array( self::OPT_CONSOLE=>array(self::OPT_VAL_YES=>false, self::OPT_VAL_NO=>true),
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
$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,
'reboot_delay'=>self::REBOOT_DELAY,
'versionHtml'=>$this->getItemBlock(),
'opt_console_no'=>self::OPT_CONSOLE_NO,
'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));
//Variables
@@ -440,7 +451,7 @@ class Databap extends PhpObject
$asVars['user_id'] = $this->getUserId();
$asVars['hash_to_page'] = $this->getPagesFromHash();
$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));
return $oPage->getMask();
@@ -587,7 +598,9 @@ class Databap extends PhpObject
$sSAPDomain = 'http://scn.sap.com';
$asBlogPaths = array( '/community/data-warehousing/bw/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)
{
$sSAPBlogUrl = $sSAPDomain.$sSAPBlogPath;
@@ -761,14 +774,7 @@ class Databap extends PhpObject
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_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=>$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_NICKNAME, $sOptionTextCol=>self::getNickNameFormat($sFirstName)));
$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_EMAIL, $sOptionTextCol=>$sEmail));
return $iUserId;
@@ -1312,7 +1318,8 @@ class Databap extends PhpObject
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))
{
@@ -1377,11 +1384,34 @@ class Databap extends PhpObject
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)
{
$asUserOptions = $this->getUserOptions($sOptionNameId, $iUserId);
$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)
@@ -1391,25 +1421,31 @@ class Databap extends PhpObject
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
$sOptionTextCol = MySqlManager::getText(self::OPT_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());
$asUserinfo = array('select'=>array($sOptNameIdCol, $sOptValueIdCol, $sOptionTextCol),
'from'=>self::OPT_TABLE,
'constraint'=>array($sUserIdCol=>$iUserId));
if(count($oOptionNameIds)>0)
{
$asUserinfo['constraint'][$sOptNameIdCol] = "(".implode(", ", $oOptionNameIds).")";
$asUserinfo['constOpe'] = array($sUserIdCol=>"=", $sOptNameIdCol=>" IN ");
$asUserinfo['constVar'] = true;
}
$asUserinfo = array('select' => array($sOptNameIdCol, $sOptValueIdCol, $sOptionTextCol),
'from' => self::OPT_TABLE,
'constraint'=> array($sUserIdCol=>$iUserId, $sOptNameIdCol => "(".implode(", ", $oOptionNameIds).")"),
'constOpe' => array($sUserIdCol=>"=", $sOptNameIdCol=>" IN "),
'constVar' => true);
$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;
}
@@ -1559,7 +1595,7 @@ class Databap extends PhpObject
foreach($asMessages as $iChanId=>$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
@@ -1922,21 +1958,23 @@ class Databap extends PhpObject
$sConnTableUserIdCol = MySqlManager::getFullColumnName(self::CONN_TABLE, MySqlManager::getId(self::USER_TABLE));
$sConnTableChanIdCol = MySqlManager::getFullColumnName(self::CONN_TABLE, MySqlManager::getId(self::CHAN_TABLE));
//channel related messages
$sCurDate = date(Databap::DATE_SQL_FORMAT);
//User channels related messages
$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'),
'from' => self::CONN_TABLE,
'joinOn' => array( self::MSG_TABLE =>array($sMsgTableChanIdCol, '=', $sConnTableChanIdCol),
self::USER_TABLE=>array($sUserTableUserIdCol, '=', $sMsgTableUserIdCol)),
'constraint'=> array($sConnTableUserIdCol=>$this->getUserId(), $sMsgIdCol=>$iFirstMsgId, 'date'=>$sCurDate),
'constOpe' => array($sConnTableUserIdCol=>'=', $sMsgIdCol=>'>', 'date'=>'='));
'constraint'=> array($sConnTableUserIdCol=>$this->getUserId(), $sMsgIdCol=>$iFirstMsgId, 'date'=>$sLimitDate),
'constOpe' => array($sConnTableUserIdCol=>'=', $sMsgIdCol=>'>', 'date'=>'>='));
$asSqlMessages = $this->oMySql->selectRows($asInfo, true, 'id_message');
//Global messages
$asInfo['from'] = self::MSG_TABLE;
$asInfo['joinOn'] = array(self::USER_TABLE=>array($sUserTableUserIdCol, '=', $sMsgTableUserIdCol));
$asInfo['constraint'] = array($sMsgTableChanIdCol=>self::ALL_CHAN_ID, $sMsgIdCol=>$iFirstMsgId, 'date'=>$sCurDate);
$asInfo['constOpe'] = array($sMsgTableChanIdCol=>'=', $sMsgIdCol=>'>', 'date'=>'=');
$asInfo['constraint'] = array($sMsgTableChanIdCol=>self::ALL_CHAN_ID, $sMsgIdCol=>$iFirstMsgId, 'date'=>$sLimitDate);
$asInfo['constOpe'] = array($sMsgTableChanIdCol=>'=', $sMsgIdCol=>'>', 'date'=>'>=');
$asSqlGlobalMessages = $this->oMySql->selectRows($asInfo, true, 'id_message');
//Invites messages
@@ -1953,13 +1991,9 @@ class Databap extends PhpObject
//Sort out messages for Json Export
$iPrefixLen = mb_strlen(self::JSON_PREFIX);
//$iConsoleDisplay = $this->getUserOptionValue(self::OPT_CONSOLE);
$asMessages = array('messages'=>array(), 'last_message_id'=>0);
foreach($asSqlMessages as $iMessageId=>$asMessageInfo)
{
//Connection message filter
//if($iConsoleDisplay==self::OPT_CONSOLE_NO && $asMessageInfo['type']==self::MESSAGE_CONN) continue;
//General message info
$iChanId = $asMessageInfo[MySqlManager::getId(self::CHAN_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]['message'] = $asMessageInfo[$sMsgTextCol];
$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]['name'] = self::getNameFormat($asMessageInfo['first_name'], $asMessageInfo['last_name']);
$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);
}
public function getUrlAvailability($sLink)
{
$bAvailable = !$this->checkValue(self::URL_TABLE, array('phrase'=>$sLink));
return self::getJsonPostResult($bAvailable, '');
}
public function resetChanSafeNames()
{
$iChanIdCol = MySqlManager::getId(self::CHAN_TABLE);
@@ -2628,23 +2669,18 @@ class Databap extends PhpObject
public function getStyleSheet()
{
$sStyle = file_get_contents(self::STYLE_PATH);
$asDefaultColors = array( self::OPT_BG=>'#04357B',
self::OPT_BRIGHT_BG=>'#D9E5F2',
self::OPT_HOVER=>'#EFAB00',
self::OPT_IMAGE_CHAT=>'images/sap_gold_332.jpg');
$asStyleParams = array(self::OPT_BG, self::OPT_BRIGHT_BG, self::OPT_HOVER, self::OPT_IMAGE_CHAT);
//Inserting Color Ids
foreach($asDefaultColors as $iOptionNameId=>$sDefaultColor)
{
$asColorAnchors[$iOptionNameId] = '[OPT#'.$iOptionNameId.']';
}
$sStyle = str_replace($asDefaultColors, $asColorAnchors, $sStyle);
//Inserting Color Anchors
$asDefaultValues = $this->getDefaultOptionValues($asStyleParams, false);
foreach($asDefaultValues as $iOptionNameId=>$sDefaultValue) $asColorAnchors[$iOptionNameId] = '[OPT#'.$iOptionNameId.']';
$sStyle = str_replace($asDefaultValues, $asColorAnchors, $sStyle);
//Switching color Ids with user colors
$asOptionvalues = $this->getUserOptions(array_keys($asDefaultColors));
//Switching color Anchors with user colors
$asOptionvalues = $this->getUserOptions($asStyleParams);
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);
}
+1 -1
View File
@@ -129,7 +129,7 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS)
$sResult = $oDatabap->uploadFile('doc');
break;
case 'url':
$sResult = $oDatabap->checkValue(Databap::URL_TABLE, array('phrase'=>$sLink));
$sResult = $oDatabap->getUrlAvailability($sLink);
break;
case 'user_info':
$sResult = $oDatabap->getUserInfo($oDatabap->getUserId(), true);
+2 -2
View File
@@ -88,7 +88,7 @@ $.prototype.getEmptyHeight = function()
//debug('#'+$(this).attr('id')+'|.'+$(this).attr('class')+' gives '+$(this).outerHeight(true));
iTotalHeight += $(this).outerHeight(true);
});
return $This.height() - iTotalHeight;
return $This.innerHeight() - iTotalHeight;
};
$.prototype.getEmptyWidth = function()
@@ -98,7 +98,7 @@ $.prototype.getEmptyWidth = function()
{
iTotalWidth += $(this).outerWidth(true);
});
return $This.width() - iTotalWidth;
return $This.innerWidth() - iTotalWidth;
};
$.prototype.addDefaultValue = function(sDefaultValue, sInitValue)
+2 -95
View File
@@ -163,100 +163,7 @@ function Databap()
this.initMenu = function()
{
//Hover Event: open/close
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;
}
self.$menu.find('a').each(function(){$(this).attr('title', $(this).find('span').text());});
};
this.setInitEnd = function(bEnded, bAddScrollBar)
@@ -440,7 +347,7 @@ function Databap()
{
iDelta = $Elem.getEmptyHeight();
if(iDelta > 0) $Elem.height('-='+iDelta);
//debug('Removing useless '+iDelta+'px from #'+$Elem.attr('id'));
debug('Removing useless '+iDelta+'px from #'+$Elem.attr('id'));
}
};
+4 -4
View File
@@ -22,7 +22,7 @@
<div id="chat_messages"></div>
</div>
</div>
<div id="chat_input" class="tiny_round">
<div id="chat_input" class="round">
<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 />
<input type="hidden" id="chan" name="chan" value="" maxlength="50" />
@@ -252,7 +252,7 @@ function setChanButton()
.append
(
$('<span>', {id:'join_chan_input'})
.text('#')
.append($('<span>', {'class':'hash'}).text('#'))
.append
(
$('<input>', {type:'text', id:'input_chan', 'class':'round'})
@@ -755,7 +755,7 @@ function addMessage(message_info, bReset)
break;
case databap.consts.msg_types.conn:
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;
break;
case databap.consts.msg_types.img:
@@ -809,7 +809,7 @@ function addMessage(message_info, bReset)
if(msg_body != '')
{
//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('.user').click(setPm);
databap.getMainElem('#chat_messages').append($Message);
+10 -6
View File
@@ -55,6 +55,10 @@ databap.onResize = function()
//Read Code
self.setScrollBarSize('optimize');
//FIXME
$('#reader_subbox').height('+=1px');
self.updateScrollBar();
};
databap.onQuit = function(){ return (self.tmp('started') === false); };
@@ -142,31 +146,31 @@ function checkUrlAvailability(phrase, bTriggered)
databap.getInfo
(
'url',
function(bExist)
function(oData)
{
var availabilityClass, availabilityText;
var $link = databap.getMainElem('#link_result');
if(bExist=='0')
if(oData.result==databap.consts.success)
{
availabilityClass = 'available';
availabilityText = 'Disponible';
if($link.is(':hidden')) $link.show('fast');
if($link.is(':hidden')) $link.fadeIn('fast');
}
else
{
availabilityClass = 'unavailable';
availabilityText = 'Indisponible';
if($link.is(':visible')) $link.hide('fast');
if($link.is(':visible')) $link.fadeOut('fast');
}
var $AvailableBox = databap.getMainElem('#available_phrase');
$AvailableBox
.removeClass('available unavailable')
.addClass(availabilityClass);
$AvailableBox.find('#available_phrase_text').text(availabilityText);
$AvailableBox.show('fast');
$AvailableBox.fadeIn('fast');
},
{link_escaped:phrase},
'html',
'json',
function(){},
true
);
+16 -16
View File
@@ -39,26 +39,26 @@
</table>
</div>
<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">
<ul id="menu_items">
<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="#code"><i class="fa fa-fw fa-20 fa-c-code"></i>ajouter du code</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="#table"><i class="fa fa-fw fa-20 fa-c-table"></i>ajouter une table</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="#liste"><i class="fa fa-fw fa-20 fa-c-list"></i>liste compl&egrave;te</a></li>
<li><a href="#note"><i class="fa fa-fw fa-20 fa-c-note"></i>Note OSS</a></li>
<li><a href="#profil"><i class="fa fa-fw fa-20 fa-c-profile"></i>profil</a></li>
<li><a href="#chat"><i class="fa fa-fw fa-20 fa-c-chat"></i>chat</a></li>
<li><a href="#options"><i class="fa fa-fw fa-20 fa-c-options"></i>paramètres</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="#logout"><i class="fa fa-fw fa-20 fa-c-logmeout"></i>quitter</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><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>&nbsp;<span>accueil</span></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>&nbsp;<span>ajouter une procédure</span></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>&nbsp;<span>ajouter une doc</span></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>&nbsp;<span>Note OSS</span></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>&nbsp;<span>chat</span></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>&nbsp;<span>flux Rss</span></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>&nbsp;<span>fermer</span></a></li>
</ul>
</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 id="main_container" class="round">
<div id="page_title">
+1 -1
View File
@@ -1,5 +1,5 @@
<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>
<script type="text/javascript">
self.getInfo('log_me_out', function(){document.location='';});
+4 -1
View File
@@ -17,7 +17,9 @@ databap.pageInit = function()
.addButton('ok', 'Ok', function($This){$This.submit();}, 'submit', 'heavy')
.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
var iNote = databap.vars.id;
@@ -26,6 +28,7 @@ databap.pageInit = function()
$('#note_id').val(iNote).focus();
self.addBufferIcon();
$Frame
.show('slow')
.attr('src', 'index.php?a=note&id='+iNote)
.load(databap.resetIcon);
+6 -4
View File
@@ -1,5 +1,4 @@
<div id="procedure_box">
<div id="procedure">
<div id="procedure">
<form id="procedure_form" name="procedure_form">
<input type="hidden" id="procedure_id" name="procedure_id" value="0" />
<div class="proc_menu" id="top_menu">
@@ -10,6 +9,8 @@
</a>
<a id="share" class="button round"><i class="fa fa-c-share"></i>Partager</a>
</div>
<div id="scrollbox">
<div id="scrollcontent">
<div id="titles_edit" class="hide">
<div id="procedure_title" class="step_box round">
<p class="step_nb_box">Titre</p>
@@ -26,6 +27,8 @@
<p class="read_description"><span id="description_read" class="read"></span></p>
</div>
<div id="procedure_steps"></div>
</div>
</div>
<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="submit_procedure" class="button round"><i class="fa fa-c-ok"></i>Valider</a>
@@ -36,7 +39,6 @@
</a>
</div>
</form>
</div>
</div>
<div id="models" class="hide">
<div id="step_model">
@@ -77,7 +79,7 @@ databap.pageInit = function()
{
databap.vars.mode = '';
self.tmp('started', false);
self.initScrollBar('#main', '#procedure_box', '#procedure');
self.initScrollBar('#main', '#scrollbox', '#scrollcontent');
//Get step HTML
self.vars.stepHtml = self.getMainElem('#step_model').html();
+12 -12
View File
@@ -35,19 +35,19 @@ databap.pageInit = function()
//Add EHP improvements, SP bug fixes and WIP
var $ActivityBox, sIcon;
var asActivityTypes = {
sp_fixes: [ 'Réparation des fichiers téléchargés (documentation)',
'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: [ '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>',
'Mot de passe personnalisé et modifiable dans les <a href="#options">options</a>',
'paramètre dans les <a href="#options">options</a> pour supprimer les messages d\'arrivée et de départ des gens (console)',
'Téléversement de documentation',
'Documentation de tables ECC / BW',
'Homogénéisation des icônes',
'Recherche élargie sur tous les types de documents (codes, procédures, docs, articles et tables)',
'Commande /invite X : invite X à rejoindre le chan ouvert (Cf. Clippy)',
'Des filtres peuvent être appliqués à la liste complète des documents'],
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>',
'Nouveau design',
'Ajout des notes sans authentification : #note-<num>',
'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',
'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',
'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',
'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)',
'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)',
'lecteur de fichier online (pdf, txt, image, word ?)',
'Version compatible mobile (surtout pour le chat)',
+64 -33
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 */
body, html {
background:$col_none;
font-family:Verdana, Arial;
font-family: 'Databap', sans-serif;
color:$col_main_1;
background:$col_main_1;
padding:0;
@@ -24,13 +51,12 @@ table td {
}
input, textarea, select {
font-family:Verdana, Arial;
font-size:12px;
background:none;
font-family: 'Databap', sans-serif;
font-size:$size_big;
background:$col_none;
border:none;
}
input[type=text], input[type=password] {
border:2px solid $col_main_1;
padding:5px;
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 {
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 {
@@ -57,9 +81,17 @@ input[type=button], .clickable {
cursor:pointer;
}
iframe {
width:100%;
height:100%;
margin: 0;
overflow: hidden;
background:$col_main_3;
border:none;
}
select {
background:$col_none;
border:2px solid $col_main_1;
padding:5px;
color:$col_main_1;
margin:0;
@@ -103,6 +135,13 @@ img {
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 */
.round_top {
@@ -185,21 +224,21 @@ img {
.error, .error a {
color:$col_error;
border-color:$col_error;
font-size:14px;
font-size:$size_vbig;
font-weight:bold;
}
.warning, .warning a {
color:$col_warning;
border-color:$col_warning;
font-size:13px;
font-size:$size_vbig;
font-style:italic;
}
.success, .success a {
color:$col_success;
border-color:$col_success;
font-size:13px;
font-size:$size_vbig;
}
.default_text {
@@ -209,10 +248,9 @@ img {
a.button {
padding:7px;
margin-right:5px;
background:$col_main_2;
font-size:12px;
background:$col_main_3;
font-size:$size_big;
cursor:pointer;
border:1px solid $col_main_1;
/*position:relative;*/
display:inline-block;
}
@@ -300,19 +338,18 @@ a[href^="table"].internal_link span.item {
.author_box {
padding:5px 10px;
border:1px solid $col_main_1;
color:$col_main_1;
font-style:italic;
font-size:12px;
font-size:$size_big;
}
.author_box:nth-child(odd) {
background:$col_main_3;
background:$col_none;
}
.author_box:nth-child(even) {
background:$col_main_2;
background:$col_main_4;
}
.author_box:hover {
border-color:$col_hover_1;
.author_box:hover a {
color:$col_hover_1;
}
.author_box a {
@@ -329,7 +366,7 @@ a[href^="table"].internal_link span.item {
.author_box span.description {
font-weight:bold;
font-style:normal;
font-size:13px;
font-size:$size_vbig;
}
.author_box span.rank {
@@ -340,9 +377,6 @@ a[href^="table"].internal_link span.item {
.standalone .author_box {
margin-top:10px;
}
.standalone .author_box:hover {
color:$col_hover_1;
}
.hide, .mobile {
display:none;
@@ -354,18 +388,17 @@ a[href^="table"].internal_link span.item {
margin-top:5px;
margin-bottom:5px;
padding:10px;
background:$col_main_2;
background:$col_main_3;
color:$col_main_1;
border: 2px solid $col_main_1;
}
.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 {
margin-top:10px;
background:$col_none;
font-size:14px;
font-size:$size_vbig;
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 {
@@ -378,7 +411,6 @@ a[href^="table"].internal_link span.item {
height:200px;
padding:5px;
background:$col_none;
border:1px solid $col_main_1;
}
.step_box .read.textarea, .step_box .read.input {
border-color:$col_main_2;
@@ -388,7 +420,7 @@ a[href^="table"].internal_link span.item {
background-color:$col_main_3;
}
.step_box:nth-child(even) .read.textarea {
background-color:$col_main_2;
background-color:$col_main_4;
}
.step_box .read.input {
background-color:$col_main_2;
@@ -462,7 +494,6 @@ a[href^="table"].internal_link span.item {
height:100%;
height:210px;
z-index:2;
border:1px solid $col_main_1;
background:$col_none;
text-align:center;
}
@@ -498,7 +529,7 @@ a[href^="table"].internal_link span.item {
}
.uploader_item_size, .uploader_item_cancel {
font-size:12px;
font-size:$size_big;
font-weight: normal;
}
@@ -515,7 +546,7 @@ a.uploader_item_cancel {
.uploader_box .image_action {
font-size:12px;
font-size:$size_big;
}
.uploader_box .image_action input {
+16 -3
View File
@@ -4,8 +4,9 @@
/* Main colors */
$col_main_1: #04357B;
$col_main_2: #D9E5F2;
$col_main_3: #DCF2FB;
$col_main_2: /*#D9E5F2;*/#88B2F0;
$col_main_3: /*#DCF2FB;*/#D9E5F2;
$col_main_4:#f2f5f9;
/* Flashy hover colors */
$col_hover_1: #EFAB00;
@@ -13,10 +14,22 @@ $col_hover_2: #F2E1B5;
/* Traffic light colors */
$col_success: green;
$col_success_2:#B2D6B2;
$col_warning: orange;
$col_error: red;
$col_error_2:#F6D3D3;
/* Technical colors */
$col_none: #FFFFFF;
$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;
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+129 -156
View File
@@ -10,7 +10,7 @@
#container {
background:$col_main_1;
padding:10px 10px 1px;
padding:10px 10px 1px 1px;
}
/* Header */
@@ -49,7 +49,6 @@
#search_btn_submit {
background:$col_main_2;
border-left:2px solid $col_main_1;
height:20px;
padding-top:5px;
}
@@ -62,28 +61,26 @@
/* Main */
#main_container {
background:$col_none;
margin-left:30px;
background:$col_main_2;
margin-left:35px;
position:relative;
overflow:hidden;
border:10px solid $col_none;
border:10px solid $col_main_2;
}
#page_title {
margin-bottom:10px;
#page_title .side_margins {
margin:0 0 10px 0;
}
#page_title h1 {
margin:0 -12px 12px;
padding:12px 10px;
padding:2px 0; /*To fit the icon in*/
margin:0;
width:100%;
border:2px solid $col_main_1;
font-family:Arial;
font-family: 'Databap', sans-serif;
font-size:32px;
line-height:32px;
font-style:italic;
font-weight:600;
@include gradient-diag($col_main_2, $col_none, 25%, 75%);
font-weight:bold;
}
#page_title h1 #title_feedback {
@@ -109,32 +106,11 @@
#menu {
position:absolute;
width:20px;
width:auto;
padding:10px 0;
z-index:10;
border-right:0 solid $col_main_1;
background: $col_main_2;
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 {
#menu_title {
position:relative;
padding:0;
margin:21px 0 0 0;
@@ -143,77 +119,77 @@
font-size:20px;
line-height:20px;
font-weight:bold;
}
}
#menu #menu_box {
display:none;
color:$col_main_1;
text-align:center;
}
#menu #menu_box ul {
#menu_box ul {
margin:0;
padding:0;
text-align:left;
font-size: 20px;
list-style:none;
}
}
#menu #menu_box ul li {
#menu_box ul li {
padding:10px 10px 10px 0;
margin:0;
padding:5px 3px 5px 15px;
list-style:none;
cursor:pointer;
line-height:20px;
height:20px;
font-size:20px;
text-transform:capitalize;
}
}
#menu #menu_box ul li:FIRST-CHILD {
padding-left:5px;
font-weight: bold;
}
#menu_box ul li:FIRST-CHILD {
padding-top:0;
}
#menu #menu_box ul li a {
color:$col_main_1;
display:block;
#menu_box ul li:FIRST-CHILD a {
padding-top:8px;
}
#menu_box ul li a {
padding:10px 0 10px 0;
color:$col_main_2;
display:inline-block;
width:100%;
}
#menu #menu_box ul li:hover a {
}
#menu_box ul li:hover a {
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;
}
#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_container {
border:2px solid $col_main_1;
background:$col_main_2;
background:$col_main_3;
padding:10px;
}
@@ -230,13 +206,13 @@
}
#welcome #welcome_container ul li {
font-size:13px;
font-size:$size_vbig;
margin-top:10px;
font-weight: bold;
}
#welcome #welcome_container ul li ul {
font-size:12px;
font-size:$size_big;
margin-top:2px;
}
@@ -285,7 +261,7 @@
/* Add Code */
#add_code_container, #add_code_container input {
font-size:14px;
font-size:$size_vbig;
}
#add_code_container table {
@@ -308,12 +284,11 @@
margin:0 -10px;
padding:10px 6px 10px 10px;
width:100%;
border:2px solid $col_main_1;
min-height:100px;
height:300px;
font-family:courier;
font-family:Courier New, Courier;
color:$col_black;
font-size:14px;
font-size:$size_vbig;
}
#add_code_container .loggued {
@@ -321,7 +296,6 @@
}
#add_code_container input[type=text] {
border:2px solid $col_main_1;
width:400px;
padding:5px;
color:$col_main_1;
@@ -342,15 +316,13 @@
#link_result, #available_phrase {
display:none;
border:2px solid;
margin-left:15px;
padding:5px;
font-size:14px;
font-size:$size_vbig;
}
#link_result {
color:$col_main_1;
border-color:$col_main_1;
}
#available_phrase {
@@ -359,11 +331,11 @@
#available_phrase.available {
color:$col_success;
border-color:$col_success;
background:$col_success_2;
}
#available_phrase.unavailable {
color:$col_error;
border-color:$col_error;
background:$col_error_2;
}
/* read code */
@@ -380,7 +352,6 @@
#code_container .code_reader {
margin:10px 0 0 0;
border:2px solid $col_main_1;
padding:0;
background:#b5b5c6;
background:$col_main_1;
@@ -431,7 +402,7 @@
border-left:1px dotted #398c8c;
background:$col_none;
font-family:Courier New, Courier;
font-size:12px;
font-size:$size_big;
line-height:12px;
text-indent:20px;
color:#398c8c;
@@ -447,7 +418,7 @@
}
#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;}
@@ -483,7 +454,7 @@
color:$col_black;
}
#code_container .code_reader ol li span.code, ol li span.comment {
font-size:14px;
font-size:$size_vbig;
margin-left:15px;
}
#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 {
margin: 10px 0 0px 5px;
font-size:14px;
font-size:$size_vbig;
font-style: italic;
}
@@ -597,7 +568,6 @@
width:96px;
height:96px;
background:url("images/avatar_96.png") 0 0 no-repeat;
border:2px solid $col_main_1;
float:left;
}
@@ -612,8 +582,7 @@
margin-left:110px; /* 96 (picture) + 10 (margin) + 4 (borders) */
padding:10px 16px;
height:76px; /* 96 (picture height) - 20 (padding) */
border:2px solid $col_main_1;
background:$col_main_2;
background:$col_main_3;
}
#profile .user .fa {
@@ -640,18 +609,17 @@
#profile #history_subbox {
margin-top:10px;
border:2px solid $col_main_1;
}
#profile #user_history p.history_line {
padding:5px 10px;
font-size:14px;
font-size:$size_vbig;
}
#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) {
background:$col_none;
background:$col_main_4;
}
#profile #user_history p.history_line:FIRST-CHILD {
-moz-border-radius-topleft: 10px;
@@ -692,9 +660,9 @@
#chat #chat_room {
margin-right:175px; /* 165px + 10px (margin-left) */
border:2px solid $col_main_1;
background:$col_none;
height:100%;
padding:5px;
}
.g_white_transparent {
@@ -727,7 +695,7 @@
#chat #chat_room #chat_container {
clear:both;
margin:5px 5px 0;
padding-bottom:5px;
}
#chat #chat_room #chat_container #chat_messages_box {
position:relative;
@@ -762,7 +730,7 @@
/*background-color:white;*/
}
#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;
}
#chat_messages p.C {
@@ -772,11 +740,11 @@
}
#chat_messages p span.time {
color:$col_hover_1;
font-size:10px;
font-size:$size_small;
font-style:normal;
}
#chat_messages p a.user, #chat_messages p span.console {
font-size:12px;
font-size:$size_medium;
font-weight:bold;
color:$col_main_1;
}
@@ -788,7 +756,7 @@
}
#chat_messages p span.text {
margin-left:5px;
font-size:13px;
font-size:$size_big;
}
#chat_messages p span.action {
font-style:italic;
@@ -819,10 +787,10 @@
#chat_messages .help p {
padding:0 5px;
color:#666666;
font-size:10px;
font-size:$size_medium;
}
#chat_messages .help p.title {
font-size:14px;
font-size:$size_big;
padding:3px 5px;
border-bottom:1px dashed #666666;
letter-spacing:0;
@@ -832,7 +800,7 @@
}
#chat_messages .help p.subtitle {
margin-top:5px;
font-size:12px;
font-size:$size_medium;
}
#chat_messages .help p.item {
margin-top:1px;
@@ -847,24 +815,24 @@
}
#chat #chat_input {
margin:5px;
padding:0 5px;
background:$col_main_1;
background:$col_main_3;
color:#94BDF9;
overflow: hidden;
}
#chat #chat_input .fa {
color:$col_main_2;
margin-right:2px;
color:$col_main_1;
margin-right:3px;
margin-left:3px;
}
#chat #chat_input input#message {
color:$col_none;
background:$col_main_3;
margin:0;
padding:7px 0;
border:none;
min-width:200px;
font-size:13px;
line-height:13px;
font-size:$size_vbig;
}
#chat #chat_input input#message:hover, #chat #chat_input input#message:focus {
@@ -883,25 +851,26 @@
#chat #sidebar .sidebar_box {
position:relative;
border:2px solid $col_main_1;
font-weight:bold;
padding:0;
margin-bottom:10px;
overflow: hidden;
}
#chat #sidebar .sidebar_box_title {
background-color:$col_main_2;
background-color:$col_main_3;
text-align:center;
font-size:$size_subtitle;
}
#chat #sidebar .sidebar_box_content {
border-top:2px solid $col_main_1;
font-size:12px;
background:$col_none;
font-size:$size_medium;
font-weight:normal;
}
#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;
}
@@ -916,7 +885,7 @@
}
#chat #sidebar p.connected_user {
font-size:16px;
font-size:$size_vbig;
}
#chat #sidebar a.connected_user_logo img {
vertical-align:middle;
@@ -944,22 +913,20 @@
}
#chat #chat_chan {
margin-bottom: -2px;
}
#chat #chat_chan .tab_bar {
font-weight:bold;
text-align:right;
margin:0 184px 0 0; /* 165px + the round corner */
margin:0 0 0 5px; /* 165px + the round corner */
}
#chat #chat_chan .tab_bar span.chan {
display: inline-block;
background-color:$col_main_2;
background-color:$col_main_3;
padding:2px 8px;
border:2px solid $col_main_1;
margin-left:5px;
color:$col_main_1;
font-size:$size_vvbig;
}
#chat #chat_chan .tab_bar span#join_chan {
@@ -995,9 +962,12 @@
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 {
border:none;
font-size:14px;
font-size:$size_vvbig;
padding:0;
margin:0;
width:70px;
@@ -1022,10 +992,10 @@
padding:6px 5px;
}
#chat #news .new:nth-child(even) {
background:$col_main_3;
background:$col_none;
}
#chat #news .new:nth-child(odd) {
background:$col_main_2;
background:$col_main_4;
}
#chat #news .new:last-child {
-moz-border-radius:0 0 10px 10px;
@@ -1044,8 +1014,7 @@
/* Options */
#options .options_box {
background:$col_main_2;
border:2px solid $col_main_1;
background:$col_main_3;
width:490px;
float:left;
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 {
font-size:14px;
font-size:$size_big;
background:$col_none;
border-width:1px;
font-size:14px;
font-size:$size_vbig;
padding:5px;
float:right;
}
@@ -1082,7 +1051,6 @@
}
#options .options_box select {
border:1px solid $col_main_1;
color:$col_main_1;
}
@@ -1103,19 +1071,23 @@
background-color:$col_hover_1
}
#procedure #procedure_steps .step_box:LAST-CHILD {
margin-bottom:0;
}
#titles_read p.read_title {
border-bottom:1px solid $col_main_1;
font-weight:bold;
}
#titles_read p.read_details {
font-size:12px;
font-size:$size_big;
font-style:italic;
margin:3px 0 15px 0;
}
#titles_read p.read_description {
font-size:14px;
font-size:$size_vbig;
}
#titles_read p.read_description .fa {
@@ -1158,6 +1130,10 @@
background:$col_none;
}
#procedure #procedure_title {
margin-top:0;
}
#procedure #bottom_menu {
margin:10px 0 0 0;
}
@@ -1189,7 +1165,7 @@
}
#procedure .thumbnail_desc {
font-size:12px;
font-size:$size_big;
}
/* Procedure - Uploader */
@@ -1199,7 +1175,7 @@
}
#procedure .uploader_box .error {
font-size:12px;
font-size:$size_big;
margin:10px 0;
}
@@ -1214,6 +1190,10 @@
margin-bottom:10px;
}
#doc .step_box:nth-child(odd) {
background:$col_main_4;
}
#doc #attach_file {
margin-top:10px;
}
@@ -1309,7 +1289,7 @@
#footer p, #footer a {
color:$col_none;
margin:0;
font-size:9px;
font-size:$size_small;
}
#footer a {
@@ -1320,8 +1300,9 @@
#logout p {
font-size:18px;
color:$col_main_1;
background-color:$col_main_3;
margin-top:25px;
padding:5px;
}
/* Note */
@@ -1330,14 +1311,6 @@
height:100%;
}
#note_frame {
width:calc(100% - 4px);
height:calc(100% - 4px);
border: 2px solid $col_main_1;
margin: 0;
overflow: hidden;
}
#note_form {
margin-bottom: 10px;
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+25 -2
View File
@@ -5,8 +5,7 @@
@import 'fa-custom';
@import 'common';
/* Fix librairies location */
/* FIXME */
/* FIXME librairies location */
@font-face {
font-family: 'FontAwesome';
src: url('fontawesome-webfont.eot?v=4.2.0');
@@ -14,6 +13,30 @@
font-weight: 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 */
+25 -15
View File
@@ -8,22 +8,24 @@ Internal:
- put feedback box in title
- Créer un fichier de testing
- 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:
- 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
- code reader : mettre la scrollbar à l'intérieur du code
- Trouver une meilleure place pour le menu
New features:
- [1.1.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.1.0] Refiltre par type dans le search
- [1.1.0] Remplacer dans les options : oui / non par [-0] (f205) [O-] (f204)
- [1.1.0] Son pour les nouveaux messages
- [1.1.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] 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] Refiltre par type dans le search
- [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] Chat : compatibilité mobile (utiliser la fonctionnalité ff)
- [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.3.0] Reward on post
- modification code : possibilité de modifier la description d'un code après enregistrement + entre les versions
@@ -36,15 +38,10 @@ New features:
Design
- 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
-------
@@ -56,3 +53,16 @@ Testing
- 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 '\\';
- 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');