[pve-devel] [PATCH pve-manager v2 1/5] Add help button for PVE

Emmanuel Kasper e.kasper at proxmox.com
Wed Jun 1 12:15:41 CEST 2016


This help button is meant to be added on InputPanels, where a
link to an online documentation chapter or subschapter is available.

Clicking on the help button will open the help in a new
browser tab.

Original idea similar to the pfSense GUI.
---
 www/manager6/Makefile             |  1 +
 www/manager6/button/HelpButton.js | 30 ++++++++++++++++++++++++++++++
 www/manager6/panel/InputPanel.js  | 14 +++++++++++++-
 3 files changed, 44 insertions(+), 1 deletion(-)
 create mode 100644 www/manager6/button/HelpButton.js

diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index 5b7f4bb..d6a3389 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -8,6 +8,7 @@ JSSRC= 				                 	\
 	button/Button.js				\
 	button/ConsoleButton.js				\
 	button/Split.js					\
+	button/HelpButton.js					\
 	qemu/SendKeyMenu.js				\
 	qemu/CmdMenu.js					\
 	qemu/TemplateMenu.js				\
diff --git a/www/manager6/button/HelpButton.js b/www/manager6/button/HelpButton.js
new file mode 100644
index 0000000..b00ff14
--- /dev/null
+++ b/www/manager6/button/HelpButton.js
@@ -0,0 +1,30 @@
+/* help button pointing to an online documentation
+   for components contained in a modal window
+ */
+Ext.define('PVE.button.Help', {
+    extend: 'Ext.button.Button',
+    alias: 'widget.pveHelpButton',
+    text: gettext('Help'),
+    iconCls: 'fa fa-question-circle',
+    hidden: true,
+    controller: {
+	xclass: 'Ext.app.ViewController',
+	listen: {
+	    global: {
+		pveShowHelp: 'onPveShowHelp',
+		pveHideHelp: 'onPveHideHelp'
+	    }
+	},
+	onPveShowHelp: function(helpLink) {
+	    this.getView().setHandler(function() {
+		var docsURI = window.location.origin +
+		'/pve-docs/' + helpLink;
+		window.open(docsURI);
+	    });
+	    this.getView().show();
+	},
+	onPveHideHelp: function() {
+	    this.getView().hide();
+	}
+    }
+});
\ No newline at end of file
diff --git a/www/manager6/panel/InputPanel.js b/www/manager6/panel/InputPanel.js
index 8ab1e33..9339eb4 100644
--- a/www/manager6/panel/InputPanel.js
+++ b/www/manager6/panel/InputPanel.js
@@ -1,9 +1,21 @@
 Ext.define('PVE.panel.InputPanel', {
     extend: 'Ext.panel.Panel',
     alias: ['widget.inputpanel'],
-
+    listeners: {
+	activate: function() {
+	    // notify owning container that it should display a help button
+	    this.onlineHelp && Ext.GlobalEvents.fireEvent('pveShowHelp', this.onlineHelp);
+	},
+	deactivate: function() {
+	    this.onlineHelp && Ext.GlobalEvents.fireEvent('pveHideHelp', this.onlineHelp);
+	},
+    },
     border: false,
 
+    // override this with an URL to a relevant chapter of the pve manual
+    // setting this will display a help button in our parent panel
+    onlineHelp: undefined,
+
     // overwrite this to modify submit data
     onGetValues: function(values) {
 	return values;
-- 
2.1.4




More information about the pve-devel mailing list