diff --git a/web/pgadmin/browser/__init__.py b/web/pgadmin/browser/__init__.py index 63e239fec..45ad14464 100644 --- a/web/pgadmin/browser/__init__.py +++ b/web/pgadmin/browser/__init__.py @@ -11,6 +11,7 @@ from abc import ABCMeta, abstractmethod, abstractproperty from pgadmin import current_blueprint from pgadmin.utils import PgAdminModule from pgadmin.utils.ajax import make_json_response +from pgadmin.utils.preferences import Preferences from pgadmin.settings import get_setting from flask import current_app, render_template, url_for, make_response, flash from flask.ext.security import login_required @@ -499,9 +500,22 @@ def error_js(): @blueprint.route("/js/node.js") +@login_required def node_js(): + prefs = Preferences.module('paths') + + pg_help_path_pref = prefs.preference('pg_help_path') + pg_help_path = pg_help_path_pref.get() + + edbas_help_path_pref = prefs.preference('edbas_help_path') + edbas_help_path = edbas_help_path_pref.get() + return make_response( - render_template('browser/js/node.js', _=gettext), + render_template('browser/js/node.js', + pg_help_path=pg_help_path, + edbas_help_path=edbas_help_path, + _=gettext + ), 200, {'Content-Type': 'application/x-javascript'}) @blueprint.route("/js/messages.js") diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/cast/js/casts.js b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/cast/js/casts.js index 5a75f025d..690a6d5e9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/cast/js/casts.js +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/cast/js/casts.js @@ -18,6 +18,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { pgAdmin.Browser.Nodes['cast'] = pgAdmin.Browser.Node.extend({ parent_type: 'database', type: 'cast', + sqlAlterHelp: 'sql-altercast.html', + sqlCreateHelp: 'sql-createcast.html', canDrop: true, canDropCascade: true, label: '{{ _('Cast') }}', diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/js/event_trigger.js b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/js/event_trigger.js index 2b0de0dd2..e861bc2ce 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/js/event_trigger.js +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/js/event_trigger.js @@ -47,6 +47,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { pgAdmin.Browser.Nodes['event_trigger'] = pgAdmin.Browser.Node.extend({ parent_type: 'database', type: 'event_trigger', + sqlAlterHelp: 'sql-altereventtrigger.html', + sqlCreateHelp: 'sql-createeventtrigger.html', label: '{{ _('Event Trigger') }}', hasSQL: true, hasDepends: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/templates/extensions/js/extensions.js b/web/pgadmin/browser/server_groups/servers/databases/extensions/templates/extensions/js/extensions.js index 5a4ad5cf5..b43de6447 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/extensions/templates/extensions/js/extensions.js +++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/templates/extensions/js/extensions.js @@ -38,6 +38,8 @@ function($, _, S, pgAdmin, pgBrowser) { pgAdmin.Browser.Node.extend({ parent_type: 'database', type: 'extension', + sqlAlterHelp: 'sql-alterextension.html', + sqlCreateHelp: 'sql-createextension.html', hasSQL: true, hasDepends: true, canDrop: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/js/foreign_servers.js b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/js/foreign_servers.js index b48f89429..db10a7d27 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/js/foreign_servers.js +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/js/foreign_servers.js @@ -51,6 +51,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { pgAdmin.Browser.Nodes['foreign_server'] = pgAdmin.Browser.Node.extend({ parent_type: 'foreign_data_wrapper', type: 'foreign_server', + sqlAlterHelp: 'sql-alterforeignserver.html', + sqlCreateHelp: 'sql-createforeignserver.html', label: '{{ _('Foreign Server') }}', hasSQL: true, hasDepends: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/templates/user_mappings/js/user_mappings.js b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/templates/user_mappings/js/user_mappings.js index 74d4b4f66..b0a2a483e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/templates/user_mappings/js/user_mappings.js +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/templates/user_mappings/js/user_mappings.js @@ -50,6 +50,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { pgAdmin.Browser.Nodes['user_mapping'] = pgAdmin.Browser.Node.extend({ parent_type: 'foreign_server', type: 'user_mapping', + sqlAlterHelp: 'sql-alterusermapping.html', + sqlCreateHelp: 'sql-createusermapping.html', label: '{{ _('User Mapping') }}', hasSQL: true, hasDepends: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/js/foreign_data_wrappers.js b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/js/foreign_data_wrappers.js index c56a2f8cb..a60ba74b2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/js/foreign_data_wrappers.js +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/js/foreign_data_wrappers.js @@ -52,6 +52,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { pgAdmin.Browser.Nodes['foreign_data_wrapper'] = pgAdmin.Browser.Node.extend({ parent_type: 'database', type: 'foreign_data_wrapper', + sqlAlterHelp: 'sql-alterforeigndatawrapper.html', + sqlCreateHelp: 'sql-createforeigndatawrapper.html', label: '{{ _('Foreign Data Wrapper') }}', hasSQL: true, hasDepends: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/js/languages.js b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/js/languages.js index 635dbcff7..dbf731631 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/js/languages.js +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/js/languages.js @@ -55,6 +55,8 @@ define( pgAdmin.Browser.Nodes['language'] = pgAdmin.Browser.Node.extend({ parent_type: 'database', type: 'language', + sqlAlterHelp: 'sql-alterlanguage.html', + sqlCreateHelp: 'sql-createlanguage.html', label: '{{ _('language') }}', hasSQL: true, hasDepends: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collation/js/collation.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collation/js/collation.js index 5a78bf3b6..29e2d7e53 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collation/js/collation.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collation/js/collation.js @@ -15,6 +15,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { if (!pgBrowser.Nodes['collation']) { pgAdmin.Browser.Nodes['collation'] = pgBrowser.Node.extend({ type: 'collation', + sqlAlterHelp: 'sql-altercollation.html', + sqlCreateHelp: 'sql-createcollation.html', label: '{{ _('Collation') }}', collection_type: 'coll-collation', hasSQL: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain-constraints/templates/domain-constraints/js/domain-constraints.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain-constraints/templates/domain-constraints/js/domain-constraints.js index 104c10758..e47b30f02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain-constraints/templates/domain-constraints/js/domain-constraints.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain-constraints/templates/domain-constraints/js/domain-constraints.js @@ -18,6 +18,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { if (!pgBrowser.Nodes['domain-constraints']) { pgAdmin.Browser.Nodes['domain-constraints'] = pgBrowser.Node.extend({ type: 'domain-constraints', + sqlAlterHelp: 'sql-alterdomain.html', + sqlCreateHelp: 'sql-alterdomain.html', label: '{{ _('Domain Constraints') }}', collection_type: 'coll-domain-constraints', hasSQL: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/js/domains.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/js/domains.js index 20acde575..19013eae7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/js/domains.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/js/domains.js @@ -109,6 +109,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { if (!pgBrowser.Nodes['domain']) { pgAdmin.Browser.Nodes['domain'] = pgBrowser.Node.extend({ type: 'domain', + sqlAlterHelp: 'sql-alterdomain.html', + sqlCreateHelp: 'sql-createdomain.html', label: '{{ _('Domain') }}', collection_type: 'coll-domain', hasSQL: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/templates/fts_parser/js/fts_parser.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/templates/fts_parser/js/fts_parser.js index 01f17686e..f342d3dd2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/templates/fts_parser/js/fts_parser.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/templates/fts_parser/js/fts_parser.js @@ -19,6 +19,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { pgAdmin.Browser.Nodes['fts_parser'] = pgAdmin.Browser.Node.extend({ parent_type: ['schema', 'catalog'], type: 'fts_parser', + sqlAlterHelp: 'sql-altertsparser.html', + sqlCreateHelp: 'sql-createtsparser.html', canDrop: true, canDropCascade: true, label: '{{ _('FTS Parser') }}', diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_template/js/fts_templates.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_template/js/fts_templates.js index 2f00c1279..9c079367b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_template/js/fts_templates.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_template/js/fts_templates.js @@ -18,6 +18,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { pgAdmin.Browser.Nodes['fts_template'] = pgAdmin.Browser.Node.extend({ parent_type: ['schema', 'catalog'], type: 'fts_template', + sqlAlterHelp: 'sql-altertstemplate.html', + sqlCreateHelp: 'sql-createtstemplate.html', canDrop: true, canDropCascade: true, label: '{{ _('FTS Template') }}', diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/function/js/functions.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/function/js/functions.js index d62889f0f..f0227b339 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/function/js/functions.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/function/js/functions.js @@ -102,6 +102,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { if (!pgBrowser.Nodes['function']) { pgAdmin.Browser.Nodes['function'] = pgBrowser.Node.extend({ type: 'function', + sqlAlterHelp: 'sql-alterfunction.html', + sqlCreateHelp: 'sql-createfunction.html', label: '{{ _('Function') }}', collection_type: 'coll-function', hasSQL: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedure/js/procedures.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedure/js/procedures.js index e7132015d..f36235848 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedure/js/procedures.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedure/js/procedures.js @@ -22,6 +22,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify, Function) { if (!pgBrowser.Nodes['procedure']) { pgAdmin.Browser.Nodes['procedure'] = Function.extend({ type: 'procedure', + sqlAlterHelp: 'sql-alterprocedure.html', + sqlCreateHelp: 'sql-createprocedure.html', label: '{{ _('Procedure') }}', collection_type: 'coll-procedure', hasSQL: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/js/sequence.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/js/sequence.js index 79bd53c95..80bca4a50 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/js/sequence.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/js/sequence.js @@ -51,6 +51,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { if (!pgBrowser.Nodes['sequence']) { pgAdmin.Browser.Nodes['sequence'] = pgBrowser.Node.extend({ type: 'sequence', + sqlAlterHelp: 'sql-altersequence.html', + sqlCreateHelp: 'sql-createsequence.html', label: '{{ _('Sequence') }}', collection_type: 'coll-sequence', hasSQL: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/js/schema.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/js/schema.js index d46592231..edcce3ed6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/js/schema.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/js/schema.js @@ -51,6 +51,8 @@ function($, _, S, pgAdmin, pgBrowser, Backform, alertify) { pgAdmin.Browser.Nodes['schema'] = pgAdmin.Browser.Node.extend({ parent_type: 'database', type: 'schema', + sqlAlterHelp: 'sql-alterschema.html', + sqlCreateHelp: 'sql-createschema.html', label: '{{ _('Schema') }}', hasSQL: true, canDrop: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/js/type.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/js/type.js index 5d7944962..571e0d5e6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/js/type.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/js/type.js @@ -206,6 +206,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify, Backgrid) { if (!pgBrowser.Nodes['type']) { pgAdmin.Browser.Nodes['type'] = pgBrowser.Node.extend({ type: 'type', + sqlAlterHelp: 'sql-altertype.html', + sqlCreateHelp: 'sql-createtype.html', label: '{{ _('Type') }}', collection_type: 'coll-type', hasSQL: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/js/databases.js b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/js/databases.js index 78eae0752..b42aef8a4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/js/databases.js +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/js/databases.js @@ -47,6 +47,8 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) { pgAdmin.Browser.Nodes['database'] = pgAdmin.Browser.Node.extend({ parent_type: 'server', type: 'database', + sqlAlterHelp: 'sql-alterdatabase.html', + sqlCreateHelp: 'sql-createdatabase.html', hasSQL: true, hasDepends: true, canDrop: true, diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/role/js/role.js b/web/pgadmin/browser/server_groups/servers/roles/templates/role/js/role.js index 0f026b92b..2fa495d7f 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/templates/role/js/role.js +++ b/web/pgadmin/browser/server_groups/servers/roles/templates/role/js/role.js @@ -292,6 +292,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify, Backform) { var role = pgAdmin.Browser.Nodes['role'] = pgAdmin.Browser.Node.extend({ parent_type: 'server', type: 'role', + sqlAlterHelp: 'sql-alterrole.html', + sqlCreateHelp: 'sql-createrole.html', label: '{{ _('Login/Group Role') }}', hasSQL: true, canDrop: true, diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/js/tablespaces.js b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/js/tablespaces.js index 6d236d29f..666514997 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/js/tablespaces.js +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/js/tablespaces.js @@ -47,6 +47,8 @@ function($, _, S, pgAdmin, pgBrowser, alertify) { pgAdmin.Browser.Nodes['tablespace'] = pgAdmin.Browser.Node.extend({ parent_type: 'server', type: 'tablespace', + sqlAlterHelp: 'sql-altertablespace.html', + sqlCreateHelp: 'sql-createtablespace.html', label: '{{ _('Tablespace') }}', hasSQL: true, canDrop: true, diff --git a/web/pgadmin/browser/static/js/frame.js b/web/pgadmin/browser/static/js/frame.js index ac7df17e8..baf58705e 100644 --- a/web/pgadmin/browser/static/js/frame.js +++ b/web/pgadmin/browser/static/js/frame.js @@ -19,7 +19,7 @@ function(_, pgAdmin) { showTitle: true, isClosable: true, isPrivate: false, - url: 'about:blank', + url: '', panel: null, frame: null, load: function(docker) { @@ -41,7 +41,9 @@ function(_, pgAdmin) { var frame = new wcIFrame($frameArea, myPanel); $(myPanel).data('embeddedFrame', frame); - setTimeout(function() { frame.openURL(that.url); }, 500); + if (that.url != '') { + setTimeout(function() { frame.openURL(that.url); }, 500); + } if (that.events && _.isObject(that.events)) { _.each(that.events, function(v, k) { diff --git a/web/pgadmin/browser/templates/browser/js/node.js b/web/pgadmin/browser/templates/browser/js/node.js index 744eddd9b..bc3742ce3 100644 --- a/web/pgadmin/browser/templates/browser/js/node.js +++ b/web/pgadmin/browser/templates/browser/js/node.js @@ -50,6 +50,10 @@ function($, _, S, pgAdmin, Menu, Backbone, Alertify, pgBrowser, Backform) { type: undefined, // Label label: '', + // SQL help pages + sqlAlterHelp: '', + sqlCreateHelp: '', + title: function(d) { return o.label + (d ? (' - ' + d.label) : ''); }, @@ -689,10 +693,72 @@ function($, _, S, pgAdmin, Menu, Backbone, Alertify, pgBrowser, Backform) { }); } }); + buttons.push({ + label: '', type: 'help', + tooltip: '{{ _("Help on the SQL for this object type") }}', + extraClasses: ['btn-default'], + icon: 'fa fa-lg fa-question-circle', + disabled: (that.sqlAlterHelp == '' && that.sqlCreateHelp == '') ? true : false, + register: function(btn) { + btn.click(function() { + onSqlHelp(); + }); + } + }); + createButtons(buttons, 'header', 'pg-prop-btn-group-above'); } j.append(content); }, + onSqlHelp = function() { + // See if we can find an existing panel, if not, create one + pnlSqlHelp = pgBrowser.docker.findPanels('pnl_sql_help')[0]; + + if (pnlSqlHelp == null) { + pnlProperties = pgBrowser.docker.findPanels('properties')[0]; + pgBrowser.docker.addPanel('pnl_sql_help', wcDocker.DOCK.STACKED, pnlProperties); + pnlSqlHelp = pgBrowser.docker.findPanels('pnl_sql_help')[0]; + } + + // Construct the URL + server = that.getTreeNodeHierarchy(item).server; + + url = '{{ pg_help_path }}' + if (server.server_type == 'ppas') { + url = '{{ edbas_help_path }}' + } + + major = Math.floor(server.version / 10000) + minor = Math.floor(server.version / 100) - (major * 100) + + url = url.replace('$VERSION$', major + '.' + minor) + if (!url.endsWith('/')) { + url = url + '/' + } + if (that.sqlCreateHelp == '' && that.sqlAlterHelp != '') { + url = url + that.sqlAlterHelp + } else if (that.sqlCreateHelp != '' && that.sqlAlterHelp == '') { + url = url + that.sqlCreateHelp + } else { + if (view.model.isNew()) { + url = url + that.sqlCreateHelp + } else { + url = url + that.sqlAlterHelp + } + } + + // Update the panel + iframe = $(pnlSqlHelp).data('embeddedFrame'); + pnlSqlHelp.title('SQL: ' + that.label); + pnlSqlHelp.icon( + _.isFunction(that['node_image']) ? + (that['node_image']).apply(that, [data, view.model]) : + (that['node_image'] || ('icon-' + that.type)) + ); + pnlSqlHelp.focus(); + iframe.url = url; + iframe.openURL(url); + } editFunc = function() { if (action && action == 'properties') { action = 'edit'; @@ -756,6 +822,17 @@ function($, _, S, pgAdmin, Menu, Backbone, Alertify, pgBrowser, Backform) { // Create proper buttons createButtons([{ + label: '', type: 'help', + tooltip: '{{ _("Help on the SQL for this object type") }}', + extraClasses: ['btn-default'], + icon: 'fa fa-lg fa-question-circle', + disabled: that.sqlCreateHelp == '' ? true : false, + register: function(btn) { + btn.click(function() { + onSqlHelp(); + }); + } + },{ label: '{{ _("Save") }}', type: 'save', tooltip: '{{ _("Save this object") }}', extraClasses: ['btn-primary'], diff --git a/web/pgadmin/help/__init__.py b/web/pgadmin/help/__init__.py index db48063ff..534f7fa1e 100644 --- a/web/pgadmin/help/__init__.py +++ b/web/pgadmin/help/__init__.py @@ -10,6 +10,7 @@ """A blueprint module implementing the pgAdmin help system.""" MODULE_NAME = 'help' +from pgadmin.utils.preferences import Preferences from pgadmin.utils import PgAdminModule from pgadmin.utils.menu import MenuItem, Panel from flask.ext.babel import gettext @@ -57,9 +58,36 @@ class HelpModule(PgAdminModule): Panel(name='pnl_postgresql_website', priority=300, title=gettext('PostgreSQL Website'), - content='http://www.postgresql.org/')] + content='http://www.postgresql.org/'), + Panel(name='pnl_sql_help', + priority=400, + isPrivate=True, + title=gettext('SQL Help'))] + def register_preferences(self): + """ + register_preferences + Register preferences for this module. + """ + # Register options for the PG and PPAS help paths + self.help_preference = Preferences('paths', gettext('Paths')) + + self.pg_help_path = self.help_preference.register( + 'help', 'pg_help_path', + gettext("PostgreSQL Help Path"), 'text', + 'http://www.postgresql.org/docs/$VERSION$/static/', + category_label=gettext('Help'), + help_str=gettext('Path to the PostgreSQL documentation. $VERSION$ will be replaced with the major.minor version number.') + ) + + self.edbas_help_path = self.help_preference.register( + 'help', 'edbas_help_path', + gettext("EDB Advanced Server Help Path"), 'text', + 'http://www.enterprisedb.com/docs/en/$VERSION$/pg/', + category_label=gettext('Help'), + help_str=gettext('Path to the EDB Advanced Server documentation. $VERSION$ will be replaced with the major.minor version number.') + ) # Initialise the module blueprint = HelpModule(MODULE_NAME, __name__, static_url_path='/help', diff --git a/web/pgadmin/utils/menu.py b/web/pgadmin/utils/menu.py index 2658f0f97..76df99d35 100644 --- a/web/pgadmin/utils/menu.py +++ b/web/pgadmin/utils/menu.py @@ -18,7 +18,7 @@ class MenuItem(object): class Panel(object): - def __init__(self, name, title, content, width=500, height=600, isIframe=True, + def __init__(self, name, title, content='', width=500, height=600, isIframe=True, showTitle=True, isCloseable=True, isPrivate=False, priority=None, icon=None, data=None): self.name = name