Toolbar hooks

This commit is contained in:
cohitre 2013-03-12 19:36:04 -07:00
parent 52aa7d3997
commit 988653b8ce
2 changed files with 71 additions and 54 deletions

View file

@ -43,58 +43,6 @@ tagAttributes = function (attributes) {
}).join(" ");
};
defaultButtons = {
bold: defaultButtonAttributes("bold"),
italic: defaultButtonAttributes("italic"),
underline: defaultButtonAttributes("underline"),
strikethrough: defaultButtonAttributes("strikethrough"),
orderedlist: {
key: "insertorderedlist",
localizationId: "pad.toolbar.ol.title",
icon: "buttonicon-insertorderedlist"
},
unorderedlist: {
key: "insertunorderedlist",
localizationId: "pad.toolbar.ul.title",
icon: "buttonicon-insertunorderedlist"
},
indent: defaultButtonAttributes("indent"),
outdent: {
key: "outdent",
localizationId: "pad.toolbar.unindent.title",
icon: "buttonicon-outdent"
},
undo: defaultButtonAttributes("undo"),
redo: defaultButtonAttributes("redo"),
clearauthorship: {
key: "clearauthorship",
localizationId: "pad.toolbar.clearAuthorship.title",
icon: "buttonicon-clearauthorship"
},
importexport: {
key: "import_export",
localizationId: "pad.toolbar.import_export.title",
icon: "buttonicon-import_export"
},
timeslider: {
key: "showTimeSlider",
localizationId: "pad.toolbar.timeslider.title",
icon: "buttonicon-history"
},
savedrevision: defaultButtonAttributes("savedRevision"),
settings: defaultButtonAttributes("settings"),
embed: defaultButtonAttributes("embed"),
showusers: defaultButtonAttributes("showusers")
};
ButtonsGroup = function () {
this.buttons = [];
};
@ -134,7 +82,13 @@ Button = function (attributes) {
};
Button.load = function (btnName) {
return new Button(defaultButtons[btnName]);
var button = module.exports.availableButtons[btnName];
if (button.constructor === Button || button.constructor === SelectButton) {
return button;
}
else {
return new Button(button);
}
};
_.extend(Button.prototype, {
@ -197,7 +151,65 @@ Separator.prototype.render = function () {
};
module.exports = {
availableButtons: {},
availableButtons: {
bold: defaultButtonAttributes("bold"),
italic: defaultButtonAttributes("italic"),
underline: defaultButtonAttributes("underline"),
strikethrough: defaultButtonAttributes("strikethrough"),
orderedlist: {
key: "insertorderedlist",
localizationId: "pad.toolbar.ol.title",
icon: "buttonicon-insertorderedlist"
},
unorderedlist: {
key: "insertunorderedlist",
localizationId: "pad.toolbar.ul.title",
icon: "buttonicon-insertunorderedlist"
},
indent: defaultButtonAttributes("indent"),
outdent: {
key: "outdent",
localizationId: "pad.toolbar.unindent.title",
icon: "buttonicon-outdent"
},
undo: defaultButtonAttributes("undo"),
redo: defaultButtonAttributes("redo"),
clearauthorship: {
key: "clearauthorship",
localizationId: "pad.toolbar.clearAuthorship.title",
icon: "buttonicon-clearauthorship"
},
importexport: {
key: "import_export",
localizationId: "pad.toolbar.import_export.title",
icon: "buttonicon-import_export"
},
timeslider: {
key: "showTimeSlider",
localizationId: "pad.toolbar.timeslider.title",
icon: "buttonicon-history"
},
savedrevision: defaultButtonAttributes("savedRevision"),
settings: defaultButtonAttributes("settings"),
embed: defaultButtonAttributes("embed"),
showusers: defaultButtonAttributes("showusers")
},
registerButton: function (buttonName, buttonInfo) {
this.availableButtons[buttonName] = buttonInfo;
},
button: function (attributes) {
return new Button(attributes);
},
separator: function () {
return (new Separator).render();
},

View file

@ -1,7 +1,12 @@
<%
var settings = require("ep_etherpad-lite/node/utils/Settings")
, hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks')
, langs = require("ep_etherpad-lite/node/hooks/i18n").availableLangs
, toolbar = require("ep_etherpad-lite/node/utils/toolbar");
hooks.callAll("padInitToolbar", {
toolbar: toolbar
});
%>
<!doctype html>
<% e.begin_block("htmlHead"); %>