mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-08-12 05:55:07 -05:00
Fix SQL help for EPAS 10+, and refactor the URL generation code into a testable function. Fixes #4099
This commit is contained in:
@@ -54,3 +54,4 @@ Bug fixes
|
|||||||
| `Bug #4073 <https://redmine.postgresql.org/issues/4073>`_ - Change the CodeMirror active line background colour to $color-danger-lighter so it doesn't conflict with the selection colour.
|
| `Bug #4073 <https://redmine.postgresql.org/issues/4073>`_ - Change the CodeMirror active line background colour to $color-danger-lighter so it doesn't conflict with the selection colour.
|
||||||
| `Bug #4081 <https://redmine.postgresql.org/issues/4081>`_ - Fix the RE-SQL syntax for roles with a VALID UNTIL clause.
|
| `Bug #4081 <https://redmine.postgresql.org/issues/4081>`_ - Fix the RE-SQL syntax for roles with a VALID UNTIL clause.
|
||||||
| `Bug #4090 <https://redmine.postgresql.org/issues/4090>`_ - Improve the German translation for Backup Server.
|
| `Bug #4090 <https://redmine.postgresql.org/issues/4090>`_ - Improve the German translation for Backup Server.
|
||||||
|
| `Bug #4099 <https://redmine.postgresql.org/issues/4099>`_ - Fix SQL help for EPAS 10+, and refactor the URL generation code into a testable function.
|
||||||
@@ -189,7 +189,7 @@ define('pgadmin.node.pga_jobstep', [
|
|||||||
}, helpMessage: S(
|
}, helpMessage: S(
|
||||||
gettext('Please specify the connection string for the remote database server. Each parameter setting is in the form keyword = value. Spaces around the equal sign are optional. To write an empty value, or a value containing spaces, surround it with single quotes, e.g., keyword = \'a value\'. Single quotes and backslashes within the value must be escaped with a backslash, i.e., \' and \\.<br>For more information, please see the documentation on %s')
|
gettext('Please specify the connection string for the remote database server. Each parameter setting is in the form keyword = value. Spaces around the equal sign are optional. To write an empty value, or a value containing spaces, surround it with single quotes, e.g., keyword = \'a value\'. Single quotes and backslashes within the value must be escaped with a backslash, i.e., \' and \\.<br>For more information, please see the documentation on %s')
|
||||||
).sprintf(
|
).sprintf(
|
||||||
'<a href="https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING" target="_blank">libpq connection strings</a>'
|
'<a href="https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING" target="_blank">libpq connection strings</a>'
|
||||||
).value(), mode: ['create', 'edit'],
|
).value(), mode: ['create', 'edit'],
|
||||||
},{
|
},{
|
||||||
id: 'jstonerror', label: gettext('On error'), cell: 'select2',
|
id: 'jstonerror', label: gettext('On error'), cell: 'select2',
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ define('pgadmin.browser', [
|
|||||||
'sources/tree/tree',
|
'sources/tree/tree',
|
||||||
'sources/gettext', 'sources/url_for', 'require', 'jquery', 'underscore', 'underscore.string',
|
'sources/gettext', 'sources/url_for', 'require', 'jquery', 'underscore', 'underscore.string',
|
||||||
'bootstrap', 'sources/pgadmin', 'pgadmin.alertifyjs', 'bundled_codemirror',
|
'bootstrap', 'sources/pgadmin', 'pgadmin.alertifyjs', 'bundled_codemirror',
|
||||||
'sources/check_node_visibility', './toolbar', 'pgadmin.browser.utils', 'wcdocker',
|
'sources/check_node_visibility', './toolbar', 'pgadmin.help', 'pgadmin.browser.utils',
|
||||||
'jquery.contextmenu', 'jquery.aciplugin', 'jquery.acitree', 'pgadmin.browser.preferences',
|
'wcdocker', 'jquery.contextmenu', 'jquery.aciplugin', 'jquery.acitree',
|
||||||
'pgadmin.browser.messages',
|
'pgadmin.browser.preferences', 'pgadmin.browser.messages',
|
||||||
'pgadmin.browser.menu', 'pgadmin.browser.panel',
|
'pgadmin.browser.menu', 'pgadmin.browser.panel',
|
||||||
'pgadmin.browser.error', 'pgadmin.browser.frame',
|
'pgadmin.browser.error', 'pgadmin.browser.frame',
|
||||||
'pgadmin.browser.node', 'pgadmin.browser.collection',
|
'pgadmin.browser.node', 'pgadmin.browser.collection',
|
||||||
@@ -21,8 +21,9 @@ define('pgadmin.browser', [
|
|||||||
'pgadmin.browser.keyboard', 'sources/tree/pgadmin_tree_save_state',
|
'pgadmin.browser.keyboard', 'sources/tree/pgadmin_tree_save_state',
|
||||||
], function(
|
], function(
|
||||||
tree,
|
tree,
|
||||||
gettext, url_for, require, $, _, S, Bootstrap, pgAdmin, Alertify,
|
gettext, url_for, require, $, _, S,
|
||||||
codemirror, checkNodeVisibility, toolBar
|
Bootstrap, pgAdmin, Alertify, codemirror,
|
||||||
|
checkNodeVisibility, toolBar, help
|
||||||
) {
|
) {
|
||||||
window.jQuery = window.$ = $;
|
window.jQuery = window.$ = $;
|
||||||
// Some scripts do export their object in the window only.
|
// Some scripts do export their object in the window only.
|
||||||
@@ -653,14 +654,7 @@ define('pgadmin.browser', [
|
|||||||
baseUrl = pgBrowser.utils.edbas_help_path;
|
baseUrl = pgBrowser.utils.edbas_help_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
var major = Math.floor(server.version / 10000),
|
var fullUrl = help.getHelpUrl(baseUrl, url, server.version);
|
||||||
minor = Math.floor(server.version / 100) - (major * 100);
|
|
||||||
|
|
||||||
baseUrl = baseUrl.replace('$VERSION$', major + '.' + minor);
|
|
||||||
if (!S(baseUrl).endsWith('/')) {
|
|
||||||
baseUrl = baseUrl + '/';
|
|
||||||
}
|
|
||||||
var fullUrl = baseUrl + url;
|
|
||||||
|
|
||||||
window.open(fullUrl, 'postgres_help');
|
window.open(fullUrl, 'postgres_help');
|
||||||
} else if(type == 'dialog_help') {
|
} else if(type == 'dialog_help') {
|
||||||
|
|||||||
@@ -11,11 +11,14 @@ define('pgadmin.browser.node', [
|
|||||||
'sources/tree/pgadmin_tree_node', 'sources/url_for',
|
'sources/tree/pgadmin_tree_node', 'sources/url_for',
|
||||||
'sources/gettext', 'jquery', 'underscore', 'underscore.string', 'sources/pgadmin',
|
'sources/gettext', 'jquery', 'underscore', 'underscore.string', 'sources/pgadmin',
|
||||||
'pgadmin.browser.menu', 'backbone', 'pgadmin.alertifyjs', 'pgadmin.browser.datamodel',
|
'pgadmin.browser.menu', 'backbone', 'pgadmin.alertifyjs', 'pgadmin.browser.datamodel',
|
||||||
'backform', 'sources/browser/generate_url', 'sources/utils', 'pgadmin.browser.utils',
|
'backform', 'sources/browser/generate_url', 'pgadmin.help', 'sources/utils',
|
||||||
'pgadmin.backform',
|
'pgadmin.browser.utils', 'pgadmin.backform',
|
||||||
], function(
|
], function(
|
||||||
pgadminTreeNode, url_for,
|
pgadminTreeNode, url_for,
|
||||||
gettext, $, _, S, pgAdmin, Menu, Backbone, Alertify, pgBrowser, Backform, generateUrl, commonUtils
|
gettext, $, _, S, pgAdmin,
|
||||||
|
Menu, Backbone, Alertify, pgBrowser,
|
||||||
|
Backform, generateUrl, help,
|
||||||
|
commonUtils
|
||||||
) {
|
) {
|
||||||
|
|
||||||
var wcDocker = window.wcDocker,
|
var wcDocker = window.wcDocker,
|
||||||
@@ -1218,26 +1221,20 @@ define('pgadmin.browser.node', [
|
|||||||
url = pgBrowser.utils.edbas_help_path;
|
url = pgBrowser.utils.edbas_help_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
var major = Math.floor(server.version / 10000),
|
var fullUrl = '';
|
||||||
minor = Math.floor(server.version / 100) - (major * 100);
|
|
||||||
|
|
||||||
url = url.replace('$VERSION$', major + '.' + minor);
|
|
||||||
if (!S(url).endsWith('/')) {
|
|
||||||
url = url + '/';
|
|
||||||
}
|
|
||||||
if (that.sqlCreateHelp == '' && that.sqlAlterHelp != '') {
|
if (that.sqlCreateHelp == '' && that.sqlAlterHelp != '') {
|
||||||
url = url + that.sqlAlterHelp;
|
fullUrl = help.getHelpUrl(url, that.sqlAlterHelp, server.version);
|
||||||
} else if (that.sqlCreateHelp != '' && that.sqlAlterHelp == '') {
|
} else if (that.sqlCreateHelp != '' && that.sqlAlterHelp == '') {
|
||||||
url = url + that.sqlCreateHelp;
|
fullUrl = help.getHelpUrl(url, that.sqlCreateHelp, server.version);
|
||||||
} else {
|
} else {
|
||||||
if (view.model.isNew()) {
|
if (view.model.isNew()) {
|
||||||
url = url + that.sqlCreateHelp;
|
fullUrl = help.getHelpUrl(url, that.sqlCreateHelp, server.version);
|
||||||
} else {
|
} else {
|
||||||
url = url + that.sqlAlterHelp;
|
fullUrl = help.getHelpUrl(url, that.sqlAlterHelp, server.version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.open(url, 'postgres_help');
|
window.open(fullUrl, 'postgres_help');
|
||||||
}.bind(panel),
|
}.bind(panel),
|
||||||
|
|
||||||
onDialogHelp = function() {
|
onDialogHelp = function() {
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class HelpModule(PgAdminModule):
|
|||||||
self.pg_help_path = self.help_preference.register(
|
self.pg_help_path = self.help_preference.register(
|
||||||
'help', 'pg_help_path',
|
'help', 'pg_help_path',
|
||||||
gettext("PostgreSQL Help Path"), 'text',
|
gettext("PostgreSQL Help Path"), 'text',
|
||||||
'https://www.postgresql.org/docs/$VERSION$/static/',
|
'https://www.postgresql.org/docs/$VERSION$/',
|
||||||
category_label=gettext('Help'),
|
category_label=gettext('Help'),
|
||||||
help_str=gettext(
|
help_str=gettext(
|
||||||
'Path to the PostgreSQL documentation. $VERSION$ will be '
|
'Path to the PostgreSQL documentation. $VERSION$ will be '
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// pgAdmin 4 - PostgreSQL Tools
|
||||||
|
//
|
||||||
|
// Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
||||||
|
// This software is released under the PostgreSQL Licence
|
||||||
|
//
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
export function getHelpUrl(base_path, file, version) {
|
||||||
|
var major = Math.floor(version / 10000),
|
||||||
|
minor = Math.floor(version / 100) - (major * 100),
|
||||||
|
url = '';
|
||||||
|
|
||||||
|
// Handle the version number format change in PG 10+
|
||||||
|
if (major >= 10) {
|
||||||
|
url = base_path.replace('$VERSION$', major);
|
||||||
|
} else {
|
||||||
|
url = base_path.replace('$VERSION$', major + '.' + minor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (url.substr(-1) != '/') {
|
||||||
|
url = url + '/';
|
||||||
|
}
|
||||||
|
|
||||||
|
return url + file;
|
||||||
|
};
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// pgAdmin 4 - PostgreSQL Tools
|
||||||
|
//
|
||||||
|
// Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
||||||
|
// This software is released under the PostgreSQL Licence
|
||||||
|
//
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
import { getHelpUrl } from '../../../pgadmin/help/static/js/help';
|
||||||
|
|
||||||
|
describe('Test help functions', function() {
|
||||||
|
describe('when getHelpUrl is called', function(){
|
||||||
|
|
||||||
|
// PG 9.6 docs
|
||||||
|
it('it should be able to return a correct URL for PG 9.6 docs with a trailing slash', function() {
|
||||||
|
expect(getHelpUrl('https://www.postgresql.org/docs/$VERSION$/', 'index.html', 90600)).toEqual('https://www.postgresql.org/docs/9.6/index.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// PG 10 docs
|
||||||
|
it('it should be able to return a correct URL for PG 10 docs with a trailing slash', function() {
|
||||||
|
expect(getHelpUrl('https://www.postgresql.org/docs/$VERSION$/', 'index.html', 100000)).toEqual('https://www.postgresql.org/docs/10/index.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// PG 9.6 docs
|
||||||
|
it('it should be able to return a correct URL for PG 9.6 docs without a trailing slash', function() {
|
||||||
|
expect(getHelpUrl('https://www.postgresql.org/docs/$VERSION$', 'index.html', 90600)).toEqual('https://www.postgresql.org/docs/9.6/index.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// PG 10 docs
|
||||||
|
it('it should be able to return a correct URL for PG 10 docs without a trailing slash', function() {
|
||||||
|
expect(getHelpUrl('https://www.postgresql.org/docs/$VERSION$', 'index.html', 100000)).toEqual('https://www.postgresql.org/docs/10/index.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// EPAS 9.6 docs
|
||||||
|
it('it should be able to return a correct URL for EPAS 9.6 docs with a trailing slash', function() {
|
||||||
|
expect(getHelpUrl('https://www.enterprisedb.com/docs/en/$VERSION$/pg/', 'index.html', 90600)).toEqual('https://www.enterprisedb.com/docs/en/9.6/pg/index.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// EPAS 10 docs
|
||||||
|
it('it should be able to return a correct URL for EPAS 10 docs with a trailing slash', function() {
|
||||||
|
expect(getHelpUrl('https://www.enterprisedb.com/docs/en/$VERSION$/pg/', 'index.html', 100000)).toEqual('https://www.enterprisedb.com/docs/en/10/pg/index.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// EPAS 9.6 docs
|
||||||
|
it('it should be able to return a correct URL for EPAS 9.6 docs without a trailing slash', function() {
|
||||||
|
expect(getHelpUrl('https://www.enterprisedb.com/docs/en/$VERSION$/pg', 'index.html', 90600)).toEqual('https://www.enterprisedb.com/docs/en/9.6/pg/index.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// EPAS 10 docs
|
||||||
|
it('it should be able to return a correct URL for EPAS 10 docs without a trailing slash', function() {
|
||||||
|
expect(getHelpUrl('https://www.enterprisedb.com/docs/en/$VERSION$/pg', 'index.html', 100000)).toEqual('https://www.enterprisedb.com/docs/en/10/pg/index.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -210,6 +210,7 @@ var webpackShimConfig = {
|
|||||||
'pgadmin.datagrid': path.join(__dirname, './pgadmin/tools/datagrid/static/js/datagrid'),
|
'pgadmin.datagrid': path.join(__dirname, './pgadmin/tools/datagrid/static/js/datagrid'),
|
||||||
'pgadmin.file_manager': path.join(__dirname, './pgadmin/misc/file_manager/static/js/file_manager'),
|
'pgadmin.file_manager': path.join(__dirname, './pgadmin/misc/file_manager/static/js/file_manager'),
|
||||||
'pgadmin.file_utility': path.join(__dirname, './pgadmin/misc/file_manager/static/js/utility'),
|
'pgadmin.file_utility': path.join(__dirname, './pgadmin/misc/file_manager/static/js/utility'),
|
||||||
|
'pgadmin.help': path.join(__dirname, './pgadmin/help/static/js/help'),
|
||||||
'pgadmin.misc.explain': path.join(__dirname, './pgadmin/misc/static/explain/js/explain'),
|
'pgadmin.misc.explain': path.join(__dirname, './pgadmin/misc/static/explain/js/explain'),
|
||||||
'pgadmin.node.cast': path.join(__dirname, './pgadmin/browser/server_groups/servers/databases/casts/static/js/cast'),
|
'pgadmin.node.cast': path.join(__dirname, './pgadmin/browser/server_groups/servers/databases/casts/static/js/cast'),
|
||||||
'pgadmin.node.catalog': path.join(__dirname, './pgadmin/browser/server_groups/servers/databases/schemas/static/js/catalog'),
|
'pgadmin.node.catalog': path.join(__dirname, './pgadmin/browser/server_groups/servers/databases/schemas/static/js/catalog'),
|
||||||
|
|||||||
Reference in New Issue
Block a user