Magic Box v1.0 + bugfix sorting connected names in chat
This commit is contained in:
@@ -398,14 +398,15 @@ class Databap extends PhpObject
|
||||
$this->addUser('test', 'test', $iAdminCompanyId, 'test@test.com', self::CLEARANCE_MEMBER, 0, false);
|
||||
|
||||
//Write the SAP blog parser bash script to main folder
|
||||
@file_put_contents('sap_website_parser.sh', "#!/bin/bash\n\ncd /var/www\n\n/usr/bin/php -f index.php a=external_access p=blogs auth_token=".self::SYSTEM_USER_ID.'_'.str_replace('$', '\$', $this->generateExternalAccessToken(self::SYSTEM_USER_ID)));
|
||||
$this->updateWebCrawler();
|
||||
}
|
||||
|
||||
public function updateWebCrawler()
|
||||
{
|
||||
$sContent = "#!/bin/bash\n\ncd /var/www\n\n/usr/bin/php -f index.php a=external_access p=blogs auth_token=".self::SYSTEM_USER_ID.'_'.str_replace('$', '\$', $this->generateExternalAccessToken(self::SYSTEM_USER_ID));
|
||||
@file_put_contents('sap_website_parser.sh', $sContent);
|
||||
return $sContent;
|
||||
$bSuccess = !(file_put_contents('sap_website_parser.sh', $sContent)===false);
|
||||
$sDesc = $bSuccess?'Fichier écrit avec succès':'Erreur lors de l\'écriture du fichier à la racine de l\'application. Vérifier les droits sur ce dossier';
|
||||
return $this->getJsonPostResult($bSuccess, $sDesc);
|
||||
}
|
||||
|
||||
public function goLive()
|
||||
@@ -1456,7 +1457,13 @@ class Databap extends PhpObject
|
||||
$asAdminOptions = array();
|
||||
if($this->checkUserClearance(self::CLEARANCE_ADMIN))
|
||||
{
|
||||
$asAdminOptions['companies'] = $this->oMySql->selectList(self::COMP_TABLE);
|
||||
//Companies
|
||||
$asAdminOptions['companies'] = array_map(array('self', 'getCompanyFormat'), $this->oMySql->selectList(self::COMP_TABLE));
|
||||
|
||||
//User Names
|
||||
$asFirstNames = $this->oMySql->selectList(self::USER_TABLE, 'first_name');
|
||||
$asLastNames = $this->oMySql->selectList(self::USER_TABLE, 'last_name');
|
||||
foreach($asLastNames as $iUserId=>$sLastName) $asAdminOptions['users'][$iUserId] = self::getNameFormat($asFirstNames[$iUserId], $sLastName);
|
||||
}
|
||||
return $this->jsonExport(array('admin'=>$asAdminOptions, 'options'=>$asSelectedOptions));
|
||||
}
|
||||
@@ -2282,19 +2289,22 @@ class Databap extends PhpObject
|
||||
$asConnectedUsers = $asUserOptions = array();
|
||||
foreach($asUserChannels as $asUser)
|
||||
{
|
||||
$sChanId = $asUser[MySqlManager::getId(self::CHAN_TABLE)];
|
||||
$iChanId = $asUser[MySqlManager::getId(self::CHAN_TABLE)];
|
||||
$iUserId = $asUser[$iUserIdCol];
|
||||
if(!array_key_exists($iUserId, $asUserOptions)) $asUserOptions[$iUserId] = $this->getUserOptions(array(self::OPT_NICKNAME, self::OPT_STATUS), $iUserId);
|
||||
$sNickName = self::getNickNameFormat($asUserOptions[$iUserId][self::OPT_NICKNAME][MySqlManager::getText(self::OPTVAL_TABLE)]);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['id_user'] = $iUserId;
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['name'] = self::getNameFormat($asUser['first_name'], $asUser['last_name']);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['company'] = self::getCompanyFormat($asUser['company']);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['status'] = $asUserOptions[$iUserId][self::OPT_STATUS][MySqlManager::getText(self::OPTVAL_TABLE)];
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['logo'] = $asUser['logo'];
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['nickname'] = $sNickName;
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['last_activity'] = array_key_exists($iUserId, $asLastMsg)?self::getDateFormat($asLastMsg[$iUserId], self::TIME_FORMAT):'';
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['ping'] = self::getDateFormat($asUser['led'], self::TIME_FORMAT);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['afk'] = $asUser['afk'];
|
||||
$asConnectedUsers[$iChanId][] = array
|
||||
(
|
||||
'id_user' => $iUserId,
|
||||
'name' => self::getNameFormat($asUser['first_name'], $asUser['last_name']),
|
||||
'company' => self::getCompanyFormat($asUser['company']),
|
||||
'status' => $asUserOptions[$iUserId][self::OPT_STATUS][MySqlManager::getText(self::OPTVAL_TABLE)],
|
||||
'logo' => $asUser['logo'],
|
||||
'nickname' => $sNickName,
|
||||
'last_activity' => array_key_exists($iUserId, $asLastMsg)?self::getDateFormat($asLastMsg[$iUserId], self::TIME_FORMAT):'',
|
||||
'ping' => self::getDateFormat($asUser['led'], self::TIME_FORMAT),
|
||||
'afk' => $asUser['afk']
|
||||
);
|
||||
}
|
||||
|
||||
return $bJson?$this->jsonExport($asConnectedUsers):$asConnectedUsers;
|
||||
@@ -2608,6 +2618,8 @@ class Databap extends PhpObject
|
||||
|
||||
public function resetPass($iUserId)
|
||||
{
|
||||
$bSuccess = false;
|
||||
$sDesc = '';
|
||||
if($iUserId>0)
|
||||
{
|
||||
$sUserIdCol = MySqlManager::getId(self::USER_TABLE, true);
|
||||
@@ -2616,16 +2628,21 @@ class Databap extends PhpObject
|
||||
'join'=> array(self::COMP_TABLE=>MySqlManager::getId(self::COMP_TABLE)),
|
||||
'constraint'=>array($sUserIdCol=>$iUserId));
|
||||
$asUsers = $this->oMySql->selectRows($asInfo);
|
||||
foreach($asUsers as $asUser)
|
||||
if(empty($asUsers)) $sDesc = 'Aucun utilisateur trouvé (id='.$iUserId.')';
|
||||
else
|
||||
{
|
||||
$sToken = $this->oAuth->HashPassword(self::getLoginToken($asUser[MySqlManager::getText(self::COMP_TABLE)]));
|
||||
$iUserId = $asUser[MySqlManager::getId(self::USER_TABLE)];
|
||||
$this->oMySql->updateRow(self::USER_TABLE, $iUserId, array('pass'=>$sToken));
|
||||
foreach($asUsers as $asUser)
|
||||
{
|
||||
$sToken = $this->oAuth->HashPassword(self::getLoginToken($asUser[MySqlManager::getText(self::COMP_TABLE)]));
|
||||
$iUserId = $asUser[MySqlManager::getId(self::USER_TABLE)];
|
||||
$this->oMySql->updateRow(self::USER_TABLE, $iUserId, array('pass'=>$sToken));
|
||||
$bSuccess = true;
|
||||
$sDesc = 'Mot de passe réinitialisé';
|
||||
}
|
||||
}
|
||||
}
|
||||
else return 'KO';
|
||||
|
||||
return 'OK';
|
||||
else $sDesc = 'Aucun id reçu';
|
||||
return $this->getJsonPostResult($bSuccess, $sDesc);
|
||||
}
|
||||
|
||||
private function getExternalAccessPass($iUserId)
|
||||
|
||||
13
jquery/common.js
vendored
13
jquery/common.js
vendored
@@ -188,6 +188,19 @@ String.prototype.replaceAll = function(regex, text)
|
||||
return this.replace(new RegExp(regex, 'g'), text);
|
||||
};
|
||||
|
||||
function sort(oList, sField)
|
||||
{
|
||||
sField = sField || '';
|
||||
var asArray = [];
|
||||
for(var i in oList) asArray.push({id:i, value:oList[i]});
|
||||
return asArray.sort(function(asItem1, asItem2)
|
||||
{
|
||||
var sValue1 = sField==''?asItem1.value:asItem1.value[sField];
|
||||
var sValue2 = sField==''?asItem2.value:asItem2.value[sField];
|
||||
return sValue1>sValue2?1:-1;
|
||||
});
|
||||
};
|
||||
|
||||
function copyArray(asArray)
|
||||
{
|
||||
return asArray.slice(0); //trick to copy array
|
||||
|
||||
@@ -955,6 +955,7 @@ function refresh_users()
|
||||
result,
|
||||
function(sChankeyName, chan_info)
|
||||
{
|
||||
chan_info.sort(function(asUser1, asUser2){return asUser1.nickname>asUser2.nickname?1:-1;});
|
||||
$.each
|
||||
(
|
||||
chan_info,
|
||||
|
||||
@@ -33,6 +33,16 @@
|
||||
<p><input type="text" class="tiny_round" id="company" name="company" /></p>
|
||||
</form>
|
||||
</div>
|
||||
<div id="reset_pass" class="magic_box tiny_round">
|
||||
<h3><i class="fa fa-inline fa-c-unlock"></i>Réinitialiser mdp</h3>
|
||||
<form id="form_reset_pass" name="form_reset_pass">
|
||||
<p id="users"></p>
|
||||
</form>
|
||||
</div>
|
||||
<div id="update_web_crawler" class="magic_box tiny_round">
|
||||
<h3><i class="fa fa-inline fa-c-share"></i>Maj web crawler</h3>
|
||||
<form id="form_update_web_crawler" name="form_update_web_crawler"></form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -86,11 +96,18 @@ function initAdminPanel(asAdmin)
|
||||
$('#last_name').addDefaultValue('Nom');
|
||||
addSelect($('#companies'), asAdmin.companies, 0, 'id');
|
||||
$('#email').addDefaultValue('Email');
|
||||
$('#add_user').addButton('ok', 'Créer', function(){submitAdmin('add_user');}, 'submit_new_user', 'heavy inverse');
|
||||
$('#form_add_user').addButton('ok', 'Créer', function(){submitAdmin('add_user', true);}, 'submit_new_user', 'heavy inverse');
|
||||
|
||||
//Add company
|
||||
$('#company').addDefaultValue('Entreprise');
|
||||
$('#add_company').addButton('ok', 'Créer', function(){submitAdmin('add_company', true);}, 'submit_new_user', 'heavy inverse');
|
||||
$('#form_add_company').addButton('ok', 'Créer', function(){submitAdmin('add_company', true);}, 'submit_new_user', 'heavy inverse');
|
||||
|
||||
//Add Crawler button
|
||||
$('#form_update_web_crawler').addButton('refresh', 'Maj', function(){submitAdmin('update_web_crawler');}, 'submit_refresh', 'heavy inverse');
|
||||
|
||||
//Reset User Pass
|
||||
addSelect($('#users'), asAdmin.users, 0, 'user');
|
||||
$('#form_reset_pass').addButton('refresh', 'Reset', function(){submitAdmin('reset_pass');}, 'submit_reset_pass', 'heavy inverse');
|
||||
|
||||
//Show panel
|
||||
$('#admin').show();
|
||||
@@ -115,19 +132,17 @@ function submitAdmin(sAction, bReboot)
|
||||
|
||||
function addSelect($Box, asOptions, sSelectedValue, sSelectId, sSelectClass)
|
||||
{
|
||||
var asSortedOptions = sort(asOptions);
|
||||
sSelectedValue = sSelectedValue || 0;
|
||||
sSelectId = sSelectId || '';
|
||||
sSelectClass = sSelectClass || '';
|
||||
var $Select = $('<select>', {id:sSelectId, name:sSelectId, 'class':sSelectClass}).appendTo($Box);
|
||||
$.each
|
||||
(
|
||||
asOptions,
|
||||
function(selectId, selectName)
|
||||
asSortedOptions.map(function(asValue)
|
||||
{
|
||||
$Select
|
||||
.append($('<option>', {value:selectId})
|
||||
.prop('selected', (selectId==sSelectedValue))
|
||||
.text(selectName));
|
||||
.append($('<option>', {value:asValue.id})
|
||||
.prop('selected', (asValue.id==sSelectedValue))
|
||||
.text(asValue.value));
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -243,6 +243,9 @@ vertical-align 0% -5% -10% -15% -20% -25% -30%
|
||||
.fa-c-lock:before {
|
||||
content: "\f023"/*"\f084"*/;
|
||||
}
|
||||
.fa-c-unlock:before {
|
||||
content: "\f09c";
|
||||
}
|
||||
|
||||
.fa-c-search:before {
|
||||
content: "\f002";
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1122,6 +1122,7 @@
|
||||
|
||||
#options .options_box .button {
|
||||
margin-top:5px;
|
||||
float:none;
|
||||
}
|
||||
|
||||
#options #admin {
|
||||
@@ -1137,6 +1138,11 @@
|
||||
float:left;
|
||||
margin: 0 10px 10px 0;
|
||||
}
|
||||
|
||||
#options #admin .magic_box form {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#options #admin .magic_box:last-child {
|
||||
margin-right:0;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
todo
2
todo
@@ -3,9 +3,7 @@ Todo
|
||||
|
||||
Internal:
|
||||
- put old messages back into new ones
|
||||
- modify sap_website_parser.sh avec données de databot
|
||||
- independant code/procedure/article/table/document php classes ?
|
||||
- Admin param page
|
||||
- Independant Option Class + delete 'option' column in options table
|
||||
- put feedback box in title
|
||||
- Créer un fichier de testing
|
||||
|
||||
Reference in New Issue
Block a user