Toolbar: Allow custom dropdowns for plugins

pull/2110/head
Marcel Klehr 2014-03-16 14:04:12 +01:00
parent a369347d86
commit 51900cbf67
1 changed files with 12 additions and 10 deletions

View File

@ -139,6 +139,8 @@ var padeditbar = (function()
var self = { var self = {
init: function() { init: function() {
var self = this; var self = this;
self.dropdowns = [];
$("#editbar .editbarbutton").attr("unselectable", "on"); // for IE $("#editbar .editbarbutton").attr("unselectable", "on"); // for IE
$("#editbar").removeClass("disabledtoolbar").addClass("enabledtoolbar"); $("#editbar").removeClass("disabledtoolbar").addClass("enabledtoolbar");
$("#editbar [data-key]").each(function () { $("#editbar [data-key]").each(function () {
@ -170,6 +172,7 @@ var padeditbar = (function()
}, },
registerDropdownCommand: function (cmd, dropdown) { registerDropdownCommand: function (cmd, dropdown) {
dropdown = dropdown || cmd; dropdown = dropdown || cmd;
self.dropdowns.push(dropdown)
this.registerCommand(cmd, function () { this.registerCommand(cmd, function () {
self.toggleDropDown(dropdown); self.toggleDropDown(dropdown);
}); });
@ -189,19 +192,17 @@ var padeditbar = (function()
}, },
toggleDropDown: function(moduleName, cb) toggleDropDown: function(moduleName, cb)
{ {
var modules = ["settings", "connectivity", "importexport", "embed", "users"];
// hide all modules and remove highlighting of all buttons // hide all modules and remove highlighting of all buttons
if(moduleName == "none") if(moduleName == "none")
{ {
var returned = false var returned = false
for(var i=0;i<modules.length;i++) for(var i=0;i<self.dropdowns.length;i++)
{ {
//skip the userlist //skip the userlist
if(modules[i] == "users") if(self.dropdowns[i] == "users")
continue; continue;
var module = $("#" + modules[i]); var module = $("#" + self.dropdowns[i]);
if(module.css('display') != "none") if(module.css('display') != "none")
{ {
@ -216,18 +217,18 @@ var padeditbar = (function()
{ {
// hide all modules that are not selected and remove highlighting // hide all modules that are not selected and remove highlighting
// respectively add highlighting to the corresponding button // respectively add highlighting to the corresponding button
for(var i=0;i<modules.length;i++) for(var i=0;i<self.dropdowns.length;i++)
{ {
var module = $("#" + modules[i]); var module = $("#" + self.dropdowns[i]);
if(module.css('display') != "none") if(module.css('display') != "none")
{ {
$("#" + modules[i] + "link").removeClass("selected"); $("#" + self.dropdowns[i] + "link").removeClass("selected");
module.slideUp("fast"); module.slideUp("fast");
} }
else if(modules[i]==moduleName) else if(self.dropdowns[i]==moduleName)
{ {
$("#" + modules[i] + "link").addClass("selected"); $("#" + self.dropdowns[i] + "link").addClass("selected");
module.slideDown("fast", cb); module.slideDown("fast", cb);
} }
} }
@ -271,6 +272,7 @@ var padeditbar = (function()
toolbar.registerDropdownCommand("settings"); toolbar.registerDropdownCommand("settings");
toolbar.registerDropdownCommand("connectivity"); toolbar.registerDropdownCommand("connectivity");
toolbar.registerDropdownCommand("import_export", "importexport"); toolbar.registerDropdownCommand("import_export", "importexport");
toolbar.registerDropdownCommand("embed");
toolbar.registerCommand("embed", function () { toolbar.registerCommand("embed", function () {
toolbar.setEmbedLinks(); toolbar.setEmbedLinks();