[Kimchi-devel] [PATCH 1/2 V4] Fix problems to open plugin's help pages
Aline Manera
alinefm at linux.vnet.ibm.com
Fri Oct 3 19:12:52 UTC 2014
On 09/30/2014 03:37 PM, Rodrigo Trujillo wrote:
> Kimchi is currently not able to configure and open help pages of any
> plugin tab. This patch fixes this problem and removes the HELP button
> if any Kimchi tab or plugin tab do not have a help configured properly
> for the language being used.
> (eg. if plugins/<tab_html>/help/<lang>/<tab_html>.html does not exist,
> then the help button is disabled).
>
> A help page for a plugin tab follow same Kimchi system:
> - html help file should have the same name of plugin html tab file;
> - html files should be placed in plugin's " ui/pages/help/<LANG> "
> path;
> - plugin should add following lines to <PLUGIN_NAME>.conf:
> * [/help]
> * tools.staticdir.on = True
> * tools.nocache.on = True
> * tools.staticdir.dir = '<HELP PAGE DIRECTORY>'
>
> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
> ---
> ui/js/src/kimchi.main.js | 53 ++++++++++++++++++++++++++++++++++++------------
> 1 file changed, 40 insertions(+), 13 deletions(-)
>
> diff --git a/ui/js/src/kimchi.main.js b/ui/js/src/kimchi.main.js
> index a3305e9..3210dd9 100644
> --- a/ui/js/src/kimchi.main.js
> +++ b/ui/js/src/kimchi.main.js
> @@ -49,11 +49,16 @@ kimchi.main = function() {
> var path = tab['path'];
> var mode = tab['mode'];
> if (mode != 'none') {
> + var helpPath = kimchi.checkHelpFile(path);
> + var disableHelp = ""
> + if (helpPath == "disableHelp")
> + disableHelp = helpPath;
disabledHelp = "disableHelp" ? helpPath.lenght() == 0 : ""
> tabsHtml.push(
> '<li>',
> - '<a class="item" href="', path, '">',
> + '<a class="item ', disableHelp,'" href="', path, '">',
> title,
> '</a>',
> + '<input id="helpPathId" name="helpPath" value="' + helpPath + '" type="hidden"/>',
> '</li>'
> );
> }
> @@ -172,7 +177,15 @@ kimchi.main = function() {
> $('#nav-menu a').removeClass('current');
> $(tab).addClass('current');
> $(tab).focus();
> -
> + // Disable Help button according to selected tab
> + if ($(tab).hasClass("disableHelp")) {
> + $('#btn-help').css('cursor', "not-allowed");
> + $('#btn-help').off("click");
> + }
> + else {
> + $('#btn-help').css('cursor', "pointer");
> + $('#btn-help').on("click", kimchi.openHelp);
> + }
> // Load page content.
> loadPage(url);
> };
> @@ -265,7 +278,7 @@ kimchi.main = function() {
> event.preventDefault();
> });
>
> - $('#btn-help').on('click', kimchi.getHelp);
> + $('#btn-help').on('click', kimchi.openHelp);
> };
>
> var initUI = function() {
> @@ -307,15 +320,29 @@ kimchi.main = function() {
> });
> };
>
> -kimchi.getHelp = function(e) {
> - var url = window.location.hash;
> - var lang = kimchi.lang.get();
> - url = url.replace("#tabs", "/help/" + lang);
> - if (url == "/help" + lang)
> - url = url + "/index.html"
> - else
> - url = url + ".html";
>
> - window.open(url, "Kimchi Help");
> - e.preventDefault();
> +kimchi.checkHelpFile = function(path) {
> + var lang = kimchi.lang.get();
> + var url = ""
> + // Find help page path according to tab name
> + if (/^tabs/.test(path))
> + url = path.replace("tabs", "/help/" + lang);
> + else if (/^plugins/.test(path))
> + url = path.slice(0, path.lastIndexOf('/')) + "/help/" + lang + path.slice(path.lastIndexOf('/'));
> + // Checking if help page exist.
> + $.ajax({
> + url: url,
> + async: false,
> + error: function() { url = "disableHelp"; },
Return an empty string in that case.
url = "";
So the function does what it is supposed to do without joining 2
different meanings.
> + success: function() { }
> + });
> + return url;
> +};
> +
> +
> +kimchi.openHelp = function(e) {
> + var tab = $('#nav-menu a.current');
> + var url = $(tab).parent().find("input[name='helpPath']").val();
> + window.open(url, "Kimchi Help");
> + e.preventDefault();
> };
More information about the Kimchi-devel
mailing list