Add JavaScript extension point for comments
Plugins can register a JavaScript function that is invoked whenever a DOM element that represents a comment is created. This DOM element is passed as argument. This allows the plugin to manipulate the DOM element, e.g. it can insert images for emoticons or render Markdown. Change-Id: Ia4f689b0f39ec57ba6835fc4e6a0b32b11c26b07 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
parent
023d79107f
commit
daefed068f
@ -176,6 +176,13 @@ Supported events:
|
||||
function must return true to allow the operation to continue, or
|
||||
false to prevent it.
|
||||
|
||||
* `comment`: Invoked when a DOM element that represents a comment is
|
||||
created. This DOM element is passed as argument. This DOM element
|
||||
contains nested elements that Gerrit uses to format the comment. The
|
||||
DOM structure may differ between comment types such as inline
|
||||
comments, file-level comments and summary comments, and it may change
|
||||
with new Gerrit versions.
|
||||
|
||||
[[self_onAction]]
|
||||
=== self.onAction()
|
||||
Register a JavaScript callback to be invoked when the user clicks
|
||||
|
@ -21,6 +21,7 @@ import com.google.gerrit.client.info.AccountPreferencesInfo;
|
||||
import com.google.gerrit.client.info.ServerInfo;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
import com.google.gwt.user.client.History;
|
||||
import com.google.gwt.user.client.Window;
|
||||
|
||||
@ -296,6 +297,13 @@ public class ApiGlue {
|
||||
}
|
||||
}
|
||||
|
||||
public static final void fireEvent(String event, Element e) {
|
||||
JsArray<JavaScriptObject> h = getEventHandlers(event);
|
||||
for (int i = 0; i < h.length(); i++) {
|
||||
invoke(h.get(i), e);
|
||||
}
|
||||
}
|
||||
|
||||
static final void fireEvent(String event, JavaScriptObject a, JavaScriptObject b) {
|
||||
JsArray<JavaScriptObject> h = getEventHandlers(event);
|
||||
for (int i = 0; i < h.length(); i++) {
|
||||
|
@ -15,6 +15,7 @@
|
||||
package com.google.gerrit.client.change;
|
||||
|
||||
import com.google.gerrit.client.Dispatcher;
|
||||
import com.google.gerrit.client.api.ApiGlue;
|
||||
import com.google.gerrit.client.changes.CommentInfo;
|
||||
import com.google.gerrit.client.diff.DisplaySide;
|
||||
import com.google.gerrit.client.ui.CommentLinkProcessor;
|
||||
@ -82,6 +83,7 @@ class LineComment extends Composite {
|
||||
if (info.message() != null) {
|
||||
message.setInnerSafeHtml(clp.apply(new SafeHtmlBuilder()
|
||||
.append(info.message().trim()).wikify()));
|
||||
ApiGlue.fireEvent("comment", message);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@ package com.google.gerrit.client.change;
|
||||
import com.google.gerrit.client.AvatarImage;
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.api.ApiGlue;
|
||||
import com.google.gerrit.client.changes.CommentInfo;
|
||||
import com.google.gerrit.client.changes.Util;
|
||||
import com.google.gerrit.client.info.ChangeInfo.MessageInfo;
|
||||
@ -96,6 +97,7 @@ class Message extends Composite {
|
||||
summary.setInnerText(msg);
|
||||
message.setInnerSafeHtml(history.getCommentLinkProcessor()
|
||||
.apply(new SafeHtmlBuilder().append(msg).wikify()));
|
||||
ApiGlue.fireEvent("comment", message);
|
||||
} else {
|
||||
reply.getElement().getStyle().setVisibility(Visibility.HIDDEN);
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ import com.google.gerrit.client.AvatarImage;
|
||||
import com.google.gerrit.client.Dispatcher;
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.api.ApiGlue;
|
||||
import com.google.gerrit.client.change.ReplyBox;
|
||||
import com.google.gerrit.client.changes.CommentApi;
|
||||
import com.google.gerrit.client.changes.CommentInfo;
|
||||
@ -100,6 +101,7 @@ class PublishedBox extends CommentBox {
|
||||
summary.setInnerText(msg);
|
||||
message.setInnerSafeHtml(clp.apply(
|
||||
new SafeHtmlBuilder().append(msg).wikify()));
|
||||
ApiGlue.fireEvent("comment", message);
|
||||
}
|
||||
|
||||
fix.setVisible(open);
|
||||
|
Loading…
Reference in New Issue
Block a user