Fixed comments extensions
This commit is contained in:
parent
6f6c10c601
commit
9af0858186
@ -317,6 +317,7 @@ define([
|
||||
};
|
||||
})();
|
||||
eventMgr.addListener('onLayoutResize', adjustCursorPosition);
|
||||
editor.adjustCursorPosition = adjustCursorPosition;
|
||||
|
||||
var textContent;
|
||||
function setValue(value) {
|
||||
|
@ -28,7 +28,7 @@ define([
|
||||
"extensions/toc",
|
||||
"extensions/mathJax",
|
||||
"extensions/emailConverter",
|
||||
"extensions/scrollLink",
|
||||
"extensions/scrollSync",
|
||||
"extensions/buttonSync",
|
||||
"extensions/buttonPublish",
|
||||
"extensions/buttonStat",
|
||||
|
@ -69,11 +69,6 @@ define([
|
||||
var newCommentElt = crel('a', {
|
||||
class: 'discussion icon-comment new'
|
||||
});
|
||||
var cursorY;
|
||||
comments.onCursorCoordinates = function(x, y) {
|
||||
cursorY = y;
|
||||
setCommentEltCoordinates(newCommentElt, cursorY);
|
||||
};
|
||||
|
||||
function Context(commentElt, fileDesc) {
|
||||
this.commentElt = commentElt;
|
||||
@ -124,6 +119,7 @@ define([
|
||||
offsetMap = {};
|
||||
var discussionList = _.values(currentFileDesc.discussionList);
|
||||
function refreshOne() {
|
||||
var coordinates;
|
||||
if(discussionList.length === 0) {
|
||||
// Remove outdated commentElt
|
||||
_.filter(commentEltMap, function(commentElt, discussionIndex) {
|
||||
@ -133,8 +129,9 @@ define([
|
||||
delete commentEltMap[commentElt.discussionIndex];
|
||||
});
|
||||
// Move newCommentElt
|
||||
setCommentEltCoordinates(newCommentElt, cursorY);
|
||||
if(currentContext && !currentContext.discussionIndex) {
|
||||
coordinates = selectionMgr.getCoordinates(currentContext.getDiscussion().selectionEnd);
|
||||
setCommentEltCoordinates(newCommentElt, coordinates.y);
|
||||
inputElt.scrollTop += parseInt(newCommentElt.style.top) - inputElt.scrollTop - inputElt.offsetHeight * 3 / 4;
|
||||
movePopover(newCommentElt);
|
||||
}
|
||||
@ -163,7 +160,7 @@ define([
|
||||
className += isReplied ? ' replied' : ' added';
|
||||
commentElt.className = className;
|
||||
commentElt.discussionIndex = discussion.discussionIndex;
|
||||
var coordinates = selectionMgr.getCoordinates(discussion.selectionEnd);
|
||||
coordinates = selectionMgr.getCoordinates(discussion.selectionEnd);
|
||||
var lineIndex = setCommentEltCoordinates(commentElt, coordinates.y);
|
||||
offsetMap[lineIndex] = (offsetMap[lineIndex] || 0) + 1;
|
||||
|
||||
@ -325,8 +322,10 @@ define([
|
||||
commentList: []
|
||||
};
|
||||
currentFileDesc.newDiscussion = discussion;
|
||||
var coordinates = selectionMgr.getCoordinates(selectionStart);
|
||||
setCommentEltCoordinates(newCommentElt, coordinates.y);
|
||||
}
|
||||
context.selectionRange = selectionMgr.setSelectionStartEnd(discussion.selectionStart, discussion.selectionEnd, undefined, true);
|
||||
context.selectionRange = selectionMgr.createRange(discussion.selectionStart, discussion.selectionEnd);
|
||||
inputElt.scrollTop += parseInt(evt.target.style.top) - inputElt.scrollTop - inputElt.offsetHeight * 3 / 4;
|
||||
|
||||
}).on('shown.bs.popover', '#wmd-input > .editor-margin', function(evt) {
|
||||
@ -351,7 +350,8 @@ define([
|
||||
case 27:
|
||||
evt.preventDefault();
|
||||
closeCurrentPopover();
|
||||
inputElt.focus();
|
||||
editor.focus();
|
||||
editor.adjustCursorPosition();
|
||||
return;
|
||||
}
|
||||
});
|
||||
@ -445,7 +445,7 @@ define([
|
||||
var $commentElt = $newCommentElt;
|
||||
if(currentContext) {
|
||||
if(!currentContext.discussionIndex) {
|
||||
$commentElt = $(_.first(sortedCommentEltList) || newCommentElt);
|
||||
$commentElt = $(_.first(sortedCommentEltList));
|
||||
}
|
||||
else {
|
||||
var curentIndex = -1;
|
||||
@ -455,13 +455,14 @@ define([
|
||||
return true;
|
||||
}
|
||||
});
|
||||
$commentElt = $(sortedCommentEltList[(curentIndex + 1) % sortedCommentEltList.length]);
|
||||
$commentElt = $(sortedCommentEltList[(curentIndex + 1)]);
|
||||
}
|
||||
}
|
||||
if(currentContext && currentContext.commentElt === $commentElt[0]) {
|
||||
if($commentElt.length === 0) {
|
||||
// Close the popover properly
|
||||
closeCurrentPopover();
|
||||
inputElt.focus();
|
||||
editor.focus();
|
||||
editor.adjustCursorPosition();
|
||||
}
|
||||
else {
|
||||
$commentElt.click();
|
||||
|
@ -2,23 +2,23 @@ define([
|
||||
"jquery",
|
||||
"underscore",
|
||||
"classes/Extension",
|
||||
"text!html/scrollLinkSettingsBlock.html"
|
||||
], function($, _, Extension, scrollLinkSettingsBlockHTML) {
|
||||
"text!html/scrollSyncSettingsBlock.html"
|
||||
], function($, _, Extension, scrollSyncSettingsBlockHTML) {
|
||||
|
||||
var scrollLink = new Extension("scrollLink", "Scroll Link", true, true);
|
||||
scrollLink.settingsBlock = scrollLinkSettingsBlockHTML;
|
||||
var scrollSync = new Extension("scrollSync", "Scroll Link", true, true);
|
||||
scrollSync.settingsBlock = scrollSyncSettingsBlockHTML;
|
||||
|
||||
$.easing.easeOutSine = function( p ) {
|
||||
return Math.cos((1 - p) * Math.PI / 2 );
|
||||
};
|
||||
|
||||
var sectionList;
|
||||
scrollLink.onSectionsCreated = function(sectionListParam) {
|
||||
scrollSync.onSectionsCreated = function(sectionListParam) {
|
||||
sectionList = sectionListParam;
|
||||
};
|
||||
|
||||
var isPreviewVisible = true;
|
||||
scrollLink.onPreviewToggle = function(isOpen) {
|
||||
scrollSync.onPreviewToggle = function(isOpen) {
|
||||
isPreviewVisible = isOpen;
|
||||
};
|
||||
|
||||
@ -91,7 +91,7 @@ define([
|
||||
// apply Scroll Link (-10 to have a gap > 9px)
|
||||
lastEditorScrollTop = -10;
|
||||
lastPreviewScrollTop = -10;
|
||||
doScrollLink();
|
||||
doScrollSync();
|
||||
}, 500);
|
||||
|
||||
var isScrollEditor = false;
|
||||
@ -99,7 +99,7 @@ define([
|
||||
var isEditorMoving = false;
|
||||
var isPreviewMoving = false;
|
||||
var scrollingHelper = $('<div>');
|
||||
var doScrollLink = _.throttle(function() {
|
||||
var doScrollSync = _.throttle(function() {
|
||||
if(!isPreviewVisible || mdSectionList.length === 0 || mdSectionList.length !== htmlSectionList.length) {
|
||||
return;
|
||||
}
|
||||
@ -140,12 +140,12 @@ define([
|
||||
lastPreviewScrollTop = previewScrollTop;
|
||||
return;
|
||||
}
|
||||
scrollingHelper.stop('scrollLinkFx', true).css('value', 0).animate({
|
||||
scrollingHelper.stop('scrollSyncFx', true).css('value', 0).animate({
|
||||
value: destScrollTop - previewScrollTop
|
||||
}, {
|
||||
easing: 'easeOutSine',
|
||||
duration: 200,
|
||||
queue: 'scrollLinkFx',
|
||||
queue: 'scrollSyncFx',
|
||||
step: function(now) {
|
||||
isPreviewMoving = true;
|
||||
lastPreviewScrollTop = previewScrollTop + now;
|
||||
@ -156,7 +156,7 @@ define([
|
||||
isPreviewMoving = false;
|
||||
}, 10);
|
||||
},
|
||||
}).dequeue('scrollLinkFx');
|
||||
}).dequeue('scrollSyncFx');
|
||||
|
||||
}
|
||||
else if(isScrollPreview === true) {
|
||||
@ -176,12 +176,12 @@ define([
|
||||
lastEditorScrollTop = editorScrollTop;
|
||||
return;
|
||||
}
|
||||
scrollingHelper.stop('scrollLinkFx', true).css('value', 0).animate({
|
||||
scrollingHelper.stop('scrollSyncFx', true).css('value', 0).animate({
|
||||
value: destScrollTop - editorScrollTop
|
||||
}, {
|
||||
easing: 'easeOutSine',
|
||||
duration: 200,
|
||||
queue: 'scrollLinkFx',
|
||||
queue: 'scrollSyncFx',
|
||||
step: function(now) {
|
||||
isEditorMoving = true;
|
||||
lastEditorScrollTop = editorScrollTop + now;
|
||||
@ -192,21 +192,21 @@ define([
|
||||
isEditorMoving = false;
|
||||
}, 10);
|
||||
},
|
||||
}).dequeue('scrollLinkFx');
|
||||
}).dequeue('scrollSyncFx');
|
||||
}
|
||||
}, 100);
|
||||
|
||||
scrollLink.onLayoutResize = function() {
|
||||
scrollSync.onLayoutResize = function() {
|
||||
isScrollEditor = true;
|
||||
buildSections();
|
||||
};
|
||||
|
||||
scrollLink.onFileClosed = function() {
|
||||
scrollSync.onFileClosed = function() {
|
||||
mdSectionList = [];
|
||||
};
|
||||
|
||||
var scrollAdjust = false;
|
||||
scrollLink.onReady = function() {
|
||||
scrollSync.onReady = function() {
|
||||
$previewElt = $(".preview-container");
|
||||
$editorElt = $("#wmd-input");
|
||||
|
||||
@ -214,7 +214,7 @@ define([
|
||||
if(isPreviewMoving === false && scrollAdjust === false) {
|
||||
isScrollPreview = true;
|
||||
isScrollEditor = false;
|
||||
doScrollLink();
|
||||
doScrollSync();
|
||||
}
|
||||
scrollAdjust = false;
|
||||
});
|
||||
@ -222,13 +222,13 @@ define([
|
||||
if(isEditorMoving === false) {
|
||||
isScrollEditor = true;
|
||||
isScrollPreview = false;
|
||||
doScrollLink();
|
||||
doScrollSync();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var $previewContentsElt;
|
||||
scrollLink.onPagedownConfigure = function(editor) {
|
||||
scrollSync.onPagedownConfigure = function(editor) {
|
||||
$previewContentsElt = $("#preview-contents");
|
||||
editor.getConverter().hooks.chain("postConversion", function(text) {
|
||||
// To avoid losing scrolling position before elements are fully loaded
|
||||
@ -237,7 +237,7 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
scrollLink.onPreviewFinished = function() {
|
||||
scrollSync.onPreviewFinished = function() {
|
||||
// Now set the correct height
|
||||
var previousHeight = $previewContentsElt.height();
|
||||
$previewContentsElt.height("auto");
|
||||
@ -250,5 +250,5 @@ define([
|
||||
buildSections();
|
||||
};
|
||||
|
||||
return scrollLink;
|
||||
return scrollSync;
|
||||
});
|
Loading…
Reference in New Issue
Block a user