Compare commits
8 Commits
ccd20b7d57
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| c0c89fe50a | |||
| 5c629e9bf6 | |||
| beb2f19d27 | |||
| 483781d1fb | |||
| 1c5e04458e | |||
| 3b73ca626a | |||
| a62842fa35 | |||
| 68a178d445 |
@@ -216,7 +216,6 @@ class Databap extends PhpObject
|
|||||||
header('Content-Type: text/html; charset='.Settings::TEXT_ENC);
|
header('Content-Type: text/html; charset='.Settings::TEXT_ENC);
|
||||||
mb_internal_encoding(Settings::TEXT_ENC);
|
mb_internal_encoding(Settings::TEXT_ENC);
|
||||||
mb_http_output(Settings::TEXT_ENC);
|
mb_http_output(Settings::TEXT_ENC);
|
||||||
mb_http_input(Settings::TEXT_ENC);
|
|
||||||
mb_language('uni');
|
mb_language('uni');
|
||||||
mb_regex_encoding(Settings::TEXT_ENC);
|
mb_regex_encoding(Settings::TEXT_ENC);
|
||||||
|
|
||||||
@@ -313,8 +312,7 @@ class Databap extends PhpObject
|
|||||||
{
|
{
|
||||||
if($sType!='')
|
if($sType!='')
|
||||||
{
|
{
|
||||||
if($sType!='' && !array_key_exists($sType, self::$TYPES)) self::addError('Type "'.$sType.'" inconnu');
|
if(array_key_exists($sType, self::$TYPES)) $asResult = array($sType=>self::$TYPES[$sType]);
|
||||||
else $asResult = array($sType=>self::$TYPES[$sType]);
|
|
||||||
}
|
}
|
||||||
else $asResult = self::$TYPES;
|
else $asResult = self::$TYPES;
|
||||||
|
|
||||||
@@ -328,8 +326,7 @@ class Databap extends PhpObject
|
|||||||
$asResult[$sType] = array();
|
$asResult[$sType] = array();
|
||||||
foreach($oInfo as $sInfo)
|
foreach($oInfo as $sInfo)
|
||||||
{
|
{
|
||||||
if(!array_key_exists($sInfo, $asTypeInfo)) self::addError('Info "'.$sInfo.'" inconnue');
|
if(array_key_exists($sInfo, $asTypeInfo)) $asResult[$sType][$sInfo] = $asTypeInfo[$sInfo];
|
||||||
else $asResult[$sType][$sInfo] = $asTypeInfo[$sInfo];
|
|
||||||
}
|
}
|
||||||
if($bUnique) $asResult[$sType] = $asResult[$sType][$sInfo];
|
if($bUnique) $asResult[$sType] = $asResult[$sType][$sInfo];
|
||||||
}
|
}
|
||||||
@@ -808,7 +805,7 @@ class Databap extends PhpObject
|
|||||||
return $asPost;
|
return $asPost;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getRemotePageDom($sUrl)
|
private function getRemotePageDom($sUrl): DOMDocument
|
||||||
{
|
{
|
||||||
$oDom = new DOMDocument();
|
$oDom = new DOMDocument();
|
||||||
if(mb_substr($sUrl, 0, 4)!='http') $sUrl = 'http://'.$sUrl;
|
if(mb_substr($sUrl, 0, 4)!='http') $sUrl = 'http://'.$sUrl;
|
||||||
@@ -1769,7 +1766,7 @@ class Databap extends PhpObject
|
|||||||
}
|
}
|
||||||
else $sDesc = 'Nom de chan non autorisé (nom de personne / nom de société interdit)';
|
else $sDesc = 'Nom de chan non autorisé (nom de personne / nom de société interdit)';
|
||||||
|
|
||||||
return self::getJsonPostResult($bSuccess, $sDesc, $asVars);
|
return $this->getJsonPostResult($bSuccess, $sDesc, $asVars);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function isUserConnected($iChanId=0, $iUserId=0)
|
private function isUserConnected($iChanId=0, $iUserId=0)
|
||||||
@@ -2274,12 +2271,15 @@ class Databap extends PhpObject
|
|||||||
else //Normal message
|
else //Normal message
|
||||||
{
|
{
|
||||||
//Internal links
|
//Internal links
|
||||||
$asMessages['messages'][$iMessageId]['message'] = Toolbox::findReplaceLinks($asMessages['messages'][$iMessageId]['message']);
|
$sFormatedMsg = Toolbox::findReplaceLinks($asMessages['messages'][$iMessageId]['message']);
|
||||||
|
|
||||||
//Dynamic chan link
|
//Dynamic chan link
|
||||||
$asPatterns = '/(^|\s)#(\w*[^\s]+\w*)/u';
|
$asPatterns = '/(^|\s)#(\w*[^\s]+\w*)/u';
|
||||||
$asLinks = '\1<span class="chan_link clickable">#<span class="chan_text">\2</span></span>';
|
$asLinks = '\1<span class="chan_link clickable">#<span class="chan_text">\2</span></span>';
|
||||||
$asMessages['messages'][$iMessageId]['message'] = preg_replace($asPatterns, $asLinks, $asMessages['messages'][$iMessageId]['message']);
|
$sFormatedMsg = preg_replace($asPatterns, $asLinks, $sFormatedMsg);
|
||||||
|
|
||||||
|
if($asMessages['messages'][$iMessageId]['message'] != $sFormatedMsg) $asMessages['messages'][$iMessageId]['message_original'] = $asMessages['messages'][$iMessageId]['message'];
|
||||||
|
$asMessages['messages'][$iMessageId]['message'] = $sFormatedMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2844,7 +2844,7 @@ class Databap extends PhpObject
|
|||||||
public function getUrlAvailability($sLink)
|
public function getUrlAvailability($sLink)
|
||||||
{
|
{
|
||||||
$bAvailable = !$this->checkValue(self::URL_TABLE, array('phrase'=>$sLink));
|
$bAvailable = !$this->checkValue(self::URL_TABLE, array('phrase'=>$sLink));
|
||||||
return self::getJsonPostResult($bAvailable, '');
|
return $this->getJsonPostResult($bAvailable, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function resetChanSafeNames()
|
public function resetChanSafeNames()
|
||||||
@@ -2911,8 +2911,8 @@ class Databap extends PhpObject
|
|||||||
|
|
||||||
//Inserting Color Anchors
|
//Inserting Color Anchors
|
||||||
$asDefaultValues = $this->getDefaultOptionValues($asStyleParams, false);
|
$asDefaultValues = $this->getDefaultOptionValues($asStyleParams, false);
|
||||||
foreach($asDefaultValues as $iOptionNameId=>$sDefaultValue) $asColorAnchors[$iOptionNameId] = '[OPT#'.$iOptionNameId.']';
|
foreach($asDefaultValues as $iOptionNameId=>$sDefaultValue) $asColorAnchors[$iOptionNameId] = '[OPT#'.$iOptionNameId.']';
|
||||||
$sStyle = str_replace($asDefaultValues, $asColorAnchors, $sStyle);
|
$sStyle = str_ireplace($asDefaultValues, $asColorAnchors, $sStyle);
|
||||||
|
|
||||||
//Switching color Anchors with user colors
|
//Switching color Anchors with user colors
|
||||||
$asOptionvalues = $this->getUserOptions($asStyleParams);
|
$asOptionvalues = $this->getUserOptions($asStyleParams);
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ class Reader extends PhpObject
|
|||||||
'CASERESPECTING','CASTING','CENTERED','CHAIN','CHANGE','CHANGING','CHARACTER','CHECK','CHECKBOX',
|
'CASERESPECTING','CASTING','CENTERED','CHAIN','CHANGE','CHANGING','CHARACTER','CHECK','CHECKBOX',
|
||||||
'CHECKBOXSYMBOLICONLINE','CLASS','CLASS-DATA','CLASS-EVENTS','CLASS-METHODS','CLEANUP','CLEAR','CLIENT','CLOCK',
|
'CHECKBOXSYMBOLICONLINE','CLASS','CLASS-DATA','CLASS-EVENTS','CLASS-METHODS','CLEANUP','CLEAR','CLIENT','CLOCK',
|
||||||
'CODE','COL_BACKGROUND','COL_HEADING','COL_NORMAL','COL_TOTAL','COLLECT','COLOR','COLUMN','COMMENT','COMMIT',
|
'CODE','COL_BACKGROUND','COL_HEADING','COL_NORMAL','COL_TOTAL','COLLECT','COLOR','COLUMN','COMMENT','COMMIT',
|
||||||
'COMMON','COMMUNICATION','COMPARING','COMPONENTS','COMPUTE','CONCATENATE','CONDENSE','CONSTANTS','CONTEXT',
|
'COMMON','COMMUNICATION','COMPARING','COMPONENTS','COMPUTE','CONCATENATE', 'COND', 'CONDENSE','CONSTANTS','CONTEXT',
|
||||||
'CONTEXTS','CONTINUE','CONTROL','CONTROLS','CONVERSION','CONVERT','COUNTRY','COUNTY','CURRENT','CURSOR',
|
'CONTEXTS','CONTINUE','CONTROL','CONTROLS','CONVERSION', 'CONV', 'CONVERT','COUNTRY','COUNTY','CURRENT','CURSOR',
|
||||||
'CUSTOMER-FUNCTION','DATA','DATABASE','DATASET','DATE','DEALLOCATE','DECIMALS','DEFAULT','DEFAULTUTF-8NON-UNICODE',
|
'CUSTOMER-FUNCTION','DATA','DATABASE','DATASET','DATE','DEALLOCATE','DECIMALS','DEFAULT','DEFAULTUTF-8NON-UNICODE',
|
||||||
'DEFERRED','DEFINE','DEFINING','DEFINITION','DELETE','DELETING','DEMAND','DESCENDING','DESCRIBE','DESTINATION',
|
'DEFERRED','DEFINE','DEFINING','DEFINITION','DELETE','DELETING','DEMAND','DESCENDING','DESCRIBE','DESTINATION',
|
||||||
'DIALOG','DIRECTORY','DISTANCE','DISTINCT','DIVIDE-CORRESPONDING','DO','DUPLICATE','DUPLICATES','DURING','DYNAMIC',
|
'DIALOG','DIRECTORY','DISTANCE','DISTINCT','DIVIDE-CORRESPONDING','DO','DUPLICATE','DUPLICATES','DURING','DYNAMIC',
|
||||||
@@ -104,7 +104,8 @@ class Reader extends PhpObject
|
|||||||
'quote' => array('"', '"'),
|
'quote' => array('"', '"'),
|
||||||
'quot2' => array(''', '''),
|
'quot2' => array(''', '''),
|
||||||
'pipe' => array('|', '|'),
|
'pipe' => array('|', '|'),
|
||||||
'curly' => array('{', '}')
|
'curly' => array('{', '}'),
|
||||||
|
'tick' => array('`', '`')
|
||||||
),
|
),
|
||||||
'iNumber'=>array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0'),
|
'iNumber'=>array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0'),
|
||||||
'wExpand'=>array('loop'=>'endloop', 'if'=>'endif'),
|
'wExpand'=>array('loop'=>'endloop', 'if'=>'endif'),
|
||||||
|
|||||||
@@ -945,19 +945,16 @@ function getMessage(message_info, bReset)
|
|||||||
$Msg.find('a').addClass('img_box').append($Banner);
|
$Msg.find('a').addClass('img_box').append($Banner);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(message_info.edited) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//Adding message to channel panel
|
//Adding message to channel panel
|
||||||
$Message = $('<p>', {'class':message_info.msg_class+' class_'+sChanKeyName+' hide round_right', 'data-id':message_info.id, 'data-id-user':message_info.id_user})
|
$Message = $('<p>', {'class':message_info.msg_class+' class_'+sChanKeyName+' hide round_right', 'data-id':message_info.id, 'data-id-user':message_info.id_user})
|
||||||
.data('orig_msg', message_info.message)
|
.data('orig_msg', message_info.message_original || message_info.message)
|
||||||
|
.data('disp_msg', message_info.message)
|
||||||
.append($('<span>', {'class':'time'}).text(((message_info.date==databap.consts.cur_date)?'':message_info.date+' - ')+message_info.time))
|
.append($('<span>', {'class':'time'}).text(((message_info.date==databap.consts.cur_date)?'':message_info.date+' - ')+message_info.time))
|
||||||
.append($Msg)
|
.append($Msg)
|
||||||
.append($('<span>', {'class':'status'}).text('modifié'));
|
.append($('<span>', {'class':'status'}).text('modifié'));
|
||||||
$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);
|
||||||
$Message.find('.editable').hover(toggleEditButton).click(onMessageEditClick);
|
$Message.find('.editable').on('mouseenter', toggleEditButton).on('mouseleave', toggleEditButton).click(onMessageEditClick);
|
||||||
|
|
||||||
if(message_info.edited) $Message.find('.status').show();
|
if(message_info.edited) $Message.find('.status').show();
|
||||||
}
|
}
|
||||||
@@ -998,6 +995,7 @@ function addMessage(message_info, bReset) {
|
|||||||
let oOrigMsg = databap.tmp(['messages', message_info.id_message_ref]);
|
let oOrigMsg = databap.tmp(['messages', message_info.id_message_ref]);
|
||||||
if(oOrigMsg) {
|
if(oOrigMsg) {
|
||||||
oOrigMsg.message = message_info.message;
|
oOrigMsg.message = message_info.message;
|
||||||
|
oOrigMsg.message_original = message_info.message_original || message_info.message;
|
||||||
oOrigMsg.msg_class = message_info.msg_class;
|
oOrigMsg.msg_class = message_info.msg_class;
|
||||||
oOrigMsg.edited = true;
|
oOrigMsg.edited = true;
|
||||||
|
|
||||||
@@ -1039,61 +1037,64 @@ function addMessage(message_info, bReset) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleEditButton()
|
function toggleEditButton(eEvent)
|
||||||
{
|
{
|
||||||
let $Editable = $(this); //.editable
|
let $Editable = $(this); //.editable
|
||||||
let $EditBtn = $Editable.next('.edit-btn');
|
let $EditBtn = $Editable.next('.edit-btn')
|
||||||
if($EditBtn.length > 0) $EditBtn.remove();
|
if(eEvent.type == 'mouseleave' && $EditBtn.length > 0) $EditBtn.remove();
|
||||||
else $Editable.after($('<span>', {'class':'text edit-btn'}).append($('<i>', {'class': 'fa fa-fw fa-c-edit'})));
|
if(eEvent.type == 'mouseenter' && $EditBtn.length == 0) $Editable.after($('<span>', {'class':'text edit-btn'}).append($('<i>', {'class': 'fa fa-fw fa-c-edit'})));
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMessageEditClick()
|
function onMessageEditClick(eClick)
|
||||||
{
|
{
|
||||||
let $Editable = $(this);
|
let $Editable = $(this);
|
||||||
let $Message = $Editable.parents('p');
|
let $Message = $Editable.parents('p');
|
||||||
let bPrivate = $Message.hasClass('P');
|
let bPrivate = $Message.hasClass('P');
|
||||||
let sDisplayedMsg = $Editable.text();
|
let sDisplayedMsg = $Message.data('disp_msg');
|
||||||
let sOriginalMsg = $Message.data('orig_msg');
|
let sOriginalMsg = $Message.data('orig_msg');
|
||||||
|
let bEditing = ($Editable.prop('contenteditable') == 'true');
|
||||||
|
|
||||||
$Editable
|
if(!bEditing && !eClick.ctrlKey) {
|
||||||
.prop('contenteditable', 'true')
|
$Editable
|
||||||
.data('disp_msg', sDisplayedMsg)
|
.prop('contenteditable', 'true')
|
||||||
.focus();
|
.focus();
|
||||||
|
|
||||||
if(sDisplayedMsg != sOriginalMsg) {
|
if(sDisplayedMsg != sOriginalMsg) {
|
||||||
let iCaretPos = getCaretPosition($Editable[0]);
|
//let iCaretPos = getCaretPosition($Editable[0]);
|
||||||
$Editable.text(sOriginalMsg);
|
$Editable.text(sOriginalMsg);
|
||||||
setCaretPosition($Editable[0], iCaretPos + sOriginalMsg.indexOf(sDisplayedMsg));
|
//setCaretPosition($Editable[0], iCaretPos + sOriginalMsg.indexOf(sDisplayedMsg));
|
||||||
}
|
}
|
||||||
if(bPrivate) $Message.find('.console').hide();
|
|
||||||
|
if(bPrivate) $Message.find('.console').hide();
|
||||||
|
|
||||||
$Editable
|
$Editable
|
||||||
.off('focusout keydown keyup')
|
.off('focusout keydown keyup')
|
||||||
.keyup(function(e) {
|
.keyup(function(e) {
|
||||||
if(e.keyCode == 9) {
|
if(e.keyCode == 9) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
keyController(e, this);
|
keyController(e, this);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.on('focusout keydown', function(e) {
|
.on('focusout keydown', function(e) {
|
||||||
let $This = $(this);
|
let $This = $(this);
|
||||||
if(e.type == 'focusout' || e.which == 13) {
|
if(e.type == 'focusout' || e.which == 13) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
let $Message = $Editable.parents('p');
|
let $Message = $Editable.parents('p');
|
||||||
let sOldMsg = $Message.data('orig_msg');
|
let sOldMsg = $Message.data('orig_msg');
|
||||||
let sNewMsg = $This.text();
|
let sNewMsg = $This.text();
|
||||||
|
|
||||||
if(sOldMsg != sNewMsg) {
|
|
||||||
$This.prop('contenteditable', 'false');
|
$This.prop('contenteditable', 'false');
|
||||||
editMessage($This.parents('p').data('id'), sNewMsg);
|
if(sOldMsg != sNewMsg) {
|
||||||
|
editMessage($This.parents('p').data('id'), sNewMsg);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$This.html($Message.data('disp_msg'));
|
||||||
|
$Message.find('.console').show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else if(e.keyCode == 9) e.preventDefault();
|
||||||
$This.text($This.data('disp_msg'));
|
});
|
||||||
$Message.find('.console').show();
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(e.keyCode == 9) e.preventDefault();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function editMessage(iMsgId, sNewMsg)
|
function editMessage(iMsgId, sNewMsg)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
databap.pageInit = function()
|
databap.pageInit = function()
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
databap.tmp('note', 'integer');
|
databap.tmp('note', 'integer');
|
||||||
var $Frame = $('#note_frame');
|
var $Frame = $('#note_frame');
|
||||||
|
|
||||||
@@ -34,6 +35,21 @@ databap.pageInit = function()
|
|||||||
|
|
||||||
databap.tmp('note', iNote);
|
databap.tmp('note', iNote);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
$('#note_id')
|
||||||
|
.addDefaultValue('N° note')
|
||||||
|
.on('keyup', function() {
|
||||||
|
$('#submit').attr('href', 'https://me.sap.com/notes/'+$('#note_id').val());
|
||||||
|
});
|
||||||
|
$('#note_form').addButton('ok', 'Ok', '', 'submit', 'heavy');
|
||||||
|
|
||||||
|
var iNote = databap.vars.id;
|
||||||
|
if(isNumeric(iNote) && iNote > 0) {
|
||||||
|
self.addBufferIcon();
|
||||||
|
$('#note_id').val(iNote).focus();
|
||||||
|
self.goToExternalLink('https://me.sap.com/notes/'+iNote);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user