Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HuasoFoundries/phpPgAdmin6.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Figueroa <amenadiel@gmail.com>2020-12-31 04:59:13 +0300
committerFelipe Figueroa <amenadiel@gmail.com>2021-01-06 20:45:01 +0300
commitef42be11d880af62587b1f66e5cdac689c715d62 (patch)
tree66a27f76e37d396a9f001012f8d34a1a6eebca86
parent18079aad800aa31f7cc4c629bf7f391ad59d8eaf (diff)
change views layout to include the browser tree in the main body instead of an iframe
-rw-r--r--assets/images/vsizegrip.pngbin0 -> 91 bytes
-rw-r--r--assets/js/footer_scripts.js178
-rw-r--r--assets/js/jstree_events.js100
-rw-r--r--assets/js/toplinks_behavior.js56
-rw-r--r--assets/sw.dev.js102
-rw-r--r--assets/sw.js1363
-rw-r--r--assets/templates/browser.twig53
-rw-r--r--assets/templates/components/browser_body.twig16
-rw-r--r--assets/templates/components/common_body.twig22
-rw-r--r--assets/templates/components/common_head.twig20
-rw-r--r--assets/templates/components/tabs.twig13
-rw-r--r--assets/templates/deprecated.iframe_view.twig (renamed from assets/templates/iframe_view.twig)0
-rw-r--r--assets/templates/footer.twig24
-rw-r--r--assets/templates/footer_iframe.twig31
-rw-r--r--assets/templates/intro_view.twig23
-rw-r--r--assets/themes/global.css202
-rw-r--r--assets/themes/global.less160
-rw-r--r--assets/vendor/jquery-resizable.js197
-rw-r--r--composer.json4
-rw-r--r--composer.lock80
-rw-r--r--mk_linters.mk2
-rw-r--r--src/classes/ADORecordSet.php12
-rw-r--r--src/classes/ArrayRecordSet.php19
-rw-r--r--src/classes/ContainerUtils.php13
-rw-r--r--src/classes/ViewManager.php21
-rw-r--r--src/controllers/AcinsertController.php6
-rw-r--r--src/controllers/AggregatesController.php4
-rw-r--r--src/controllers/AlldbController.php13
-rw-r--r--src/controllers/BaseController.php18
-rw-r--r--src/controllers/ColpropertiesController.php2
-rw-r--r--src/controllers/ConstraintsController.php18
-rw-r--r--src/controllers/DatabaseController.php6
-rw-r--r--src/controllers/DataexportController.php22
-rw-r--r--src/controllers/DisplayController.php30
-rw-r--r--src/controllers/DomainsController.php8
-rw-r--r--src/controllers/FulltextController.php20
-rw-r--r--src/controllers/FunctionsController.php16
-rw-r--r--src/controllers/GroupsController.php10
-rw-r--r--src/controllers/IndexesController.php8
-rw-r--r--src/controllers/InfoController.php30
-rw-r--r--src/controllers/IntroController.php2
-rw-r--r--src/controllers/MaterializedviewpropertiesController.php8
-rw-r--r--src/controllers/OperatorsController.php2
-rw-r--r--src/controllers/PrivilegesController.php10
-rw-r--r--src/controllers/RolesController.php58
-rw-r--r--src/controllers/SchemasController.php6
-rw-r--r--src/controllers/SequencesController.php10
-rw-r--r--src/controllers/ServersController.php4
-rw-r--r--src/controllers/SqlController.php12
-rw-r--r--src/controllers/TablesController.php18
-rw-r--r--src/controllers/TablespacesController.php6
-rw-r--r--src/controllers/TblpropertiesController.php12
-rw-r--r--src/controllers/TreeController.php22
-rw-r--r--src/controllers/TriggersController.php6
-rw-r--r--src/controllers/TypesController.php10
-rw-r--r--src/controllers/UsersController.php4
-rw-r--r--src/controllers/ViewpropertiesController.php8
-rw-r--r--src/database/ADOdbBase.php6
-rw-r--r--src/database/databasetraits/DatabaseTrait.php2
-rw-r--r--src/database/databasetraits/IndexTrait.php2
-rw-r--r--src/database/databasetraits/RowTrait.php2
-rw-r--r--src/database/databasetraits/SequenceTrait.php4
-rw-r--r--src/database/databasetraits/TableTrait.php28
-rw-r--r--src/database/databasetraits/ViewTrait.php2
-rw-r--r--src/interfaces/RecordSet.php36
-rw-r--r--src/lib.inc.php2
-rw-r--r--src/router.php21
-rw-r--r--src/traits/AdminTrait.php2
-rw-r--r--src/traits/HelperTrait.php4
-rw-r--r--src/traits/InsertEditRowTrait.php2
-rw-r--r--src/traits/ServersTrait.php4
-rw-r--r--src/traits/ViewsMatViewsPropertiesTrait.php2
-rw-r--r--src/traits/ViewsMatviewsTrait.php12
-rw-r--r--src/xhtml/HTMLHeaderController.php17
-rw-r--r--src/xhtml/HTMLTableController.php5
75 files changed, 1313 insertions, 1960 deletions
diff --git a/assets/images/vsizegrip.png b/assets/images/vsizegrip.png
new file mode 100644
index 00000000..fdc1260c
--- /dev/null
+++ b/assets/images/vsizegrip.png
Binary files differ
diff --git a/assets/js/footer_scripts.js b/assets/js/footer_scripts.js
index ee9aa69f..e8b606ff 100644
--- a/assets/js/footer_scripts.js
+++ b/assets/js/footer_scripts.js
@@ -1,151 +1,99 @@
function historyApiBack() {
window.history && window.history.back();
}
+
function redirectToIframesView() {
- if (
- window.inPopUp ||
- parent.frames.length ||
- stateObj.reload === 'other' ||
- stateObj.in_test !== '0'
- ) {
- return false;
- }
var redirect_to,
- subject = location.pathname
- .replace(stateObj.subfolder, '')
- .replace('/src/views/', '')
+ subject = stateObj.pathname
+ //.replace(stateObj.subfolder, '')
+ .replace(`/src/views`, '')
.replace('.php', '');
- if (subject === '/redirect/server') {
- subject = '/servers';
+ if (subject.includes('/redirect/server')) {
+ subject = subject.replace('/redirect/server', '/servers');
}
- redirect_to = `${stateObj.subfolder}/${subject}${location.search}`;
+ subject += location.search;
+ redirect_to = `${subject}`;
var redirection_msg =
- 'location subject ' + subject + ' will redirect_to ' + redirect_to;
+ 'location subject is ' + subject + ' will redirect_to ' + redirect_to;
+ console.log(
+ `redirect: ${stateObj.pathname}${location.search} -> ${redirect_to}`
+ );
return redirect_to;
}
-function addBehaviorToTopLinks(amIDetailFrame) {
- const parentHandle =
- amIDetailFrame && window.parent.document.querySelector('#detail'),
- toplink_logout =
- amIDetailFrame &&
- (parentHandle.contentDocument || document).querySelector(
- '#toplink_logout'
- );
-
- parentHandle &&
- [
- ...(parentHandle.contentDocument || document).querySelectorAll(
- '.toplink a.toplink_popup'
- ),
- ].forEach((element) => {
- let href = element.href;
- element.addEventListener('click', (e) => {
- e.preventDefault();
- window
- .open(
- `${href}`,
- `sqledit:${stateObj.server}`,
- 'toolbar=no,width=750,height=520,resizable=yes,scrollbars=yes'
- )
- .focus();
- });
- element.setAttribute('rel', href);
-
- element.href = 'javascript:void(this.click())'; // eslint-disable-line
- });
- toplink_logout &&
- toplink_logout.addEventListener('click', (e) => {
- e.preventDefault();
- if (confirm(stateObj.strconfdropcred)) {
- window.location.href = e.target.href;
- }
- });
-
- return;
-}
-if (
- !window.inPopUp &&
- stateObj.reload !== 'other' &&
- !parent.frames.length &&
- stateObj.in_test === '0'
-) {
- redirectToIframesView();
-}
-let {
- frames: { browser },
-} = window.parent;
-if (browser && browser.jsTree && stateObj.reload) {
- browser.jsTree.jstree('refresh');
-}
$.ready
.then(() => {
- let amIDetailFrame = document.body.classList.contains('detailbody');
// Need to open popup from parent document
+ stateObj.basePath =
+ window.parent.location.origin + (stateObj.subfolder || '');
let redirect_to = redirectToIframesView();
- if (redirect_to === false) {
- return addBehaviorToTopLinks(amIDetailFrame);
- }
- window.location.replace(redirect_to);
- })
- .then(() => {
- if (window.parent.frames.length === 0) {
- return;
- }
window.parent.document.title = window.document.title;
/* beautify preserve:start */
- stateObj.realurl = location.href.replace(location.origin, '');
+ stateObj.realurl = location.href; //.replace(location.origin, '');
//path will only be defined inside a route
/* beautify preserve:end */
- stateObj.newurl =
- stateObj.subfolder +
- stateObj.realurl
- .replace(stateObj.subfolder, '')
- .replace('src/views/', '')
- .replace('.php', '');
- stateObj.parenturl = window.parent.location.href.replace(
- window.parent.location.origin,
- ''
- );
- return;
- })
- .then(() => {
+ stateObj.redirect_to = redirect_to;
+ stateObj.parenturl = window.parent.location.href;
if (window.location.href.indexOf('servers?action=logout') !== -1) {
window.setTimeout(function () {
- window.parent.location.replace(`${stateObj.subfolder}/servers`);
+ window.parent.location.replace(`${stateObj.basePath}/servers`);
}, 3000);
- } else if (
- stateObj.method === 'GET' &&
- stateObj.newurl !== stateObj.parenturl
+ return { jqFn: {}, hljsFn: {} };
+ }
+ if (window.jsTree) {
+ return { jqFn: jQuery.fn || {}, hljsFn: globalThis.hljs || {} };
+ }
+ if (
+ shouldSkipRedirection() ||
+ window.parent.frames.length === 0 ||
+ stateObj.redirect_to === stateObj.parenturl
) {
- //console.log('will pushState', stateObj);
- window.parent.history.pushState(
- stateObj,
- document.title,
- stateObj.newurl
- );
+ if (
+ stateObj.method === 'GET' &&
+ stateObj.redirect_to !== stateObj.parenturl
+ ) {
+ let { reload } = stateObj || {};
+ console.log('will pushState. Reload is ' + reload, stateObj);
+ window.parent.history.pushState(
+ stateObj,
+ document.title,
+ stateObj.redirect_to
+ );
+ }
+ return { jqFn: jQuery.fn || {}, hljsFn: globalThis.hljs || {} };
+ } else {
+ //console.log({ stateObj });
+ window.parent.location.replace(redirect_to);
}
+ return { jqFn: {}, hljsFn: {} };
})
- .then(() => {
- if (jQuery.fn) {
- if (jQuery.fn.select2) {
- jQuery('.select2').select2();
- }
- if (jQuery.fn.DataTable) {
- $('.will_be_datatable').DataTable({
- pageLength: 100,
- });
- }
+ .then(({ jqFn, hljsFn }) => {
+ if (jqFn.select2) {
+ jQuery('.select2').select2();
+ }
+ if (jqFn.DataTable) {
+ $('.will_be_datatable').DataTable({
+ pageLength: 100,
+ });
}
- if (typeof hljs !== 'undefined') {
+
+ if (hljsFn.highlightBlock) {
$('pre code.hljs').each(function (i, block) {
- hljs.highlightBlock(block);
+ hljsFn.highlightBlock(block);
});
}
+ let { reload } = stateObj || {};
+ if (reload && reload !== 'none') {
+ globalThis.postMessage(
+ { reload_browser: true },
+ window.parent.location.origin
+ );
+ }
+
return;
})
.catch((err) => {
diff --git a/assets/js/jstree_events.js b/assets/js/jstree_events.js
new file mode 100644
index 00000000..f8899208
--- /dev/null
+++ b/assets/js/jstree_events.js
@@ -0,0 +1,100 @@
+window.jsTree = $('#lazy').jstree({
+ state: {
+ key: 'jstree',
+ },
+ plugins: ['state'],
+ core: {
+ data: {
+ url: function (node) {
+ if (node.id === '#') {
+ return stateObj.subfolder + '/src/views/browser?action=tree';
+ } else {
+ return node.original.url;
+ }
+ },
+ },
+ },
+});
+$('#refreshTree').on('click', () => {
+ window.jsTree.jstree('refresh');
+});
+
+if (parent.frames && parent.frames.detail) {
+ parent.frames.detail.jsTree = window.jsTree;
+}
+
+$('#lazy').on('activate_node.jstree', function (e, data) {
+ if (window.parent.frames.detail) {
+ window.parent.frames.detail.location.replace(data.node.a_attr.href);
+ }
+});
+$('#lazy').on('state_ready.jstree', function (e, data) {
+ console.log('state_ready');
+ const detailContailer = $('#detail');
+ $.ready.then(() => {
+ jQuery('#browser_container').resizableSafe({
+ handleSelector: '.splitter',
+ resizeHeight: false,
+ //resizeWidthFrom: 'left',
+ onDragEnd: function (e, $el, opt) {
+ let currentWidth = $el.width(),
+ detailWidth = window.innerWidth - currentWidth;
+ console.log('onDragEnd', { e, opt, $el, currentWidth, detailWidth });
+ detailContailer.width(detailWidth);
+
+ // explicitly return **false** if you don't want
+ // auto-height computation to occur
+ },
+ onDrag: function (e, $el, newWidth, newHeight, opt) {
+ // limit box size
+
+ if (newWidth > 350) {
+ newWidth = 350;
+ $el.width(newWidth);
+ return false;
+ }
+
+ // explicitly return **false** if you don't want
+ // auto-height computation to occur
+ //return false;
+ },
+ });
+ });
+});
+$('#lazy').on('loaded.jstree', function (e, data) {
+ console.log('loaded');
+ $('#lazy').data('jstree').show_dots();
+});
+$('#lazy').on('click', '.jstree-anchor', function () {
+ console.log(this);
+});
+
+window.addEventListener(
+ 'message',
+ (event) => {
+ console.log(event);
+
+ const { origin, isTrusted, data } = event,
+ { reload_browser } = data || {},
+ { jsTree } = globalThis || {};
+
+ console.log({ reload_browser, jsTree });
+ if (!isTrusted) {
+ console.warn('non trusted event');
+ return;
+ }
+ if (origin !== location.origin) {
+ console.warn('different origin', { origin, location });
+ return;
+ }
+
+ if (data.reload_browser && globalThis.jsTree) {
+ try {
+ jsTree.jstree('refresh');
+ } catch (err) {
+ console.warn(err);
+ }
+ }
+ },
+ false
+);
diff --git a/assets/js/toplinks_behavior.js b/assets/js/toplinks_behavior.js
new file mode 100644
index 00000000..a6396974
--- /dev/null
+++ b/assets/js/toplinks_behavior.js
@@ -0,0 +1,56 @@
+function shouldSkipRedirection() {
+ return (
+ window.inPopUp ||
+ parent.frames.length ||
+ stateObj.reload === 'other' ||
+ stateObj.in_test !== '0'
+ );
+}
+
+function addBehaviorToTopLinks(amIDetailFrame) {
+ const parentHandle =
+ amIDetailFrame && window.parent.document.querySelector('#detail'),
+ toplink_logout =
+ amIDetailFrame &&
+ (parentHandle.contentDocument || document).querySelector(
+ '#toplink_logout'
+ );
+
+ parentHandle &&
+ [
+ ...(parentHandle.contentDocument || document).querySelectorAll(
+ '.toplink a.toplink_popup'
+ ),
+ ].forEach((element) => {
+ let href = element.href;
+ element.addEventListener('click', (e) => {
+ e.preventDefault();
+ window
+ .open(
+ `${href}`,
+ `sqledit:${stateObj.server}`,
+ 'toolbar=no,width=750,height=520,resizable=yes,scrollbars=yes'
+ )
+ .focus();
+ });
+ element.setAttribute('rel', href);
+
+ element.href = 'javascript:void(this.click())'; // eslint-disable-line
+ });
+ toplink_logout &&
+ toplink_logout.addEventListener('click', (e) => {
+ e.preventDefault();
+ if (confirm(stateObj.strconfdropcred)) {
+ window.location.href = e.target.href;
+ }
+ });
+
+ return;
+}
+
+$.ready.then(() => {
+ let amIDetailFrame = document.body.classList.contains('detailbody');
+ if (shouldSkipRedirection()) {
+ return addBehaviorToTopLinks(amIDetailFrame);
+ }
+});
diff --git a/assets/sw.dev.js b/assets/sw.dev.js
index afd1b2f3..48548faf 100644
--- a/assets/sw.dev.js
+++ b/assets/sw.dev.js
@@ -1,78 +1,28 @@
-self.addEventListener('install', function (/*event*/) {
- // The promise that skipWaiting() returns can be safely ignored.
- self.skipWaiting();
+importScripts(
+ 'https://storage.googleapis.com/workbox-cdn/releases/6.0.2/workbox-sw.js'
+);
+const { registerRoute } = workbox.routing;
+const { CacheFirst, StaleWhileRevalidate } = workbox.strategies;
+const { ExpirationPlugin } = workbox.expiration;
- // Perform any other actions required for your
- // service worker to install, potentially inside
- // of event.waitUntil();
-});
-self.addEventListener('activate', (event) => {
- event.waitUntil(clients.claim());
-});
-if (typeof workbox === 'undefined') {
- importScripts(
- 'https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js'
- );
- workbox.loadModule('workbox-strategies');
- workbox.loadModule('workbox-cacheable-response');
- workbox.loadModule('workbox-expiration');
-}
-self.__precacheManifest = [].concat(self.__precacheManifest || []);
-if (typeof workbox !== 'undefined' && workbox) {
- workbox.core.skipWaiting();
+self.__precacheManifest = [].concat(self.__WB_MANIFEST || []);
+registerRoute(
+ ({ request, url }) =>
+ request.destination === 'image' || url.includes('assets/vendor'),
+ new CacheFirst()
+);
+/*registerRoute(
+ ({ request }) =>
+ request.destination === 'script' || request.destination === 'style',
+ new StaleWhileRevalidate()
+);*/
- workbox.core.clientsClaim();
-
- workbox.precaching.precacheAndRoute([]);
-
- console.log(`Yay! Workbox is loaded 🎉`);
-
- workbox.routing.registerRoute(
- /\/assets\/css/,
- new workbox.strategies.CacheFirst({
- cacheName: 'vendor-local-css',
- plugins: [
- new workbox.cacheableResponse.CacheableResponse({ statuses: [0, 200] }),
- ],
- })
- );
- workbox.routing.registerRoute(
- /\/assets\/js/,
- new workbox.strategies.CacheFirst({
- cacheName: 'vendor-local-js',
- plugins: [
- new workbox.cacheableResponse.CacheableResponse({ statuses: [0, 200] }),
- ],
- })
- );
- workbox.routing.registerRoute(
- /\/img/,
- new workbox.strategies.CacheFirst({
- cacheName: 'image-files',
- plugins: [
- new workbox.cacheableResponse.CacheableResponse({ statuses: [0, 200] }),
- ],
- })
- );
-
- // Cache the Google Fonts stylesheets with a stale-while-revalidate strategy.
- workbox.routing.registerRoute(
- /^https:\/\/fonts\.googleapis\.com/,
- new workbox.strategies.StaleWhileRevalidate({
- cacheName: 'google-fonts-stylesheets',
- })
- );
-
- // Cache the underlying font files with a cache-first strategy for 1 year.
- workbox.routing.registerRoute(
- /^https:\/\/fonts\.gstatic\.com/,
- new workbox.strategies.CacheFirst({
- cacheName: 'google-fonts-webfonts',
- plugins: [
- new workbox.cacheableResponse.CacheableResponse({ statuses: [0, 200] }),
- ],
- })
- );
-} else {
- console.log(`Boo! Workbox didn't load 😬`);
-}
+registerRoute(
+ ({ url }) =>
+ url.origin === 'https://fonts.googleapis.com' ||
+ url.origin === 'https://fonts.gstatic.com',
+ new StaleWhileRevalidate({
+ cacheName: 'google-fonts',
+ plugins: [new ExpirationPlugin({ maxEntries: 20 })],
+ })
+);
diff --git a/assets/sw.js b/assets/sw.js
index 296dcc71..ffe26185 100644
--- a/assets/sw.js
+++ b/assets/sw.js
@@ -1,1339 +1,28 @@
-self.addEventListener('install', function (/*event*/) {
- // The promise that skipWaiting() returns can be safely ignored.
- self.skipWaiting();
+importScripts(
+ 'https://storage.googleapis.com/workbox-cdn/releases/6.0.2/workbox-sw.js'
+);
+const { registerRoute } = workbox.routing;
+const { CacheFirst, StaleWhileRevalidate } = workbox.strategies;
+const { ExpirationPlugin } = workbox.expiration;
- // Perform any other actions required for your
- // service worker to install, potentially inside
- // of event.waitUntil();
-});
-self.addEventListener('activate', (event) => {
- event.waitUntil(clients.claim());
-});
-if (typeof workbox === 'undefined') {
- importScripts(
- 'https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js'
- );
- workbox.loadModule('workbox-strategies');
- workbox.loadModule('workbox-cacheable-response');
- workbox.loadModule('workbox-expiration');
-}
-self.__precacheManifest = [].concat(self.__precacheManifest || []);
-if (typeof workbox !== 'undefined' && workbox) {
- workbox.core.skipWaiting();
+self.__precacheManifest = [].concat([{"revision":"7f7f3b73b863ab0db2800b0cc9d87f22","url":"images/themes/bootstrap/Favicon.ico"},{"revision":"8dbc90cfbfd4d9a2f5a3e7c5924771ee","url":"images/themes/bootstrap/Introduction.png"},{"revision":"6987da08785938281c0cef64a08e3263","url":"images/themes/bootstrap/logo.png"},{"revision":"6987da08785938281c0cef64a08e3263","url":"images/themes/bootstrap/title.png"},{"revision":"0836efcda7efd8f7143e6bc944fb2ae1","url":"images/themes/cappuccino/inputbckg.png"},{"revision":"4c6ad5374b9518299739fb8f6c0f0dcf","url":"images/themes/cappuccino/Lminus.png"},{"revision":"0e918eec776f591e565f252bbb3935d1","url":"images/themes/cappuccino/Lplus.png"},{"revision":"35fec4ef79e5c77f884c28db9d646ff8","url":"images/themes/cappuccino/openListe.png"},{"revision":"256583a0062c189786a788f550e4833e","url":"images/themes/cappuccino/title.png"},{"revision":"fd64d87ca98273a08a689508c15e21d0","url":"images/themes/cappuccino/Tminus.png"},{"revision":"6be509ad6d0bdf6f5f4bb0112a28a9c4","url":"images/themes/cappuccino/Tplus.png"},{"revision":"5783c8524fa7f4daff4f1ef7bcb4bfb9","url":"images/themes/default/AddArguments.png"},{"revision":"a82687f9d571988c5a50cd1c4c85e245","url":"images/themes/default/Admin.png"},{"revision":"ff0166451279bef06132ca55d2b13bb3","url":"images/themes/default/Aggregate.png"},{"revision":"480dca5e5fa1bef15990e13f7299ac9a","url":"images/themes/default/Aggregates.png"},{"revision":"c8e3e86ffd0a4d7370e08388352fcc53","url":"images/themes/default/AllUsers.png"},{"revision":"ce257e663eb495ba4d90fc55feb361ff","url":"images/themes/default/AvailableReplicationSet.png"},{"revision":"5ec68e4a7bd37d101bdd202890bfb606","url":"images/themes/default/AvailableSubscription.png"},{"revision":"362dd1ab7684968a9051fb2ffd145a06","url":"images/themes/default/Backup.png"},{"revision":"ff372eacef6cd22aa9a962b1fab6b927","url":"images/themes/default/blank.png"},{"revision":"2b52864370d5111e7a68d3347f0047f4","url":"images/themes/default/Cast.png"},{"revision":"5597d48b8d4b6d0e30762500ced49539","url":"images/themes/default/Casts.png"},{"revision":"12878c160ad2030c33fbe74b9ef4980c","url":"images/themes/default/CheckConstraint.png"},{"revision":"8ffa29a8aadf2e8a78a58f246ecb8f3a","url":"images/themes/default/Cluster.png"},{"revision":"e9a7cd147304fa43da5121aca3aa96bd","url":"images/themes/default/Column.png"},{"revision":"135c695556735ca7bfbec339300d475a","url":"images/themes/default/Columns.png"},{"revision":"a08d098a40f117173b627f279d3e5c84","url":"images/themes/default/Constraints.png"},{"revision":"0f5b34e3477bc7dec9d214c75624618e","url":"images/themes/default/Conversion.png"},{"revision":"34b35cebcc208e56a590de389650c31c","url":"images/themes/default/Conversions.png"},{"revision":"c8f58a82f94ad33c92c4434195211986","url":"images/themes/default/Copy.png"},{"revision":"37d5edb86c49b49e04dc1f31ea61d944","url":"images/themes/default/CorruptedDatabase.png"},{"revision":"13cb3db5b00eb488ea488c11f7ef6c7b","url":"images/themes/default/Cut.png"},{"revision":"f5db4650c1155434dd3395449145e185","url":"images/themes/default/Database.png"},{"revision":"f78fd91345a5f9e6135740c39f94c281","url":"images/themes/default/Databases.png"},{"revision":"01e09c5e6a4dff39c69c69c30e3c2df0","url":"images/themes/default/Definition.png"},{"revision":"909467ce82f287d29b32a3bde5001a98","url":"images/themes/default/Delete.png"},{"revision":"0c7afdc74e664afc728350efdc4f8e54","url":"images/themes/default/DisabledJob.png"},{"revision":"871a020d4cce6841704c1e6465b5ac11","url":"images/themes/default/DisconnectedDatabase.png"},{"revision":"0b2aecfe0a2fefbaa9d153e06a12ce4a","url":"images/themes/default/DisconnectedServer.png"},{"revision":"0573dfc5e4d10eb7d2708dc9be361e1d","url":"images/themes/default/Domain.png"},{"revision":"5bc7b098fd0c94841c7bb39a8d32c3dd","url":"images/themes/default/Domains.png"},{"revision":"075f3f50ae58bea29ea9853ec69f8822","url":"images/themes/default/EnableArgument.png"},{"revision":"cd1bcdc76c1ac1c8d228b3748ed4b469","url":"images/themes/default/Erase.png"},{"revision":"21388b26da2079d313b9df99324550ac","url":"images/themes/default/Execute.png"},{"revision":"0e75ce0c09fce81f44bb6f71faf15fd8","url":"images/themes/default/ExecuteSave.png"},{"revision":"e0e9aa509cbdd8ef731b35fa9a39aa84","url":"images/themes/default/Explain.png"},{"revision":"20d4e370edd5f9da50f168bedc708fe2","url":"images/themes/default/Export.png"},{"revision":"7f7f3b73b863ab0db2800b0cc9d87f22","url":"images/themes/default/Favicon.ico"},{"revision":"6fa649f2cffe185328b703b4a5f69475","url":"images/themes/default/Filter.png"},{"revision":"928e06e119cc3a048912672d40d06abc","url":"images/themes/default/ForeignKey.png"},{"revision":"c13ce81b5e4a3187ce37a55a387cbd8e","url":"images/themes/default/Fts.png"},{"revision":"78a5c183c4ec2f68fa2c124f11df71ad","url":"images/themes/default/FtsCfg.png"},{"revision":"72795d6e7ba1eaa63f4353d075eb551c","url":"images/themes/default/FtsDict.png"},{"revision":"512bc774fedde4b56563c935ea5b6a2d","url":"images/themes/default/FtsParser.png"},{"revision":"d1db8bbd46db17458812fd60ae458b4e","url":"images/themes/default/Function.png"},{"revision":"6c19e68bf4aff2345c62355ae814cd07","url":"images/themes/default/Functions.png"},{"revision":"aee27759d60d8b19aea299c1af78c902","url":"images/themes/default/GurusHint.png"},{"revision":"e599e96f305c61cb374326d49834c990","url":"images/themes/default/Help.png"},{"revision":"dc9c5432bcca789f6e8adcac5fbecb4a","url":"images/themes/default/Histories.png"},{"revision":"bb6651298f7feca614348a277417b679","url":"images/themes/default/History.png"},{"revision":"7fef7f3891268fbd886d3776d4bb18d2","url":"images/themes/default/I.png"},{"revision":"591ac6f7a26a67ae9485c9ea5f53bfbe","url":"images/themes/default/Import.png"},{"revision":"50d5f45d81511368d878756d6c26f47d","url":"images/themes/default/Index.png"},{"revision":"68100f02b944c3e5814ad9ad679c0169","url":"images/themes/default/Indexes.png"},{"revision":"8dbc90cfbfd4d9a2f5a3e7c5924771ee","url":"images/themes/default/Introduction.png"},{"revision":"0b6670ea8590f013806ad04e139a4d9e","url":"images/themes/default/Job.png"},{"revision":"7c5f31d0ac216e9f90c661e98dba2856","url":"images/themes/default/Jobs.png"},{"revision":"932e67636e6acbb814a2dded608bb652","url":"images/themes/default/Key.png"},{"revision":"e151369d672d2e2cc6f647be2f736e8f","url":"images/themes/default/L.png"},{"revision":"20938113d067cff7a6ff773f75e07491","url":"images/themes/default/Language.png"},{"revision":"ac48fd0fdc93ad3f1928cccb9c9e028e","url":"images/themes/default/Languages.png"},{"revision":"788ee2492ef829b80cfba68d56f14430","url":"images/themes/default/Listen.png"},{"revision":"c529a6fda4b2e2a375f7e5f51e577120","url":"images/themes/default/Listens.png"},{"revision":"d25bce2a91933a53b40ec210c7323372","url":"images/themes/default/Lminus.png"},{"revision":"af1d523a137ef9b2005411770f454b2e","url":"images/themes/default/Loading.gif"},{"revision":"1f099fbed522a3980847f07bcc4573ae","url":"images/themes/default/LowerArgument.png"},{"revision":"b42f13fbc6d7701cd1bb7d827c3113ca","url":"images/themes/default/Lplus.png"},{"revision":"a6cdad27aed2812de33ff2d45e00385b","url":"images/themes/default/MViews.png"},{"revision":"1c8e6ef452ff7a9770047b469c85a05c","url":"images/themes/default/Node.png"},{"revision":"e3f4f6d43a689035a2208662e933f5ea","url":"images/themes/default/Nodes.png"},{"revision":"8534caffcf3d558648a0662245e2fc3d","url":"images/themes/default/ObjectNotFound.png"},{"revision":"adc078de3c9e353b75640c2e180d20e6","url":"images/themes/default/OfferedReplicationSet.png"},{"revision":"768fc20465c6354398625c4ed5c85cb4","url":"images/themes/default/OfferedSubscription.png"},{"revision":"92bb01a30f897095adb2f98c0036b9e9","url":"images/themes/default/Open.png"},{"revision":"fb73b5a1f6499159043e5b20dc3285db","url":"images/themes/default/Operator.png"},{"revision":"a9b82cc57bf520190315ddbc833e64c7","url":"images/themes/default/OperatorClass.png"},{"revision":"b94fc3a6153d8fb2e261ec454d69a252","url":"images/themes/default/OperatorClasses.png"},{"revision":"c5cb1662b9cbf877de8cb08d0c8bc4cb","url":"images/themes/default/Operators.png"},{"revision":"db9d9333b530c266bab387ae076a5ada","url":"images/themes/default/Paste.png"},{"revision":"f888ffe2c6ab9c59d45ee07ae6199f4a","url":"images/themes/default/Path.png"},{"revision":"737c12988806ad60b5a5aec244920709","url":"images/themes/default/Paths.png"},{"revision":"d0744174f9db9929b5be155c9f603e01","url":"images/themes/default/PrimaryKey.png"},{"revision":"1f27241c0f520a279d3665028024b45e","url":"images/themes/default/Privileges.png"},{"revision":"bf5538bb0bd23ed8c209997766dac284","url":"images/themes/default/Processes.png"},{"revision":"9bfdb2725bc9facafe90474d2c364c8f","url":"images/themes/default/Property.png"},{"revision":"e7f18a3dea3acd7e3333cd8f95e3fcce","url":"images/themes/default/RaiseArgument.png"},{"revision":"acd2ad85dbbd2bf5b71c0062b167b139","url":"images/themes/default/Record.png"},{"revision":"878ff904362c9b59e2d6f6ac93ecc4b8","url":"images/themes/default/Records.png"},{"revision":"a169b03df76e87e44c45757f6a168e61","url":"images/themes/default/Redo.png"},{"revision":"cf51d096cc572377189c2bc884936b78","url":"images/themes/default/Refresh.png"},{"revision":"8d804ee75dfd7b8f3ac98b218a847d54","url":"images/themes/default/RemoveArgument.png"},{"revision":"cdd35ed8aa98e9b0d356effb0d74548b","url":"images/themes/default/Replication.png"},{"revision":"7d5e0bff7082704171013afd322821d4","url":"images/themes/default/ReplicationSets.png"},{"revision":"94b8007abc4354fd4cdbdbcd6087bea7","url":"images/themes/default/Restore.png"},{"revision":"f1c25bb9e2a4eb52d9c6ea52545ede2d","url":"images/themes/default/Roles.png"},{"revision":"565c4b37066f23c5a08d428f2592ee7b","url":"images/themes/default/Rule.png"},{"revision":"18fed3c727afc31e40941828697047ad","url":"images/themes/default/Rules.png"},{"revision":"b5a94436bc66832e0498de05bd72b23e","url":"images/themes/default/Save.png"},{"revision":"e2af41bef5d952cb6887723bc3e5921c","url":"images/themes/default/Schedule.png"},{"revision":"2b7a924ed6a9074d4102a547772750bc","url":"images/themes/default/Schedules.png"},{"revision":"18b2e143c60c9ef3813032bb45310e67","url":"images/themes/default/Schema.png"},{"revision":"b9fe50541e03c0b6e503b4ac1e65ddf1","url":"images/themes/default/Schemas.png"},{"revision":"9cf1fe46d6b8fd3ba257d46a3d05965d","url":"images/themes/default/Search.png"},{"revision":"4bfa8c4668036788458732d85630f931","url":"images/themes/default/Sequence.png"},{"revision":"c4bb32230118c69cf6bab8617ef62b16","url":"images/themes/default/Sequences.png"},{"revision":"bf4a2c360541176e03505124830cddac","url":"images/themes/default/Server.png"},{"revision":"07681bcc17ebc43645d6c1796f5df219","url":"images/themes/default/Servers.png"},{"revision":"df73ed3b7b0a31d266d97f97d5ac5c5a","url":"images/themes/default/SqlEditor.png"},{"revision":"b6d59a3d2b8ad767c54305bc91a8243a","url":"images/themes/default/Statistics.png"},{"revision":"892be7a355b19ffdb0ce39483cd4b6c1","url":"images/themes/default/Step.png"},{"revision":"5f28c19fac73bc0e869caed580a28457","url":"images/themes/default/Steps.png"},{"revision":"ef7050f86e5ace6f4c026057beca7b91","url":"images/themes/default/Stop.png"},{"revision":"065f6490b63a46edee2162a6a76a9131","url":"images/themes/default/Subscriptions.png"},{"revision":"fe196453a6e822e7ebbd23692b35fd5e","url":"images/themes/default/T.png"},{"revision":"edd7db39026ec7c3d78284a319198b8d","url":"images/themes/default/Table.png"},{"revision":"84533f1145926e2d71aafaa4ca1eb1ac","url":"images/themes/default/Tables.png"},{"revision":"4014487f76df092d3f57b6a90a6c96a0","url":"images/themes/default/Tablespace.png"},{"revision":"7d2334e497eee6e5719b25dfa39cfe66","url":"images/themes/default/Tablespaces.png"},{"revision":"6987da08785938281c0cef64a08e3263","url":"images/themes/default/title_blue.png"},{"revision":"27762f17ee6301aac5bb3521d34e142b","url":"images/themes/default/title.png"},{"revision":"eb42ed7ec1597a0a9976fb4198a7ee71","url":"images/themes/default/Tminus.png"},{"revision":"fcfd867d96fa1908bd165c97f4099e74","url":"images/themes/default/Tplus.png"},{"revision":"f827a98b8f30eefac6f9ab47d6ca1f16","url":"images/themes/default/Trigger.png"},{"revision":"9337acb5c8b57422cd0aab291aa706bb","url":"images/themes/default/TriggerFunction.png"},{"revision":"5dc7b60313a7a4f3598050afbddad7d2","url":"images/themes/default/TriggerFunctions.png"},{"revision":"6644a0ddffc0487230295acd19de296c","url":"images/themes/default/Triggers.png"},{"revision":"952a9dae51878f6869b24527bca77b49","url":"images/themes/default/Type.png"},{"revision":"0f1e8651d2422952d224d1657442cc42","url":"images/themes/default/Types.png"},{"revision":"a60bb9589277159b06882458fc54e1a9","url":"images/themes/default/Undo.png"},{"revision":"96ce5e94257ba8115ffb5956e3ed3296","url":"images/themes/default/UniqueConstraint.png"},{"revision":"746e073e551917a29630184eace87c8e","url":"images/themes/default/User.png"},{"revision":"735113096adc5e5a8299a6f6f09c721d","url":"images/themes/default/UserGroup.png"},{"revision":"76c595fe16835a3bf582d0278828fc49","url":"images/themes/default/UserGroups.png"},{"revision":"6dda662436c3178b2a51c306edc1cc89","url":"images/themes/default/Users.png"},{"revision":"c5b6e5d13e4d159cf5893a0abb7cb9df","url":"images/themes/default/Variables.png"},{"revision":"2479afdac6324e368251f9d436a86db0","url":"images/themes/default/View.png"},{"revision":"a8a50a05e97c59f0b6cbd8b123b0a4bd","url":"images/themes/default/Views.png"},{"revision":"6987da08785938281c0cef64a08e3263","url":"images/themes/instaGIS/logo.png"},{"revision":"6a131cd0296e2b877a1adec2e629224e","url":"images/vsizegrip.png"},{"revision":"97f9ebda1b8fb0e35ac35ffce8a5a960","url":"themes/bootstrap/global.css"},{"revision":"6987da08785938281c0cef64a08e3263","url":"themes/bootstrap/title.png"},{"revision":"faeff89daa358a9f481f42e32b77cfc3","url":"themes/cappuccino/global.css"},{"revision":"c49fd9c93fd688a1445a17aa316b09bb","url":"themes/default/global.css"},{"revision":"474d702a68605f0a8368ec25c488f455","url":"themes/global.css"},{"revision":"c5984fcad101f4b5507718d47780c026","url":"themes/gotar/global.css"},{"revision":"f2798285cd723a94866088997228accc","url":"vendor/codemirror/addon/comment/comment.js"},{"revision":"0374616c52803e22bace5dfabbc0e42f","url":"vendor/codemirror/addon/comment/continuecomment.js"},{"revision":"c89dce10b44d2882a024e7befc2b63f5","url":"vendor/codemirror/addon/dialog/dialog.css"},{"revision":"904554fefae1a2beb0eaad467018af7a","url":"vendor/codemirror/addon/dialog/dialog.js"},{"revision":"a8525e557b32a9ff330db311f444058b","url":"vendor/codemirror/addon/display/autorefresh.js"},{"revision":"1a278e72b51528270f8ce9ec991929a1","url":"vendor/codemirror/addon/display/fullscreen.css"},{"revision":"744a9a476b90075936f58ebb8b35ac85","url":"vendor/codemirror/addon/display/fullscreen.js"},{"revision":"45aa4eb1759d95e5169397df11a0cd79","url":"vendor/codemirror/addon/display/panel.js"},{"revision":"0e8705231c3e7d910611e5cfcfc9145f","url":"vendor/codemirror/addon/display/placeholder.js"},{"revision":"38aaf61e611edfe39883f46f89b0b91b","url":"vendor/codemirror/addon/display/rulers.js"},{"revision":"7138da5915e3a819ea35126930b43402","url":"vendor/codemirror/addon/edit/closebrackets.js"},{"revision":"eb8606363338598e8f3099392a7fa2ce","url":"vendor/codemirror/addon/edit/closetag.js"},{"revision":"cc1c2b9fd1184a4e8b845e4fb09707e1","url":"vendor/codemirror/addon/edit/continuelist.js"},{"revision":"5a44e9d0ad6abe1afd67c48b70d1cbd2","url":"vendor/codemirror/addon/edit/matchbrackets.js"},{"revision":"d0c67185e94d3a096299b680c0fca7d6","url":"vendor/codemirror/addon/edit/matchtags.js"},{"revision":"81d50700cee8c27e0e311de3650851bc","url":"vendor/codemirror/addon/edit/trailingspace.js"},{"revision":"c4850e56d89da48a8625e13ed9a076db","url":"vendor/codemirror/addon/fold/brace-fold.js"},{"revision":"9b289797886789d2ce7f40e3f7408c9e","url":"vendor/codemirror/addon/fold/comment-fold.js"},{"revision":"67922ad2e2c384c5455bfcacdec393d8","url":"vendor/codemirror/addon/fold/foldcode.js"},{"revision":"38bb68770b6f7ebaa7adea770a68e0b1","url":"vendor/codemirror/addon/fold/foldgutter.css"},{"revision":"2e6a4ca9c0f057daaecbc330d8f96bc0","url":"vendor/codemirror/addon/fold/foldgutter.js"},{"revision":"5017f49481f30946bd4229a6d05d5fcc","url":"vendor/codemirror/addon/fold/indent-fold.js"},{"revision":"6e3228db96bbadbb93c79922ecd88ce0","url":"vendor/codemirror/addon/fold/markdown-fold.js"},{"revision":"b88e73a8e7bdc8b032adfd5047dfe2c5","url":"vendor/codemirror/addon/fold/xml-fold.js"},{"revision":"736f4c0aa67db12cf39097f3d1790c8b","url":"vendor/codemirror/addon/hint/anyword-hint.js"},{"revision":"4958c441a7cdf2d39fa6c8bd4b340168","url":"vendor/codemirror/addon/hint/css-hint.js"},{"revision":"51364bfc06c261a20b9ced6606db9580","url":"vendor/codemirror/addon/hint/html-hint.js"},{"revision":"fe11e9d0e373480aa61af6ae86c04dc1","url":"vendor/codemirror/addon/hint/javascript-hint.js"},{"revision":"49647712414ff96d5846de9736b5dbd3","url":"vendor/codemirror/addon/hint/show-hint.css"},{"revision":"2fa9552bd0d701cac634055d17bb130a","url":"vendor/codemirror/addon/hint/show-hint.js"},{"revision":"f66526ad34eaaeee2dca6282961808a8","url":"vendor/codemirror/addon/hint/sql-hint.js"},{"revision":"65cf0f4e6ce510f4a189a0b87d943b8c","url":"vendor/codemirror/addon/hint/xml-hint.js"},{"revision":"140f1a44841627e860cafd955e89f4e7","url":"vendor/codemirror/addon/lint/coffeescript-lint.js"},{"revision":"6a6166008cb94a6d62e05dc2cab7fc16","url":"vendor/codemirror/addon/lint/css-lint.js"},{"revision":"4ce658b4b1c2cacb8a2685effa0ed4eb","url":"vendor/codemirror/addon/lint/html-lint.js"},{"revision":"3db1c5d6629bde3e0a4a694c5cd94065","url":"vendor/codemirror/addon/lint/javascript-lint.js"},{"revision":"dcfd194ca63e175996aaea2b3a58b598","url":"vendor/codemirror/addon/lint/json-lint.js"},{"revision":"80cbf240f7114fb23e506da29cced118","url":"vendor/codemirror/addon/lint/lint.css"},{"revision":"16098bd4d5e62f123cbc4482622e1360","url":"vendor/codemirror/addon/lint/lint.js"},{"revision":"eabad9dfc99d98d6995c37fce194c28c","url":"vendor/codemirror/addon/lint/yaml-lint.js"},{"revision":"d4009e57cbbb2c969147cf233671ba42","url":"vendor/codemirror/addon/merge/merge.css"},{"revision":"001c710b643ececdbaf65328bb3419fc","url":"vendor/codemirror/addon/merge/merge.js"},{"revision":"f8291cb1ca96e29af58def213012655a","url":"vendor/codemirror/addon/mode/loadmode.js"},{"revision":"37963861dd6e41a530a6f84c2b17bdf7","url":"vendor/codemirror/addon/mode/multiplex_test.js"},{"revision":"b132b004f352bf044cd80a9f55731147","url":"vendor/codemirror/addon/mode/multiplex.js"},{"revision":"4f8e4dcaeb7c237cbe4f1f69972cdc8a","url":"vendor/codemirror/addon/mode/overlay.js"},{"revision":"eed15e8b955aaee880af0c819b38fa25","url":"vendor/codemirror/addon/mode/simple.js"},{"revision":"c8fb49ed714798e04bc3d0289b19efa4","url":"vendor/codemirror/addon/runmode/colorize.js"},{"revision":"aa4a42bca69b6f096a18cd51203afe6e","url":"vendor/codemirror/addon/runmode/runmode-standalone.js"},{"revision":"2c0ddde09a9f1f8f5dc9d4f67f03d2f2","url":"vendor/codemirror/addon/runmode/runmode.js"},{"revision":"f3c8c9b85bbeecf3c873e52d3783f39b","url":"vendor/codemirror/addon/runmode/runmode.node.js"},{"revision":"87198e00de438bb7f9afe2e55b6cb4a3","url":"vendor/codemirror/addon/scroll/annotatescrollbar.js"},{"revision":"92a24e9251be0dc620c11cb61919293f","url":"vendor/codemirror/addon/scroll/scrollpastend.js"},{"revision":"0352ba51fd6a422fe6cc44925e33ad88","url":"vendor/codemirror/addon/scroll/simplescrollbars.css"},{"revision":"13948e6ef35e3c3d2c65de096af58721","url":"vendor/codemirror/addon/scroll/simplescrollbars.js"},{"revision":"cf5f2c65e9c8e26841923b5e1a6bf611","url":"vendor/codemirror/addon/search/jump-to-line.js"},{"revision":"ace658d3aaf9d8ae9895ff97dd9eb5ca","url":"vendor/codemirror/addon/search/match-highlighter.js"},{"revision":"00ea2770c568a848190bcf52e4241276","url":"vendor/codemirror/addon/search/matchesonscrollbar.css"},{"revision":"b7dfa5fd6a57e306bf7ce99542819883","url":"vendor/codemirror/addon/search/matchesonscrollbar.js"},{"revision":"1e2c6bec0a25d4e7dea128f048b08931","url":"vendor/codemirror/addon/search/search.js"},{"revision":"fa73eef9cf913ee2d766c8501a582a0c","url":"vendor/codemirror/addon/search/searchcursor.js"},{"revision":"30fc5d6c1847dc207bd0e38c0e97e789","url":"vendor/codemirror/addon/selection/active-line.js"},{"revision":"c0240b66ae29bda93e80be5e60c9ed8d","url":"vendor/codemirror/addon/selection/mark-selection.js"},{"revision":"ae80c5e4d54f8ccb07c6373e66f523a4","url":"vendor/codemirror/addon/selection/selection-pointer.js"},{"revision":"4d57ced774b5f3fa9f00dfa398e74819","url":"vendor/codemirror/addon/tern/tern.css"},{"revision":"f6c76d9ec32faccbb8cf23b7a2f6f917","url":"vendor/codemirror/addon/tern/tern.js"},{"revision":"6866b3b6f236f5ae8b89e15b5cf167e1","url":"vendor/codemirror/addon/tern/worker.js"},{"revision":"359a2bb5a43f724a09f2adbbfe40dd86","url":"vendor/codemirror/addon/wrap/hardwrap.js"},{"revision":"fc217d502b05f65616356459c0ec1d62","url":"vendor/codemirror/lib/codemirror.css"},{"revision":"82b9491f7e4ecd8ce57812ee3f99014f","url":"vendor/codemirror/lib/codemirror.js"},{"revision":"3eb5b33a2d2022c4de839b1980511f54","url":"vendor/codemirror/mode/meta.js"},{"revision":"91f74a33b9232251058426d1e16e9dce","url":"vendor/codemirror/mode/sql/index.html"},{"revision":"d21c7a0e713132429cf903be42310a89","url":"vendor/codemirror/mode/sql/sql.js"},{"revision":"80026250946cff8a6fc0da995aa02566","url":"vendor/datatables/datatables.min.css"},{"revision":"c1e3d63eab27d1aa7beb191d32340bba","url":"vendor/datatables/datatables.min.js"},{"revision":"d7dc10c78f23615d328581aebcd805eb","url":"vendor/datatables/images/sort_asc_disabled.png"},{"revision":"9326ad44ae4bebdedd141e7a53c2a730","url":"vendor/datatables/images/sort_asc.png"},{"revision":"9a6486086d09bb38cf66a57cc559ade3","url":"vendor/datatables/images/sort_both.png"},{"revision":"bda51e15154a18257b4f955a222fd66f","url":"vendor/datatables/images/sort_desc_disabled.png"},{"revision":"1fc418e33fd5a687290258b23fac4e98","url":"vendor/datatables/images/sort_desc.png"},{"revision":"d7dc10c78f23615d328581aebcd805eb","url":"vendor/images/datatables/sort_asc_disabled.png"},{"revision":"9326ad44ae4bebdedd141e7a53c2a730","url":"vendor/images/datatables/sort_asc.png"},{"revision":"9a6486086d09bb38cf66a57cc559ade3","url":"vendor/images/datatables/sort_both.png"},{"revision":"bda51e15154a18257b4f955a222fd66f","url":"vendor/images/datatables/sort_desc_disabled.png"},{"revision":"1fc418e33fd5a687290258b23fac4e98","url":"vendor/images/datatables/sort_desc.png"},{"revision":"1ec88e235979893e9efc355f22a23441","url":"vendor/jquery-resizable.js"},{"revision":"f83a8b8886694eaef4505dd80af7a430","url":"vendor/jquery/images/ui-icons_444444_256x240.png"},{"revision":"220afd743d9e9643852e31a135a9f3ae","url":"vendor/jquery/jquery-3.4.1.min.js"},{"revision":"81188e0c65a0a25d5ebfa7356bf81884","url":"vendor/jquery/jquery-ui.min.css"},{"revision":"8cbf62fc02083afe12a90787cb8f9e3c","url":"vendor/jquery/jquery-ui.min.js"},{"revision":"66cefd86e219c19be9a32b4a9f6f70b2","url":"vendor/jstree/jstree.js"},{"revision":"dc4a6494cf51022fa4a8541d13837166","url":"vendor/jstree/jstree.min.js"},{"revision":"eebaf260766f5e0e773f53d3ea4f3e4d","url":"vendor/jstree/themes/default-dark/32px.png"},{"revision":"51286e68b083696edaf4f9fc577e2a2d","url":"vendor/jstree/themes/default-dark/40px.png"},{"revision":"6791bf1b92e95d10c8445ac010c429df","url":"vendor/jstree/themes/default-dark/style.css"},{"revision":"0236b108a8deddca3b0fae061147a0a6","url":"vendor/jstree/themes/default-dark/style.min.css"},{"revision":"62be6ed2b189444b472b8000dc187240","url":"vendor/jstree/themes/default-dark/throbber.gif"},{"revision":"db49c8de4f267eede40a9a8843efcdec","url":"vendor/jstree/themes/default/32px.png"},{"revision":"1f075735090412ed7eb8077d819b19c6","url":"vendor/jstree/themes/default/40px.png"},{"revision":"0cf1fc2eadda48373db31569a791ae29","url":"vendor/jstree/themes/default/style.css"},{"revision":"8f65ba57d02eadb0c75d0623190d1ee8","url":"vendor/jstree/themes/default/style.min.css"},{"revision":"9ed4669f524bec38319be63a2ee4ba26","url":"vendor/jstree/themes/default/throbber.gif"},{"revision":"230b82ca8561d9b4111ba8102cae2bb6","url":"vendor/jstree/themes/phppgadmin/32px.png"},{"revision":"1f075735090412ed7eb8077d819b19c6","url":"vendor/jstree/themes/phppgadmin/40px.png"},{"revision":"f5a9ca92f2b904247c7b83ce4b054481","url":"vendor/jstree/themes/phppgadmin/style.css"},{"revision":"8f65ba57d02eadb0c75d0623190d1ee8","url":"vendor/jstree/themes/phppgadmin/style.min.css"},{"revision":"9ed4669f524bec38319be63a2ee4ba26","url":"vendor/jstree/themes/phppgadmin/throbber.gif"},{"revision":"887b34f2cf309344f3e0b96aaab2b15d","url":"vendor/select2/css/select2.css"},{"revision":"d44571114a90b9226cd654d3c7d9442c","url":"vendor/select2/css/select2.min.css"},{"revision":"a8bb27ec698c86bde72c8a6f13a8e9b4","url":"vendor/select2/js/i18n/ar.js"},{"revision":"498dc667b34eb0fddc31c4e92330d1aa","url":"vendor/select2/js/i18n/az.js"},{"revision":"89cba4df3c8694fcb33098dd1646cac1","url":"vendor/select2/js/i18n/bg.js"},{"revision":"2eaad4eb1950a0d542812c58d30c93dd","url":"vendor/select2/js/i18n/ca.js"},{"revision":"a68bcd293adcd6d9ac0b8527c9b39189","url":"vendor/select2/js/i18n/cs.js"},{"revision":"cbf897a0ae53b0cffbbe3f50d8b1b136","url":"vendor/select2/js/i18n/da.js"},{"revision":"366d0aacb55f4929cc50bb977abec674","url":"vendor/select2/js/i18n/de.js"},{"revision":"5629ce65500f96c62414a27c6eaed62c","url":"vendor/select2/js/i18n/el.js"},{"revision":"05649b26c08630d2b703bc1e9ef93c7b","url":"vendor/select2/js/i18n/en.js"},{"revision":"dc9dbf9d65df3f69e6b6d650c97bd967","url":"vendor/select2/js/i18n/es.js"},{"revision":"c3953fb90b6bb9669697f5f12e802a66","url":"vendor/select2/js/i18n/et.js"},{"revision":"11b925456433eaab07e35b8dca7046f5","url":"vendor/select2/js/i18n/eu.js"},{"revision":"98e52839b583e1ca66f4360a4f43f9b0","url":"vendor/select2/js/i18n/fa.js"},{"revision":"659847deefdcfd7e4f8f2ed924d360f4","url":"vendor/select2/js/i18n/fi.js"},{"revision":"b06a3340de45535358a0bc33fa2b9739","url":"vendor/select2/js/i18n/fr.js"},{"revision":"78a87f7c0a519118fbe4f583ff2a3b3f","url":"vendor/select2/js/i18n/gl.js"},{"revision":"222d90ee0344ee8beeb5fb1835c93c76","url":"vendor/select2/js/i18n/he.js"},{"revision":"116a90b7111b953cd092e30a034d6913","url":"vendor/select2/js/i18n/hi.js"},{"revision":"e1d2c70b4df50d98d2c35856804d38be","url":"vendor/select2/js/i18n/hr.js"},{"revision":"db45641f10b2412801d5872e40ef7c2f","url":"vendor/select2/js/i18n/hu.js"},{"revision":"6ee6c9c64b945bb8a0f42d247ee0d868","url":"vendor/select2/js/i18n/id.js"},{"revision":"808c7d47acb59537728bc74fdeb0ad0d","url":"vendor/select2/js/i18n/is.js"},{"revision":"bae1661dbb77c15384655faffc10a3fa","url":"vendor/select2/js/i18n/it.js"},{"revision":"19cf1ce8a03de84ea668e8fec99a8c80","url":"vendor/select2/js/i18n/ja.js"},{"revision":"6074a9c5575cfaa8b3c1dccdb3133dde","url":"vendor/select2/js/i18n/km.js"},{"revision":"74b17541834ff1bb8c5651d321bd2281","url":"vendor/select2/js/i18n/ko.js"},{"revision":"a0783b1bd1594b7c584564cc68b6c6e5","url":"vendor/select2/js/i18n/lt.js"},{"revision":"07fe2a580d17cba308a972fdabbcaea0","url":"vendor/select2/js/i18n/lv.js"},{"revision":"4986d7fc3ff3ed9a5f8af646f5ca587b","url":"vendor/select2/js/i18n/mk.js"},{"revision":"23e7b436957996a10f451bc8d688764d","url":"vendor/select2/js/i18n/ms.js"},{"revision":"137e184004aaec03977a4caf1cca30f4","url":"vendor/select2/js/i18n/nb.js"},{"revision":"c363ace8aa0501526c17a61ab2fb854f","url":"vendor/select2/js/i18n/nl.js"},{"revision":"76465b54a6b0eb6b2204143a0827d0ca","url":"vendor/select2/js/i18n/pl.js"},{"revision":"9efbbac4fda8d23225df16dddecb2718","url":"vendor/select2/js/i18n/pt-BR.js"},{"revision":"5d6ccc53b347b155e1af6afb1bc5fe94","url":"vendor/select2/js/i18n/pt.js"},{"revision":"1ddc2b9980dcdd1008761149e0349a8b","url":"vendor/select2/js/i18n/ro.js"},{"revision":"d83609abf2e0ba927b9ec472bf47e180","url":"vendor/select2/js/i18n/ru.js"},{"revision":"a0f1a818d09228a87ae105d09fdee80c","url":"vendor/select2/js/i18n/sk.js"},{"revision":"2f3047aad49eedd75dd5dacc092a7e02","url":"vendor/select2/js/i18n/sr-Cyrl.js"},{"revision":"157bc6eb978e9a35985bc655d09ac258","url":"vendor/select2/js/i18n/sr.js"},{"revision":"2b21bb3f61100fd656b41d16e25e2f80","url":"vendor/select2/js/i18n/sv.js"},{"revision":"2a4ece4c4355b7efd9e9591a53b3edc1","url":"vendor/select2/js/i18n/th.js"},{"revision":"c1925d8817db211164145dc47b18d333","url":"vendor/select2/js/i18n/tr.js"},{"revision":"3d56f311192daf9ce44246c52777789f","url":"vendor/select2/js/i18n/uk.js"},{"revision":"3520aa7bdea8234161b2c18f631417a0","url":"vendor/select2/js/i18n/vi.js"},{"revision":"419002d3c6c10ec9618ce6275c1057d1","url":"vendor/select2/js/i18n/zh-CN.js"},{"revision":"c021537edf2c555f149509150ff986e3","url":"vendor/select2/js/i18n/zh-TW.js"},{"revision":"a95323cb476000ee17d7a252786df963","url":"vendor/select2/js/select2.full.js"},{"revision":"da607360bcc65284a197ada3d68d5439","url":"vendor/select2/js/select2.full.min.js"},{"revision":"b8f26dd6733ccc6263cb273e8f821dab","url":"vendor/select2/js/select2.js"},{"revision":"e87ca4c3554f7b9e693605ce12d3a234","url":"vendor/select2/js/select2.min.js"}] || []);
+registerRoute(
+ ({ request, url }) =>
+ request.destination === 'image' || url.includes('assets/vendor'),
+ new CacheFirst()
+);
+/*registerRoute(
+ ({ request }) =>
+ request.destination === 'script' || request.destination === 'style',
+ new StaleWhileRevalidate()
+);*/
- workbox.core.clientsClaim();
-
- workbox.precaching.precacheAndRoute([
- {
- "url": "images/themes/bootstrap/Favicon.ico",
- "revision": "7f7f3b73b863ab0db2800b0cc9d87f22"
- },
- {
- "url": "images/themes/bootstrap/Introduction.png",
- "revision": "8dbc90cfbfd4d9a2f5a3e7c5924771ee"
- },
- {
- "url": "images/themes/bootstrap/logo.png",
- "revision": "6987da08785938281c0cef64a08e3263"
- },
- {
- "url": "images/themes/bootstrap/title.png",
- "revision": "6987da08785938281c0cef64a08e3263"
- },
- {
- "url": "images/themes/cappuccino/inputbckg.png",
- "revision": "0836efcda7efd8f7143e6bc944fb2ae1"
- },
- {
- "url": "images/themes/cappuccino/Lminus.png",
- "revision": "4c6ad5374b9518299739fb8f6c0f0dcf"
- },
- {
- "url": "images/themes/cappuccino/Lplus.png",
- "revision": "0e918eec776f591e565f252bbb3935d1"
- },
- {
- "url": "images/themes/cappuccino/openListe.png",
- "revision": "35fec4ef79e5c77f884c28db9d646ff8"
- },
- {
- "url": "images/themes/cappuccino/title.png",
- "revision": "256583a0062c189786a788f550e4833e"
- },
- {
- "url": "images/themes/cappuccino/Tminus.png",
- "revision": "fd64d87ca98273a08a689508c15e21d0"
- },
- {
- "url": "images/themes/cappuccino/Tplus.png",
- "revision": "6be509ad6d0bdf6f5f4bb0112a28a9c4"
- },
- {
- "url": "images/themes/default/AddArguments.png",
- "revision": "5783c8524fa7f4daff4f1ef7bcb4bfb9"
- },
- {
- "url": "images/themes/default/Admin.png",
- "revision": "a82687f9d571988c5a50cd1c4c85e245"
- },
- {
- "url": "images/themes/default/Aggregate.png",
- "revision": "ff0166451279bef06132ca55d2b13bb3"
- },
- {
- "url": "images/themes/default/Aggregates.png",
- "revision": "480dca5e5fa1bef15990e13f7299ac9a"
- },
- {
- "url": "images/themes/default/AllUsers.png",
- "revision": "c8e3e86ffd0a4d7370e08388352fcc53"
- },
- {
- "url": "images/themes/default/AvailableReplicationSet.png",
- "revision": "ce257e663eb495ba4d90fc55feb361ff"
- },
- {
- "url": "images/themes/default/AvailableSubscription.png",
- "revision": "5ec68e4a7bd37d101bdd202890bfb606"
- },
- {
- "url": "images/themes/default/Backup.png",
- "revision": "362dd1ab7684968a9051fb2ffd145a06"
- },
- {
- "url": "images/themes/default/blank.png",
- "revision": "ff372eacef6cd22aa9a962b1fab6b927"
- },
- {
- "url": "images/themes/default/Cast.png",
- "revision": "2b52864370d5111e7a68d3347f0047f4"
- },
- {
- "url": "images/themes/default/Casts.png",
- "revision": "5597d48b8d4b6d0e30762500ced49539"
- },
- {
- "url": "images/themes/default/CheckConstraint.png",
- "revision": "12878c160ad2030c33fbe74b9ef4980c"
- },
- {
- "url": "images/themes/default/Cluster.png",
- "revision": "8ffa29a8aadf2e8a78a58f246ecb8f3a"
- },
- {
- "url": "images/themes/default/Column.png",
- "revision": "e9a7cd147304fa43da5121aca3aa96bd"
- },
- {
- "url": "images/themes/default/Columns.png",
- "revision": "135c695556735ca7bfbec339300d475a"
- },
- {
- "url": "images/themes/default/Constraints.png",
- "revision": "a08d098a40f117173b627f279d3e5c84"
- },
- {
- "url": "images/themes/default/Conversion.png",
- "revision": "0f5b34e3477bc7dec9d214c75624618e"
- },
- {
- "url": "images/themes/default/Conversions.png",
- "revision": "34b35cebcc208e56a590de389650c31c"
- },
- {
- "url": "images/themes/default/Copy.png",
- "revision": "c8f58a82f94ad33c92c4434195211986"
- },
- {
- "url": "images/themes/default/CorruptedDatabase.png",
- "revision": "37d5edb86c49b49e04dc1f31ea61d944"
- },
- {
- "url": "images/themes/default/Cut.png",
- "revision": "13cb3db5b00eb488ea488c11f7ef6c7b"
- },
- {
- "url": "images/themes/default/Database.png",
- "revision": "f5db4650c1155434dd3395449145e185"
- },
- {
- "url": "images/themes/default/Databases.png",
- "revision": "f78fd91345a5f9e6135740c39f94c281"
- },
- {
- "url": "images/themes/default/Definition.png",
- "revision": "01e09c5e6a4dff39c69c69c30e3c2df0"
- },
- {
- "url": "images/themes/default/Delete.png",
- "revision": "909467ce82f287d29b32a3bde5001a98"
- },
- {
- "url": "images/themes/default/DisabledJob.png",
- "revision": "0c7afdc74e664afc728350efdc4f8e54"
- },
- {
- "url": "images/themes/default/DisconnectedDatabase.png",
- "revision": "871a020d4cce6841704c1e6465b5ac11"
- },
- {
- "url": "images/themes/default/DisconnectedServer.png",
- "revision": "0b2aecfe0a2fefbaa9d153e06a12ce4a"
- },
- {
- "url": "images/themes/default/Domain.png",
- "revision": "0573dfc5e4d10eb7d2708dc9be361e1d"
- },
- {
- "url": "images/themes/default/Domains.png",
- "revision": "5bc7b098fd0c94841c7bb39a8d32c3dd"
- },
- {
- "url": "images/themes/default/EnableArgument.png",
- "revision": "075f3f50ae58bea29ea9853ec69f8822"
- },
- {
- "url": "images/themes/default/Erase.png",
- "revision": "cd1bcdc76c1ac1c8d228b3748ed4b469"
- },
- {
- "url": "images/themes/default/Execute.png",
- "revision": "21388b26da2079d313b9df99324550ac"
- },
- {
- "url": "images/themes/default/ExecuteSave.png",
- "revision": "0e75ce0c09fce81f44bb6f71faf15fd8"
- },
- {
- "url": "images/themes/default/Explain.png",
- "revision": "e0e9aa509cbdd8ef731b35fa9a39aa84"
- },
- {
- "url": "images/themes/default/Export.png",
- "revision": "20d4e370edd5f9da50f168bedc708fe2"
- },
- {
- "url": "images/themes/default/Favicon.ico",
- "revision": "7f7f3b73b863ab0db2800b0cc9d87f22"
- },
- {
- "url": "images/themes/default/Filter.png",
- "revision": "6fa649f2cffe185328b703b4a5f69475"
- },
- {
- "url": "images/themes/default/ForeignKey.png",
- "revision": "928e06e119cc3a048912672d40d06abc"
- },
- {
- "url": "images/themes/default/Fts.png",
- "revision": "c13ce81b5e4a3187ce37a55a387cbd8e"
- },
- {
- "url": "images/themes/default/FtsCfg.png",
- "revision": "78a5c183c4ec2f68fa2c124f11df71ad"
- },
- {
- "url": "images/themes/default/FtsDict.png",
- "revision": "72795d6e7ba1eaa63f4353d075eb551c"
- },
- {
- "url": "images/themes/default/FtsParser.png",
- "revision": "512bc774fedde4b56563c935ea5b6a2d"
- },
- {
- "url": "images/themes/default/Function.png",
- "revision": "d1db8bbd46db17458812fd60ae458b4e"
- },
- {
- "url": "images/themes/default/Functions.png",
- "revision": "6c19e68bf4aff2345c62355ae814cd07"
- },
- {
- "url": "images/themes/default/GurusHint.png",
- "revision": "aee27759d60d8b19aea299c1af78c902"
- },
- {
- "url": "images/themes/default/Help.png",
- "revision": "e599e96f305c61cb374326d49834c990"
- },
- {
- "url": "images/themes/default/Histories.png",
- "revision": "dc9c5432bcca789f6e8adcac5fbecb4a"
- },
- {
- "url": "images/themes/default/History.png",
- "revision": "bb6651298f7feca614348a277417b679"
- },
- {
- "url": "images/themes/default/I.png",
- "revision": "7fef7f3891268fbd886d3776d4bb18d2"
- },
- {
- "url": "images/themes/default/Import.png",
- "revision": "591ac6f7a26a67ae9485c9ea5f53bfbe"
- },
- {
- "url": "images/themes/default/Index.png",
- "revision": "50d5f45d81511368d878756d6c26f47d"
- },
- {
- "url": "images/themes/default/Indexes.png",
- "revision": "68100f02b944c3e5814ad9ad679c0169"
- },
- {
- "url": "images/themes/default/Introduction.png",
- "revision": "8dbc90cfbfd4d9a2f5a3e7c5924771ee"
- },
- {
- "url": "images/themes/default/Job.png",
- "revision": "0b6670ea8590f013806ad04e139a4d9e"
- },
- {
- "url": "images/themes/default/Jobs.png",
- "revision": "7c5f31d0ac216e9f90c661e98dba2856"
- },
- {
- "url": "images/themes/default/Key.png",
- "revision": "932e67636e6acbb814a2dded608bb652"
- },
- {
- "url": "images/themes/default/L.png",
- "revision": "e151369d672d2e2cc6f647be2f736e8f"
- },
- {
- "url": "images/themes/default/Language.png",
- "revision": "20938113d067cff7a6ff773f75e07491"
- },
- {
- "url": "images/themes/default/Languages.png",
- "revision": "ac48fd0fdc93ad3f1928cccb9c9e028e"
- },
- {
- "url": "images/themes/default/Listen.png",
- "revision": "788ee2492ef829b80cfba68d56f14430"
- },
- {
- "url": "images/themes/default/Listens.png",
- "revision": "c529a6fda4b2e2a375f7e5f51e577120"
- },
- {
- "url": "images/themes/default/Lminus.png",
- "revision": "d25bce2a91933a53b40ec210c7323372"
- },
- {
- "url": "images/themes/default/Loading.gif",
- "revision": "af1d523a137ef9b2005411770f454b2e"
- },
- {
- "url": "images/themes/default/LowerArgument.png",
- "revision": "1f099fbed522a3980847f07bcc4573ae"
- },
- {
- "url": "images/themes/default/Lplus.png",
- "revision": "b42f13fbc6d7701cd1bb7d827c3113ca"
- },
- {
- "url": "images/themes/default/MViews.png",
- "revision": "a6cdad27aed2812de33ff2d45e00385b"
- },
- {
- "url": "images/themes/default/Node.png",
- "revision": "1c8e6ef452ff7a9770047b469c85a05c"
- },
- {
- "url": "images/themes/default/Nodes.png",
- "revision": "e3f4f6d43a689035a2208662e933f5ea"
- },
- {
- "url": "images/themes/default/ObjectNotFound.png",
- "revision": "8534caffcf3d558648a0662245e2fc3d"
- },
- {
- "url": "images/themes/default/OfferedReplicationSet.png",
- "revision": "adc078de3c9e353b75640c2e180d20e6"
- },
- {
- "url": "images/themes/default/OfferedSubscription.png",
- "revision": "768fc20465c6354398625c4ed5c85cb4"
- },
- {
- "url": "images/themes/default/Open.png",
- "revision": "92bb01a30f897095adb2f98c0036b9e9"
- },
- {
- "url": "images/themes/default/Operator.png",
- "revision": "fb73b5a1f6499159043e5b20dc3285db"
- },
- {
- "url": "images/themes/default/OperatorClass.png",
- "revision": "a9b82cc57bf520190315ddbc833e64c7"
- },
- {
- "url": "images/themes/default/OperatorClasses.png",
- "revision": "b94fc3a6153d8fb2e261ec454d69a252"
- },
- {
- "url": "images/themes/default/Operators.png",
- "revision": "c5cb1662b9cbf877de8cb08d0c8bc4cb"
- },
- {
- "url": "images/themes/default/Paste.png",
- "revision": "db9d9333b530c266bab387ae076a5ada"
- },
- {
- "url": "images/themes/default/Path.png",
- "revision": "f888ffe2c6ab9c59d45ee07ae6199f4a"
- },
- {
- "url": "images/themes/default/Paths.png",
- "revision": "737c12988806ad60b5a5aec244920709"
- },
- {
- "url": "images/themes/default/PrimaryKey.png",
- "revision": "d0744174f9db9929b5be155c9f603e01"
- },
- {
- "url": "images/themes/default/Privileges.png",
- "revision": "1f27241c0f520a279d3665028024b45e"
- },
- {
- "url": "images/themes/default/Processes.png",
- "revision": "bf5538bb0bd23ed8c209997766dac284"
- },
- {
- "url": "images/themes/default/Property.png",
- "revision": "9bfdb2725bc9facafe90474d2c364c8f"
- },
- {
- "url": "images/themes/default/RaiseArgument.png",
- "revision": "e7f18a3dea3acd7e3333cd8f95e3fcce"
- },
- {
- "url": "images/themes/default/Record.png",
- "revision": "acd2ad85dbbd2bf5b71c0062b167b139"
- },
- {
- "url": "images/themes/default/Records.png",
- "revision": "878ff904362c9b59e2d6f6ac93ecc4b8"
- },
- {
- "url": "images/themes/default/Redo.png",
- "revision": "a169b03df76e87e44c45757f6a168e61"
- },
- {
- "url": "images/themes/default/Refresh.png",
- "revision": "cf51d096cc572377189c2bc884936b78"
- },
- {
- "url": "images/themes/default/RemoveArgument.png",
- "revision": "8d804ee75dfd7b8f3ac98b218a847d54"
- },
- {
- "url": "images/themes/default/Replication.png",
- "revision": "cdd35ed8aa98e9b0d356effb0d74548b"
- },
- {
- "url": "images/themes/default/ReplicationSets.png",
- "revision": "7d5e0bff7082704171013afd322821d4"
- },
- {
- "url": "images/themes/default/Restore.png",
- "revision": "94b8007abc4354fd4cdbdbcd6087bea7"
- },
- {
- "url": "images/themes/default/Roles.png",
- "revision": "f1c25bb9e2a4eb52d9c6ea52545ede2d"
- },
- {
- "url": "images/themes/default/Rule.png",
- "revision": "565c4b37066f23c5a08d428f2592ee7b"
- },
- {
- "url": "images/themes/default/Rules.png",
- "revision": "18fed3c727afc31e40941828697047ad"
- },
- {
- "url": "images/themes/default/Save.png",
- "revision": "b5a94436bc66832e0498de05bd72b23e"
- },
- {
- "url": "images/themes/default/Schedule.png",
- "revision": "e2af41bef5d952cb6887723bc3e5921c"
- },
- {
- "url": "images/themes/default/Schedules.png",
- "revision": "2b7a924ed6a9074d4102a547772750bc"
- },
- {
- "url": "images/themes/default/Schema.png",
- "revision": "18b2e143c60c9ef3813032bb45310e67"
- },
- {
- "url": "images/themes/default/Schemas.png",
- "revision": "b9fe50541e03c0b6e503b4ac1e65ddf1"
- },
- {
- "url": "images/themes/default/Search.png",
- "revision": "9cf1fe46d6b8fd3ba257d46a3d05965d"
- },
- {
- "url": "images/themes/default/Sequence.png",
- "revision": "4bfa8c4668036788458732d85630f931"
- },
- {
- "url": "images/themes/default/Sequences.png",
- "revision": "c4bb32230118c69cf6bab8617ef62b16"
- },
- {
- "url": "images/themes/default/Server.png",
- "revision": "bf4a2c360541176e03505124830cddac"
- },
- {
- "url": "images/themes/default/Servers.png",
- "revision": "07681bcc17ebc43645d6c1796f5df219"
- },
- {
- "url": "images/themes/default/SqlEditor.png",
- "revision": "df73ed3b7b0a31d266d97f97d5ac5c5a"
- },
- {
- "url": "images/themes/default/Statistics.png",
- "revision": "b6d59a3d2b8ad767c54305bc91a8243a"
- },
- {
- "url": "images/themes/default/Step.png",
- "revision": "892be7a355b19ffdb0ce39483cd4b6c1"
- },
- {
- "url": "images/themes/default/Steps.png",
- "revision": "5f28c19fac73bc0e869caed580a28457"
- },
- {
- "url": "images/themes/default/Stop.png",
- "revision": "ef7050f86e5ace6f4c026057beca7b91"
- },
- {
- "url": "images/themes/default/Subscriptions.png",
- "revision": "065f6490b63a46edee2162a6a76a9131"
- },
- {
- "url": "images/themes/default/T.png",
- "revision": "fe196453a6e822e7ebbd23692b35fd5e"
- },
- {
- "url": "images/themes/default/Table.png",
- "revision": "edd7db39026ec7c3d78284a319198b8d"
- },
- {
- "url": "images/themes/default/Tables.png",
- "revision": "84533f1145926e2d71aafaa4ca1eb1ac"
- },
- {
- "url": "images/themes/default/Tablespace.png",
- "revision": "4014487f76df092d3f57b6a90a6c96a0"
- },
- {
- "url": "images/themes/default/Tablespaces.png",
- "revision": "7d2334e497eee6e5719b25dfa39cfe66"
- },
- {
- "url": "images/themes/default/title_blue.png",
- "revision": "6987da08785938281c0cef64a08e3263"
- },
- {
- "url": "images/themes/default/title.png",
- "revision": "27762f17ee6301aac5bb3521d34e142b"
- },
- {
- "url": "images/themes/default/Tminus.png",
- "revision": "eb42ed7ec1597a0a9976fb4198a7ee71"
- },
- {
- "url": "images/themes/default/Tplus.png",
- "revision": "fcfd867d96fa1908bd165c97f4099e74"
- },
- {
- "url": "images/themes/default/Trigger.png",
- "revision": "f827a98b8f30eefac6f9ab47d6ca1f16"
- },
- {
- "url": "images/themes/default/TriggerFunction.png",
- "revision": "9337acb5c8b57422cd0aab291aa706bb"
- },
- {
- "url": "images/themes/default/TriggerFunctions.png",
- "revision": "5dc7b60313a7a4f3598050afbddad7d2"
- },
- {
- "url": "images/themes/default/Triggers.png",
- "revision": "6644a0ddffc0487230295acd19de296c"
- },
- {
- "url": "images/themes/default/Type.png",
- "revision": "952a9dae51878f6869b24527bca77b49"
- },
- {
- "url": "images/themes/default/Types.png",
- "revision": "0f1e8651d2422952d224d1657442cc42"
- },
- {
- "url": "images/themes/default/Undo.png",
- "revision": "a60bb9589277159b06882458fc54e1a9"
- },
- {
- "url": "images/themes/default/UniqueConstraint.png",
- "revision": "96ce5e94257ba8115ffb5956e3ed3296"
- },
- {
- "url": "images/themes/default/User.png",
- "revision": "746e073e551917a29630184eace87c8e"
- },
- {
- "url": "images/themes/default/UserGroup.png",
- "revision": "735113096adc5e5a8299a6f6f09c721d"
- },
- {
- "url": "images/themes/default/UserGroups.png",
- "revision": "76c595fe16835a3bf582d0278828fc49"
- },
- {
- "url": "images/themes/default/Users.png",
- "revision": "6dda662436c3178b2a51c306edc1cc89"
- },
- {
- "url": "images/themes/default/Variables.png",
- "revision": "c5b6e5d13e4d159cf5893a0abb7cb9df"
- },
- {
- "url": "images/themes/default/View.png",
- "revision": "2479afdac6324e368251f9d436a86db0"
- },
- {
- "url": "images/themes/default/Views.png",
- "revision": "a8a50a05e97c59f0b6cbd8b123b0a4bd"
- },
- {
- "url": "images/themes/instaGIS/logo.png",
- "revision": "6987da08785938281c0cef64a08e3263"
- },
- {
- "url": "sw.dev.js",
- "revision": "febc92b3cdfdc35035a05df733c1dd98"
- },
- {
- "url": "themes/bootstrap/global.css",
- "revision": "97f9ebda1b8fb0e35ac35ffce8a5a960"
- },
- {
- "url": "themes/bootstrap/title.png",
- "revision": "6987da08785938281c0cef64a08e3263"
- },
- {
- "url": "themes/cappuccino/global.css",
- "revision": "faeff89daa358a9f481f42e32b77cfc3"
- },
- {
- "url": "themes/default/global.css",
- "revision": "c49fd9c93fd688a1445a17aa316b09bb"
- },
- {
- "url": "themes/global.css",
- "revision": "6cb6f33fdd8a22c780f6f968141c25a3"
- },
- {
- "url": "themes/gotar/global.css",
- "revision": "c5984fcad101f4b5507718d47780c026"
- },
- {
- "url": "vendor/codemirror/addon/comment/comment.js",
- "revision": "f2798285cd723a94866088997228accc"
- },
- {
- "url": "vendor/codemirror/addon/comment/continuecomment.js",
- "revision": "0374616c52803e22bace5dfabbc0e42f"
- },
- {
- "url": "vendor/codemirror/addon/dialog/dialog.css",
- "revision": "c89dce10b44d2882a024e7befc2b63f5"
- },
- {
- "url": "vendor/codemirror/addon/dialog/dialog.js",
- "revision": "904554fefae1a2beb0eaad467018af7a"
- },
- {
- "url": "vendor/codemirror/addon/display/autorefresh.js",
- "revision": "a8525e557b32a9ff330db311f444058b"
- },
- {
- "url": "vendor/codemirror/addon/display/fullscreen.css",
- "revision": "1a278e72b51528270f8ce9ec991929a1"
- },
- {
- "url": "vendor/codemirror/addon/display/fullscreen.js",
- "revision": "744a9a476b90075936f58ebb8b35ac85"
- },
- {
- "url": "vendor/codemirror/addon/display/panel.js",
- "revision": "45aa4eb1759d95e5169397df11a0cd79"
- },
- {
- "url": "vendor/codemirror/addon/display/placeholder.js",
- "revision": "0e8705231c3e7d910611e5cfcfc9145f"
- },
- {
- "url": "vendor/codemirror/addon/display/rulers.js",
- "revision": "38aaf61e611edfe39883f46f89b0b91b"
- },
- {
- "url": "vendor/codemirror/addon/edit/closebrackets.js",
- "revision": "7138da5915e3a819ea35126930b43402"
- },
- {
- "url": "vendor/codemirror/addon/edit/closetag.js",
- "revision": "eb8606363338598e8f3099392a7fa2ce"
- },
- {
- "url": "vendor/codemirror/addon/edit/continuelist.js",
- "revision": "cc1c2b9fd1184a4e8b845e4fb09707e1"
- },
- {
- "url": "vendor/codemirror/addon/edit/matchbrackets.js",
- "revision": "5a44e9d0ad6abe1afd67c48b70d1cbd2"
- },
- {
- "url": "vendor/codemirror/addon/edit/matchtags.js",
- "revision": "d0c67185e94d3a096299b680c0fca7d6"
- },
- {
- "url": "vendor/codemirror/addon/edit/trailingspace.js",
- "revision": "81d50700cee8c27e0e311de3650851bc"
- },
- {
- "url": "vendor/codemirror/addon/fold/brace-fold.js",
- "revision": "c4850e56d89da48a8625e13ed9a076db"
- },
- {
- "url": "vendor/codemirror/addon/fold/comment-fold.js",
- "revision": "9b289797886789d2ce7f40e3f7408c9e"
- },
- {
- "url": "vendor/codemirror/addon/fold/foldcode.js",
- "revision": "67922ad2e2c384c5455bfcacdec393d8"
- },
- {
- "url": "vendor/codemirror/addon/fold/foldgutter.css",
- "revision": "38bb68770b6f7ebaa7adea770a68e0b1"
- },
- {
- "url": "vendor/codemirror/addon/fold/foldgutter.js",
- "revision": "2e6a4ca9c0f057daaecbc330d8f96bc0"
- },
- {
- "url": "vendor/codemirror/addon/fold/indent-fold.js",
- "revision": "5017f49481f30946bd4229a6d05d5fcc"
- },
- {
- "url": "vendor/codemirror/addon/fold/markdown-fold.js",
- "revision": "6e3228db96bbadbb93c79922ecd88ce0"
- },
- {
- "url": "vendor/codemirror/addon/fold/xml-fold.js",
- "revision": "b88e73a8e7bdc8b032adfd5047dfe2c5"
- },
- {
- "url": "vendor/codemirror/addon/hint/anyword-hint.js",
- "revision": "736f4c0aa67db12cf39097f3d1790c8b"
- },
- {
- "url": "vendor/codemirror/addon/hint/css-hint.js",
- "revision": "4958c441a7cdf2d39fa6c8bd4b340168"
- },
- {
- "url": "vendor/codemirror/addon/hint/html-hint.js",
- "revision": "51364bfc06c261a20b9ced6606db9580"
- },
- {
- "url": "vendor/codemirror/addon/hint/javascript-hint.js",
- "revision": "fe11e9d0e373480aa61af6ae86c04dc1"
- },
- {
- "url": "vendor/codemirror/addon/hint/show-hint.css",
- "revision": "49647712414ff96d5846de9736b5dbd3"
- },
- {
- "url": "vendor/codemirror/addon/hint/show-hint.js",
- "revision": "2fa9552bd0d701cac634055d17bb130a"
- },
- {
- "url": "vendor/codemirror/addon/hint/sql-hint.js",
- "revision": "f66526ad34eaaeee2dca6282961808a8"
- },
- {
- "url": "vendor/codemirror/addon/hint/xml-hint.js",
- "revision": "65cf0f4e6ce510f4a189a0b87d943b8c"
- },
- {
- "url": "vendor/codemirror/addon/lint/coffeescript-lint.js",
- "revision": "140f1a44841627e860cafd955e89f4e7"
- },
- {
- "url": "vendor/codemirror/addon/lint/css-lint.js",
- "revision": "6a6166008cb94a6d62e05dc2cab7fc16"
- },
- {
- "url": "vendor/codemirror/addon/lint/html-lint.js",
- "revision": "4ce658b4b1c2cacb8a2685effa0ed4eb"
- },
- {
- "url": "vendor/codemirror/addon/lint/javascript-lint.js",
- "revision": "3db1c5d6629bde3e0a4a694c5cd94065"
- },
- {
- "url": "vendor/codemirror/addon/lint/json-lint.js",
- "revision": "dcfd194ca63e175996aaea2b3a58b598"
- },
- {
- "url": "vendor/codemirror/addon/lint/lint.css",
- "revision": "80cbf240f7114fb23e506da29cced118"
- },
- {
- "url": "vendor/codemirror/addon/lint/lint.js",
- "revision": "16098bd4d5e62f123cbc4482622e1360"
- },
- {
- "url": "vendor/codemirror/addon/lint/yaml-lint.js",
- "revision": "eabad9dfc99d98d6995c37fce194c28c"
- },
- {
- "url": "vendor/codemirror/addon/merge/merge.css",
- "revision": "d4009e57cbbb2c969147cf233671ba42"
- },
- {
- "url": "vendor/codemirror/addon/merge/merge.js",
- "revision": "001c710b643ececdbaf65328bb3419fc"
- },
- {
- "url": "vendor/codemirror/addon/mode/loadmode.js",
- "revision": "f8291cb1ca96e29af58def213012655a"
- },
- {
- "url": "vendor/codemirror/addon/mode/multiplex_test.js",
- "revision": "37963861dd6e41a530a6f84c2b17bdf7"
- },
- {
- "url": "vendor/codemirror/addon/mode/multiplex.js",
- "revision": "b132b004f352bf044cd80a9f55731147"
- },
- {
- "url": "vendor/codemirror/addon/mode/overlay.js",
- "revision": "4f8e4dcaeb7c237cbe4f1f69972cdc8a"
- },
- {
- "url": "vendor/codemirror/addon/mode/simple.js",
- "revision": "eed15e8b955aaee880af0c819b38fa25"
- },
- {
- "url": "vendor/codemirror/addon/runmode/colorize.js",
- "revision": "c8fb49ed714798e04bc3d0289b19efa4"
- },
- {
- "url": "vendor/codemirror/addon/runmode/runmode-standalone.js",
- "revision": "aa4a42bca69b6f096a18cd51203afe6e"
- },
- {
- "url": "vendor/codemirror/addon/runmode/runmode.js",
- "revision": "2c0ddde09a9f1f8f5dc9d4f67f03d2f2"
- },
- {
- "url": "vendor/codemirror/addon/runmode/runmode.node.js",
- "revision": "f3c8c9b85bbeecf3c873e52d3783f39b"
- },
- {
- "url": "vendor/codemirror/addon/scroll/annotatescrollbar.js",
- "revision": "87198e00de438bb7f9afe2e55b6cb4a3"
- },
- {
- "url": "vendor/codemirror/addon/scroll/scrollpastend.js",
- "revision": "92a24e9251be0dc620c11cb61919293f"
- },
- {
- "url": "vendor/codemirror/addon/scroll/simplescrollbars.css",
- "revision": "0352ba51fd6a422fe6cc44925e33ad88"
- },
- {
- "url": "vendor/codemirror/addon/scroll/simplescrollbars.js",
- "revision": "13948e6ef35e3c3d2c65de096af58721"
- },
- {
- "url": "vendor/codemirror/addon/search/jump-to-line.js",
- "revision": "cf5f2c65e9c8e26841923b5e1a6bf611"
- },
- {
- "url": "vendor/codemirror/addon/search/match-highlighter.js",
- "revision": "ace658d3aaf9d8ae9895ff97dd9eb5ca"
- },
- {
- "url": "vendor/codemirror/addon/search/matchesonscrollbar.css",
- "revision": "00ea2770c568a848190bcf52e4241276"
- },
- {
- "url": "vendor/codemirror/addon/search/matchesonscrollbar.js",
- "revision": "b7dfa5fd6a57e306bf7ce99542819883"
- },
- {
- "url": "vendor/codemirror/addon/search/search.js",
- "revision": "1e2c6bec0a25d4e7dea128f048b08931"
- },
- {
- "url": "vendor/codemirror/addon/search/searchcursor.js",
- "revision": "fa73eef9cf913ee2d766c8501a582a0c"
- },
- {
- "url": "vendor/codemirror/addon/selection/active-line.js",
- "revision": "30fc5d6c1847dc207bd0e38c0e97e789"
- },
- {
- "url": "vendor/codemirror/addon/selection/mark-selection.js",
- "revision": "c0240b66ae29bda93e80be5e60c9ed8d"
- },
- {
- "url": "vendor/codemirror/addon/selection/selection-pointer.js",
- "revision": "ae80c5e4d54f8ccb07c6373e66f523a4"
- },
- {
- "url": "vendor/codemirror/addon/tern/tern.css",
- "revision": "4d57ced774b5f3fa9f00dfa398e74819"
- },
- {
- "url": "vendor/codemirror/addon/tern/tern.js",
- "revision": "f6c76d9ec32faccbb8cf23b7a2f6f917"
- },
- {
- "url": "vendor/codemirror/addon/tern/worker.js",
- "revision": "6866b3b6f236f5ae8b89e15b5cf167e1"
- },
- {
- "url": "vendor/codemirror/addon/wrap/hardwrap.js",
- "revision": "359a2bb5a43f724a09f2adbbfe40dd86"
- },
- {
- "url": "vendor/codemirror/lib/codemirror.css",
- "revision": "fc217d502b05f65616356459c0ec1d62"
- },
- {
- "url": "vendor/codemirror/lib/codemirror.js",
- "revision": "82b9491f7e4ecd8ce57812ee3f99014f"
- },
- {
- "url": "vendor/codemirror/mode/meta.js",
- "revision": "3eb5b33a2d2022c4de839b1980511f54"
- },
- {
- "url": "vendor/codemirror/mode/sql/index.html",
- "revision": "91f74a33b9232251058426d1e16e9dce"
- },
- {
- "url": "vendor/codemirror/mode/sql/sql.js",
- "revision": "d21c7a0e713132429cf903be42310a89"
- },
- {
- "url": "vendor/datatables/datatables.min.css",
- "revision": "80026250946cff8a6fc0da995aa02566"
- },
- {
- "url": "vendor/datatables/datatables.min.js",
- "revision": "c1e3d63eab27d1aa7beb191d32340bba"
- },
- {
- "url": "vendor/datatables/images/sort_asc_disabled.png",
- "revision": "d7dc10c78f23615d328581aebcd805eb"
- },
- {
- "url": "vendor/datatables/images/sort_asc.png",
- "revision": "9326ad44ae4bebdedd141e7a53c2a730"
- },
- {
- "url": "vendor/datatables/images/sort_both.png",
- "revision": "9a6486086d09bb38cf66a57cc559ade3"
- },
- {
- "url": "vendor/datatables/images/sort_desc_disabled.png",
- "revision": "bda51e15154a18257b4f955a222fd66f"
- },
- {
- "url": "vendor/datatables/images/sort_desc.png",
- "revision": "1fc418e33fd5a687290258b23fac4e98"
- },
- {
- "url": "vendor/images/datatables/sort_asc_disabled.png",
- "revision": "d7dc10c78f23615d328581aebcd805eb"
- },
- {
- "url": "vendor/images/datatables/sort_asc.png",
- "revision": "9326ad44ae4bebdedd141e7a53c2a730"
- },
- {
- "url": "vendor/images/datatables/sort_both.png",
- "revision": "9a6486086d09bb38cf66a57cc559ade3"
- },
- {
- "url": "vendor/images/datatables/sort_desc_disabled.png",
- "revision": "bda51e15154a18257b4f955a222fd66f"
- },
- {
- "url": "vendor/images/datatables/sort_desc.png",
- "revision": "1fc418e33fd5a687290258b23fac4e98"
- },
- {
- "url": "vendor/jquery/images/ui-icons_444444_256x240.png",
- "revision": "f83a8b8886694eaef4505dd80af7a430"
- },
- {
- "url": "vendor/jquery/jquery-3.4.1.min.js",
- "revision": "220afd743d9e9643852e31a135a9f3ae"
- },
- {
- "url": "vendor/jquery/jquery-ui.min.css",
- "revision": "81188e0c65a0a25d5ebfa7356bf81884"
- },
- {
- "url": "vendor/jquery/jquery-ui.min.js",
- "revision": "8cbf62fc02083afe12a90787cb8f9e3c"
- },
- {
- "url": "vendor/jstree/jstree.js",
- "revision": "66cefd86e219c19be9a32b4a9f6f70b2"
- },
- {
- "url": "vendor/jstree/jstree.min.js",
- "revision": "dc4a6494cf51022fa4a8541d13837166"
- },
- {
- "url": "vendor/jstree/themes/default-dark/32px.png",
- "revision": "eebaf260766f5e0e773f53d3ea4f3e4d"
- },
- {
- "url": "vendor/jstree/themes/default-dark/40px.png",
- "revision": "51286e68b083696edaf4f9fc577e2a2d"
- },
- {
- "url": "vendor/jstree/themes/default-dark/style.css",
- "revision": "6791bf1b92e95d10c8445ac010c429df"
- },
- {
- "url": "vendor/jstree/themes/default-dark/style.min.css",
- "revision": "0236b108a8deddca3b0fae061147a0a6"
- },
- {
- "url": "vendor/jstree/themes/default-dark/throbber.gif",
- "revision": "62be6ed2b189444b472b8000dc187240"
- },
- {
- "url": "vendor/jstree/themes/default/32px.png",
- "revision": "db49c8de4f267eede40a9a8843efcdec"
- },
- {
- "url": "vendor/jstree/themes/default/40px.png",
- "revision": "1f075735090412ed7eb8077d819b19c6"
- },
- {
- "url": "vendor/jstree/themes/default/style.css",
- "revision": "0cf1fc2eadda48373db31569a791ae29"
- },
- {
- "url": "vendor/jstree/themes/default/style.min.css",
- "revision": "8f65ba57d02eadb0c75d0623190d1ee8"
- },
- {
- "url": "vendor/jstree/themes/default/throbber.gif",
- "revision": "9ed4669f524bec38319be63a2ee4ba26"
- },
- {
- "url": "vendor/jstree/themes/phppgadmin/32px.png",
- "revision": "230b82ca8561d9b4111ba8102cae2bb6"
- },
- {
- "url": "vendor/jstree/themes/phppgadmin/40px.png",
- "revision": "1f075735090412ed7eb8077d819b19c6"
- },
- {
- "url": "vendor/jstree/themes/phppgadmin/style.css",
- "revision": "f5a9ca92f2b904247c7b83ce4b054481"
- },
- {
- "url": "vendor/jstree/themes/phppgadmin/style.min.css",
- "revision": "8f65ba57d02eadb0c75d0623190d1ee8"
- },
- {
- "url": "vendor/jstree/themes/phppgadmin/throbber.gif",
- "revision": "9ed4669f524bec38319be63a2ee4ba26"
- },
- {
- "url": "vendor/less.min.js",
- "revision": "df377f04717c4d59bfdec987dff69a0e"
- },
- {
- "url": "vendor/select2/css/select2.css",
- "revision": "887b34f2cf309344f3e0b96aaab2b15d"
- },
- {
- "url": "vendor/select2/css/select2.min.css",
- "revision": "d44571114a90b9226cd654d3c7d9442c"
- },
- {
- "url": "vendor/select2/js/i18n/ar.js",
- "revision": "a8bb27ec698c86bde72c8a6f13a8e9b4"
- },
- {
- "url": "vendor/select2/js/i18n/az.js",
- "revision": "498dc667b34eb0fddc31c4e92330d1aa"
- },
- {
- "url": "vendor/select2/js/i18n/bg.js",
- "revision": "89cba4df3c8694fcb33098dd1646cac1"
- },
- {
- "url": "vendor/select2/js/i18n/ca.js",
- "revision": "2eaad4eb1950a0d542812c58d30c93dd"
- },
- {
- "url": "vendor/select2/js/i18n/cs.js",
- "revision": "a68bcd293adcd6d9ac0b8527c9b39189"
- },
- {
- "url": "vendor/select2/js/i18n/da.js",
- "revision": "cbf897a0ae53b0cffbbe3f50d8b1b136"
- },
- {
- "url": "vendor/select2/js/i18n/de.js",
- "revision": "366d0aacb55f4929cc50bb977abec674"
- },
- {
- "url": "vendor/select2/js/i18n/el.js",
- "revision": "5629ce65500f96c62414a27c6eaed62c"
- },
- {
- "url": "vendor/select2/js/i18n/en.js",
- "revision": "05649b26c08630d2b703bc1e9ef93c7b"
- },
- {
- "url": "vendor/select2/js/i18n/es.js",
- "revision": "dc9dbf9d65df3f69e6b6d650c97bd967"
- },
- {
- "url": "vendor/select2/js/i18n/et.js",
- "revision": "c3953fb90b6bb9669697f5f12e802a66"
- },
- {
- "url": "vendor/select2/js/i18n/eu.js",
- "revision": "11b925456433eaab07e35b8dca7046f5"
- },
- {
- "url": "vendor/select2/js/i18n/fa.js",
- "revision": "98e52839b583e1ca66f4360a4f43f9b0"
- },
- {
- "url": "vendor/select2/js/i18n/fi.js",
- "revision": "659847deefdcfd7e4f8f2ed924d360f4"
- },
- {
- "url": "vendor/select2/js/i18n/fr.js",
- "revision": "b06a3340de45535358a0bc33fa2b9739"
- },
- {
- "url": "vendor/select2/js/i18n/gl.js",
- "revision": "78a87f7c0a519118fbe4f583ff2a3b3f"
- },
- {
- "url": "vendor/select2/js/i18n/he.js",
- "revision": "222d90ee0344ee8beeb5fb1835c93c76"
- },
- {
- "url": "vendor/select2/js/i18n/hi.js",
- "revision": "116a90b7111b953cd092e30a034d6913"
- },
- {
- "url": "vendor/select2/js/i18n/hr.js",
- "revision": "e1d2c70b4df50d98d2c35856804d38be"
- },
- {
- "url": "vendor/select2/js/i18n/hu.js",
- "revision": "db45641f10b2412801d5872e40ef7c2f"
- },
- {
- "url": "vendor/select2/js/i18n/id.js",
- "revision": "6ee6c9c64b945bb8a0f42d247ee0d868"
- },
- {
- "url": "vendor/select2/js/i18n/is.js",
- "revision": "808c7d47acb59537728bc74fdeb0ad0d"
- },
- {
- "url": "vendor/select2/js/i18n/it.js",
- "revision": "bae1661dbb77c15384655faffc10a3fa"
- },
- {
- "url": "vendor/select2/js/i18n/ja.js",
- "revision": "19cf1ce8a03de84ea668e8fec99a8c80"
- },
- {
- "url": "vendor/select2/js/i18n/km.js",
- "revision": "6074a9c5575cfaa8b3c1dccdb3133dde"
- },
- {
- "url": "vendor/select2/js/i18n/ko.js",
- "revision": "74b17541834ff1bb8c5651d321bd2281"
- },
- {
- "url": "vendor/select2/js/i18n/lt.js",
- "revision": "a0783b1bd1594b7c584564cc68b6c6e5"
- },
- {
- "url": "vendor/select2/js/i18n/lv.js",
- "revision": "07fe2a580d17cba308a972fdabbcaea0"
- },
- {
- "url": "vendor/select2/js/i18n/mk.js",
- "revision": "4986d7fc3ff3ed9a5f8af646f5ca587b"
- },
- {
- "url": "vendor/select2/js/i18n/ms.js",
- "revision": "23e7b436957996a10f451bc8d688764d"
- },
- {
- "url": "vendor/select2/js/i18n/nb.js",
- "revision": "137e184004aaec03977a4caf1cca30f4"
- },
- {
- "url": "vendor/select2/js/i18n/nl.js",
- "revision": "c363ace8aa0501526c17a61ab2fb854f"
- },
- {
- "url": "vendor/select2/js/i18n/pl.js",
- "revision": "76465b54a6b0eb6b2204143a0827d0ca"
- },
- {
- "url": "vendor/select2/js/i18n/pt-BR.js",
- "revision": "9efbbac4fda8d23225df16dddecb2718"
- },
- {
- "url": "vendor/select2/js/i18n/pt.js",
- "revision": "5d6ccc53b347b155e1af6afb1bc5fe94"
- },
- {
- "url": "vendor/select2/js/i18n/ro.js",
- "revision": "1ddc2b9980dcdd1008761149e0349a8b"
- },
- {
- "url": "vendor/select2/js/i18n/ru.js",
- "revision": "d83609abf2e0ba927b9ec472bf47e180"
- },
- {
- "url": "vendor/select2/js/i18n/sk.js",
- "revision": "a0f1a818d09228a87ae105d09fdee80c"
- },
- {
- "url": "vendor/select2/js/i18n/sr-Cyrl.js",
- "revision": "2f3047aad49eedd75dd5dacc092a7e02"
- },
- {
- "url": "vendor/select2/js/i18n/sr.js",
- "revision": "157bc6eb978e9a35985bc655d09ac258"
- },
- {
- "url": "vendor/select2/js/i18n/sv.js",
- "revision": "2b21bb3f61100fd656b41d16e25e2f80"
- },
- {
- "url": "vendor/select2/js/i18n/th.js",
- "revision": "2a4ece4c4355b7efd9e9591a53b3edc1"
- },
- {
- "url": "vendor/select2/js/i18n/tr.js",
- "revision": "c1925d8817db211164145dc47b18d333"
- },
- {
- "url": "vendor/select2/js/i18n/uk.js",
- "revision": "3d56f311192daf9ce44246c52777789f"
- },
- {
- "url": "vendor/select2/js/i18n/vi.js",
- "revision": "3520aa7bdea8234161b2c18f631417a0"
- },
- {
- "url": "vendor/select2/js/i18n/zh-CN.js",
- "revision": "419002d3c6c10ec9618ce6275c1057d1"
- },
- {
- "url": "vendor/select2/js/i18n/zh-TW.js",
- "revision": "c021537edf2c555f149509150ff986e3"
- },
- {
- "url": "vendor/select2/js/select2.full.js",
- "revision": "a95323cb476000ee17d7a252786df963"
- },
- {
- "url": "vendor/select2/js/select2.full.min.js",
- "revision": "da607360bcc65284a197ada3d68d5439"
- },
- {
- "url": "vendor/select2/js/select2.js",
- "revision": "b8f26dd6733ccc6263cb273e8f821dab"
- },
- {
- "url": "vendor/select2/js/select2.min.js",
- "revision": "e87ca4c3554f7b9e693605ce12d3a234"
- }
-]);
-
- console.log(`Yay! Workbox is loaded 🎉`);
-
- workbox.routing.registerRoute(
- /\/assets\/css/,
- new workbox.strategies.CacheFirst({
- cacheName: 'vendor-local-css',
- plugins: [
- new workbox.cacheableResponse.CacheableResponse({ statuses: [0, 200] }),
- ],
- })
- );
- workbox.routing.registerRoute(
- /\/assets\/js/,
- new workbox.strategies.CacheFirst({
- cacheName: 'vendor-local-js',
- plugins: [
- new workbox.cacheableResponse.CacheableResponse({ statuses: [0, 200] }),
- ],
- })
- );
- workbox.routing.registerRoute(
- /\/img/,
- new workbox.strategies.CacheFirst({
- cacheName: 'image-files',
- plugins: [
- new workbox.cacheableResponse.CacheableResponse({ statuses: [0, 200] }),
- ],
- })
- );
-
- // Cache the Google Fonts stylesheets with a stale-while-revalidate strategy.
- workbox.routing.registerRoute(
- /^https:\/\/fonts\.googleapis\.com/,
- new workbox.strategies.StaleWhileRevalidate({
- cacheName: 'google-fonts-stylesheets',
- })
- );
-
- // Cache the underlying font files with a cache-first strategy for 1 year.
- workbox.routing.registerRoute(
- /^https:\/\/fonts\.gstatic\.com/,
- new workbox.strategies.CacheFirst({
- cacheName: 'google-fonts-webfonts',
- plugins: [
- new workbox.cacheableResponse.CacheableResponse({ statuses: [0, 200] }),
- ],
- })
- );
-} else {
- console.log(`Boo! Workbox didn't load 😬`);
-}
+registerRoute(
+ ({ url }) =>
+ url.origin === 'https://fonts.googleapis.com' ||
+ url.origin === 'https://fonts.gstatic.com',
+ new StaleWhileRevalidate({
+ cacheName: 'google-fonts',
+ plugins: [new ExpirationPlugin({ maxEntries: 20 })],
+ })
+);
diff --git a/assets/templates/browser.twig b/assets/templates/browser.twig
index 7754ae38..a03f79a9 100644
--- a/assets/templates/browser.twig
+++ b/assets/templates/browser.twig
@@ -2,7 +2,7 @@
<html xml:lang="{{lang.applocale}}" lang="{{lang.applocale}}" dir="{{lang.applangdir}}">
<head data-headertemplate="{{headertemplate}}">
- <link rel="stylesheet" href="{{subfolder}}/assets/vendor/jstree/themes/phppgadmin/style.css" /> {% include 'components/common_head.twig' %}
+ {% include 'components/common_head.twig' %}
<script src="{{subfolder}}/assets/vendor/jstree/jstree.min.js"></script>
<style type="text/css">
@@ -15,55 +15,8 @@
</head>
<body class="browser">
-
- <div dir="{{lang.applangdir}}">
-
- <div class="logo">
- <a href="{{subfolder}}/" target="_parent">{{appName}}</a>
- </div>
- <div class="refreshTree">
- <a href="{{subfolder}}/src/views/browser" target="browser">
- <img src="{{icon.Refresh}}" alt="{{lang.strrefresh}}" title="{{lang.strrefresh}}" />
- </a>
- </div>
-
- <div id="lazy" class="demo"></div>
-
- </div>
-
- <script>
- window.jsTree = $('#lazy').jstree({
- "state": {
- "key": "jstree"
- },
- "plugins": ["state"],
- 'core': {
- 'data': {
- "url": function (node) {
- if (node.id === '#') {
- return '{{subfolder}}/src/views/browser?action=tree';
- } else {
- return node.original.url;
- }
- }
- }
- }
- });
- if(parent.frames && parent.frames.detail) {
- parent.frames.detail.jsTree=window.jsTree;
- }
-
- $('#lazy').on("activate_node.jstree", function (e, data) {
- if (window.parent.frames.detail) {
- window.parent.frames.detail.location.replace(data.node.a_attr.href);
- }
- });
- $('#lazy').on("loaded.jstree", function (e, data) {
- $('#lazy').data('jstree').show_dots();
- });
- $('#lazy').on('click','.jstree-anchor',function(){
- console.log(this);
- });
+{% include 'components/browser_body.twig' %}
+ <script src="{{subfolder}}/assets/js/jstree_events.js">
</script>
</body>
diff --git a/assets/templates/components/browser_body.twig b/assets/templates/components/browser_body.twig
new file mode 100644
index 00000000..dbc532fa
--- /dev/null
+++ b/assets/templates/components/browser_body.twig
@@ -0,0 +1,16 @@
+
+ <div dir="{{lang.applangdir}}">
+
+ <div class="logo">
+ <a href="{{subfolder}}/" target="_parent">{{appName}}</a>
+ </div>
+ <div class="refreshTree" id="refreshTree">
+ <a href="#">
+ <img src="{{icon.Refresh}}" alt="{{lang.strrefresh}}" title="{{lang.strrefresh}}" />
+ </a>
+ </div>
+
+ <div id="lazy" class="demo"></div>
+
+ </div>
+
diff --git a/assets/templates/components/common_body.twig b/assets/templates/components/common_body.twig
new file mode 100644
index 00000000..81028d83
--- /dev/null
+++ b/assets/templates/components/common_body.twig
@@ -0,0 +1,22 @@
+<body data-controller="{{ controller_name }}" class="{{ bodyClass }}" {{ onload }}>
+ {% if includeJsTree %}
+ <div class="flexbox_wrapper">
+ <div id="masking_overlay"></div>
+ <div id="browser_container">
+
+ <div class="browser_container">
+ <div class="browser" name="browser" id="browser">
+ {% include 'components/browser_body.twig' %}
+ <script src="{{ subfolder }}/assets/js/jstree_events.js"></script>
+ </div>
+ </div></div>
+ <div class="splitter">
+ </div>
+ <div id="detail" class="detail_container" >
+
+
+ {% else %}
+ {#<iframe src="{{subfolder}}/src/views/browser" name="browser" id="browser" class="browser_container" frameborder="0" />
+ <p>Your browser does not support iframes.</p>
+ </iframe>#}
+ {% endif %}
diff --git a/assets/templates/components/common_head.twig b/assets/templates/components/common_head.twig
index 3a44349a..514d3d87 100644
--- a/assets/templates/components/common_head.twig
+++ b/assets/templates/components/common_head.twig
@@ -1,5 +1,6 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
{% set development_assets = true %}
+ <link rel="stylesheet" href="{{subfolder}}/assets/vendor/jstree/themes/phppgadmin/style.css" />
<link rel="stylesheet" href="{{ subfolder }}/assets/themes/global.css" type="text/css" id="cssmain" />
<link rel="stylesheet" href="{{ subfolder }}/assets/themes/{{ theme }}/global.css" type="text/css" id="csstheme" />
<link rel="stylesheet" href="{{ subfolder }}/assets/vendor/jquery/jquery-ui.min.css" type="text/css" />
@@ -8,14 +9,22 @@
<script src="{{ subfolder }}/assets/vendor/jquery/jquery-3.4.1.min.js"></script>
<script src="{{ subfolder }}/assets/vendor/jquery/jquery-ui.min.js"></script>
+<script src="{{ subfolder }}/assets/vendor/jquery-resizable.js"></script>
+ <script src="{{ subfolder }}/assets/vendor/jstree/jstree.min.js"></script>
+ <style type="text/css">
+ .refreshTree { position: absolute; right: 0; z-index: 1000; }
+ .splitter {
+ background: url("{{subfolder}}/assets/images/vsizegrip.png") center center no-repeat #b0bec5 !important
+ }
+ </style>
{{
script|raw
}}<!-- prettier-ignore-start -->
<script>
- window.stateObj = {
+ globalThis.stateObj = {
{% for key, value in params %}
'{{key}}': "{{value}}",
{% endfor %}
@@ -27,10 +36,13 @@
path:"{{path}}",
query_string:"{{query_string}}",
strconfdropcred:"{{lang.strconfdropcred}}",
+ origin:globalThis.location.origin,
+ url:"{{url}}",
+ href:globalThis.location.href,
+ guessedSubfolder:(''+globalThis.location.pathname).replace("/{{path}}",''),
+ pathname:globalThis.location.pathname
};
- if (stateObj.reload !== "none" && window.jsTree) {
- window.jsTree.jstree('refresh')
- }
+
</script>
diff --git a/assets/templates/components/tabs.twig b/assets/templates/components/tabs.twig
index 9a4bb825..98b951ba 100644
--- a/assets/templates/components/tabs.twig
+++ b/assets/templates/components/tabs.twig
@@ -1,8 +1,8 @@
-<table class="tabs" data-controller="{{controller_name}}">
- <tr>
+<div class="tabs" data-controller="{{controller_name}}">
+
{% for tab in tabs %}
- <td style="width: {{width}};" class="tab {{tab.active}}">
+ <div class="tab {{tab.active}}">
<a href="{{tab.tablink}}">
{% if tab.iconurl %}
<span class="icon"><img src="{{tab.iconurl}}" alt="{{tab.title}}" /></span>
@@ -10,9 +10,10 @@
<span class="label">{{tab.title}}</span>
</a> {% if tab.helpurl %}
<a class="help" href="{{tab.helpurl}}" title="{{lang.strhelp}}" target="phppgadminhelp">{{lang.strhelpicon}}</a> {% endif %}
- </td>
+ </div>
{% endfor %}
- </tr>
-</table> \ No newline at end of file
+
+</div>
+<div class="clearfix">&nbsp;</div> \ No newline at end of file
diff --git a/assets/templates/iframe_view.twig b/assets/templates/deprecated.iframe_view.twig
index ee8f4d10..ee8f4d10 100644
--- a/assets/templates/iframe_view.twig
+++ b/assets/templates/deprecated.iframe_view.twig
diff --git a/assets/templates/footer.twig b/assets/templates/footer.twig
index 835dcdd9..d5c41e6d 100644
--- a/assets/templates/footer.twig
+++ b/assets/templates/footer.twig
@@ -1,7 +1,31 @@
{{script_footer|raw}} {% if print_bottom_link == true %}
<a data-footertemplate="{{footer_template}}" href="#" class="bottom_link">{{lang.strgotoppage}}</a> {% endif %}
+<script src="{{subfolder}}/assets/js/toplinks_behavior.js" type="text/javascript"></script>
<script src="{{subfolder}}/assets/js/footer_scripts.js" type="text/javascript"></script>
+<script type="text/javascript">
+var dir = '{{lang.applangdir}}';
+
+window.onpopstate = function (event) {
+ console.log('onpopstate', {
+ state: event.state
+ });
+ if (event.state && event.state.realurl) {
+ let ifr = document.getElementById('detail'),
+ realUrl=event.state.realurl,
+ detailLocation=ifr.contentWindow.location.href;
+ //console.log({detailLocation,realUrl});
+ ifr.contentWindow.location.replace(event.state.realurl);
+ }
+};
+if('serviceWorker' in navigator) {
+ navigator.serviceWorker.register('{{subfolder}}/assets/sw.dev.js').then(function(registration) {
+ console.log('Service Worker Registered');
+ }).catch(warn=>{
+ console.warn(warn);
+ })
+}
+</script>
</body>
</html> \ No newline at end of file
diff --git a/assets/templates/footer_iframe.twig b/assets/templates/footer_iframe.twig
index 5c2dfe3e..a958348c 100644
--- a/assets/templates/footer_iframe.twig
+++ b/assets/templates/footer_iframe.twig
@@ -1,44 +1,25 @@
<script type="text/javascript">
var dir = '{{lang.applangdir}}';
-jQuery('#browser_container').resizable({
- handles: (dir === 'ltr') ? "e" : "w",
- start: function () {
- jQuery('#masking_overlay').css('display', 'block');
- },
- stop: function () {
- jQuery('#masking_overlay').css('display', 'none');
- }
-});
+
window.onpopstate = function (event) {
console.log('onpopstate', {
state: event.state
});
if (event.state && event.state.realurl) {
- var ifr = document.getElementById('detail')
+ let ifr = document.getElementById('detail'),
+ realUrl=event.state.realurl,
+ detailLocation=ifr.contentWindow.location.href;
+ //console.log({detailLocation,realUrl});
ifr.contentWindow.location.replace(event.state.realurl);
}
};
if('serviceWorker' in navigator) {
- navigator.serviceWorker.register('assets/sw.dev.js').then(function(registration) {
+ navigator.serviceWorker.register('{{subdomain}}/assets/sw.dev.js').then(function(registration) {
console.log('Service Worker Registered');
}).catch(warn=>{
console.warn(warn);
})
}
-window.addEventListener("message", (event) => {
- const {origin,isTrusted,data}=event,browserIframe= document.getElementById('browser');
- if(!isTrusted||origin!==location.origin) {
- return;
- }
- if(data.reload_browser && browserIframe) {
- try {
- browserIframe.contentWindow.jsTree.jstree('refresh')
- }catch(err){
- console.warn(err);
- }
- }
- console.log(event);
-}, false);
</script>
</body>
diff --git a/assets/templates/intro_view.twig b/assets/templates/intro_view.twig
new file mode 100644
index 00000000..f6e2c16c
--- /dev/null
+++ b/assets/templates/intro_view.twig
@@ -0,0 +1,23 @@
+{% include 'header.twig' %}
+
+<body class="flexbox_body {{ lang.applangdir }}">
+
+
+ <div class="flexbox_wrapper">
+ <div id="masking_overlay"></div>
+ <div id="browser_container">
+ <div class="browser_container">
+ <div class="browser" name="browser" id="browser">
+ {% include 'components/browser_body.twig' %}
+ <script src="{{subfolder}}/assets/js/jstree_events.js"> </script>
+
+ </div>
+ </div>
+ </div>
+
+ <iframe src="{{ subfolder }}{{ url }}" name="detail" id="detail" class="detail_container" frameborder="0" />
+ </div>
+ {% include 'footer_iframe.twig' %}
+
+
+</body>
diff --git a/assets/themes/global.css b/assets/themes/global.css
index 214f7d41..d4b0e9a5 100644
--- a/assets/themes/global.css
+++ b/assets/themes/global.css
@@ -33,57 +33,98 @@ html body.sql_edit #sqlform #queryedition > .CodeMirror .CodeMirror-scroll .Code
html body.sql_edit #sqlform #queryedition #query {
min-height: 70px;
}
+html body #detail.detail_container,
html body.detailbody {
padding-top: 90px;
margin-left: 10px !important;
padding-bottom: 20px;
}
-html body.detailbody table.tabs {
+html body #detail.detail_container div.tabs,
+html body.detailbody div.tabs {
+ display: flex;
+ /* margin-top: 58px; */
+ /* width: 100%; */
+ flex: 2 1 1500px;
+ flex-direction: row;
+ position: relative;
+ right: 0;
+ top: 60px;
+}
+html body #detail.detail_container div.tabs .tab,
+html body.detailbody div.tabs .tab {
+ flex: 1 1 auto;
+ flex-direction: column;
+}
+html body #detail.detail_container > table.tabs,
+html body.detailbody > table.tabs {
position: fixed;
top: 58px;
margin-left: -10px;
z-index: 50;
}
-html body.detailbody table.tabs tbody tr td {
+html body #detail.detail_container > table.tabs tbody tr td,
+html body.detailbody > table.tabs tbody tr td {
white-space: nowrap;
}
+html body #detail.detail_container table,
+html body.detailbody table {
+ min-width: calc(100vw - 370px);
+}
+html body #detail.detail_container table#data td,
html body.detailbody table#data td {
white-space: nowrap;
}
+html body #detail.detail_container table#data td.opbutton1,
html body.detailbody table#data td.opbutton1,
+html body #detail.detail_container table#data td.opbutton2,
html body.detailbody table#data td.opbutton2,
+html body #detail.detail_container table#data td.opbutton3,
html body.detailbody table#data td.opbutton3 {
border: 0 none;
padding-left: 1px;
padding-right: 1px;
}
+html body #detail.detail_container table#data td.opbutton1 a,
html body.detailbody table#data td.opbutton1 a,
+html body #detail.detail_container table#data td.opbutton2 a,
html body.detailbody table#data td.opbutton2 a,
+html body #detail.detail_container table#data td.opbutton3 a,
html body.detailbody table#data td.opbutton3 a {
margin-left: 2px;
margin-right: 2px;
}
+html body #detail.detail_container table.will_be_datatable td,
html body.detailbody table.will_be_datatable td {
white-space: nowrap;
}
+html body #detail.detail_container table.will_be_datatable td.opbutton1,
html body.detailbody table.will_be_datatable td.opbutton1,
+html body #detail.detail_container table.will_be_datatable td.opbutton2,
html body.detailbody table.will_be_datatable td.opbutton2,
+html body #detail.detail_container table.will_be_datatable td.opbutton3,
html body.detailbody table.will_be_datatable td.opbutton3 {
border: 0 none;
padding-left: 1px;
padding-right: 1px;
}
+html body #detail.detail_container table.will_be_datatable td.opbutton1 a,
html body.detailbody table.will_be_datatable td.opbutton1 a,
+html body #detail.detail_container table.will_be_datatable td.opbutton2 a,
html body.detailbody table.will_be_datatable td.opbutton2 a,
+html body #detail.detail_container table.will_be_datatable td.opbutton3 a,
html body.detailbody table.will_be_datatable td.opbutton3 a {
margin-left: 2px;
margin-right: 2px;
}
+html body #detail.detail_container table.will_be_datatable td.comment,
html body.detailbody table.will_be_datatable td.comment {
white-space: normal;
}
+html body #detail.detail_container table tr.data1 td.opbutton1 a,
html body.detailbody table tr.data1 td.opbutton1 a,
+html body #detail.detail_container table tr.data2 td.opbutton2 a,
html body.detailbody table tr.data2 td.opbutton2 a,
+html body #detail.detail_container table tr.data3 td.opbutton3 a,
html body.detailbody table tr.data3 td.opbutton3 a {
-webkit-background-clip: border-box;
-webkit-background-origin: padding-box;
@@ -114,6 +155,29 @@ html body.detailbody table tr.data3 td.opbutton3 a {
white-space: nowrap;
color: #fff !important;
}
+html body #detail.detail_container {
+ padding-top: 0 !important;
+}
+html body #detail.detail_container .clearfix {
+ height: 61px;
+ clear: both;
+ display: block;
+ width: 40px;
+}
+html body #detail.detail_container table.tabs {
+ position: relative;
+ margin-right: -10px;
+}
+html body #detail.detail_container .topbar {
+ position: fixed;
+}
+html body #detail.detail_container .topbar .toplink {
+ width: 160px;
+ margin-right: 110px;
+}
+html body #detail.detail_container .trail {
+ position: fixed;
+}
html body .navlink li a {
-webkit-background-clip: border-box;
-webkit-background-origin: padding-box;
@@ -154,59 +218,91 @@ html body.sql_edit table.tabs {
html body.flexbox_body {
height: 100%;
margin: 0;
+ /*
+
+ & > .detail_container {
+ height: 100%;
+ width: 100%;
+ margin: 0px;
+ padding: 0px;
+ text-align: left;
+ float: left;
+ flex: 1 1 1300px;
+ }*/
+ /*
+ & > #browser_container {
+ height: 100%;
+ margin: 0px;
+ padding: 0px;
+ text-align: left;
+ float: left;
+ flex: 1 2 300px;
+
+ & > .browser_container {
+ height: 100%;
+ margin: 0px;
+ padding: 0px;
+ text-align: left;
+ float: left;
+ width: 100%;
+ }
+
+ &.ui-resizable {
+ width: 300px;
+ //flex: unset;
+ border-right: 8px solid #cfd8dc;
+
+ .ui-resizable-handle.ui-resizable-e {
+ width: 8px;
+ right: -8px;
+ background: #84a0ad;
+ top: 45%;
+ height: 50px;
+ }
+ }
+ }
+ */
}
html body.flexbox_body .flexbox_wrapper {
- display: flex;
height: 100%;
margin: 0;
+ display: flex;
+ flex-direction: row;
+ border: 1px solid silver;
+ overflow: hidden;
+ /* avoid browser level touch actions */
+ xtouch-action: none;
+}
+html body.flexbox_body .flexbox_wrapper #browser_container {
+ flex: 0 0 auto;
+ /* only manually resize */
+ width: 250px;
+ min-height: 200px;
+ min-width: 150px;
+ white-space: nowrap;
+ color: white;
}
-html body.flexbox_body .flexbox_wrapper .ui-resizable-helper {
- border: 2px dotted #00f;
-}
-html body.flexbox_body .flexbox_wrapper #masking_overlay {
- position: fixed;
- top: 0;
- width: 100%;
- bottom: 0;
- z-index: 80;
- display: none;
-}
-html body.flexbox_body .flexbox_wrapper > .detail_container {
- height: 100%;
- width: 100%;
- margin: 0px;
- padding: 0px;
- text-align: left;
- float: left;
- flex: 1 1;
+html body.flexbox_body .flexbox_wrapper #browser_container .refreshTree {
+ position: absolute;
+ left: 200px;
+ z-index: 1000;
+ padding: 5px;
+ width: 40px;
}
-html body.flexbox_body .flexbox_wrapper > #browser_container {
- height: 100%;
- margin: 0px;
- padding: 0px;
- text-align: left;
- float: left;
- flex: 0 0 300px;
+html body.flexbox_body .flexbox_wrapper .splitter {
+ flex: 0 0 auto;
+ width: 8px;
+ min-height: 200px;
+ cursor: col-resize;
}
-html body.flexbox_body .flexbox_wrapper > #browser_container > .browser_container {
- height: 100%;
- margin: 0px;
- padding: 0px;
- text-align: left;
- float: left;
+html body.flexbox_body .flexbox_wrapper #detail_container {
+ flex: 1 1 auto;
+ /* resizable */
+ padding: 10px;
width: 100%;
-}
-html body.flexbox_body .flexbox_wrapper > #browser_container.ui-resizable {
- width: 300px;
- flex: unset;
- border-right: 8px solid #cfd8dc;
-}
-html body.flexbox_body .flexbox_wrapper > #browser_container.ui-resizable .ui-resizable-handle.ui-resizable-e {
- width: 8px;
- right: -8px;
- background: #84a0ad;
- top: 45%;
- height: 50px;
+ min-height: 200px;
+ min-width: 200px;
+ background: #eee;
}
html body.flexbox_body.rtl .flexbox_wrapper > .detail_container {
float: right;
@@ -237,6 +333,7 @@ html body.browser {
html body.browser .refreshTree {
float: right;
text-align: right;
+ margin: 10px;
padding: 0 3px;
}
html body.browser .webfx-tree-row {
@@ -278,15 +375,22 @@ html body .arg_icon {
padding-right: 5pt;
padding-left: 5pt;
}
-html body .topbar {
+html body .fixed-top {
+ display: flex;
position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+}
+html body .topbar {
+ position: sticky;
z-index: 100;
width: 100%;
top: 0;
margin-left: -10px !important;
}
html body .trail {
- position: fixed;
+ position: sticky;
z-index: 100;
width: 100%;
top: 27px;
diff --git a/assets/themes/global.less b/assets/themes/global.less
index 7980a2d3..7ea0b9ef 100644
--- a/assets/themes/global.less
+++ b/assets/themes/global.less
@@ -40,28 +40,43 @@ html {
}
}
}
-
+ #detail.detail_container,
&.detailbody {
padding-top: 90px; //margin-bottom: -90px;
margin-left: 10px !important;
padding-bottom: 20px;
-
- table {
- &.tabs {
- position: fixed;
- top: 58px;
- z-index: 50;
- margin-left: -10px;
- z-index: 50;
-
- tbody {
- tr {
- td {
- white-space: nowrap;
- }
+ div.tabs {
+ display: flex;
+ /* margin-top: 58px; */
+ /* width: 100%; */
+ flex: 2 1 1500px;
+ flex-direction: row;
+ position: relative;
+ right: 0;
+ top: 60px;
+ .tab {
+ flex: 1 1 auto;
+ flex-direction: column;
+ }
+ }
+ & > table.tabs {
+ position: fixed;
+ top: 58px;
+ z-index: 50;
+ margin-left: -10px;
+ z-index: 50;
+
+ tbody {
+ tr {
+ td {
+ white-space: nowrap;
}
}
}
+ }
+ table {
+ min-width: calc(100vw - 370px);
+
&#data {
td {
@@ -138,8 +153,34 @@ html {
color: #fff !important;
}
}
- }
+ }
+ #detail.detail_container {
+ padding-top: 0 !important;
+ .clearfix {
+ height: 61px;
+ clear: both;
+ display: block;
+ width: 40px;
+ }
+ table {
+ &.tabs {
+ position: relative;
+ margin-right: -10px;
+ }
+ }
+ .topbar {
+ position: fixed;
+ .toplink {
+ width: 160px;
+ margin-right: 110px;
+ }
+ }
+ .trail {
+ position: fixed;
+ }
+
+ }
.navlink {
li {
a {
@@ -192,22 +233,58 @@ html {
margin: 0;
.flexbox_wrapper {
- display: flex;
- height: 100%;
+ height: 100%;
margin: 0;
- .ui-resizable-helper {
- border: 2px dotted #00f;
- }
+
+ display: flex;
+ flex-direction: row;
+ border: 1px solid silver;
+ overflow: hidden;
+
+ /* avoid browser level touch actions */
+ xtouch-action: none;
+
+ #browser_container {
+ flex: 0 0 auto;
+ /* only manually resize */
+ //padding: 10px;
+ width: 250px;
+ min-height: 200px;
+ min-width: 150px;
+ white-space: nowrap;
+ // background: #838383;
+ color: white;
- #masking_overlay {
- position: fixed;
- top: 0;
- width: 100%;
- bottom: 0;
- z-index: 80;
- display: none;
+ .refreshTree {
+ position: absolute;
+ left: 200px;
+ z-index: 1000;
+ padding: 5px;
+ width: 40px;
+
+ }
+ }
+
+ .splitter {
+ flex: 0 0 auto;
+ width: 8px;
+
+ min-height: 200px;
+ cursor: col-resize;
+ }
+
+ #detail_container {
+ flex: 1 1 auto;
+ /* resizable */
+ padding: 10px;
+ width: 100%;
+ min-height: 200px;
+ min-width: 200px;
+ background: #eee;
+ }
}
+ /*
& > .detail_container {
height: 100%;
@@ -216,16 +293,16 @@ html {
padding: 0px;
text-align: left;
float: left;
- flex: 1 1;
- }
-
+ flex: 1 1 1300px;
+ }*/
+/*
& > #browser_container {
height: 100%;
margin: 0px;
padding: 0px;
text-align: left;
float: left;
- flex: 0 0 300px;
+ flex: 1 2 300px;
& > .browser_container {
height: 100%;
@@ -238,7 +315,7 @@ html {
&.ui-resizable {
width: 300px;
- flex: unset;
+ //flex: unset;
border-right: 8px solid #cfd8dc;
.ui-resizable-handle.ui-resizable-e {
@@ -250,7 +327,8 @@ html {
}
}
}
- }
+ */
+
&.rtl {
.flexbox_wrapper {
@@ -261,6 +339,7 @@ html {
& > #browser_container {
float: right;
+
flex: 0 0 300px;
&.ui-resizable {
@@ -291,6 +370,7 @@ html {
.refreshTree {
float: right;
text-align: right;
+ margin: 10px;
padding: 0 3px;
}
@@ -345,9 +425,15 @@ html {
padding-right: 5pt;
padding-left: 5pt;
}
-
- .topbar {
+ .fixed-top {
+ display: flex;
position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ }
+ .topbar {
+ position: sticky;
z-index: 100;
width: 100%;
top: 0;
@@ -355,7 +441,7 @@ html {
}
.trail {
- position: fixed;
+ position: sticky;
z-index: 100;
width: 100%;
top: 27px;
diff --git a/assets/vendor/jquery-resizable.js b/assets/vendor/jquery-resizable.js
new file mode 100644
index 00000000..3562bd31
--- /dev/null
+++ b/assets/vendor/jquery-resizable.js
@@ -0,0 +1,197 @@
+/// <reference path="../bower_components/jquery/dist/jquery.js" />
+/*
+jquery-resizable
+Version 0.35 - 11/18/2019
+© 2015-2019 Rick Strahl, West Wind Technologies
+www.west-wind.com
+Licensed under MIT License
+*/
+(function(factory, undefined) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD
+ define(['jquery'], factory);
+ } else if (typeof module === 'object' && typeof module.exports === 'object') {
+ // CommonJS
+ module.exports = factory(require('jquery'));
+ } else {
+ // Global jQuery
+ factory(jQuery);
+ }
+}(function($, undefined) {
+
+ if ($.fn.resizableSafe)
+ return;
+
+ $.fn.resizableSafe = function fnResizable(options) {
+ var defaultOptions = {
+ // selector for handle that starts dragging
+ handleSelector: null,
+ // resize the width
+ resizeWidth: true,
+ // resize the height
+ resizeHeight: true,
+ // the side that the width resizing is relative to
+ resizeWidthFrom: 'right',
+ // the side that the height resizing is relative to
+ resizeHeightFrom: 'bottom',
+ // hook into start drag operation (event passed)
+ onDragStart: null,
+ // hook into stop drag operation (event passed)
+ onDragEnd: null,
+ // hook into each drag operation (event passed)
+ onDrag: null,
+ // disable touch-action on $handle
+ // prevents browser level actions like forward back gestures
+ touchActionNone: true,
+ // instance id
+ instanceId: null
+ };
+ if (typeof options == "object")
+ defaultOptions = $.extend(defaultOptions, options);
+
+ return this.each(function () {
+ var opt = $.extend({}, defaultOptions);
+ if (!opt.instanceId)
+ opt.instanceId = "rsz_" + new Date().getTime();
+
+ var startPos, startTransition;
+
+ // get the element to resize
+ var $el = $(this);
+ var $handle;
+
+ if (options === 'destroy') {
+ opt = $el.data('resizable');
+ if (!opt)
+ return;
+
+ $handle = getHandle(opt.handleSelector, $el);
+ $handle.off("mousedown." + opt.instanceId + " touchstart." + opt.instanceId);
+ if (opt.touchActionNone)
+ $handle.css("touch-action", "");
+ $el.removeClass("resizable");
+ return;
+ }
+
+ $el.data('resizable', opt);
+
+ // get the drag handle
+
+ $handle = getHandle(opt.handleSelector, $el);
+
+ if (opt.touchActionNone)
+ $handle.css("touch-action", "none");
+
+ $el.addClass("resizable");
+ $handle.on("mousedown." + opt.instanceId + " touchstart." + opt.instanceId, startDragging);
+
+ function noop(e) {
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ function startDragging(e) {
+ // Prevent dragging a ghost image in HTML5 / Firefox and maybe others
+ if ( e.preventDefault ) {
+ e.preventDefault();
+ }
+
+ startPos = getMousePos(e);
+ startPos.width = parseInt($el.width(), 10);
+ startPos.height = parseInt($el.height(), 10);
+
+ startTransition = $el.css("transition");
+ $el.css("transition", "none");
+
+ if (opt.onDragStart) {
+ if (opt.onDragStart(e, $el, opt) === false)
+ return;
+ }
+
+ $(document).on('mousemove.' + opt.instanceId, doDrag);
+ $(document).on('mouseup.' + opt.instanceId, stopDragging);
+ if (window.Touch || navigator.maxTouchPoints) {
+ $(document).on('touchmove.' + opt.instanceId, doDrag);
+ $(document).on('touchend.' + opt.instanceId, stopDragging);
+ }
+ $(document).on('selectstart.' + opt.instanceId, noop); // disable selection
+ $("iframe").css("pointer-events","none");
+ }
+
+ function doDrag(e) {
+
+ var pos = getMousePos(e), newWidth, newHeight;
+
+ if (opt.resizeWidthFrom === 'left')
+ newWidth = startPos.width - pos.x + startPos.x;
+ else
+ newWidth = startPos.width + pos.x - startPos.x;
+
+ if (opt.resizeHeightFrom === 'top')
+ newHeight = startPos.height - pos.y + startPos.y;
+ else
+ newHeight = startPos.height + pos.y - startPos.y;
+
+ if (!opt.onDrag || opt.onDrag(e, $el, newWidth, newHeight, opt) !== false) {
+ if (opt.resizeHeight)
+ $el.height(newHeight);
+
+ if (opt.resizeWidth)
+ $el.width(newWidth);
+ }
+ }
+
+ function stopDragging(e) {
+ e.stopPropagation();
+ e.preventDefault();
+
+ $(document).off('mousemove.' + opt.instanceId);
+ $(document).off('mouseup.' + opt.instanceId);
+
+ if (window.Touch || navigator.maxTouchPoints) {
+ $(document).off('touchmove.' + opt.instanceId);
+ $(document).off('touchend.' + opt.instanceId);
+ }
+ $(document).off('selectstart.' + opt.instanceId, noop);
+
+ // reset changed values
+ $el.css("transition", startTransition);
+ $("iframe").css("pointer-events","auto");
+
+ if (opt.onDragEnd)
+ opt.onDragEnd(e, $el, opt);
+
+ return false;
+ }
+
+ function getMousePos(e) {
+ var pos = { x: 0, y: 0, width: 0, height: 0 };
+ if (typeof e.clientX === "number") {
+ pos.x = e.clientX;
+ pos.y = e.clientY;
+ } else if (e.originalEvent.touches) {
+ pos.x = e.originalEvent.touches[0].clientX;
+ pos.y = e.originalEvent.touches[0].clientY;
+ } else
+ return null;
+
+ return pos;
+ }
+
+ function getHandle(selector, $el) {
+ if (selector && selector.trim()[0] === ">") {
+ selector = selector.trim().replace(/^>\s*/, "");
+ return $el.find(selector);
+ }
+
+ // Search for the selector, but only in the parent element to limit the scope
+ // This works for multiple objects on a page (using .class syntax most likely)
+ // as long as each has a separate parent container.
+ return selector ? $el.parent().find(selector) : $el;
+ }
+ });
+ };
+
+ if (!$.fn.resizable)
+ $.fn.resizable = $.fn.resizableSafe;
+}));
diff --git a/composer.json b/composer.json
index 6aedb29f..6ed31196 100644
--- a/composer.json
+++ b/composer.json
@@ -23,6 +23,7 @@
"slim/flash": "^0.4.0",
"slim/slim": "^3.6",
"slim/twig-view": "~2.5.1",
+ "symfony/polyfill-php74": "^1.20",
"symfony/yaml": "^5.1",
"twig/twig": "~3"
},
@@ -56,7 +57,8 @@
"PHPPgAdmin\\Traits\\": "src/traits",
"PHPPgAdmin\\Database\\Traits\\": "src/database/databasetraits",
"PHPPgAdmin\\Help\\": "src/help",
- "PHPPgAdmin\\Translations\\": "src/translations"
+ "PHPPgAdmin\\Translations\\": "src/translations",
+ "PHPPgAdmin\\Interfaces\\": "src/interfaces"
},
"files": [
"src/lib.inc.php",
diff --git a/composer.lock b/composer.lock
index 6da8c93f..7259e07b 100644
--- a/composer.lock
+++ b/composer.lock
@@ -685,6 +685,86 @@
"time": "2020-07-14T12:35:20+00:00"
},
{
+ "name": "symfony/polyfill-php74",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php74.git",
+ "reference": "b3a1d2953afb225535abdf966c91dcb3c60786db"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php74/zipball/b3a1d2953afb225535abdf966c91dcb3c60786db",
+ "reference": "b3a1d2953afb225535abdf966c91dcb3c60786db",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php74\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.4+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php74/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
"name": "symfony/yaml",
"version": "v5.1.7",
"source": {
diff --git a/mk_linters.mk b/mk_linters.mk
index e4cc0ff2..d20c57f4 100644
--- a/mk_linters.mk
+++ b/mk_linters.mk
@@ -164,7 +164,7 @@ lint:
$(executable) --ignore-fails --exclude vendor src
-fixers: dependency_analysis lint csfixer_dry psalm phpstan phpcs
+fixers: lint csfixer dependency_analysis phpcs psalm phpstan
diff --git a/src/classes/ADORecordSet.php b/src/classes/ADORecordSet.php
index feae209c..674ed8e1 100644
--- a/src/classes/ADORecordSet.php
+++ b/src/classes/ADORecordSet.php
@@ -13,7 +13,7 @@ use Countable;
/**
* Extends ADORecordSet to let correct inference on PHPDoc params.
*/
-class ADORecordSet extends ADODBRecordsetClass implements Countable
+class ADORecordSet extends ADODBRecordsetClass implements Countable, Interfaces\RecordSet
{
/**
* Returns the recordCount.
@@ -28,7 +28,7 @@ class ADORecordSet extends ADODBRecordsetClass implements Countable
*
* @return int number of rows or -1 if this is not supported
*/
- public function recordCount()
+ public function RecordCount()
{
return $this->count();
}
@@ -40,8 +40,12 @@ class ADORecordSet extends ADODBRecordsetClass implements Countable
*
* @return ADOFieldObject the field
*/
- public function fetchField($fieldoffset = -1): ADOFieldObject
+ public function FetchField($fieldoffset = -1): ADOFieldObject
{
- return parent::fetchField();
+ return parent::FetchField();
+ }
+
+ public function MoveNext():void {
+parent::MoveNext();
}
}
diff --git a/src/classes/ArrayRecordSet.php b/src/classes/ArrayRecordSet.php
index 2668321d..17c2b43e 100644
--- a/src/classes/ArrayRecordSet.php
+++ b/src/classes/ArrayRecordSet.php
@@ -6,6 +6,7 @@
namespace PHPPgAdmin;
+use ADOFieldObject;
use Countable;
/**
@@ -21,7 +22,7 @@ use Countable;
*
* Id: ArrayRecordSet.php,v 1.3 2007/01/10 01:46:28 soranzo Exp $
*/
-class ArrayRecordSet implements Countable
+class ArrayRecordSet implements Countable , Interfaces\RecordSet
{
public $EOF = false;
@@ -51,13 +52,25 @@ class ArrayRecordSet implements Countable
{
return \count($this->_array);
}
+ function FetchField($off = 0): ADOFieldObject
+ {
+ // offsets begin at 0
+
+ $o= new ADOFieldObject();
+
+ $o->name= array_keys($this->fields)[$off]??null;
+ $value = $this->fields[$o->name??random_bytes(64)]??null;
+ $o->type= get_debug_type($value);
+ $o->max_length = 1024;
+ return $o;
+ }
/**
* Counts the records in the instance array.
*
* @return int number of records in the instance array
*/
- public function recordCount()
+ public function RecordCount():int
{
return $this->count();
}
@@ -66,7 +79,7 @@ class ArrayRecordSet implements Countable
* Advance the internal pointer of the instance array
* if no more fields are left, marks the instance variable $EOF as true.
*/
- public function moveNext(): void
+ public function MoveNext(): void
{
$this->fields = \next($this->_array);
diff --git a/src/classes/ContainerUtils.php b/src/classes/ContainerUtils.php
index 41bdca49..88e3b394 100644
--- a/src/classes/ContainerUtils.php
+++ b/src/classes/ContainerUtils.php
@@ -127,6 +127,7 @@ class ContainerUtils extends Container implements ContainerInterface
'gotar' => 'Blue/Green',
'bootstrap' => 'Bootstrap3',
],
+ 'display_sizes' => ['schemas' => false, 'tables' => false],
'BASE_PATH' => $config['BASE_PATH'] ?? \dirname(__DIR__, 2),
'subFolder' => $config['subfolder'] ?? '',
'debug' => $config['debugmode'] ?? false,
@@ -136,12 +137,12 @@ class ContainerUtils extends Container implements ContainerInterface
];
self::$envConfig = \array_merge(self::$envConfig, $config);
-
if (!self::$instance) {
self::$instance = new static(self::$envConfig);
self::$instance
->withConf(self::$envConfig);
+
$handlers = new ContainerHandlers(self::$instance);
$handlers->setExtra()
@@ -150,6 +151,7 @@ class ContainerUtils extends Container implements ContainerInterface
->storeMainRequestParams()
->setHaltHandler();
}
+
//ddd($container->subfolder);
return self::$instance;
}
@@ -162,15 +164,14 @@ class ContainerUtils extends Container implements ContainerInterface
public function getRedirectUrl()
{
$container = self::getContainerInstance();
- $container = self::getContainerInstance();
$query_string = $container->request->getUri()->getQuery();
// if server_id isn't set, then you will be redirected to intro
if (null === $container->request->getQueryParam('server')) {
- $destinationurl = self::$envConfig['subFolder'] . '/src/views/intro';
+ $destinationurl = $this->subFolder. '/src/views/intro';
} else {
// otherwise, you'll be redirected to the login page for that server;
- $destinationurl = self::$envConfig['subFolder'] . '/src/views/login' . ($query_string ? '?' . $query_string : '');
+ $destinationurl = $this->subFolder. '/src/views/login' . ($query_string ? '?' . $query_string : '');
}
return $destinationurl;
@@ -237,7 +238,7 @@ class ContainerUtils extends Container implements ContainerInterface
$actionurl = Decorator::actionurl($url['url'], $_GET);
$destinationurl = $actionurl->value($_GET);
- return \str_replace('views/?', \sprintf(
+ return $this->subFolder.\str_replace('views/?', \sprintf(
'views/%s?',
$subject
), $destinationurl);
@@ -296,7 +297,7 @@ class ContainerUtils extends Container implements ContainerInterface
$conf['plugins'] = [];
$container->BASE_PATH = $conf['BASE_PATH'];
- $container->subFolder = $conf['subfolder'];
+ $container->subFolder = $conf['subfolder']??$conf['subFolder'];
$container->debug = $conf['debugmode'];
$container->THEME_PATH = $conf['theme_path'];
$container->IN_TEST = $conf['IN_TEST'];
diff --git a/src/classes/ViewManager.php b/src/classes/ViewManager.php
index e78a646c..49d2d7e7 100644
--- a/src/classes/ViewManager.php
+++ b/src/classes/ViewManager.php
@@ -154,6 +154,11 @@ class ViewManager extends Twig
$this->offsetSet('applangdir', $this->lang['applangdir']);
+ $this->offsetSet('icon', [
+ 'Refresh' => $this->icon('Refresh'),
+ 'Servers' => $this->icon('Servers'),
+ ]);
+
$this->offsetSet('appName', $c->get('settings')['appName']);
$_theme = $this->getTheme($this->conf, $this->misc->getServerInfo());
@@ -199,13 +204,23 @@ class ViewManager extends Twig
return $this->_reload_browser;
}
- public function maybeRenderIframes(Response $response, string $subject, string $query_string): ResponseInterface
+/**
+ * Undocumented function
+ *
+ * @param Response $response
+ * @param string $subject
+ * @param string $query_string
+ * @param string $template
+ * @return ResponseInterface
+ */
+ public function maybeRenderIframes(Response $response, string $subject, string $query_string,string $template='intro_view.twig')
{
$c = $this->getContainer();
$in_test = $this->offsetGet('in_test');
+ $includeJsTree = $this->offsetExists('includeJsTree')?$this->offsetGet('includeJsTree'):true;
- if ('1' === $in_test) {
+ if ('1' === $in_test||$includeJsTree) {
$className = self::getControllerClassName($subject);
$controller = new $className($c);
@@ -217,7 +232,7 @@ class ViewManager extends Twig
'headertemplate' => 'header.twig',
];
- return $this->render($response, 'iframe_view.twig', $viewVars);
+ return $this->render($response, $template, $viewVars);
}
/**
diff --git a/src/controllers/AcinsertController.php b/src/controllers/AcinsertController.php
index 7194e380..4dafaecc 100644
--- a/src/controllers/AcinsertController.php
+++ b/src/controllers/AcinsertController.php
@@ -79,7 +79,7 @@ class AcinsertController extends BaseController
echo '<tr class="acline">';
foreach ($res->fields as $n => $v) {
- $finfo = $res->fetchField($j++);
+ $finfo = $res->FetchField($j++);
if (\in_array($n, $fkeynames, true)) {
echo \sprintf(
@@ -96,7 +96,7 @@ class AcinsertController extends BaseController
}
echo '</tr>' . \PHP_EOL;
++$i;
- $res->moveNext();
+ $res->MoveNext();
}
echo '</table>' . \PHP_EOL;
@@ -109,7 +109,7 @@ class AcinsertController extends BaseController
$js .= "fkl_hasprev=false;\n";
}
- if (12 === $res->recordCount()) {
+ if (12 === $res->RecordCount()) {
$js .= "fkl_hasnext=true;\n";
echo '&nbsp;&nbsp;&nbsp;<a href="javascript:void(0)" id="fknext">Next &gt;&gt;</a>';
} else {
diff --git a/src/controllers/AggregatesController.php b/src/controllers/AggregatesController.php
index afd57de0..20d63135 100644
--- a/src/controllers/AggregatesController.php
+++ b/src/controllers/AggregatesController.php
@@ -428,7 +428,7 @@ class AggregatesController extends BaseController
echo '<form action="' . \containerInstance()->subFolder . '/src/views/aggregates" method="post">' . \PHP_EOL;
$aggrdata = $this->data->getAggregate($_REQUEST['aggrname'], $_REQUEST['aggrtype']);
- if (0 < $aggrdata->recordCount()) {
+ if (0 < $aggrdata->RecordCount()) {
// Output table header
echo '<table>' . \PHP_EOL;
echo \sprintf(
@@ -551,7 +551,7 @@ class AggregatesController extends BaseController
$aggrdata = $this->data->getAggregate($_REQUEST['aggrname'], $_REQUEST['aggrtype']);
- if (0 < $aggrdata->recordCount()) {
+ if (0 < $aggrdata->RecordCount()) {
// Display aggregate's info
echo '<table>' . \PHP_EOL;
echo \sprintf(
diff --git a/src/controllers/AlldbController.php b/src/controllers/AlldbController.php
index 54f42a1d..67dc3a8a 100644
--- a/src/controllers/AlldbController.php
+++ b/src/controllers/AlldbController.php
@@ -84,7 +84,7 @@ class AlldbController extends BaseController
$output = \ob_get_clean();
$this->printHeader($this->headerTitle(), null, true, $header_template);
- $this->printBody();
+ $this->printBody(true,'flexbox_body',false,true);
echo $output;
return $this->printFooter();
@@ -113,7 +113,7 @@ class AlldbController extends BaseController
'database' => [
'title' => $this->lang['strdatabase'],
'field' => Decorator::field('datname'),
- 'url' => \containerInstance()->subFolder . $redirecturl . '&amp;',
+ 'url' => $redirecturl . '&amp;',
'vars' => ['database' => 'datname'],
],
'owner' => [
@@ -254,7 +254,6 @@ class AlldbController extends BaseController
'action' => Decorator::redirecturl('redirect', $reqvars, ['subject' => 'database', 'database' => Decorator::field('datname')]),
'branch' => Decorator::url('/src/views/database', $reqvars, ['action' => 'tree', 'database' => Decorator::field('datname')]),
];
-
return $this->printTree($databases, $attrs, 'databases');
}
@@ -301,7 +300,7 @@ class AlldbController extends BaseController
$uname = $users->fields['usename'];
echo '<option value="', \htmlspecialchars($uname), '"',
($uname === $owner) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
@@ -510,7 +509,7 @@ class AlldbController extends BaseController
$dbname
) . \PHP_EOL;
}
- $templatedbs->moveNext();
+ $templatedbs->MoveNext();
}
echo "\t\t\t</select>" . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -560,7 +559,7 @@ class AlldbController extends BaseController
}
// Tablespace (if there are any)
- if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
+ if ($data->hasTablespaces() && 0 < $tablespaces->RecordCount()) {
echo \sprintf(
' <tr>
<th class="data left">%s</th>',
@@ -581,7 +580,7 @@ class AlldbController extends BaseController
'>%s</option>',
$spcname
) . \PHP_EOL;
- $tablespaces->moveNext();
+ $tablespaces->MoveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
}
diff --git a/src/controllers/BaseController.php b/src/controllers/BaseController.php
index 22d8d373..e14332b5 100644
--- a/src/controllers/BaseController.php
+++ b/src/controllers/BaseController.php
@@ -18,6 +18,7 @@ use PHPPgAdmin\XHtml\HTMLHeaderController;
use PHPPgAdmin\XHtml\HTMLNavbarController;
use PHPPgAdmin\XHtml\HTMLTableController;
use Slim\Http\Response;
+use ADORecordSet as ADODBRecordsetClass;
/**
* Base controller class.
@@ -257,14 +258,14 @@ class BaseController
/**
* Produce JSON data for the browser tree.
*
- * @param ADORecordSet|ArrayRecordSet $_treedata a set of records to populate the tree
+ * @param \PHPPgAdmin\Interfaces\Recordset|\ADORecordSet
* @param array $attrs Attributes for tree items
* @param string $section The section where the branch is linked in the tree
* @param bool $print either to return or echo the result
*
* @return Response|string the json rendered tree
*/
- public function printTree(&$_treedata, &$attrs, $section, $print = true)
+ public function printTree( &$_treedata, &$attrs, $section, $print = true)
{
$tree = $this->_getTreeController();
@@ -409,11 +410,20 @@ class BaseController
return $header_controller->printHeader($title, $script, $do_print, $template);
}
- public function printBody(bool $doBody = true, string $bodyClass = 'detailbody', bool $onloadInit = false)
+ /**
+ * Undocumented function
+ *
+ * @param boolean $doBody
+ * @param string $bodyClass
+ * @param boolean $onloadInit
+ * @param boolean $includeJsTree either to add the jsTree in the root body. By default is inserted using an iframe
+ * @return void
+ */
+ public function printBody(bool $doBody = true, string $bodyClass = 'detailbody', bool $onloadInit = false,bool $includeJsTree=false)
{
$header_controller = $this->_getHeaderController();
- return $header_controller->printBody($doBody, $bodyClass, $onloadInit);
+ return $header_controller->printBody($doBody, $bodyClass, $onloadInit,$includeJsTree);
}
/**
diff --git a/src/controllers/ColpropertiesController.php b/src/controllers/ColpropertiesController.php
index 22caeec2..cf6241b7 100644
--- a/src/controllers/ColpropertiesController.php
+++ b/src/controllers/ColpropertiesController.php
@@ -330,7 +330,7 @@ class ColpropertiesController extends BaseController
$types_for_js[] = $typname;
echo "\t<option value=\"", \htmlspecialchars($typname), '"', ($typname === $_REQUEST['type']) ? ' selected="selected"' : '', '>',
$this->misc->printVal($typname), '</option>' . \PHP_EOL;
- $types->moveNext();
+ $types->MoveNext();
}
echo '</select>' . \PHP_EOL;
echo '</td>' . \PHP_EOL;
diff --git a/src/controllers/ConstraintsController.php b/src/controllers/ConstraintsController.php
index 3b16a8c2..06b88cd8 100644
--- a/src/controllers/ConstraintsController.php
+++ b/src/controllers/ConstraintsController.php
@@ -257,11 +257,11 @@ class ConstraintsController extends BaseController
$selColumns = new XHtmlSelect('TableColumnList', true, 10);
$selColumns->set_style('width: 15em;');
- if (0 < $attrs->recordCount()) {
+ if (0 < $attrs->RecordCount()) {
while (!$attrs->EOF) {
$xmloption = new XHtmlOption($attrs->fields['attname']);
$selColumns->add($xmloption);
- $attrs->moveNext();
+ $attrs->MoveNext();
}
}
@@ -311,7 +311,7 @@ class ConstraintsController extends BaseController
echo \htmlspecialchars($tables->fields['nspname']), '.';
}
echo \htmlspecialchars($tables->fields['relname']), '</option>' . \PHP_EOL;
- $tables->moveNext();
+ $tables->MoveNext();
}
echo '</select>' . \PHP_EOL;
echo '</td></tr>';
@@ -428,11 +428,11 @@ class ConstraintsController extends BaseController
$selColumns = new XHtmlSelect('TableColumnList', true, 10);
$selColumns->set_style('width: 15em;');
- if (0 < $attrs->recordCount()) {
+ if (0 < $attrs->RecordCount()) {
while (!$attrs->EOF) {
$new_option = new XHtmlOption($attrs->fields['attname']);
$selColumns->add($new_option);
- $attrs->moveNext();
+ $attrs->MoveNext();
}
}
@@ -470,7 +470,7 @@ class ConstraintsController extends BaseController
echo '<td class=data1>' . $selIndex->fetch() . '</td></tr>' . \PHP_EOL;
// Tablespace (if there are any)
- if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
+ if ($data->hasTablespaces() && 0 < $tablespaces->RecordCount()) {
echo \sprintf(
'<tr><th class="data" colspan="3">%s</th></tr>',
$this->lang['strtablespace']
@@ -490,7 +490,7 @@ class ConstraintsController extends BaseController
'>%s</option>',
$spcname
) . \PHP_EOL;
- $tablespaces->moveNext();
+ $tablespaces->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
@@ -745,11 +745,11 @@ class ConstraintsController extends BaseController
$selColumns = new XHtmlSelect('TableColumnList', true, 10);
$selColumns->set_style('width: 15em;');
- if (0 < $attrs->recordCount()) {
+ if (0 < $attrs->RecordCount()) {
while (!$attrs->EOF) {
$xmloption = new XHtmlOption($attrs->fields['attname']);
$selColumns->add($xmloption);
- $attrs->moveNext();
+ $attrs->MoveNext();
}
}
diff --git a/src/controllers/DatabaseController.php b/src/controllers/DatabaseController.php
index 16277dd6..db355e6b 100644
--- a/src/controllers/DatabaseController.php
+++ b/src/controllers/DatabaseController.php
@@ -269,7 +269,7 @@ class DatabaseController extends BaseController
$data = $this->misc->getDatabaseAccessor();
$rs = $data->findObject($_REQUEST['term'], $_REQUEST['filter']);
- if (0 < $rs->recordCount()) {
+ if (0 < $rs->RecordCount()) {
$curr = '';
while (!$rs->EOF) {
@@ -297,11 +297,11 @@ class DatabaseController extends BaseController
}
$this->_printHtmlForType($curr, $rs);
- $rs->moveNext();
+ $rs->MoveNext();
}
echo '</ul>' . \PHP_EOL;
- echo '<p>', $rs->recordCount(), ' ', $this->lang['strobjects'], '</p>' . \PHP_EOL;
+ echo '<p>', $rs->RecordCount(), ' ', $this->lang['strobjects'], '</p>' . \PHP_EOL;
} else {
echo \sprintf(
'<p>%s</p>',
diff --git a/src/controllers/DataexportController.php b/src/controllers/DataexportController.php
index 9e27c729..ceb643a4 100644
--- a/src/controllers/DataexportController.php
+++ b/src/controllers/DataexportController.php
@@ -343,7 +343,7 @@ class DataexportController extends BaseController
}
}
echo \PHP_EOL;
- $rs->moveNext();
+ $rs->MoveNext();
}
echo "\\.\n";
}
@@ -365,7 +365,7 @@ class DataexportController extends BaseController
$j = 0;
foreach ($rs->fields as $k => $v) {
- $finfo = $rs->fetchField($j++);
+ $finfo = $rs->FetchField($j++);
if ($finfo->name === $data->id && !$oids) {
continue;
@@ -381,7 +381,7 @@ class DataexportController extends BaseController
$j = 0;
foreach ($rs->fields as $k => $v) {
- $finfo = $rs->fetchField($j++);
+ $finfo = $rs->FetchField($j++);
if ($finfo->name === $data->id && !$oids) {
continue;
@@ -390,7 +390,7 @@ class DataexportController extends BaseController
echo "\t\t<td>", $this->misc->printVal($v, 'verbatim', $finfo->type), "</td>\r\n";
}
echo "\t</tr>\r\n";
- $rs->moveNext();
+ $rs->MoveNext();
}
echo "</table>\r\n";
echo "</body>\r\n";
@@ -408,7 +408,7 @@ class DataexportController extends BaseController
echo "\t<header>" . \PHP_EOL;
foreach ($rs->fields as $k => $v) {
- $finfo = $rs->fetchField($j++);
+ $finfo = $rs->FetchField($j++);
$name = \htmlspecialchars($finfo->name);
$type = \htmlspecialchars($finfo->type);
echo \sprintf(
@@ -426,7 +426,7 @@ class DataexportController extends BaseController
echo "\t\t<row>" . \PHP_EOL;
foreach ($rs->fields as $k => $v) {
- $finfo = $rs->fetchField($j++);
+ $finfo = $rs->FetchField($j++);
$name = \htmlspecialchars($finfo->name);
if (null !== $v) {
@@ -442,7 +442,7 @@ class DataexportController extends BaseController
) . \PHP_EOL;
}
echo "\t\t</row>" . \PHP_EOL;
- $rs->moveNext();
+ $rs->MoveNext();
}
echo "\t</records>" . \PHP_EOL;
echo '</data>' . \PHP_EOL;
@@ -462,7 +462,7 @@ class DataexportController extends BaseController
$j = 0;
foreach ($rs->fields as $k => $v) {
- $finfo = $rs->fetchField($j++);
+ $finfo = $rs->FetchField($j++);
$k = $finfo->name;
// SQL (INSERT) format cannot handle oids
// if ($k == $data->id) continue;
@@ -510,7 +510,7 @@ class DataexportController extends BaseController
',
$values
);
- $rs->moveNext();
+ $rs->MoveNext();
}
}
@@ -533,7 +533,7 @@ class DataexportController extends BaseController
$first = true;
foreach ($rs->fields as $k => $v) {
- $finfo = $rs->fetchField($k);
+ $finfo = $rs->FetchField($k);
$v = $finfo->name;
if (null !== $v) {
@@ -583,7 +583,7 @@ class DataexportController extends BaseController
}
}
echo "\r\n";
- $rs->moveNext();
+ $rs->MoveNext();
}
}
}
diff --git a/src/controllers/DisplayController.php b/src/controllers/DisplayController.php
index 0a32e583..3338a8f2 100644
--- a/src/controllers/DisplayController.php
+++ b/src/controllers/DisplayController.php
@@ -410,7 +410,7 @@ class DisplayController extends BaseController
}
// Create view and download
- if (isset($_REQUEST['query'], $resultset) && \is_object($resultset) && 0 < $resultset->recordCount()) {
+ if (isset($_REQUEST['query'], $resultset) && \is_object($resultset) && 0 < $resultset->RecordCount()) {
// Report views don't set a schema, so we need to disable create view in that case
if (isset($_REQUEST['schema'])) {
$navlinks['createview'] = [
@@ -493,7 +493,7 @@ class DisplayController extends BaseController
*/
public function printResultsTable($resultset, $page, $max_pages, array $_gets, $object): void
{
- if (!\is_object($resultset) || 0 >= $resultset->recordCount()) {
+ if (!\is_object($resultset) || 0 >= $resultset->RecordCount()) {
echo \sprintf(
'<p>%s</p>',
$this->lang['strnodata']
@@ -550,11 +550,11 @@ class DisplayController extends BaseController
$this->printTableRowCells($resultset, $fkey_information, isset($object));
echo '</tr>' . \PHP_EOL;
- $resultset->moveNext();
+ $resultset->MoveNext();
}
echo '</table>' . \PHP_EOL;
- echo '<p>', $resultset->recordCount(), \sprintf(
+ echo '<p>', $resultset->RecordCount(), \sprintf(
' %s</p>',
$this->lang['strrows']
) . \PHP_EOL;
@@ -573,7 +573,7 @@ class DisplayController extends BaseController
{
$data = $this->misc->getDatabaseAccessor();
- if (!\is_object($resultset) || 0 >= $resultset->recordCount()) {
+ if (!\is_object($resultset) || 0 >= $resultset->RecordCount()) {
return;
}
@@ -581,7 +581,7 @@ class DisplayController extends BaseController
if (($key === $data->id) && (!($withOid && $this->conf['show_oids']))) {
continue;
}
- $finfo = $resultset->fetchField($index);
+ $finfo = $resultset->FetchField($index);
if (false === $args) {
echo '<th class="data">', $this->misc->printVal($finfo->name), '</th>' . \PHP_EOL;
@@ -630,7 +630,7 @@ class DisplayController extends BaseController
$this->coalesceArr($_REQUEST, 'strings', 'collapsed');
foreach ($resultset->fields as $k => $v) {
- $finfo = $resultset->fetchField($j++);
+ $finfo = $resultset->FetchField($j++);
if (($k === $data->id) && (!($withOid && $this->conf['show_oids']))) {
continue;
@@ -677,7 +677,7 @@ class DisplayController extends BaseController
$elements = 0;
$error = true;
- if (1 === $resultset->recordCount() && 0 < $attrs->recordCount()) {
+ if (1 === $resultset->RecordCount() && 0 < $attrs->RecordCount()) {
echo '<table>' . \PHP_EOL;
// Output table header
@@ -781,12 +781,12 @@ class DisplayController extends BaseController
++$elements;
echo '</tr>' . \PHP_EOL;
++$i;
- $attrs->moveNext();
+ $attrs->MoveNext();
}
echo '</table>' . \PHP_EOL;
$error = false;
- } elseif (1 !== $resultset->recordCount()) {
+ } elseif (1 !== $resultset->RecordCount()) {
echo \sprintf(
'<p>%s</p>',
$this->lang['strrownotunique']
@@ -925,7 +925,7 @@ class DisplayController extends BaseController
echo '<form action="' . \containerInstance()->subFolder . '/src/views/display" method="post">' . \PHP_EOL;
echo $this->view->form;
- if (1 === $resultset->recordCount()) {
+ if (1 === $resultset->RecordCount()) {
echo \sprintf(
'<p>%s</p>',
$this->lang['strconfdeleterow']
@@ -950,7 +950,7 @@ class DisplayController extends BaseController
'<input type="submit" name="no" value="%s" />',
$this->lang['strno']
) . \PHP_EOL;
- } elseif (1 !== $resultset->recordCount()) {
+ } elseif (1 !== $resultset->RecordCount()) {
echo \sprintf(
'<p>%s</p>',
$this->lang['strrownotunique']
@@ -1029,7 +1029,7 @@ class DisplayController extends BaseController
if (isset($_REQUEST['table'])) {
$constraints = $data->getConstraintsWithFields($_REQUEST['table']);
- if (0 < $constraints->recordCount()) {
+ if (0 < $constraints->RecordCount()) {
$fkey_information['common_url'] = $this->misc->getHREF('schema') . '&amp;subject=table';
// build the FK constraints data structure
@@ -1053,7 +1053,7 @@ class DisplayController extends BaseController
$fkey_information['byfield'][$constr['p_field']][] = $constr['conid'];
}
- $constraints->moveNext();
+ $constraints->MoveNext();
}
}
}
@@ -1092,7 +1092,7 @@ class DisplayController extends BaseController
echo '<a href="javascript:void(0);" style="display:table-cell;" class="fk_delete"><img alt="[delete]" src="' . $this->view->icon('Delete') . '" /></a>' . \PHP_EOL;
echo '<div style="display:table-cell;">';
- if (\is_object($resultset) && 0 < $resultset->recordCount()) {
+ if (\is_object($resultset) && 0 < $resultset->RecordCount()) {
/* we are browsing a referenced table here
* we should show OID if show_oids is true
* so we give true to withOid in functions bellow
diff --git a/src/controllers/DomainsController.php b/src/controllers/DomainsController.php
index 7a6c55c3..a09c0ff8 100644
--- a/src/controllers/DomainsController.php
+++ b/src/controllers/DomainsController.php
@@ -275,7 +275,7 @@ class DomainsController extends BaseController
// Fetch all users
$users = $data->getUsers();
- if (0 < $domaindata->recordCount()) {
+ if (0 < $domaindata->RecordCount()) {
if (!isset($_POST['domname'])) {
$_POST['domtype'] = $domaindata->fields['domtype'];
$_POST['domdefault'] = $domaindata->fields['domdef'];
@@ -322,7 +322,7 @@ class DomainsController extends BaseController
$uname = $users->fields['usename'];
echo '<option value="', \htmlspecialchars($uname), '"',
($uname === $_POST['domowner']) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
echo '</table>' . \PHP_EOL;
@@ -483,7 +483,7 @@ class DomainsController extends BaseController
$domaindata = $data->getDomain($_REQUEST['domain']);
- if (0 < $domaindata->recordCount()) {
+ if (0 < $domaindata->RecordCount()) {
// Show comment if any
if (null !== $domaindata->fields['domcomment']) {
echo '<p class="comment">', $this->misc->printVal($domaindata->fields['domcomment']), '</p>' . \PHP_EOL;
@@ -718,7 +718,7 @@ class DomainsController extends BaseController
echo '<option value="', \htmlspecialchars($types->fields['typname']), '"',
($types->fields['typname'] === $_POST['domtype']) ? ' selected="selected"' : '', '>',
$this->misc->printVal($types->fields['typname']), '</option>' . \PHP_EOL;
- $types->moveNext();
+ $types->MoveNext();
}
echo '</select>' . \PHP_EOL;
diff --git a/src/controllers/FulltextController.php b/src/controllers/FulltextController.php
index e14d6249..6e5974aa 100644
--- a/src/controllers/FulltextController.php
+++ b/src/controllers/FulltextController.php
@@ -465,7 +465,7 @@ class FulltextController extends BaseController
if ($_POST['formTemplate'] === $tpls[$tplname]) {
$tplsel = \htmlspecialchars($tpls[$tplname]);
}
- $ftscfgs->moveNext();
+ $ftscfgs->MoveNext();
}
echo HTMLController::printCombo($tpls, 'formTemplate', true, $tplsel, false);
echo "\n\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -493,7 +493,7 @@ class FulltextController extends BaseController
if ($_POST['formParser'] === $ftsparsers_[$parsername]) {
$ftsparsel = \htmlspecialchars($ftsparsers_[$parsername]);
}
- $ftsparsers->moveNext();
+ $ftsparsers->MoveNext();
}
echo HTMLController::printCombo($ftsparsers_, 'formParser', true, $ftsparsel, false);
echo "\n\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -589,7 +589,7 @@ class FulltextController extends BaseController
$ftscfg = $data->getFtsConfigurationByName($_REQUEST['ftscfg']);
- if (0 < $ftscfg->recordCount()) {
+ if (0 < $ftscfg->RecordCount()) {
$this->coalesceArr($_POST, 'formComment', $ftscfg->fields['comment']);
$this->coalesceArr($_POST, 'ftscfg', $_REQUEST['ftscfg']);
@@ -959,7 +959,7 @@ class FulltextController extends BaseController
if ($_POST['formTemplate'] === $tpls[$tplname]) {
$tplsel = \htmlspecialchars($tpls[$tplname]);
}
- $ftstpls->moveNext();
+ $ftstpls->MoveNext();
}
echo HTMLController::printCombo($tpls, 'formTemplate', true, $tplsel, false);
echo "\n\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -1098,7 +1098,7 @@ class FulltextController extends BaseController
$ftsdict = $data->getFtsDictionaryByName($_REQUEST['ftsdict']);
- if (0 < $ftsdict->recordCount()) {
+ if (0 < $ftsdict->RecordCount()) {
$this->coalesceArr($_POST, 'formComment', $ftsdict->fields['comment']);
$this->coalesceArr($_POST, 'ftsdict', $_REQUEST['ftsdict']);
@@ -1265,7 +1265,7 @@ class FulltextController extends BaseController
$ftsdicts = $data->getFtsDictionaries();
- if (0 < $ftsdicts->recordCount()) {
+ if (0 < $ftsdicts->RecordCount()) {
$this->coalesceArr($_POST, 'formMapping', $_REQUEST['mapping']);
$this->coalesceArr($_POST, 'formDictionary', '');
@@ -1325,7 +1325,7 @@ class FulltextController extends BaseController
'>%s</option>',
$ftsdict
) . \PHP_EOL;
- $ftsdicts->moveNext();
+ $ftsdicts->MoveNext();
}
echo "\t\t</td>" . \PHP_EOL;
@@ -1387,7 +1387,7 @@ class FulltextController extends BaseController
$ftsdicts = $data->getFtsDictionaries();
- if (0 < $ftsdicts->recordCount()) {
+ if (0 < $ftsdicts->RecordCount()) {
$this->coalesceArr($_POST, 'formMapping', '');
$this->coalesceArr($_POST, 'formDictionary', '');
@@ -1423,7 +1423,7 @@ class FulltextController extends BaseController
$mapping_desc
) : '',
'</option>' . \PHP_EOL;
- $mappings->moveNext();
+ $mappings->MoveNext();
}
echo "\t\t</td>" . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
@@ -1448,7 +1448,7 @@ class FulltextController extends BaseController
'>%s</option>',
$ftsdict
) . \PHP_EOL;
- $ftsdicts->moveNext();
+ $ftsdicts->MoveNext();
}
echo "\t\t</td>" . \PHP_EOL;
diff --git a/src/controllers/FunctionsController.php b/src/controllers/FunctionsController.php
index cbd71e80..b4d37781 100644
--- a/src/controllers/FunctionsController.php
+++ b/src/controllers/FunctionsController.php
@@ -300,7 +300,7 @@ class FunctionsController extends BaseController
$fndata = $data->getFunction($_REQUEST['function_oid']);
- if (0 >= $fndata->recordCount()) {
+ if (0 >= $fndata->RecordCount()) {
echo \sprintf(
'<p>%s</p>',
$this->lang['strnodata']
@@ -377,7 +377,7 @@ class FunctionsController extends BaseController
$schema = $schemas->fields['nspname'];
echo '<option value="', \htmlspecialchars($schema), '"',
($schema === $_POST['formFuncSchema']) ? ' selected="selected"' : '', '>', \htmlspecialchars($schema), '</option>' . \PHP_EOL;
- $schemas->moveNext();
+ $schemas->MoveNext();
}
echo '</select>' . \PHP_EOL;
} else {
@@ -517,7 +517,7 @@ class FunctionsController extends BaseController
$uname = $users->fields['usename'];
echo '<option value="', \htmlspecialchars($uname), '"',
($uname === $_POST['formFuncOwn']) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select>' . \PHP_EOL;
echo '<input type="hidden" name="original_owner" value="', \htmlspecialchars($fndata->fields['proowner']), '" />' . \PHP_EOL;
@@ -560,7 +560,7 @@ class FunctionsController extends BaseController
$funcdata = $data->getFunctionDef($function_oid);
$func_full = '';
- if (0 >= $funcdata->recordCount()) {
+ if (0 >= $funcdata->RecordCount()) {
echo \sprintf(
'<p>%s</p>',
$this->lang['strnodata']
@@ -662,7 +662,7 @@ class FunctionsController extends BaseController
$funcdata = $data->getFunction($_REQUEST['function_oid']);
$func_full = '';
- if (0 >= $funcdata->recordCount()) {
+ if (0 >= $funcdata->RecordCount()) {
echo \sprintf(
'<p>%s</p>',
$this->lang['strnodata']
@@ -964,7 +964,7 @@ class FunctionsController extends BaseController
$szSelected
);
$szTypes .= \htmlspecialchars($types->fields['typname'], \ENT_QUOTES) . '</option>';
- $types->moveNext();
+ $types->MoveNext();
}
$szFunctionName = \sprintf(
@@ -1048,7 +1048,7 @@ class FunctionsController extends BaseController
$this->misc->printVal($langs->fields['lanname']) . '</option>';
}
- $langs->moveNext();
+ $langs->MoveNext();
}
$szLanguage .= '</select>' . \PHP_EOL;
}
@@ -1582,7 +1582,7 @@ class FunctionsController extends BaseController
while (!$arrayTypes->EOF) {
$arrayPTypes[] = "'" . $arrayTypes->fields['typname'] . "'";
- $arrayTypes->moveNext();
+ $arrayTypes->MoveNext();
}
foreach ($arrayModes as $pV) {
diff --git a/src/controllers/GroupsController.php b/src/controllers/GroupsController.php
index fe7854cb..9509117a 100644
--- a/src/controllers/GroupsController.php
+++ b/src/controllers/GroupsController.php
@@ -230,7 +230,7 @@ class GroupsController extends BaseController
$groupdata = $data->getGroup($_REQUEST['group']);
$users = $data->getUsers();
- if (0 < $groupdata->recordCount()) {
+ if (0 < $groupdata->RecordCount()) {
$columns = [
'members' => [
'title' => $this->lang['strmembers'],
@@ -274,7 +274,7 @@ class GroupsController extends BaseController
'>%s</option>',
$uname
) . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select>' . \PHP_EOL;
echo \sprintf(
@@ -373,7 +373,7 @@ class GroupsController extends BaseController
$data->_maxNameLen
), \htmlspecialchars($_POST['name']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- if (0 < $users->recordCount()) {
+ if (0 < $users->RecordCount()) {
echo \sprintf(
' <tr>
<th class="data left">%s</th>',
@@ -381,7 +381,7 @@ class GroupsController extends BaseController
) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
- echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(40, $users->recordCount()), '">' . \PHP_EOL;
+ echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(40, $users->RecordCount()), '">' . \PHP_EOL;
while (!$users->EOF) {
$username = $users->fields['usename'];
@@ -390,7 +390,7 @@ class GroupsController extends BaseController
$username
),
(\in_array($username, $_POST['members'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($username), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo "\t\t\t</select>" . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
diff --git a/src/controllers/IndexesController.php b/src/controllers/IndexesController.php
index 7cf0ee4f..f8eb64b9 100644
--- a/src/controllers/IndexesController.php
+++ b/src/controllers/IndexesController.php
@@ -366,11 +366,11 @@ class IndexesController extends BaseController
$selColumns = new XHtmlSelect('TableColumnList', true, 10);
$selColumns->set_style('width: 14em;');
- if (0 < $attrs->recordCount()) {
+ if (0 < $attrs->RecordCount()) {
while (!$attrs->EOF) {
$attname = new XHtmlOption($attrs->fields['attname']);
$selColumns->add($attname);
- $attrs->moveNext();
+ $attrs->MoveNext();
}
}
@@ -431,7 +431,7 @@ class IndexesController extends BaseController
echo '</tr>';
// Tablespace (if there are any)
- if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
+ if ($data->hasTablespaces() && 0 < $tablespaces->RecordCount()) {
echo '<tr>' . \PHP_EOL;
echo \sprintf(
'<th class="data left">%s</th>',
@@ -453,7 +453,7 @@ class IndexesController extends BaseController
'>%s</option>',
$spcname
) . \PHP_EOL;
- $tablespaces->moveNext();
+ $tablespaces->MoveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
}
diff --git a/src/controllers/InfoController.php b/src/controllers/InfoController.php
index 9e784ef7..2c358991 100644
--- a/src/controllers/InfoController.php
+++ b/src/controllers/InfoController.php
@@ -59,46 +59,46 @@ class InfoController extends BaseController
$indexstatsio = $data->getStatsIndexIO($_REQUEST['table']);
// Check that there is some info
- if ((-99 === $referrers || (-99 !== $referrers && 0 === $referrers->recordCount()))
- && 0 === $parents->recordCount() && 0 === $children->recordCount()
- && (0 === $tablestatstups->recordCount() && 0 === $tablestatsio->recordCount()
- && 0 === $indexstatstups->recordCount() && 0 === $indexstatsio->recordCount())) {
+ if ((-99 === $referrers || (-99 !== $referrers && 0 === $referrers->RecordCount()))
+ && 0 === $parents->RecordCount() && 0 === $children->RecordCount()
+ && (0 === $tablestatstups->RecordCount() && 0 === $tablestatsio->RecordCount()
+ && 0 === $indexstatstups->RecordCount() && 0 === $indexstatsio->RecordCount())) {
$this->printMsg($this->lang['strnoinfo']);
return;
}
// Referring foreign tables
- if (-99 !== $referrers && 0 < $referrers->recordCount()) {
+ if (-99 !== $referrers && 0 < $referrers->RecordCount()) {
$this->_printReferring($referrers);
}
// Parent tables
- if (0 < $parents->recordCount()) {
+ if (0 < $parents->RecordCount()) {
$this->_printParents($parents);
}
// Child tables
- if (0 < $children->recordCount()) {
+ if (0 < $children->RecordCount()) {
$this->_printChildren($children);
}
// Row performance
- if (0 < $tablestatstups->recordCount()) {
+ if (0 < $tablestatstups->RecordCount()) {
$this->_printTablestatstups($tablestatstups);
}
// I/O performance
- if (0 < $tablestatsio->recordCount()) {
+ if (0 < $tablestatsio->RecordCount()) {
$this->_printTablestatsio($tablestatsio);
}
// Index row performance
- if (0 < $indexstatstups->recordCount()) {
+ if (0 < $indexstatstups->RecordCount()) {
$this->_printIndexstatstups($indexstatstups);
}
// Index I/0 performance
- if (0 < $indexstatsio->recordCount()) {
+ if (0 < $indexstatsio->RecordCount()) {
$this->_printIndexstatsio($indexstatsio);
}
}
@@ -210,7 +210,7 @@ class InfoController extends BaseController
echo "\t\t<td>", $this->misc->printVal($tablestatstups->fields['n_tup_upd'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($tablestatstups->fields['n_tup_del'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
- $tablestatstups->movenext();
+ $tablestatstups->MoveNext();
++$i;
}
@@ -366,7 +366,7 @@ class InfoController extends BaseController
$this->lang['strpercent']
) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
- $tablestatsio->movenext();
+ $tablestatsio->MoveNext();
++$i;
}
@@ -412,7 +412,7 @@ class InfoController extends BaseController
echo "\t\t<td>", $this->misc->printVal($indexstatstups->fields['idx_tup_read'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($indexstatstups->fields['idx_tup_fetch'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
- $indexstatstups->movenext();
+ $indexstatstups->MoveNext();
++$i;
}
@@ -470,7 +470,7 @@ class InfoController extends BaseController
$this->lang['strpercent']
) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
- $indexstatsio->movenext();
+ $indexstatsio->MoveNext();
++$i;
}
diff --git a/src/controllers/IntroController.php b/src/controllers/IntroController.php
index 3f30127d..1382da0a 100644
--- a/src/controllers/IntroController.php
+++ b/src/controllers/IntroController.php
@@ -34,7 +34,7 @@ class IntroController extends BaseController
public function doDefault()
{
$intro_html = $this->printHeader('Intro', $this->scripts, false);
- $intro_html .= $this->printBody(false);
+ $intro_html .= $this->printBody(false,'flexbox_body',false,true);
$intro_html .= $this->printTrail('root', false);
diff --git a/src/controllers/MaterializedviewpropertiesController.php b/src/controllers/MaterializedviewpropertiesController.php
index 8a5b5df7..712a33c7 100644
--- a/src/controllers/MaterializedviewpropertiesController.php
+++ b/src/controllers/MaterializedviewpropertiesController.php
@@ -147,7 +147,7 @@ class MaterializedviewpropertiesController extends BaseController
$viewdata = $data->getView($_REQUEST[$this->subject]);
- if (0 < $viewdata->recordCount()) {
+ if (0 < $viewdata->RecordCount()) {
if (!isset($_POST['formDefinition'])) {
$_POST['formDefinition'] = $viewdata->fields['vwdefinition'];
$_POST['formComment'] = $viewdata->fields['relcomment'];
@@ -315,7 +315,7 @@ class MaterializedviewpropertiesController extends BaseController
// Fetch matview info
$matview = $data->getView($_REQUEST[$this->subject]);
- if (0 < $matview->recordCount()) {
+ if (0 < $matview->RecordCount()) {
$this->coalesceArr($_POST, 'name', $matview->fields['relname']);
$this->coalesceArr($_POST, 'owner', $matview->fields['relowner']);
@@ -351,7 +351,7 @@ class MaterializedviewpropertiesController extends BaseController
$uname = $users->fields['usename'];
echo '<option value="', \htmlspecialchars($uname), '"',
($uname === $_POST['owner']) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
@@ -368,7 +368,7 @@ class MaterializedviewpropertiesController extends BaseController
$schema = $schemas->fields['nspname'];
echo '<option value="', \htmlspecialchars($schema), '"',
($schema === $_POST['newschema']) ? ' selected="selected"' : '', '>', \htmlspecialchars($schema), '</option>' . \PHP_EOL;
- $schemas->moveNext();
+ $schemas->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
diff --git a/src/controllers/OperatorsController.php b/src/controllers/OperatorsController.php
index 839d6ece..c3d33cba 100644
--- a/src/controllers/OperatorsController.php
+++ b/src/controllers/OperatorsController.php
@@ -186,7 +186,7 @@ class OperatorsController extends BaseController
$oprdata = $data->getOperator($_REQUEST['operator_oid']);
$oprdata->fields['oprcanhash'] = $data->phpBool($oprdata->fields['oprcanhash']);
- if (0 < $oprdata->recordCount()) {
+ if (0 < $oprdata->RecordCount()) {
echo '<table>' . \PHP_EOL;
echo \sprintf(
'<tr><th class="data left">%s</th>',
diff --git a/src/controllers/PrivilegesController.php b/src/controllers/PrivilegesController.php
index fc4397b3..5413966c 100644
--- a/src/controllers/PrivilegesController.php
+++ b/src/controllers/PrivilegesController.php
@@ -354,7 +354,7 @@ class PrivilegesController extends BaseController
'<tr><th class="data left">%s</th>',
$this->lang['strusers']
) . \PHP_EOL;
- echo '<td class="data1"><select name="username[]" multiple="multiple" size="', \min(6, $users->recordCount()), '">' . \PHP_EOL;
+ echo '<td class="data1"><select name="username[]" multiple="multiple" size="', \min(6, $users->RecordCount()), '">' . \PHP_EOL;
while (!$users->EOF) {
$uname = \htmlspecialchars($users->fields['usename']);
@@ -366,7 +366,7 @@ class PrivilegesController extends BaseController
'>%s</option>',
$uname
) . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
echo \sprintf(
@@ -376,8 +376,8 @@ class PrivilegesController extends BaseController
echo '<td class="data1">' . \PHP_EOL;
echo '<input type="checkbox" id="public" name="public"', (isset($_REQUEST['public']) ? ' checked="checked"' : ''), ' /><label for="public">PUBLIC</label>' . \PHP_EOL;
// Only show groups if there are groups!
- if (0 < $groups->recordCount()) {
- echo '<br /><select name="groupname[]" multiple="multiple" size="', \min(6, $groups->recordCount()), '">' . \PHP_EOL;
+ if (0 < $groups->RecordCount()) {
+ echo '<br /><select name="groupname[]" multiple="multiple" size="', \min(6, $groups->RecordCount()), '">' . \PHP_EOL;
while (!$groups->EOF) {
$gname = \htmlspecialchars($groups->fields['groname']);
@@ -389,7 +389,7 @@ class PrivilegesController extends BaseController
'>%s</option>',
$gname
) . \PHP_EOL;
- $groups->moveNext();
+ $groups->MoveNext();
}
echo '</select>' . \PHP_EOL;
}
diff --git a/src/controllers/RolesController.php b/src/controllers/RolesController.php
index 9f44e697..86fe3fc5 100644
--- a/src/controllers/RolesController.php
+++ b/src/controllers/RolesController.php
@@ -317,14 +317,14 @@ class RolesController extends BaseController
$roles = $data->getRoles();
- if (0 < $roles->recordCount()) {
+ if (0 < $roles->RecordCount()) {
echo \sprintf(
' <tr>
<th class="data left">%s</th>',
$this->lang['strmemberof']
) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
- echo "\t\t\t<select name=\"memberof[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
+ echo "\t\t\t<select name=\"memberof[]\" multiple=\"multiple\" size=\"", \min(20, $roles->RecordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
@@ -333,7 +333,7 @@ class RolesController extends BaseController
$rolename
),
(\in_array($rolename, $_POST['memberof'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
- $roles->moveNext();
+ $roles->MoveNext();
}
echo "\t\t\t</select>" . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -345,7 +345,7 @@ class RolesController extends BaseController
$this->lang['strmembers']
) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
- echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
+ echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(20, $roles->RecordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
@@ -354,7 +354,7 @@ class RolesController extends BaseController
$rolename
),
(\in_array($rolename, $_POST['members'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
- $roles->moveNext();
+ $roles->MoveNext();
}
echo "\t\t\t</select>" . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -366,7 +366,7 @@ class RolesController extends BaseController
$this->lang['stradminmembers']
) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
- echo "\t\t\t<select name=\"adminmembers[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
+ echo "\t\t\t<select name=\"adminmembers[]\" multiple=\"multiple\" size=\"", \min(20, $roles->RecordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
@@ -375,7 +375,7 @@ class RolesController extends BaseController
$rolename
),
(\in_array($rolename, $_POST['adminmembers'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
- $roles->moveNext();
+ $roles->MoveNext();
}
echo "\t\t\t</select>" . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -453,7 +453,7 @@ class RolesController extends BaseController
$roledata = $data->getRole($_REQUEST['rolename']);
- if (0 >= $roledata->recordCount()) {
+ if (0 >= $roledata->RecordCount()) {
echo \sprintf(
'<p>%s</p>',
$this->lang['strnodata']
@@ -553,14 +553,14 @@ class RolesController extends BaseController
$roles = $data->getRoles($_REQUEST['rolename']);
- if (0 < $roles->recordCount()) {
+ if (0 < $roles->RecordCount()) {
echo \sprintf(
' <tr>
<th class="data left">%s</th>',
$this->lang['strmemberof']
) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
- echo "\t\t\t<select name=\"memberof[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
+ echo "\t\t\t<select name=\"memberof[]\" multiple=\"multiple\" size=\"", \min(20, $roles->RecordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
@@ -569,7 +569,7 @@ class RolesController extends BaseController
$rolename
),
(\in_array($rolename, $_POST['memberof'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
- $roles->moveNext();
+ $roles->MoveNext();
}
echo "\t\t\t</select>" . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -581,7 +581,7 @@ class RolesController extends BaseController
$this->lang['strmembers']
) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
- echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
+ echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(20, $roles->RecordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
@@ -590,7 +590,7 @@ class RolesController extends BaseController
$rolename
),
(\in_array($rolename, $_POST['members'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
- $roles->moveNext();
+ $roles->MoveNext();
}
echo "\t\t\t</select>" . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -602,7 +602,7 @@ class RolesController extends BaseController
$this->lang['stradminmembers']
) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
- echo "\t\t\t<select name=\"adminmembers[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
+ echo "\t\t\t<select name=\"adminmembers[]\" multiple=\"multiple\" size=\"", \min(20, $roles->RecordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
@@ -611,7 +611,7 @@ class RolesController extends BaseController
$rolename
),
(\in_array($rolename, $_POST['adminmembers'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
- $roles->moveNext();
+ $roles->MoveNext();
}
echo "\t\t\t</select>" . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -727,7 +727,7 @@ class RolesController extends BaseController
$roledata = $data->getRole($_REQUEST['rolename']);
- if (0 < $roledata->recordCount()) {
+ if (0 < $roledata->RecordCount()) {
$roledata->fields['rolsuper'] = $data->phpBool($roledata->fields['rolsuper']);
$roledata->fields['rolcreatedb'] = $data->phpBool($roledata->fields['rolcreatedb']);
$roledata->fields['rolcreaterole'] = $data->phpBool($roledata->fields['rolcreaterole']);
@@ -799,10 +799,10 @@ class RolesController extends BaseController
echo "\t\t<td class=\"data2\">";
$memberof = $data->getMemberOf($_REQUEST['rolename']);
- if (0 < $memberof->recordCount()) {
+ if (0 < $memberof->RecordCount()) {
while (!$memberof->EOF) {
echo $this->misc->printVal($memberof->fields['rolname']), '<br />' . \PHP_EOL;
- $memberof->moveNext();
+ $memberof->MoveNext();
}
}
echo "</td>\n\t</tr>" . \PHP_EOL;
@@ -814,10 +814,10 @@ class RolesController extends BaseController
echo "\t\t<td class=\"data1\">";
$members = $data->getMembers($_REQUEST['rolename']);
- if (0 < $members->recordCount()) {
+ if (0 < $members->RecordCount()) {
while (!$members->EOF) {
echo $this->misc->printVal($members->fields['rolname']), '<br />' . \PHP_EOL;
- $members->moveNext();
+ $members->MoveNext();
}
}
echo "</td>\n\t</tr>" . \PHP_EOL;
@@ -829,10 +829,10 @@ class RolesController extends BaseController
echo "\t\t<td class=\"data2\">";
$adminmembers = $data->getMembers($_REQUEST['rolename'], 't');
- if (0 < $adminmembers->recordCount()) {
+ if (0 < $adminmembers->RecordCount()) {
while (!$adminmembers->EOF) {
echo $this->misc->printVal($adminmembers->fields['rolname']), '<br />' . \PHP_EOL;
- $adminmembers->moveNext();
+ $adminmembers->MoveNext();
}
}
echo "</td>\n\t</tr>" . \PHP_EOL;
@@ -908,7 +908,7 @@ class RolesController extends BaseController
$this->printTabs('server', 'account');
$this->printMsg($msg);
- if (0 < $roledata->recordCount()) {
+ if (0 < $roledata->RecordCount()) {
$roledata->fields['rolsuper'] = $data->phpBool($roledata->fields['rolsuper']);
$roledata->fields['rolcreatedb'] = $data->phpBool($roledata->fields['rolcreatedb']);
$roledata->fields['rolcreaterole'] = $data->phpBool($roledata->fields['rolcreaterole']);
@@ -1092,12 +1092,12 @@ class RolesController extends BaseController
if (!isset($_POST['memberof'])) {
$memberof = $data->getMemberOf($_REQUEST['rolename']);
- if (0 < $memberof->recordCount()) {
+ if (0 < $memberof->RecordCount()) {
$i = 0;
while (!$memberof->EOF) {
$_POST['memberof'][$i++] = $memberof->fields['rolname'];
- $memberof->moveNext();
+ $memberof->MoveNext();
}
} else {
$_POST['memberof'] = [];
@@ -1110,12 +1110,12 @@ class RolesController extends BaseController
if (!isset($_POST['members'])) {
$members = $data->getMembers($_REQUEST['rolename']);
- if (0 < $members->recordCount()) {
+ if (0 < $members->RecordCount()) {
$i = 0;
while (!$members->EOF) {
$_POST['members'][$i++] = $members->fields['rolname'];
- $members->moveNext();
+ $members->MoveNext();
}
} else {
$_POST['members'] = [];
@@ -1128,12 +1128,12 @@ class RolesController extends BaseController
if (!isset($_POST['adminmembers'])) {
$adminmembers = $data->getMembers($_REQUEST['rolename'], 't');
- if (0 < $adminmembers->recordCount()) {
+ if (0 < $adminmembers->RecordCount()) {
$i = 0;
while (!$adminmembers->EOF) {
$_POST['adminmembers'][$i++] = $adminmembers->fields['rolname'];
- $adminmembers->moveNext();
+ $adminmembers->MoveNext();
}
} else {
$_POST['adminmembers'] = [];
diff --git a/src/controllers/SchemasController.php b/src/controllers/SchemasController.php
index 810e3e63..6d62e897 100644
--- a/src/controllers/SchemasController.php
+++ b/src/controllers/SchemasController.php
@@ -319,7 +319,7 @@ class SchemasController extends BaseController
'>%s</option>',
$uname
) . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
echo \sprintf(
@@ -385,7 +385,7 @@ class SchemasController extends BaseController
$schema = $data->getSchemaByName($_REQUEST['schema']);
- if (0 < $schema->recordCount()) {
+ if (0 < $schema->RecordCount()) {
$this->coalesceArr($_POST, 'comment', $schema->fields['nspcomment']);
$this->coalesceArr($_POST, 'schema', $_REQUEST['schema']);
@@ -423,7 +423,7 @@ class SchemasController extends BaseController
$uname = $users->fields['usename'];
echo '<option value="', \htmlspecialchars($uname), '"',
($uname === $_POST['owner']) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
} else {
diff --git a/src/controllers/SequencesController.php b/src/controllers/SequencesController.php
index 47efa54b..1c114739 100644
--- a/src/controllers/SequencesController.php
+++ b/src/controllers/SequencesController.php
@@ -245,7 +245,7 @@ class SequencesController extends BaseController
// Fetch the sequence information
$sequence = $data->getSequence($_REQUEST['sequence']);
- if (\is_object($sequence) && 0 < $sequence->recordCount()) {
+ if (\is_object($sequence) && 0 < $sequence->RecordCount()) {
$sequence->fields['is_cycled'] = $data->phpBool($sequence->fields['is_cycled']);
$sequence->fields['is_called'] = $data->phpBool($sequence->fields['is_called']);
@@ -734,7 +734,7 @@ class SequencesController extends BaseController
// Fetch the sequence information
$sequence = $data->getSequence($_REQUEST['sequence']);
- if (\is_object($sequence) && 0 < $sequence->recordCount()) {
+ if (\is_object($sequence) && 0 < $sequence->RecordCount()) {
echo '<form action="' . \containerInstance()->subFolder . '/src/views/sequences" method="post">' . \PHP_EOL;
echo '<table border="0">';
echo \sprintf(
@@ -845,7 +845,7 @@ class SequencesController extends BaseController
// Fetch the sequence information
$sequence = $data->getSequence($_REQUEST['sequence']);
- if (\is_object($sequence) && 0 < $sequence->recordCount()) {
+ if (\is_object($sequence) && 0 < $sequence->RecordCount()) {
$this->coalesceArr($_POST, 'name', $_REQUEST['sequence']);
$this->coalesceArr($_POST, 'comment', $sequence->fields['seqcomment']);
@@ -893,7 +893,7 @@ class SequencesController extends BaseController
'>',
\htmlspecialchars($uname),
'</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
@@ -913,7 +913,7 @@ class SequencesController extends BaseController
'>',
\htmlspecialchars($schema),
'</option>' . \PHP_EOL;
- $schemas->moveNext();
+ $schemas->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
diff --git a/src/controllers/ServersController.php b/src/controllers/ServersController.php
index e287e5c3..6faf2666 100644
--- a/src/controllers/ServersController.php
+++ b/src/controllers/ServersController.php
@@ -45,7 +45,7 @@ class ServersController extends BaseController
$msg = $this->msg;
$server_html = $this->printHeader($this->headerTitle(), null, false);
- $server_html .= $this->printBody(false);
+ $server_html .= $this->printBody(false,'flexbox_body',false,true);
$server_html .= $this->printTrail('root', false);
\ob_start();
@@ -95,7 +95,7 @@ class ServersController extends BaseController
if ((false !== $group) &&
(isset($this->conf['srv_groups'][$group])) &&
- (0 < $groups->recordCount())
+ (0 < $groups->RecordCount())
) {
$this->printTitle(\sprintf($this->lang['strgroupgroups'], \htmlentities($this->conf['srv_groups'][$group]['desc'], \ENT_QUOTES, 'UTF-8')));
echo $this->printTable($groups, $columns, $actions, $this->table_place);
diff --git a/src/controllers/SqlController.php b/src/controllers/SqlController.php
index 6da26277..49750a26 100644
--- a/src/controllers/SqlController.php
+++ b/src/controllers/SqlController.php
@@ -224,11 +224,11 @@ class SqlController extends BaseController
// Now, depending on what happened do various things
// First, if rows returned, then display the results
- if (0 < $rs->recordCount()) {
+ if (0 < $rs->RecordCount()) {
echo "<table>\n<tr>";
foreach ($rs->fields as $k => $v) {
- $finfo = $rs->fetchField($k);
+ $finfo = $rs->FetchField($k);
echo '<th class="data">', $this->misc->printVal($finfo->name), '</th>';
}
echo '</tr>' . \PHP_EOL;
@@ -242,15 +242,15 @@ class SqlController extends BaseController
) . \PHP_EOL;
foreach ($rs->fields as $k => $v) {
- $finfo = $rs->fetchField($k);
+ $finfo = $rs->FetchField($k);
echo '<td style="white-space:nowrap;">', $this->misc->printVal($v, $finfo->type, ['null' => true]), '</td>';
}
echo '</tr>' . \PHP_EOL;
- $rs->moveNext();
+ $rs->MoveNext();
++$i;
}
echo '</table>' . \PHP_EOL;
- echo '<p>', $rs->recordCount(), \sprintf(
+ echo '<p>', $rs->RecordCount(), \sprintf(
' %s</p>',
$this->lang['strrows']
) . \PHP_EOL;
@@ -340,7 +340,7 @@ class SqlController extends BaseController
];
// Create view and download
- if ('' !== $this->query && isset($rs) && \is_object($rs) && 0 < $rs->recordCount()) {
+ if ('' !== $this->query && isset($rs) && \is_object($rs) && 0 < $rs->RecordCount()) {
// Report views don't set a schema, so we need to disable create view in that case
if (isset($_REQUEST['schema'])) {
$navlinks['createview'] = [
diff --git a/src/controllers/TablesController.php b/src/controllers/TablesController.php
index 2837a71b..79f8b462 100644
--- a/src/controllers/TablesController.php
+++ b/src/controllers/TablesController.php
@@ -189,7 +189,7 @@ class TablesController extends BaseController
],
];
- if ((0 < $tables->recordCount()) && $data->hasCreateTableLike()) {
+ if ((0 < $tables->RecordCount()) && $data->hasCreateTableLike()) {
$navlinks['createlike'] = [
'attr' => [
'href' => [
@@ -355,7 +355,7 @@ class TablesController extends BaseController
echo "\t\t<td class=\"data\"><label for=\"withoutoids\"><input type=\"checkbox\" id=\"withoutoids\" name=\"withoutoids\"", isset($_REQUEST['withoutoids']) ? ' checked="checked"' : '', " />WITHOUT OIDS</label></td>\n\t</tr>" . \PHP_EOL;
// Tablespace (if there are any)
- if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
+ if ($data->hasTablespaces() && 0 < $tablespaces->RecordCount()) {
echo \sprintf(
' <tr>
<th class="data left">%s</th>',
@@ -378,7 +378,7 @@ class TablesController extends BaseController
'>%s</option>',
$spcname
) . \PHP_EOL;
- $tablespaces->moveNext();
+ $tablespaces->MoveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
}
@@ -510,7 +510,7 @@ class TablesController extends BaseController
'>',
$this->misc->printVal($typname),
'</option>' . \PHP_EOL;
- $types->moveNext();
+ $types->MoveNext();
}
echo "\t\t\t</select>\n\t\t\n";
@@ -758,7 +758,7 @@ class TablesController extends BaseController
if ($data->hasTablespaces()) {
$tblsp_ = $data->getTablespaces();
- if (0 < $tblsp_->recordCount()) {
+ if (0 < $tblsp_->RecordCount()) {
$tblsp_ = $tblsp_->getArray();
$tblsp = [];
@@ -879,7 +879,7 @@ class TablesController extends BaseController
echo '<form action="' . \containerInstance()->subFolder . '/src/views/display" method="post" id="selectform">' . \PHP_EOL;
- if (0 < $attrs->recordCount()) {
+ if (0 < $attrs->RecordCount()) {
// JavaScript for select all feature
echo '<script type="text/javascript">' . \PHP_EOL;
echo "//<![CDATA[\n";
@@ -958,7 +958,7 @@ class TablesController extends BaseController
), '</td>';
echo '</tr>' . \PHP_EOL;
++$i;
- $attrs->moveNext();
+ $attrs->MoveNext();
}
// Select all checkbox
echo \sprintf(
@@ -1054,7 +1054,7 @@ class TablesController extends BaseController
echo '<form action="' . \containerInstance()->subFolder . '/src/views/tables" method="post" id="ac_form">' . \PHP_EOL;
- if (0 < $attrs->recordCount()) {
+ if (0 < $attrs->RecordCount()) {
echo '<table>' . \PHP_EOL;
// Output table header
@@ -1180,7 +1180,7 @@ class TablesController extends BaseController
echo '</td>' . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
++$i;
- $attrs->moveNext();
+ $attrs->MoveNext();
}
echo '</table>' . \PHP_EOL;
diff --git a/src/controllers/TablespacesController.php b/src/controllers/TablespacesController.php
index 41727a4c..12bfcae3 100644
--- a/src/controllers/TablespacesController.php
+++ b/src/controllers/TablespacesController.php
@@ -183,7 +183,7 @@ class TablespacesController extends BaseController
// Fetch all users
$users = $data->getUsers();
- if (0 < $tablespace->recordCount()) {
+ if (0 < $tablespace->RecordCount()) {
$this->coalesceArr($_POST, 'name', $tablespace->fields['spcname']);
$this->coalesceArr($_POST, 'owner', $tablespace->fields['spcowner']);
@@ -213,7 +213,7 @@ class TablespacesController extends BaseController
$uname = $users->fields['usename'];
echo '<option value="', \htmlspecialchars($uname), '"',
($uname === $_POST['owner']) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
@@ -364,7 +364,7 @@ class TablespacesController extends BaseController
$uname = $users->fields['usename'];
echo "\t\t\t<option value=\"", \htmlspecialchars($uname), '"',
($uname === $_POST['formOwner']) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo "\t\t</select></td>\n\t</tr>" . \PHP_EOL;
echo \sprintf(
diff --git a/src/controllers/TblpropertiesController.php b/src/controllers/TblpropertiesController.php
index b0d60606..2cef3bf7 100644
--- a/src/controllers/TblpropertiesController.php
+++ b/src/controllers/TblpropertiesController.php
@@ -348,7 +348,7 @@ class TblpropertiesController extends BaseController
$tablespaces = $data->getTablespaces(true);
}
- if (0 < $table->recordCount()) {
+ if (0 < $table->RecordCount()) {
$this->coalesceArr($_POST, 'name', $table->fields['relname']);
$this->coalesceArr($_POST, 'owner', $table->fields['relowner']);
@@ -389,7 +389,7 @@ class TblpropertiesController extends BaseController
'>',
\htmlspecialchars($uname),
'</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
@@ -409,13 +409,13 @@ class TblpropertiesController extends BaseController
'>',
\htmlspecialchars($schema),
'</option>' . \PHP_EOL;
- $schemas->moveNext();
+ $schemas->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
// Tablespace (if there are any)
- if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
+ if ($data->hasTablespaces() && 0 < $tablespaces->RecordCount()) {
echo \sprintf(
' <tr>
<th class="data left">%s</th>',
@@ -438,7 +438,7 @@ class TblpropertiesController extends BaseController
'>%s</option>',
$spcname
) . \PHP_EOL;
- $tablespaces->moveNext();
+ $tablespaces->MoveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
}
@@ -692,7 +692,7 @@ class TblpropertiesController extends BaseController
echo "\t<option value=\"", \htmlspecialchars($typname), '"', ($typname === $_POST['type']) ? ' selected="selected"' : '', '>',
$misc->printVal($typname),
'</option>' . \PHP_EOL;
- $types->moveNext();
+ $types->MoveNext();
}
echo '</select></td>' . \PHP_EOL;
diff --git a/src/controllers/TreeController.php b/src/controllers/TreeController.php
index 6e4be3db..4f7e6103 100644
--- a/src/controllers/TreeController.php
+++ b/src/controllers/TreeController.php
@@ -9,6 +9,7 @@ namespace PHPPgAdmin\Controller;
use PHPPgAdmin\ArrayRecordSet;
use PHPPgAdmin\ContainerUtils;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Interfaces\RecordSet;
use PHPPgAdmin\Traits\HelperTrait;
/**
@@ -68,7 +69,7 @@ class TreeController extends BaseController
/**
* Produce JSON data for the browser tree.
*
- * @param ArrayRecordSet $_treedata a set of records to populate the tree
+ * @param \PHPPgAdmin\Interfaces\Recordset|\ADORecordSet $_treedata a set of records to populate the tree
* @param array $attrs Attributes for tree items
* 'text' - the text for the tree node
* 'icon' - an icon for node
@@ -86,17 +87,18 @@ class TreeController extends BaseController
*
* @psalm-return array<int|string, array<string, mixed>|bool|string>
*/
- public function printTree(&$_treedata, &$attrs, $section, $print = true)
+ public function printTree( &$_treedata, &$attrs, $section, $print = true)
{
$treedata = [];
- if (0 < $_treedata->recordCount()) {
+ if (0 < $_treedata->RecordCount()) {
while (!$_treedata->EOF) {
- $treedata[] = $_treedata->fields;
- $_treedata->moveNext();
+ $treedata[] = $_treedata->fields;
+ $_treedata->MoveNext();
}
- }
+ }
+
$tree_params = [
'treedata' => &$treedata,
'attrs' => &$attrs,
@@ -163,7 +165,11 @@ class TreeController extends BaseController
if (!empty($attrs['openicon'])) {
$icon = $this->view->icon(Decorator::get_sanitized_value($attrs['openIcon'], $rec));
}
-
+ $href=Decorator::get_sanitized_value($attrs['action'], $rec);
+ if ($href) {
+ $href = \str_replace('//', '/', \containerInstance()->subFolder . $href);
+ }
+
$tree = [
'text' => Decorator::get_sanitized_value($attrs['text'], $rec),
'id' => \sha1(Decorator::get_sanitized_value($attrs['action'], $rec)),
@@ -171,7 +177,7 @@ class TreeController extends BaseController
'iconaction' => Decorator::get_sanitized_value($attrs['iconAction'], $rec),
'openicon' => Decorator::get_sanitized_value($icon, $rec),
'tooltip' => Decorator::get_sanitized_value($attrs['toolTip'], $rec),
- 'a_attr' => ['href' => Decorator::get_sanitized_value($attrs['action'], $rec)],
+ 'a_attr' => ['href' => $href],
'children' => false,
];
$url = Decorator::get_sanitized_value($attrs['branch'], $rec);
diff --git a/src/controllers/TriggersController.php b/src/controllers/TriggersController.php
index 70373008..1d32f48d 100644
--- a/src/controllers/TriggersController.php
+++ b/src/controllers/TriggersController.php
@@ -279,7 +279,7 @@ class TriggersController extends BaseController
$triggerdata = $data->getTrigger($_REQUEST['table'], $_REQUEST['trigger']);
- if (0 < $triggerdata->recordCount()) {
+ if (0 < $triggerdata->RecordCount()) {
$this->coalesceArr($_POST, 'name', $triggerdata->fields['tgname']);
echo '<form action="' . \containerInstance()->subFolder . '/src/views/triggers" method="post">' . \PHP_EOL;
@@ -485,7 +485,7 @@ class TriggersController extends BaseController
// Get all the functions that can be used in triggers
$funcs = $data->getTriggerFunctions();
- if (0 === $funcs->recordCount()) {
+ if (0 === $funcs->RecordCount()) {
$this->doDefault($this->lang['strnofunctions']);
return;
@@ -496,7 +496,7 @@ class TriggersController extends BaseController
while (!$funcs->EOF) {
$sel0->add(new XHtmlOption($funcs->fields['proname']));
- $funcs->moveNext();
+ $funcs->MoveNext();
}
// Populate times
diff --git a/src/controllers/TypesController.php b/src/controllers/TypesController.php
index c48c8a17..3eecc349 100644
--- a/src/controllers/TypesController.php
+++ b/src/controllers/TypesController.php
@@ -255,7 +255,7 @@ class TypesController extends BaseController
$rowdata->fields['+type'] = $data->formatType($rowdata->fields['type'], $rowdata->fields['atttypmod']);
};
- if (0 < $typedata->recordCount()) {
+ if (0 < $typedata->RecordCount()) {
$vals = false;
switch ($typedata->fields['typtype']) {
@@ -549,7 +549,7 @@ class TypesController extends BaseController
echo "\t\t\t\t<option value=\"", \htmlspecialchars($typname), '"',
(isset($_REQUEST['type'][$i]) && $_REQUEST['type'][$i] === $typname) ? ' selected="selected"' : '', '>',
$this->misc->printVal($typname), '</option>' . \PHP_EOL;
- $types->moveNext();
+ $types->MoveNext();
}
echo "\t\t\t</select>\n\t\t</td>" . \PHP_EOL;
@@ -885,7 +885,7 @@ class TypesController extends BaseController
'>%s</option>',
$proname
) . \PHP_EOL;
- $funcs->moveNext();
+ $funcs->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
echo \sprintf(
@@ -905,7 +905,7 @@ class TypesController extends BaseController
'>%s</option>',
$proname
) . \PHP_EOL;
- $funcs->moveNext();
+ $funcs->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
echo '<tr><th class="data left' . (\version_compare($data->major_version, '7.4', '<') ? ' required' : '') . \sprintf(
@@ -937,7 +937,7 @@ class TypesController extends BaseController
'>%s</option>',
$currname
) . \PHP_EOL;
- $types->moveNext();
+ $types->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
echo \sprintf(
diff --git a/src/controllers/UsersController.php b/src/controllers/UsersController.php
index 0786d961..a03ca6d4 100644
--- a/src/controllers/UsersController.php
+++ b/src/controllers/UsersController.php
@@ -204,7 +204,7 @@ class UsersController extends BaseController
$this->printTabs('server', 'account');
$this->printMsg($msg);
- if (0 < $userdata->recordCount()) {
+ if (0 < $userdata->RecordCount()) {
$userdata->fields['usesuper'] = $data->phpBool($userdata->fields['usesuper']);
$userdata->fields['usecreatedb'] = $data->phpBool($userdata->fields['usecreatedb']);
echo '<table>' . \PHP_EOL;
@@ -334,7 +334,7 @@ class UsersController extends BaseController
$userdata = $data->getUser($_REQUEST['username']);
- if (!\is_object($userdata) || 0 < $userdata->recordCount()) {
+ if (!\is_object($userdata) || 0 < $userdata->RecordCount()) {
$server_info = $this->misc->getServerInfo();
$canRename = $data->hasUserRename() && ($_REQUEST['username'] !== $server_info['username']);
$userdata->fields['usesuper'] = $data->phpBool($userdata->fields['usesuper'] ?? false);
diff --git a/src/controllers/ViewpropertiesController.php b/src/controllers/ViewpropertiesController.php
index 33091e27..d0a5f3eb 100644
--- a/src/controllers/ViewpropertiesController.php
+++ b/src/controllers/ViewpropertiesController.php
@@ -137,7 +137,7 @@ class ViewpropertiesController extends BaseController
$viewdata = $data->getView($_REQUEST[$this->subject]);
$this->printHeader($this->headerTitle(), null, true, 'header_sqledit.twig');
- if (0 < $viewdata->recordCount()) {
+ if (0 < $viewdata->RecordCount()) {
if (!isset($_POST['formDefinition'])) {
$_POST['formDefinition'] = $viewdata->fields['vwdefinition'];
$_POST['formComment'] = $viewdata->fields['relcomment'];
@@ -323,7 +323,7 @@ class ViewpropertiesController extends BaseController
// Fetch view info
$view = $data->getView($_REQUEST[$this->subject]);
- if (0 < $view->recordCount()) {
+ if (0 < $view->RecordCount()) {
$this->coalesceArr($_POST, 'name', $view->fields['relname']);
$this->coalesceArr($_POST, 'owner', $view->fields['relowner']);
@@ -359,7 +359,7 @@ class ViewpropertiesController extends BaseController
$uname = $users->fields['usename'];
echo '<option value="', \htmlspecialchars($uname), '"',
($uname === $_POST['owner']) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->moveNext();
+ $users->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
@@ -376,7 +376,7 @@ class ViewpropertiesController extends BaseController
$schema = $schemas->fields['nspname'];
echo '<option value="', \htmlspecialchars($schema), '"',
($schema === $_POST['newschema']) ? ' selected="selected"' : '', '>', \htmlspecialchars($schema), '</option>' . \PHP_EOL;
- $schemas->moveNext();
+ $schemas->MoveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
}
diff --git a/src/database/ADOdbBase.php b/src/database/ADOdbBase.php
index 9d8db0ff..28d04ce5 100644
--- a/src/database/ADOdbBase.php
+++ b/src/database/ADOdbBase.php
@@ -113,7 +113,7 @@ class ADOdbBase
$rs = $this->selectSet($sql);
- if ($rs->recordCount() !== \count($atts)) {
+ if ($rs->RecordCount() !== \count($atts)) {
return -2;
}
@@ -121,7 +121,7 @@ class ADOdbBase
while (!$rs->EOF) {
$temp[$rs->fields['attnum']] = $rs->fields['attname'];
- $rs->moveNext();
+ $rs->MoveNext();
}
return $temp;
@@ -372,7 +372,7 @@ class ADOdbBase
return $this->ErrorNo();
}
- if (0 === $rs->recordCount()) {
+ if (0 === $rs->RecordCount()) {
return -1;
}
diff --git a/src/database/databasetraits/DatabaseTrait.php b/src/database/databasetraits/DatabaseTrait.php
index ad17c16d..c932ec51 100644
--- a/src/database/databasetraits/DatabaseTrait.php
+++ b/src/database/databasetraits/DatabaseTrait.php
@@ -643,7 +643,7 @@ trait DatabaseTrait
while (!$_defaults->EOF) {
$ret[$_defaults->fields['name']] = $_defaults->fields['setting'];
- $_defaults->moveNext();
+ $_defaults->MoveNext();
}
return $ret;
diff --git a/src/database/databasetraits/IndexTrait.php b/src/database/databasetraits/IndexTrait.php
index 615330aa..8adf53a0 100644
--- a/src/database/databasetraits/IndexTrait.php
+++ b/src/database/databasetraits/IndexTrait.php
@@ -40,7 +40,7 @@ trait IndexTrait
$v = $this->selectSet($sql);
- return !(0 === $v->recordCount());
+ return !(0 === $v->RecordCount());
}
/**
diff --git a/src/database/databasetraits/RowTrait.php b/src/database/databasetraits/RowTrait.php
index fcbd0fed..e102f978 100644
--- a/src/database/databasetraits/RowTrait.php
+++ b/src/database/databasetraits/RowTrait.php
@@ -91,7 +91,7 @@ trait RowTrait
// If none, check for an OID column. Even though OIDs can be duplicated, the edit and delete row
// functions check that they're only modiying a single row. Otherwise, return empty array.
- if (0 === $rs->recordCount()) {
+ if (0 === $rs->RecordCount()) {
// Check for OID column
$temp = [];
diff --git a/src/database/databasetraits/SequenceTrait.php b/src/database/databasetraits/SequenceTrait.php
index 47415d48..cb9fe670 100644
--- a/src/database/databasetraits/SequenceTrait.php
+++ b/src/database/databasetraits/SequenceTrait.php
@@ -133,7 +133,7 @@ trait SequenceTrait
// Get the minimum value of the sequence
$seq = $this->getSequence($sequence);
- if (1 !== $seq->recordCount()) {
+ if (1 !== $seq->RecordCount()) {
return -1;
}
@@ -302,7 +302,7 @@ trait SequenceTrait
$data = $this->getSequence($sequence);
- if (1 !== $data->recordCount()) {
+ if (1 !== $data->RecordCount()) {
return -2;
}
diff --git a/src/database/databasetraits/TableTrait.php b/src/database/databasetraits/TableTrait.php
index 2664368c..39a82db1 100644
--- a/src/database/databasetraits/TableTrait.php
+++ b/src/database/databasetraits/TableTrait.php
@@ -154,7 +154,7 @@ trait TableTrait
// Fetch table
$t = $this->getTable($table);
- if (!\is_object($t) || 1 !== $t->recordCount()) {
+ if (!\is_object($t) || 1 !== $t->RecordCount()) {
$this->rollbackTransaction();
return null;
@@ -187,7 +187,7 @@ trait TableTrait
// Output all table columns
$col_comments_sql = ''; // Accumulate comments on columns
- $num = $atts->recordCount() + $cons->recordCount();
+ $num = $atts->RecordCount() + $cons->RecordCount();
$i = 1;
$sql = $this->_dumpSerials($atts, $t, $sql, $col_comments_sql, $i, $num);
@@ -393,7 +393,7 @@ trait TableTrait
$rs = $this->selectSet($sql);
- if (1 !== $rs->recordCount()) {
+ if (1 !== $rs->RecordCount()) {
return false;
}
@@ -421,13 +421,13 @@ trait TableTrait
return null;
}
- if (0 < $indexes->recordCount()) {
+ if (0 < $indexes->RecordCount()) {
$sql .= "\n-- Indexes\n\n";
while (!$indexes->EOF) {
$sql .= $indexes->fields['inddef'] . ";\n";
- $indexes->moveNext();
+ $indexes->MoveNext();
}
}
@@ -440,14 +440,14 @@ trait TableTrait
return null;
}
- if (0 < $triggers->recordCount()) {
+ if (0 < $triggers->RecordCount()) {
$sql .= "\n-- Triggers\n\n";
while (!$triggers->EOF) {
$sql .= $triggers->fields['tgdef'];
$sql .= ";\n";
- $triggers->moveNext();
+ $triggers->MoveNext();
}
}
@@ -460,13 +460,13 @@ trait TableTrait
return null;
}
- if (0 < $rules->recordCount()) {
+ if (0 < $rules->RecordCount()) {
$sql .= "\n-- Rules\n\n";
while (!$rules->EOF) {
$sql .= $rules->fields['definition'] . "\n";
- $rules->moveNext();
+ $rules->MoveNext();
}
}
@@ -893,7 +893,7 @@ trait TableTrait
{
$tblrs = $this->getTable($table);
- if (1 !== $tblrs->recordCount()) {
+ if (1 !== $tblrs->RecordCount()) {
return -2;
}
@@ -1312,7 +1312,7 @@ trait TableTrait
$autovacs[] = $_;
- $_autovacs->moveNext();
+ $_autovacs->MoveNext();
}
return new ArrayRecordSet($autovacs);
@@ -1667,7 +1667,7 @@ trait TableTrait
);
}
- $atts->moveNext();
+ $atts->MoveNext();
++$i;
}
@@ -1725,7 +1725,7 @@ trait TableTrait
$sql .= "\n";
}
- $cons->moveNext();
+ $cons->MoveNext();
++$i;
}
@@ -1798,7 +1798,7 @@ trait TableTrait
);
}
- $atts->moveNext();
+ $atts->MoveNext();
}
return $sql;
diff --git a/src/database/databasetraits/ViewTrait.php b/src/database/databasetraits/ViewTrait.php
index ed74aace..b61cd9cb 100644
--- a/src/database/databasetraits/ViewTrait.php
+++ b/src/database/databasetraits/ViewTrait.php
@@ -137,7 +137,7 @@ trait ViewTrait
{
$data = $this->getView($view);
- if (1 !== $data->recordCount()) {
+ if (1 !== $data->RecordCount()) {
return -2;
}
diff --git a/src/interfaces/RecordSet.php b/src/interfaces/RecordSet.php
new file mode 100644
index 00000000..a9ae6e6d
--- /dev/null
+++ b/src/interfaces/RecordSet.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * PHPPgAdmin 6.1.3
+ */
+
+namespace PHPPgAdmin\Interfaces;
+use ADOFieldObject;
+
+use Countable;
+
+interface RecordSet
+{
+
+
+
+ /**
+ * Returns the recordCount.
+ */
+ public function count(): int;
+
+ /**
+ * Counts the records in the instance array.
+ *
+ * @return int number of records in the instance array
+ */
+ public function RecordCount():int;
+ /**
+ * Advance the internal pointer of the instance array
+ * if no more fields are left, marks the instance variable $EOF as true.
+ */
+ public function MoveNext(): void;
+
+ public function FetchField(int $fieldoffset = -1): ADOFieldObject;
+
+}
diff --git a/src/lib.inc.php b/src/lib.inc.php
index c8e02d77..f1470e4b 100644
--- a/src/lib.inc.php
+++ b/src/lib.inc.php
@@ -57,7 +57,7 @@ function getAppInstance(): App
$conf['IN_TEST'] = IN_TEST;
// Fetch App and DI Container
- $app = ContainerUtils::getAppInstance($conf);
+ $app = ContainerUtils::getAppInstance($conf);
return $app;
}
diff --git a/src/router.php b/src/router.php
index 7f965c38..3b098758 100644
--- a/src/router.php
+++ b/src/router.php
@@ -117,10 +117,28 @@ $app->get('/redirect[/{subject}]', function (
) {
$subject = (isset($args['subject'])) ? $args['subject'] : 'root';
$destinationurl = $this->getDestinationWithLastTab($subject);
+ return $response->withStatus(302)->withHeader('Location', $destinationurl);
+});
+
+ini_set('display_errors','on');
+$app->get('/{subject:servers|intro|browser}[/{server_id}]', function (
+ \Slim\Http\Request $request,
+ \Slim\Http\Response $response,
+ array $args
+) {
+ $subject = $args['subject'] ?? 'intro';
+ $this->view->offsetSet('includeJsTree',true);
+ $className = '\PHPPgAdmin\Controller\\' . \ucfirst($subject) . 'Controller';
+ $controller = new $className($this);
+ return $controller->render();
+
+ //$query_string = $request->getUri()->getQuery();
+ //return $this->view->maybeRenderIframes($response, $subject, $query_string,'intro_view.twig');
- return $response->withStatus(302)->withHeader('Location', $destinationurl);
+
});
+
$app->map(['GET', 'POST'], '/src/views/{subject}', function (
\Slim\Http\Request $request,
\Slim\Http\Response $response,
@@ -171,6 +189,7 @@ $app->get('/{subject:\w+}[/{server_id}]', function (
$subject = 'servers';
}
$query_string = $request->getUri()->getQuery();
+ $this->view->offsetSet('includeJsTree',true);
return $this->view->maybeRenderIframes($response, $subject, $query_string);
});
diff --git a/src/traits/AdminTrait.php b/src/traits/AdminTrait.php
index 0890b083..dd9fa1f2 100644
--- a/src/traits/AdminTrait.php
+++ b/src/traits/AdminTrait.php
@@ -1046,7 +1046,7 @@ trait AdminTrait
echo $this->printTable($autovac, $columns, $actions, 'admin-admin', $this->lang['strnovacuumconf']);
- if (('table' === $type) && (0 === $autovac->recordCount())) {
+ if (('table' === $type) && (0 === $autovac->RecordCount())) {
echo '<br />';
echo '<a href="' . \containerInstance()->subFolder . "/src/views/tables?action=confeditautovac&amp;{$this->misc->href}&amp;table=";
diff --git a/src/traits/HelperTrait.php b/src/traits/HelperTrait.php
index f869ffd6..0610572c 100644
--- a/src/traits/HelperTrait.php
+++ b/src/traits/HelperTrait.php
@@ -68,13 +68,13 @@ trait HelperTrait
{
$result = [];
- if (0 >= $set->recordCount()) {
+ if (0 >= $set->RecordCount()) {
return $result;
}
while (!$set->EOF) {
$result[] = $field ? $set->fields[$field] : $set;
- $set->moveNext();
+ $set->MoveNext();
}
return $result;
diff --git a/src/traits/InsertEditRowTrait.php b/src/traits/InsertEditRowTrait.php
index 27821d04..b44fece4 100644
--- a/src/traits/InsertEditRowTrait.php
+++ b/src/traits/InsertEditRowTrait.php
@@ -82,7 +82,7 @@ trait InsertEditRowTrait
$fksprops['byfield'][$constrs->fields['p_attnum']][] = $constrs->fields['conid'];
}
- $constrs->moveNext();
+ $constrs->MoveNext();
}
$fksprops['code'] = '<script type="text/javascript">' . \PHP_EOL;
diff --git a/src/traits/ServersTrait.php b/src/traits/ServersTrait.php
index 16533cb9..0a8e8c16 100644
--- a/src/traits/ServersTrait.php
+++ b/src/traits/ServersTrait.php
@@ -146,7 +146,7 @@ trait ServersTrait
$data = $this->misc->getDatabaseAccessor();
$databases = $data->getDatabases();
- if (0 < $databases->recordCount()) {
+ if (0 < $databases->RecordCount()) {
$connection_html .= '<label>';
$connection_html .= $this->view->printHelp($this->lang['strdatabase'], 'pg.database', false);
$connection_html .= ": <select id='selectdb' name=\"database\" >" . \PHP_EOL;
@@ -161,7 +161,7 @@ trait ServersTrait
$dbselected = isset($_REQUEST['database']) && $dbname === $_REQUEST['database'] ? ' selected="selected"' : '';
$connection_html .= '<option value="' . \htmlspecialchars($dbname) . '" ' . $dbselected . '>' . \htmlspecialchars($dbname) . '</option>' . \PHP_EOL;
- $databases->moveNext();
+ $databases->MoveNext();
}
$connection_html .= '</select></label>' . \PHP_EOL;
} else {
diff --git a/src/traits/ViewsMatViewsPropertiesTrait.php b/src/traits/ViewsMatViewsPropertiesTrait.php
index acc373c6..be52e53f 100644
--- a/src/traits/ViewsMatViewsPropertiesTrait.php
+++ b/src/traits/ViewsMatViewsPropertiesTrait.php
@@ -264,7 +264,7 @@ trait ViewsMatViewsPropertiesTrait
$this->printTabs($this->subject, 'definition');
$this->printMsg($msg);
- if (0 < $vdata->recordCount()) {
+ if (0 < $vdata->RecordCount()) {
// Show comment if any
if (null !== $vdata->fields['relcomment']) {
echo '<p class="comment">', $this->misc->printVal($vdata->fields['relcomment']), '</p>' . \PHP_EOL;
diff --git a/src/traits/ViewsMatviewsTrait.php b/src/traits/ViewsMatviewsTrait.php
index d2cade2c..f839aecf 100644
--- a/src/traits/ViewsMatviewsTrait.php
+++ b/src/traits/ViewsMatviewsTrait.php
@@ -67,7 +67,7 @@ trait ViewsMatviewsTrait
echo '<form action="' . \containerInstance()->subFolder . '/src/views/' . $this->script . '" method="post" id="selectform">';
echo \PHP_EOL;
- if (0 < $attrs->recordCount()) {
+ if (0 < $attrs->RecordCount()) {
// JavaScript for select all feature
echo '<script type="text/javascript">' . \PHP_EOL;
echo "//<![CDATA[\n";
@@ -126,7 +126,7 @@ trait ViewsMatviewsTrait
);
echo '</td></tr>' . \PHP_EOL;
++$i;
- $attrs->moveNext();
+ $attrs->MoveNext();
}
// Select all checkbox
echo "<tr><td colspan=\"5\"><input type=\"checkbox\" id=\"selectall\" name=\"selectall\" accesskey=\"a\" onclick=\"javascript:selectAll()\" /><label for=\"selectall\">{$this->lang['strselectallfields']}</label></td></tr>";
@@ -198,7 +198,7 @@ trait ViewsMatviewsTrait
$arrTmp['tablename'] = $tables->fields['relname'];
$schema_and_name = $tables->fields['nspname'] . '.' . $tables->fields['relname'];
$arrTables[$schema_and_name] = \serialize($arrTmp);
- $tables->moveNext();
+ $tables->MoveNext();
}
echo \PHPPgAdmin\XHtml\HTMLController::printCombo($arrTables, 'formTables[]', false, '', true);
@@ -347,7 +347,7 @@ trait ViewsMatviewsTrait
//get linking keys
$rsLinkKeys = $data->getLinkingKeys($arrSelTables);
- $linkCount = $rsLinkKeys->recordCount() > $tblCount ? $rsLinkKeys->recordCount() : $tblCount;
+ $linkCount = $rsLinkKeys->RecordCount() > $tblCount ? $rsLinkKeys->RecordCount() : $tblCount;
$arrFields = []; //array that will hold all our table/field names
@@ -369,7 +369,7 @@ trait ViewsMatviewsTrait
'tablename' => $arrSelTables[$i]['tablename'],
'fieldname' => $attrs->fields['attname'], ]
);
- $attrs->moveNext();
+ $attrs->MoveNext();
}
$data->setSchema($curSchema);
@@ -418,7 +418,7 @@ trait ViewsMatviewsTrait
if (!$rsLinkKeys->EOF) {
$curLeftLink = \htmlspecialchars(\serialize(['schemaname' => $rsLinkKeys->fields['p_schema'], 'tablename' => $rsLinkKeys->fields['p_table'], 'fieldname' => $rsLinkKeys->fields['p_field']]));
$curRightLink = \htmlspecialchars(\serialize(['schemaname' => $rsLinkKeys->fields['f_schema'], 'tablename' => $rsLinkKeys->fields['f_table'], 'fieldname' => $rsLinkKeys->fields['f_field']]));
- $rsLinkKeys->moveNext();
+ $rsLinkKeys->MoveNext();
} else {
$curLeftLink = '';
$curRightLink = '';
diff --git a/src/xhtml/HTMLHeaderController.php b/src/xhtml/HTMLHeaderController.php
index 1faa794b..ad08b5fc 100644
--- a/src/xhtml/HTMLHeaderController.php
+++ b/src/xhtml/HTMLHeaderController.php
@@ -90,13 +90,18 @@ class HTMLHeaderController extends HTMLController
*
* @return string the parsed template
*/
- public function printBody($doBody = true, $bodyClass = 'detailbody', $onloadInit = false)
+ public function printBody($doBody = true, $bodyClass = 'detailbody', $onloadInit = false,$includeJsTree=false)
{
- $bodyClass = $this->lang['applangdir'] . ' ' . \htmlspecialchars($bodyClass);
- $onload = ($onloadInit ? 'onload="init();" ' : '');
-
- $bodyHtml = \sprintf('<body data-controller="%s" class="%s" %s >', $this->controller_name, $bodyClass, $onload);
- $bodyHtml .= \PHP_EOL;
+
+ $includeJsTree=$includeJsTree||( $this->view->offsetExists('includeJsTree')?$this->view->offsetGet('includeJsTree'):false);
+ $viewVars=[
+ 'bodyClass'=> $this->lang['applangdir'] . ' ' . \htmlspecialchars($bodyClass).' '.$includeJsTree?'flexbox_body':'',
+ 'onload'=>($onloadInit ? 'onload="init();" ' : ''),
+ 'controller_name'=>$this->controller_name,
+ 'includeJsTree'=>$includeJsTree
+ ];
+
+ $bodyHtml = $this->view->fetch('components/common_body.twig', $viewVars);
if (!$this->_no_output && $doBody) {
echo $bodyHtml;
diff --git a/src/xhtml/HTMLTableController.php b/src/xhtml/HTMLTableController.php
index 8575ad0b..7ab03023 100644
--- a/src/xhtml/HTMLTableController.php
+++ b/src/xhtml/HTMLTableController.php
@@ -97,7 +97,7 @@ class HTMLTableController extends HTMLController
public function printTable($turn_into_datatable = true, $with_body = true)
{
- if (0 >= $this->tabledata->recordCount()) {
+ if (0 >= $this->tabledata->RecordCount()) {
return "<p>{$this->nodata}</p>" . \PHP_EOL;
}
@@ -330,6 +330,7 @@ class HTMLTableController extends HTMLController
if (null !== $val) {
if (isset($column['url'])) {
+ $column['url']=str_replace(sprintf('%s%s',$this->container->subFolder,$this->container->subFolder),$this->container->subFolder,$column['url']??'');
$tbody_html .= "<a href=\"{$column['url']}";
$tbody_html .= $this->printUrlVars($column['vars'], $tabledata->fields, false);
$tbody_html .= '">';
@@ -350,7 +351,7 @@ class HTMLTableController extends HTMLController
}
$tbody_html .= '</tr>' . \PHP_EOL;
- $tabledata->moveNext();
+ $tabledata->MoveNext();
++$i;
}