mirror of
https://github.com/vrana/adminer.git
synced 2025-09-02 02:42:37 +02:00
Compare commits
56 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2993ee4ea7 | ||
|
27ae5e7895 | ||
|
c54e6fb589 | ||
|
f8bff19898 | ||
|
3195023248 | ||
|
4a65703334 | ||
|
5c9e0f6d5a | ||
|
8e2745ab4f | ||
|
f4d06b50fc | ||
|
1abaa642ae | ||
|
cad67e2c68 | ||
|
d53c966ef7 | ||
|
5490c1654c | ||
|
e69f0afc2a | ||
|
3380f3aaea | ||
|
ddb7dedfa4 | ||
|
0590d7d3ef | ||
|
44e59cd698 | ||
|
c6bb5b80a8 | ||
|
c50cdef293 | ||
|
69dbf1b83f | ||
|
4c68b268a6 | ||
|
ae327d9a15 | ||
|
edd6d6c117 | ||
|
c24af3087c | ||
|
7fc071c716 | ||
|
3cbf8a8eb2 | ||
|
8de7d61da8 | ||
|
4112aaf26f | ||
|
5fdc9dc427 | ||
|
cc646de4ca | ||
|
b6b379a8ce | ||
|
f93db81c0e | ||
|
2cafcd7fc8 | ||
|
53799ff6ab | ||
|
638288cc04 | ||
|
99f4c22c72 | ||
|
55e0c348b8 | ||
|
379003fc8d | ||
|
0933e4e67d | ||
|
ee26735ac6 | ||
|
214d7745a7 | ||
|
99b7c08e3a | ||
|
b1ecb0649e | ||
|
2430ad2702 | ||
|
9eeeca6b0e | ||
|
d165cd9aec | ||
|
a0a0d44c7c | ||
|
316754af47 | ||
|
47f1f19970 | ||
|
5c4dc82081 | ||
|
226d4ad54b | ||
|
85c0c8f003 | ||
|
c815ea875b | ||
|
872991fa14 | ||
|
35411d8f4e |
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
@@ -1,2 +0,0 @@
|
||||
patreon: jakubvrana
|
||||
custom: ["https://sourceforge.net/p/adminer/donate/"]
|
67
.github/workflows/codeql-analysis.yml
vendored
67
.github/workflows/codeql-analysis.yml
vendored
@@ -1,67 +0,0 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: '20 16 * * 0'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,6 +1,7 @@
|
||||
/adminer/adminer.css
|
||||
/adminer*.php
|
||||
/editor*.php
|
||||
/**/compiled
|
||||
/vendor/
|
||||
/composer.lock
|
||||
/temp
|
||||
/export/
|
||||
|
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -1,6 +0,0 @@
|
||||
[submodule "designs/hydra"]
|
||||
path = designs/hydra
|
||||
url = https://github.com/Niyko/Hydra-Dark-Theme-for-Adminer
|
||||
[submodule "designs/pepa-linha-dark"]
|
||||
path = designs/pepa-linha-dark
|
||||
url = https://github.com/pepa-linha/Adminer-Design-Dark/
|
471
CHANGELOG.md
471
CHANGELOG.md
@@ -1,48 +1,132 @@
|
||||
# Changelog
|
||||
Changelog
|
||||
=========
|
||||
|
||||
AdminerNeo 4.14 (2025-02-02)
|
||||
----------------------------
|
||||
|
||||
### Changes
|
||||
|
||||
- Change project's name to AdminerNeo
|
||||
- Add support for page scrolling while dragging sortable rows (issue #11)
|
||||
- Update lucas-sandery theme (by @lucas-sandery)
|
||||
- Switch JsShrink library to a custom fork (issue #17)
|
||||
- Compile adminer into the "export" directory
|
||||
- Small JS tuning for better CodeQL analysis
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- MariaDB: Fix missing uca1400 collations
|
||||
- PostgreSQL: Fix initial value of exported autoincrement
|
||||
- PostgreSQL: Fix renaming a database
|
||||
- Fix warnings in language detection
|
||||
- Fix link to language files in README.md (issue #18)
|
||||
|
||||
Thanks for help with invalid links: @adrianbj.
|
||||
|
||||
AdminerNeo 4.13 (2025-01-23)
|
||||
----------------------------
|
||||
|
||||
### Changes
|
||||
|
||||
- Remove donation link from logout message
|
||||
- Update German translation (by @wintstar, @odysseuscm)
|
||||
- Declare compatibility with PHP 8.4
|
||||
- Remove too broken designs
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- SQLite: Fix exporting and recreating tables with UNIQUE column constraint
|
||||
- Fix main visual glitches in designs
|
||||
|
||||
AdminerNeo 4.12 (2024-11-21)
|
||||
----------------------------
|
||||
|
||||
### New features
|
||||
|
||||
- MySQL: Print comments of stored procedures and functions
|
||||
- MariaDB: Add support for UUID data type (by @vukbgit)
|
||||
- MS SQL: Allow to set Encrypt and TrustServerCertificate with AdminerLoginSsl plugin (issue #5)
|
||||
- MS SQL, MongoDB: Connect to localhost with default port if server is not specified
|
||||
- Compiler: Allow to compile only selected drivers and languages
|
||||
|
||||
### Changes
|
||||
|
||||
- Change logo link to main page (login)
|
||||
- Enhance checking of new version
|
||||
- Update project URL and info
|
||||
- Rename 'server' driver to 'mysql'
|
||||
- Compiler: MySQL driver is no longer the required default
|
||||
- Update Spanish translations (by @isaacpolaino)
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- PostgreSQL: Fix layout of stored function parameters
|
||||
- MongoDB: Fix parsing WHERE condition from SQL query
|
||||
- Fix SQL query code direction if RTL language is used
|
||||
- Fix disappearing dragged row
|
||||
- Fix highlighting default submit button in indexes form
|
||||
- Compiler: Fix translations in plugins
|
||||
- Compiler: Fix compiled SQLite single-driver Adminer
|
||||
|
||||
AdminerNeo 4.11 (2024-10-30)
|
||||
----------------------------
|
||||
|
||||
### New features
|
||||
|
||||
- PostgreSQL, MS SQL: Show list of schemas in database, unify lists of sequences and user types
|
||||
|
||||
### Changes
|
||||
|
||||
## Adminer 4.11 (2024-10-30)
|
||||
- Support drag-n-drop moving on touch screens
|
||||
- Fix drag-n-drop moving of function parameters
|
||||
- Update project information in comments
|
||||
- Update CS and SK translations
|
||||
- Show help popup after a short delay
|
||||
- PostgreSQL: Show list of schemas in database, unify lists of sequences and user types
|
||||
- Small CSS tuning
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fix drag-n-drop moving of function parameters
|
||||
- MariaDB: Fix several links to documentation pages
|
||||
- MySQL: Fix highlighting current table in menu on macOS
|
||||
- MS SQL: Prefix Unicode strings with 'N' so they are treated correctly
|
||||
- Fix printing error message while validating server URL
|
||||
- Small CSS tuning
|
||||
|
||||
## Adminer 4.10 (2024-10-22)
|
||||
AdminerNeo 4.10 (2024-10-22)
|
||||
----------------------------
|
||||
|
||||
### New features
|
||||
|
||||
### UI changes and improvements
|
||||
- Add drag-n-drop moving of rows in table selection filter
|
||||
- Add drag-n-drop moving of rows in table editing
|
||||
- Add removal buttons to table selection filter
|
||||
- Add removal buttons to table selection filter (by @Roy-Orbison)
|
||||
- Enable regular expressions when searching data in all tables (by @Roy-Orbison)
|
||||
- Integrate tables-filter plugin into the base code
|
||||
- Full width design for database select box
|
||||
- Add 'Home' to breadcrumb navigation
|
||||
- Plugin to auto-include adminer.js when present (by @Roy-Orbison)
|
||||
- Print username next to the logout button
|
||||
- Show partitioning info in table structure page
|
||||
- Show second link for editing a table under the table view
|
||||
|
||||
### Changes
|
||||
|
||||
- Check new version against GitHub pages (by @adrianbj)
|
||||
- Add 'Home' to breadcrumb navigation
|
||||
- Full width design for database select box
|
||||
- Add table head to the list of indexes
|
||||
- Hide edited value if selected function will not use it
|
||||
- Hide arrow buttons in number input fields
|
||||
- Do not display empty action links in main menu
|
||||
- Remove deprecated HTML table parameters
|
||||
- Remove option to hide default values
|
||||
|
||||
### Functional enhancements
|
||||
- Enable regular expressions when searching data in all tables
|
||||
- Elasticsearch: New condition operators as the combination of query type and match type
|
||||
- Elasticsearch: Proper formatting of boolean values
|
||||
- Plugin to auto-include adminer.js when present
|
||||
- Check new version against GitHub pages
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fix missing SQL statement if warnings are printed (regression from 4.9)
|
||||
|
||||
## Adminer 4.9.4 (2024-10-09)
|
||||
AdminerNeo 4.9.4 (2024-10-09)
|
||||
-----------------------------
|
||||
|
||||
- Fix the width of inline edit field
|
||||
- Unify displaying of 'New item' action based on privileges
|
||||
- Better default value for object definition `(*.*)` while creating new database user
|
||||
@@ -53,49 +137,57 @@
|
||||
- Editor: Fix building links with array parameters
|
||||
- Clean up the code for PHP < 5.6
|
||||
|
||||
## Adminer 4.9.3 (2024-10-02)
|
||||
AdminerNeo 4.9.3 (2024-10-02)
|
||||
-----------------------------
|
||||
|
||||
- MySQL, PostgreSQL: Fix queries splitting and string constants
|
||||
- MySQL: Fix where clause for `JSON` column
|
||||
- MySQL: Fix where clause for `JSON` column (by @SeaEagle)
|
||||
- MySQL: Fix editing user's proxy privilege, refactoring
|
||||
- MariaDB: Fix comparing `CURRENT_TIMESTAMP` definition while altering a table
|
||||
- PostgreSQL: Fix editing record that contains a field with `GENERATED ALWAYS` default value
|
||||
- Fix using undefined Min_DB::info property
|
||||
- Do not include unchanged `PARTITION BY` definition into `ALTER TABLE` query
|
||||
- Do not limit unlimited memory while executing queries
|
||||
- Do not limit unlimited memory while executing queries (by @oksiquatzel)
|
||||
- Fix number conversion warning while reading INI settings
|
||||
- Hide invalid edit form if table record is not found
|
||||
- CSS: Fix background color of `<pre>` used as edit field
|
||||
- CSS: Bigger font size for code blocks
|
||||
|
||||
## Adminer 4.9.2 (2024-09-18)
|
||||
AdminerNeo 4.9.2 (2024-09-18)
|
||||
-----------------------------
|
||||
|
||||
- Fix textarea height for single-line inputs (used typically for SQLite text field)
|
||||
- Fix undefined property in error message if driver does not support error number (e.g. PostgreSQL)
|
||||
- PostgreSQL: Fix search fields configuration (regression from 4.9)
|
||||
- PostgreSQL: Fix search condition for network address types, add macaddr8 type
|
||||
- PostgreSQL: Fix exporting `CREATE TABLE` query with `GENERATED` default values
|
||||
- PostgreSQL: Fix exporting `CREATE TABLE` query with sequence default value
|
||||
- PostgreSQL: Fix exporting `CREATE TABLE` query with sequence default value (by @khoazero123)
|
||||
- PostgreSQL: Allow to set connection's sslmode with AdminerLoginSsl plugin
|
||||
- MySQL: Do not show `empty` enum value in strict mode
|
||||
- Editor: Fix searching in tables
|
||||
- Function to retrieve driver name that can be used in plugins
|
||||
- Add function to retrieve driver name that can be used in plugins (by @Roy-Orbison)
|
||||
|
||||
## Adminer 4.9.1 (2024-09-09)
|
||||
- Compatibility with PHP 8.3
|
||||
AdminerNeo 4.9.1 (2024-09-09)
|
||||
-----------------------------
|
||||
|
||||
- Compatibility with PHP 8.3 (by @Sneda8)
|
||||
- Fix compiling jush external files
|
||||
- Improved displaying of long table names in menu
|
||||
- Replace deprecated `<acronym>` with `<abbr>`
|
||||
- Add support for translations in plugins
|
||||
- Add .editorconfig file
|
||||
- MySQL: Add `unix_timestamp` to functions
|
||||
- PostgreSQL: Show only accessible databases
|
||||
- PostgreSQL: Make data length calculation more accurate
|
||||
- MySQL: Add `unix_timestamp` to functions (by @bbaronSVK)
|
||||
- PostgreSQL: Show only accessible databases (by @thomas-daniels)
|
||||
- PostgreSQL: Make data length calculation more accurate (by @caltong)
|
||||
- PostgreSQL: Fix documentation link for `SERIAL` type
|
||||
- PostgreSQL: Fix undefined properties on PHP 8
|
||||
- Elasticsearch: Fix field selection
|
||||
- AdminerEditForeign: Refactor and fix the plugin
|
||||
- AdminerLoginOtp: Autocomplete hints for OTP input field, code refactoring
|
||||
|
||||
## Adminer 4.9 (2024-08-19)
|
||||
AdminerNeo 4.9 (2024-08-19)
|
||||
---------------------------
|
||||
|
||||
- Validate server input in login form
|
||||
- Validate connection to server in HTTP based drivers
|
||||
- Move dependencies from submodules to Composer
|
||||
@@ -104,21 +196,26 @@
|
||||
- Add new Elasticsearch 7 driver
|
||||
- Set saving to file as a default export option
|
||||
- Improve URL and email detection
|
||||
- Fix AdminerVersionNoverify plugin blocking other plugins to modify HTML head
|
||||
- Fix AdminerVersionNoverify plugin blocking other plugins to modify HTML head (by @Roy-Orbison)
|
||||
- Fix several bugs and security issues in AdminerFileUpload plugin
|
||||
- Skip dump of generated columns
|
||||
- Skip dump of generated columns (by @Denitz)
|
||||
- Fix uninitialized string offset (by @adrianbj)
|
||||
- Update composer.json
|
||||
- Add script for exporting compiled adminer variants
|
||||
|
||||
## Adminer 4.8.2 (2024-03-16)
|
||||
AdminerNeo 4.8.2 (2024-03-16)
|
||||
-----------------------------
|
||||
|
||||
- Support multi-line table comments
|
||||
- MySQL: Use `ST_SRID()` instead of `SRID()` for MySQL 8 (PR #418)
|
||||
- PostgreSQL: Don't reset table comments (regression from 4.2.0)
|
||||
- PostgreSQL PDO: Allow editing rows identified by boolean column (PR #380)
|
||||
- Update several translations: lv, bn, fr, it, nl, ru, cs, sk
|
||||
- Allow responsive styles on larger devices
|
||||
- Allow responsive styles on larger devices (by @lucas-sandery)
|
||||
|
||||
Adminer 4.8.1 (2021-05-14)
|
||||
--------------------------
|
||||
|
||||
## Adminer 4.8.1 (2021-05-14)
|
||||
- Internet Explorer or PDO in ## Adminer 4.7.8-4.8.0: Fix XSS in doc_link (bug #797)
|
||||
- Fix more PHP 8 warnings (bug #781)
|
||||
- Avoid PHP warnings with PDO drivers (bug #786, regression from 4.7.8)
|
||||
@@ -130,7 +227,9 @@
|
||||
- PostgreSQL < 10 PDO: Avoid displaying GENERATED ALWAYS BY IDENTITY everywhere (bug #785, regression from 4.7.9)
|
||||
- SQLite: Fix displayed types (bug #784, regression from 4.8.0)
|
||||
|
||||
## Adminer 4.8.0 (2021-02-10)
|
||||
Adminer 4.8.0 (2021-02-10)
|
||||
--------------------------
|
||||
|
||||
- Support function default values in insert (bug #713)
|
||||
- Allow SQL pseudo-function in insert
|
||||
- Skip date columns for non-date values in search anywhere
|
||||
@@ -150,7 +249,9 @@
|
||||
- MongoDB: Handle errors
|
||||
- SimpleDB, Firebird, ClickHouse: Move to plugin
|
||||
|
||||
## Adminer 4.7.9 (2021-02-07)
|
||||
Adminer 4.7.9 (2021-02-07)
|
||||
--------------------------
|
||||
|
||||
- Fix XSS in browsers which don't encode URL parameters (bug #775, regression from 4.7.0)
|
||||
- Elasticsearch, ClickHouse: Do not print response if HTTP code is not 200
|
||||
- Don't syntax highlight during IME composition (bug #747)
|
||||
@@ -176,14 +277,20 @@
|
||||
- Editor: Cast to string when searching (bug #325)
|
||||
- Editor: Avoid trailing dot in export filename
|
||||
|
||||
## Adminer 4.7.8 (2020-12-06)
|
||||
Adminer 4.7.8 (2020-12-06)
|
||||
--------------------------
|
||||
|
||||
- Support PHP 8
|
||||
- Disallow connecting to privileged ports (bug #769)
|
||||
|
||||
## Adminer 4.7.7 (2020-05-11)
|
||||
Adminer 4.7.7 (2020-05-11)
|
||||
--------------------------
|
||||
|
||||
- Fix open redirect if Adminer is accessible at //adminer.php%2F@
|
||||
|
||||
## Adminer 4.7.6 (2020-01-31)
|
||||
Adminer 4.7.6 (2020-01-31)
|
||||
--------------------------
|
||||
|
||||
- Speed up alter table form (regression from 4.4.0)
|
||||
- Fix clicking on non-input fields in alter table (regression from 4.6.2)
|
||||
- Display time of procedure execution
|
||||
@@ -192,17 +299,23 @@
|
||||
- PostgreSQL: Support exporting views
|
||||
- Editor: Fix focusing foreign key search in select
|
||||
|
||||
## Adminer 4.7.5 (2019-11-13)
|
||||
Adminer 4.7.5 (2019-11-13)
|
||||
--------------------------
|
||||
|
||||
- Add id="" to cells with failed inline edit (bug #708)
|
||||
- PostgreSQL: Fix getting default value in PostgreSQL 12 (bug #719)
|
||||
- PostgreSQL, Oracle: Set schema for EXPLAIN queries in SQL command (bug #706)
|
||||
- ClickHouse: SQL command
|
||||
- Swedish translation
|
||||
|
||||
## Adminer 4.7.4 (2019-10-22)
|
||||
Adminer 4.7.4 (2019-10-22)
|
||||
--------------------------
|
||||
|
||||
- Fix XSS if Adminer is accessible at URL /data:
|
||||
|
||||
## Adminer 4.7.3 (2019-08-27)
|
||||
Adminer 4.7.3 (2019-08-27)
|
||||
--------------------------
|
||||
|
||||
- Allow editing foreign keys pointing to tables in other database/schema (bug #694)
|
||||
- Fix blocking of concurrent instances in PHP >7.2 (bug #703)
|
||||
- MySQL: Speed up displaying tables in large databases (bug #700, regression from 4.7.2)
|
||||
@@ -215,7 +328,9 @@
|
||||
- MS SQL: Support foreign keys to other DB
|
||||
- MongoDB: Allow setting authSource from environment variable
|
||||
|
||||
## Adminer 4.7.2 (2019-07-18)
|
||||
Adminer 4.7.2 (2019-07-18)
|
||||
--------------------------
|
||||
|
||||
- Do not attempt logging in without password (bug #676)
|
||||
- Stretch footer over the whole table width (bug #624)
|
||||
- Allow overwriting tables when copying them
|
||||
@@ -230,7 +345,9 @@
|
||||
- MS SQL: Support comments
|
||||
- Elasticsearch: Fix setting number of rows
|
||||
|
||||
## Adminer 4.7.1 (2019-01-24)
|
||||
Adminer 4.7.1 (2019-01-24)
|
||||
--------------------------
|
||||
|
||||
- Display the tables scrollbar (bug #647)
|
||||
- Remember visible columns in Create Table form (bug #493)
|
||||
- Add autocomplete attributes to login form
|
||||
@@ -238,7 +355,9 @@
|
||||
- SQLite: Hide server field in login form
|
||||
- Editor: Allow disabling boolean fields in PostgreSQL (bug #640)
|
||||
|
||||
## Adminer 4.7.0 (2018-11-24)
|
||||
Adminer 4.7.0 (2018-11-24)
|
||||
--------------------------
|
||||
|
||||
- Simplify storing executed SQL queries to bookmarks
|
||||
- Warn when using password with leading or trailing spaces
|
||||
- Hide import from server if importServerPath() returns an empty string
|
||||
@@ -259,7 +378,9 @@
|
||||
- ClickHouse: Connect, databases list, tables list, select, SQL command
|
||||
- Georgian translation
|
||||
|
||||
## Adminer 4.6.3 (2018-06-28)
|
||||
Adminer 4.6.3 (2018-06-28)
|
||||
--------------------------
|
||||
|
||||
- Disallow using password-less databases
|
||||
- Copy triggers when copying table
|
||||
- Stop session before connecting
|
||||
@@ -277,7 +398,9 @@
|
||||
- MS SQL: Support port with sqlsrv
|
||||
- Editor: Do not check boolean checkboxes with false in PostgreSQL (bug #607)
|
||||
|
||||
## Adminer 4.6.2 (2018-02-20)
|
||||
Adminer 4.6.2 (2018-02-20)
|
||||
--------------------------
|
||||
|
||||
- Semi-transparent border on table actions
|
||||
- Shorten JSON values in select (bug #594)
|
||||
- Speed up alter table form (regression from 4.4.0)
|
||||
@@ -287,7 +410,9 @@
|
||||
- PostgreSQL: Add IF EXISTS to DROP SEQUENCE in export (bug #595)
|
||||
- Editor: Fix displaying of true boolean values (regression from 4.5.0)
|
||||
|
||||
## Adminer 4.6.1 (2018-02-09)
|
||||
Adminer 4.6.1 (2018-02-09)
|
||||
--------------------------
|
||||
|
||||
- Sticky position of table actions
|
||||
- Speed up rendering of long tables (regression from 4.4.0)
|
||||
- Display notification about performing action after relogin
|
||||
@@ -304,7 +429,9 @@
|
||||
- Customization: Support connecting to MySQL via SSL
|
||||
- Customization: Allow specifying server name displayed in breadcrumbs
|
||||
|
||||
## Adminer 4.6.0 (2018-02-05)
|
||||
Adminer 4.6.0 (2018-02-05)
|
||||
--------------------------
|
||||
|
||||
- Fix counting selected rows after going back to select page
|
||||
- PHP <5.3 compatibility even with Elasticsearch enabled
|
||||
- Fully support functions in default values
|
||||
@@ -324,7 +451,9 @@
|
||||
- SimpleDB: Document that allow_url_fopen is required
|
||||
- Malay translation
|
||||
|
||||
## Adminer 4.5.0 (2018-01-24)
|
||||
Adminer 4.5.0 (2018-01-24)
|
||||
--------------------------
|
||||
|
||||
- Display name of the object in confirmation when dropping it
|
||||
- Display newlines in column comments (bug #573)
|
||||
- Support current_timestamp() as default of time fields (bug #572)
|
||||
@@ -348,7 +477,9 @@
|
||||
- MongoDB: Support mongodb PHP extension
|
||||
- Editor: Fix displaying of false values in PostgreSQL (bug #568)
|
||||
|
||||
## Adminer 4.4.0 (2018-01-17)
|
||||
Adminer 4.4.0 (2018-01-17)
|
||||
--------------------------
|
||||
|
||||
- Add Content Security Policy
|
||||
- Disallow scripts without nonce
|
||||
- Rate limit password-less login attempts from the same IP address
|
||||
@@ -360,19 +491,23 @@
|
||||
- PostgreSQL: Sort table names (regression from 4.3.1)
|
||||
- Editor: Don't set time zone from PHP, fixes DST
|
||||
- Editor: Display field comment's text inside [] only in edit form
|
||||
- Editor: Fix doubleclick on database page
|
||||
- Editor: Fix double-click on database page
|
||||
- Editor: Fix Search data in tables
|
||||
- Customization: Always send security headers
|
||||
- Hebrew translation
|
||||
|
||||
## Adminer 4.3.1 (2017-04-14)
|
||||
Adminer 4.3.1 (2017-04-14)
|
||||
--------------------------
|
||||
|
||||
- Fix permanent login after logout (bug #539)
|
||||
- Fix SQL command autofocus (regression from 4.0.0)
|
||||
- PostgreSQL: Support JSON and JSONB data types
|
||||
- PostgreSQL: Fix index size computation in PostgreSQL < 9.0 (regression from 4.3.0)
|
||||
- PostgreSQL: Fix nullable fields in export
|
||||
|
||||
## Adminer 4.3.0 (2017-03-15)
|
||||
Adminer 4.3.0 (2017-03-15)
|
||||
--------------------------
|
||||
|
||||
- Make maxlength in edit fields a soft limit
|
||||
- Add accessibility labels
|
||||
- Add Cache-Control: immutable to static files
|
||||
@@ -385,34 +520,46 @@
|
||||
- MS SQL: Support pdo_dblib
|
||||
- Elasticsearch: Support HTTPS by inputting https://server
|
||||
|
||||
## Adminer 4.2.5 (2016-06-01)
|
||||
Adminer 4.2.5 (2016-06-01)
|
||||
--------------------------
|
||||
|
||||
- Fix remote execution in SQLite query
|
||||
- SQLite: Require credentials to use
|
||||
- PostgreSQL: Support KILL
|
||||
|
||||
## Adminer 4.2.4 (2016-02-06)
|
||||
Adminer 4.2.4 (2016-02-06)
|
||||
--------------------------
|
||||
|
||||
- Fix remote execution in SQLite query
|
||||
- MySQL: Support PHP 7
|
||||
- Bosnian translation
|
||||
- Finnish translation
|
||||
|
||||
## Adminer 4.2.3 (2015-11-15)
|
||||
Adminer 4.2.3 (2015-11-15)
|
||||
--------------------------
|
||||
|
||||
- Fix XSS in indexes (non-MySQL only)
|
||||
- Support PHP 7
|
||||
- Greek translation
|
||||
- Galician translation
|
||||
- Bulgarian translation
|
||||
|
||||
## Adminer 4.2.2 (2015-08-05)
|
||||
Adminer 4.2.2 (2015-08-05)
|
||||
--------------------------
|
||||
|
||||
- Fix XSS in alter table (found by HP Fortify)
|
||||
|
||||
## Adminer 4.2.1 (2015-03-10)
|
||||
Adminer 4.2.1 (2015-03-10)
|
||||
--------------------------
|
||||
|
||||
- Send referrer header to the same domain
|
||||
- MySQL: Fix usage of utf8mb4 if the client library doesn't support it
|
||||
- MySQL: Use utf8mb4 in export only if required
|
||||
- SQLite: Use EXPLAIN QUERY PLAN in SQL query
|
||||
|
||||
## Adminer 4.2.0 (2015-02-07)
|
||||
Adminer 4.2.0 (2015-02-07)
|
||||
--------------------------
|
||||
|
||||
- Fix XSS in login form (bug #436)
|
||||
- Allow limiting number of displayed rows in SQL command
|
||||
- Fix reading routine column collations
|
||||
@@ -435,7 +582,9 @@
|
||||
- Firebird: Alpha version
|
||||
- Danish translation
|
||||
|
||||
## Adminer 4.1.0 (2014-04-18)
|
||||
Adminer 4.1.0 (2014-04-18)
|
||||
--------------------------
|
||||
|
||||
- Provide size of all databases in the overview
|
||||
- Prevent against brute force login attempts from the same IP address
|
||||
- Compute number of tables in the overview explicitly
|
||||
@@ -455,18 +604,24 @@
|
||||
- Translate numbers in ar, bn, fa
|
||||
- Vietnamese translation
|
||||
|
||||
## Adminer 4.0.3 (2014-02-01)
|
||||
Adminer 4.0.3 (2014-02-01)
|
||||
--------------------------
|
||||
|
||||
- MongoDB: insert, truncate, indexes
|
||||
- SimpleDB, MongoDB: insert more fields at once
|
||||
- SQLite: Fix creating table and altering primary key, bug since ## Adminer 4.0.0
|
||||
- Don't store invalid credentials to session, bug since ## Adminer 4.0.0
|
||||
- Norweigan translation
|
||||
|
||||
## Adminer 4.0.2 (2014-01-11)
|
||||
Adminer 4.0.2 (2014-01-11)
|
||||
--------------------------
|
||||
|
||||
- Fix handling of long text in SQL textarea
|
||||
- Support paste to SQL textarea in Opera
|
||||
|
||||
## Adminer 4.0.1 (2014-01-11)
|
||||
Adminer 4.0.1 (2014-01-11)
|
||||
--------------------------
|
||||
|
||||
- Don't use type=number if a SQL function is used
|
||||
- Disable highlighting in textareas with long texts
|
||||
- Don't autofocus SQL textarea in Firefox
|
||||
@@ -476,7 +631,9 @@
|
||||
- MongoDB: Count tables, display ObjectIds, sort, limit, offset, count rows
|
||||
- Elasticsearch: Fix compiled version, create and drop DB, drop table
|
||||
|
||||
## Adminer 4.0.0 (2014-01-08)
|
||||
Adminer 4.0.0 (2014-01-08)
|
||||
--------------------------
|
||||
|
||||
- Driver for SimpleDB, MongoDB and Elasticsearch
|
||||
- Highlight SQL in textareas
|
||||
- Save and continue edit by AJAX
|
||||
@@ -509,7 +666,9 @@
|
||||
- Portugal Portuguese translation
|
||||
- Thai translation
|
||||
|
||||
## Adminer 3.7.1 (2013-06-29)
|
||||
Adminer 3.7.1 (2013-06-29)
|
||||
--------------------------
|
||||
|
||||
- Increase click target for checkboxes
|
||||
- Use shadow for highlighting default button
|
||||
- Don't use LIMIT 1 if inline updating unique row
|
||||
@@ -527,7 +686,9 @@
|
||||
- PostgreSQL: Handle timestamp types (bug #324)
|
||||
- Add Korean translation
|
||||
|
||||
## Adminer 3.7.0 (2013-05-19)
|
||||
Adminer 3.7.0 (2013-05-19)
|
||||
--------------------------
|
||||
|
||||
- Allow more SQL files to be uploaded at the same time
|
||||
- Print run time next to executed queries
|
||||
- Don't drop original view and routine before creating the new one
|
||||
@@ -541,7 +702,7 @@
|
||||
- Fix resetting search (bug #318)
|
||||
- Don't use LIMIT 1 if updating unique row (bug #320)
|
||||
- Restrict editing rows without unique identifier to search results
|
||||
- Display navigation bellow main content on mobile browsers
|
||||
- Display navigation below main content on mobile browsers
|
||||
- Get number of rows on export page asynchronously
|
||||
- Respect 'whole result' even if some rows are checked (bug #339 since Adminer 3.7.0)
|
||||
- MySQL: Optimize create table page and Editor navigation
|
||||
@@ -553,7 +714,9 @@
|
||||
- SQLite: Export views
|
||||
- PostgreSQL: Fix swapped NULL and NOT NULL columns in PDO
|
||||
|
||||
## Adminer 3.6.4 (2013-04-26)
|
||||
Adminer 3.6.4 (2013-04-26)
|
||||
--------------------------
|
||||
|
||||
- Display pagination on a fixed position
|
||||
- Increase default select limit to 50
|
||||
- Display SQL edit form on Ctrl+click on the select query
|
||||
@@ -576,14 +739,18 @@
|
||||
- MySQL: Link processlist documentation
|
||||
- SQLite: Export indexes
|
||||
|
||||
## Adminer 3.6.3 (2013-01-23)
|
||||
Adminer 3.6.3 (2013-01-23)
|
||||
--------------------------
|
||||
|
||||
- Display error code in SQL query
|
||||
- Allow specifying external links
|
||||
- Treat Meta key same as Ctrl
|
||||
- Fix XSS in displaying non-UTF-8 strings
|
||||
- Don't use type="number" for decimal numbers
|
||||
|
||||
## Adminer 3.6.2 (2012-12-21)
|
||||
Adminer 3.6.2 (2012-12-21)
|
||||
--------------------------
|
||||
|
||||
- Edit values by Ctrl+click instead of double click
|
||||
- Don't select row on double click
|
||||
- Support NULL in routine calls
|
||||
@@ -598,10 +765,14 @@
|
||||
- PostgreSQL: Fix process list in version 9.2
|
||||
- MS SQL: Support databases starting with number
|
||||
|
||||
## Adminer 3.6.1 (2012-09-17)
|
||||
Adminer 3.6.1 (2012-09-17)
|
||||
--------------------------
|
||||
|
||||
- Fix compiled version on PHP with multibyte support
|
||||
|
||||
## Adminer 3.6.0 (2012-09-16)
|
||||
Adminer 3.6.0 (2012-09-16)
|
||||
--------------------------
|
||||
|
||||
- Load more data in select
|
||||
- Edit strings with \n in textarea
|
||||
- Time out long running database list and select count
|
||||
@@ -615,11 +786,15 @@
|
||||
- selectQueryBuild() method (customization)
|
||||
- Serbian translation
|
||||
|
||||
## Adminer 3.5.1 (2012-08-10)
|
||||
Adminer 3.5.1 (2012-08-10)
|
||||
--------------------------
|
||||
|
||||
- Support same name fields in CSV export
|
||||
- Support Shift+click in export
|
||||
|
||||
## Adminer 3.5.0 (2012-08-05)
|
||||
Adminer 3.5.0 (2012-08-05)
|
||||
--------------------------
|
||||
|
||||
- Links for column search in select
|
||||
- Autohide column context menu in select
|
||||
- Autodisplay long table names in tables list
|
||||
@@ -628,7 +803,9 @@
|
||||
- SQLite: Better editing in tables without primary key
|
||||
- SQLite: Display number of rows in database overview
|
||||
|
||||
## Adminer 3.4.0 (2012-06-30)
|
||||
Adminer 3.4.0 (2012-06-30)
|
||||
--------------------------
|
||||
|
||||
- Link to descending order
|
||||
- Shift+click on checkbox to select consecutive rows
|
||||
- Print current time next to executed SQL queries
|
||||
@@ -650,7 +827,9 @@
|
||||
- Ukrainian translation
|
||||
- Bengali translation
|
||||
|
||||
## Adminer 3.3.4 (2012-03-07)
|
||||
Adminer 3.3.4 (2012-03-07)
|
||||
--------------------------
|
||||
|
||||
- Foreign keys default actions (bug #188)
|
||||
- SET DEFAULT foreign key action
|
||||
- Fix minor parser bug in SQL command with webserver file
|
||||
@@ -673,14 +852,18 @@
|
||||
- Boolean search (Editor)
|
||||
- Persian translation
|
||||
|
||||
## Adminer 3.3.3 (2011-08-12)
|
||||
Adminer 3.3.3 (2011-08-12)
|
||||
--------------------------
|
||||
|
||||
- Highlight checked rows
|
||||
- Titles of links in database overview and navigation
|
||||
- Fix trigger export (SQLite)
|
||||
- Default trigger statement (SQLite, PostgreSQL)
|
||||
- Remove search by expression (PostgreSQL, MS SQL)
|
||||
|
||||
## Adminer 3.3.2 (2011-08-08)
|
||||
Adminer 3.3.2 (2011-08-08)
|
||||
--------------------------
|
||||
|
||||
- Display error with non-existent row in edit
|
||||
- Fix minor parser bug in SQL command with webserver file
|
||||
- Fix SQL command Stop on error
|
||||
@@ -688,12 +871,16 @@
|
||||
- Fast number of rows with big tables (PostgreSQL)
|
||||
- Sort databases and schemas (PostgreSQL)
|
||||
|
||||
## Adminer 3.3.1 (2011-07-27)
|
||||
Adminer 3.3.1 (2011-07-27)
|
||||
--------------------------
|
||||
|
||||
- Fix XSS introduced in Adminer 3.2.0
|
||||
- Fix altering default values (PostgreSQL)
|
||||
- Process list (PostgreSQL)
|
||||
|
||||
## Adminer 3.3.0 (2011-07-19)
|
||||
Adminer 3.3.0 (2011-07-19)
|
||||
--------------------------
|
||||
|
||||
- Use Esc to disable in-place edit
|
||||
- Shortcut for database privileges
|
||||
- Editable index names
|
||||
@@ -719,10 +906,14 @@
|
||||
- Easier sending of default headers (customization)
|
||||
- Lithuanian and Romanian translation
|
||||
|
||||
## Adminer 3.2.2 (2011-03-28)
|
||||
Adminer 3.2.2 (2011-03-28)
|
||||
--------------------------
|
||||
|
||||
- Fix AJAX history after reload
|
||||
|
||||
## Adminer 3.2.1 (2011-03-23)
|
||||
Adminer 3.2.1 (2011-03-23)
|
||||
--------------------------
|
||||
|
||||
- Ability to save expression in edit
|
||||
- Respect default database collation (bug #119)
|
||||
- Don't export triggers without table (bug #123)
|
||||
@@ -743,7 +934,9 @@
|
||||
- Allow own code in `<head>` (customization)
|
||||
- Polish translation
|
||||
|
||||
## Adminer 3.2.0 (2011-02-24)
|
||||
Adminer 3.2.0 (2011-02-24)
|
||||
--------------------------
|
||||
|
||||
- Get long texts and slow information by AJAX
|
||||
- Most links and forms by AJAX in browsers with support for history.pushState
|
||||
- Copy tables
|
||||
@@ -766,7 +959,9 @@
|
||||
- Fix saving schema to cookie in Opera
|
||||
- Portuguese, Slovenian and Turkish translation
|
||||
|
||||
## Adminer 3.1.0 (2010-11-16)
|
||||
Adminer 3.1.0 (2010-11-16)
|
||||
--------------------------
|
||||
|
||||
- TSV export and import
|
||||
- Customizable export
|
||||
- Option to show only errors in SQL command
|
||||
@@ -783,7 +978,9 @@
|
||||
- Arabic translation and RTL support
|
||||
- Dual licensing: Apache or GPL
|
||||
|
||||
## Adminer 3.0.1 (2010-10-18)
|
||||
Adminer 3.0.1 (2010-10-18)
|
||||
--------------------------
|
||||
|
||||
- Send the form by Ctrl+Enter in all textareas
|
||||
- Disable creating SQLite databases with extension other than db, sdb, sqlite
|
||||
- Ability to use Adminer in a frame through customization
|
||||
@@ -791,7 +988,9 @@
|
||||
- MS SQL 2005 compatibility
|
||||
- PostgreSQL: connect if the eponymous database does not exist
|
||||
|
||||
## Adminer 3.0.0 (2010-10-15)
|
||||
Adminer 3.0.0 (2010-10-15)
|
||||
--------------------------
|
||||
|
||||
- Drivers for MS SQL, SQLite, PostgreSQL, Oracle
|
||||
- Allow concurrent logins on the same server
|
||||
- Allow permanent login without customization
|
||||
@@ -817,18 +1016,24 @@
|
||||
- Defer table information in database overview to JavaScript (performance)
|
||||
- Big tables optimizations (performance)
|
||||
|
||||
## Adminer 2.3.2 (2010-04-21)
|
||||
Adminer 2.3.2 (2010-04-21)
|
||||
--------------------------
|
||||
|
||||
- Fix COUNT(*) link
|
||||
- Fix Save and continue edit
|
||||
|
||||
## Adminer 2.3.1 (2010-04-06)
|
||||
Adminer 2.3.1 (2010-04-06)
|
||||
--------------------------
|
||||
|
||||
- Add Drop button to Alter pages (regression from 2.0.0)
|
||||
- Link COUNT(*) result to listing
|
||||
- Newlines in select query edit
|
||||
- Return to referrer after edit
|
||||
- Respect session.auto_start (bug #42)
|
||||
|
||||
## Adminer 2.3.0 (2010-02-26)
|
||||
Adminer 2.3.0 (2010-02-26)
|
||||
--------------------------
|
||||
|
||||
- Support for permanent login (customization required)
|
||||
- Search in all tables
|
||||
- Show status variables
|
||||
@@ -840,14 +1045,18 @@
|
||||
- Delete length when changing type in alter table
|
||||
- Ability to check table prefix in export
|
||||
|
||||
## Adminer 2.2.1 (2009-11-26)
|
||||
Adminer 2.2.1 (2009-11-26)
|
||||
--------------------------
|
||||
|
||||
- Highlight current links
|
||||
- Improve concurrency
|
||||
- Move number of tables to DB info (performance)
|
||||
- Search by foreign keys (Editor)
|
||||
- Link new item in backward keys (Editor)
|
||||
|
||||
## Adminer 2.2.0 (2009-10-20)
|
||||
Adminer 2.2.0 (2009-10-20)
|
||||
--------------------------
|
||||
|
||||
- Database list - bulk drop, number of tables
|
||||
- Enlarge field for enum and set definition
|
||||
- Display table links above table structure
|
||||
@@ -864,7 +1073,9 @@
|
||||
- Move `<h1>` to $adminer->navigation (customization)
|
||||
- Rename get_dbh to connection (customization)
|
||||
|
||||
## Adminer 2.1.0 (2009-09-12)
|
||||
Adminer 2.1.0 (2009-09-12)
|
||||
--------------------------
|
||||
|
||||
- Edit default values directly in table creation
|
||||
- Execute SQL file stored on server disk
|
||||
- Display EXPLAIN in SQL query
|
||||
@@ -878,7 +1089,9 @@
|
||||
- Speed up simple alter table
|
||||
- Traditional Chinese translation
|
||||
|
||||
## Adminer 2.0.0 (2009-08-06)
|
||||
Adminer 2.0.0 (2009-08-06)
|
||||
--------------------------
|
||||
|
||||
- Editor: User friendly data editor
|
||||
- Customization: Adminer class
|
||||
- Create single column foreign key in table structure
|
||||
@@ -904,10 +1117,14 @@
|
||||
- Fix CSV import
|
||||
- Fix work with default values
|
||||
|
||||
## Adminer 1.11.1 (2009-07-03)
|
||||
Adminer 1.11.1 (2009-07-03)
|
||||
--------------------------
|
||||
|
||||
- Fix problem with enabled Filter extension
|
||||
|
||||
## Adminer 1.11.0 (2009-07-02)
|
||||
Adminer 1.11.0 (2009-07-02)
|
||||
--------------------------
|
||||
|
||||
- Connection through socket by server :/path/to/socket
|
||||
- Simplify export
|
||||
- Display execution time in SQL query
|
||||
@@ -928,12 +1145,16 @@
|
||||
- Automatically add new fields in table creation
|
||||
- Use \n in SQL commands
|
||||
|
||||
## phpMinAdmin 1.10.1 (2009-05-07)
|
||||
phpMinAdmin 1.10.1 (2009-05-07)
|
||||
-------------------------------
|
||||
|
||||
- Highlight odd and hover rows
|
||||
- Partition editing comfort (bug #12)
|
||||
- Allow full length in limited int
|
||||
|
||||
## phpMinAdmin 1.10.0 (2009-04-28)
|
||||
phpMinAdmin 1.10.0 (2009-04-28)
|
||||
-------------------------------
|
||||
|
||||
- Partitioning (MySQL 5.1)
|
||||
- CSV import
|
||||
- Plus and minus functions
|
||||
@@ -945,10 +1166,14 @@
|
||||
- Size reduction by minification of variables and functions
|
||||
- Russian translation
|
||||
|
||||
## phpMinAdmin 1.9.1 (2008-10-27)
|
||||
phpMinAdmin 1.9.1 (2008-10-27)
|
||||
------------------------------
|
||||
|
||||
- Update translations
|
||||
|
||||
## phpMinAdmin 1.9.0 (2008-10-16)
|
||||
phpMinAdmin 1.9.0 (2008-10-16)
|
||||
------------------------------
|
||||
|
||||
- List of tables and views with maintenance commands
|
||||
- Clone rows
|
||||
- Bulk edit and clone
|
||||
@@ -964,7 +1189,9 @@
|
||||
- Order by function result working also in older MySQL versions
|
||||
- Tested on IIS
|
||||
|
||||
## phpMinAdmin 1.8.0 (2008-09-12)
|
||||
phpMinAdmin 1.8.0 (2008-09-12)
|
||||
------------------------------
|
||||
|
||||
- Events (MySQL 5.1)
|
||||
- Access without login - accept ?username=
|
||||
- Print SQL query in select, messages and warnings
|
||||
@@ -973,7 +1200,9 @@
|
||||
- Italian and Estonian translation
|
||||
- Order by COUNT(*)
|
||||
|
||||
## phpMinAdmin 1.7.0 (2008-08-26)
|
||||
phpMinAdmin 1.7.0 (2008-08-26)
|
||||
------------------------------
|
||||
|
||||
- Customizable export (select objects to export, SQL or CSV)
|
||||
- Ability to alter existing tables and drop old tables in export
|
||||
- Choose columns in select, aggregation
|
||||
@@ -987,10 +1216,14 @@
|
||||
- Cache static files
|
||||
- Faster checking of number of results
|
||||
|
||||
## phpMinAdmin 1.6.1 (2008-05-22)
|
||||
phpMinAdmin 1.6.1 (2008-05-22)
|
||||
------------------------------
|
||||
|
||||
- Set session parameters only if not session.auto_start
|
||||
|
||||
## phpMinAdmin 1.6.0 (2008-05-16)
|
||||
phpMinAdmin 1.6.0 (2008-05-16)
|
||||
------------------------------
|
||||
|
||||
- Order of columns in table
|
||||
- Set max_allowed_packet in dump and use extended insert
|
||||
- Spanish and German translations
|
||||
@@ -1002,7 +1235,9 @@
|
||||
- Last-Modified header for files
|
||||
- Several bug fixes
|
||||
|
||||
## phpMinAdmin 1.5.0 (2008-01-09)
|
||||
phpMinAdmin 1.5.0 (2008-01-09)
|
||||
------------------------------
|
||||
|
||||
- Mass delete
|
||||
- Vertical privileges
|
||||
- Specify connection port by colon in server
|
||||
@@ -1013,14 +1248,18 @@
|
||||
- Uncheck NULL by change
|
||||
- Mark shortened fields in select
|
||||
|
||||
## phpMinAdmin 1.4.0 (2007-08-15)
|
||||
phpMinAdmin 1.4.0 (2007-08-15)
|
||||
------------------------------
|
||||
|
||||
- Privileges
|
||||
- New design
|
||||
- Dutch translation
|
||||
- Use NULL for auto_increment (bug #1)
|
||||
- Fix dropping procedure parameters
|
||||
|
||||
## phpMinAdmin 1.3.2 (2007-08-06)
|
||||
phpMinAdmin 1.3.2 (2007-08-06)
|
||||
------------------------------
|
||||
|
||||
- Next field by JavaScript in foreign keys
|
||||
- Set time zone in dump
|
||||
- Refresh lang cookie
|
||||
@@ -1028,12 +1267,16 @@
|
||||
- Move vertical lines in schema properly
|
||||
- Fix maximum page in select
|
||||
|
||||
## phpMinAdmin 1.3.1 (2007-07-31)
|
||||
phpMinAdmin 1.3.1 (2007-07-31)
|
||||
------------------------------
|
||||
|
||||
- Move references lines in schema
|
||||
- Fix dump
|
||||
- Fix update links
|
||||
|
||||
## phpMinAdmin 1.3.0 (2007-07-27)
|
||||
phpMinAdmin 1.3.0 (2007-07-27)
|
||||
------------------------------
|
||||
|
||||
- Breadcrumb navigation
|
||||
- Operator IN
|
||||
- Timestamp default values
|
||||
@@ -1043,13 +1286,17 @@
|
||||
- More friendly user interface
|
||||
- Slovak translation
|
||||
|
||||
## phpMinAdmin 1.2.0 (2007-07-25)
|
||||
phpMinAdmin 1.2.0 (2007-07-25)
|
||||
------------------------------
|
||||
|
||||
- Manipulate triggers
|
||||
- PDO Abstraction
|
||||
- Auto_increment value
|
||||
- JavaScript for adding rows
|
||||
|
||||
## phpMinAdmin 1.1.0 (2007-07-19)
|
||||
phpMinAdmin 1.1.0 (2007-07-19)
|
||||
------------------------------
|
||||
|
||||
- Routines manipulation
|
||||
- Views manipulation
|
||||
- Foreign keys manipulation
|
||||
@@ -1060,5 +1307,7 @@
|
||||
- JavaScript for next rows in table edit
|
||||
- Cache databases list
|
||||
|
||||
## phpMinAdmin 1.0.0 (2007-07-11)
|
||||
phpMinAdmin 1.0.0 (2007-07-11)
|
||||
------------------------------
|
||||
|
||||
- First official release
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Licenses
|
||||
Licenses
|
||||
========
|
||||
|
||||
You may use Adminer under the terms of either the Apache License Version 2.0
|
||||
You may use AdminerNeo under the terms of either the Apache License Version 2.0
|
||||
or the GNU General Public License (GPL) version 2.
|
||||
|
||||
- [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
|
||||
|
88
README.md
88
README.md
@@ -1,55 +1,70 @@
|
||||
# Adminer
|
||||
AdminerNeo
|
||||
==========
|
||||
|
||||
**Adminer** is a full-featured database management tool written in PHP. It consists of a single file ready to deploy to
|
||||
the target server. As a companion, **Adminer Editor** offers data manipulation for end-users.
|
||||
**AdminerNeo** is a full-featured database management tool written in PHP. It consists of a single file ready to deploy
|
||||
to the target server. As a companion, **AdminerNeo Editor** offers data manipulation for end-users.
|
||||
|
||||
Supported database drivers:
|
||||
- MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, MongoDB
|
||||
- With plugin: SimpleDB, Elasticsearch (beta), Firebird (alpha), ClickHouse (alpha)
|
||||
|
||||
## Requirements
|
||||
AdminerNeo is based on the [Adminer](https://www.adminer.org/) project by Jakub Vrána.
|
||||
|
||||
<img src="docs/images/screenshot.webp" width="830px" alt="Screenshot"/>
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
- PHP 5.6+ with enabled sessions.
|
||||
|
||||
## Migration from original Adminer
|
||||
Migration from Adminer
|
||||
----------------------
|
||||
|
||||
No action is needed for now. But please, read 👉 **[What to expect](#what-to-expect)** section before you decide to
|
||||
switch to this project.
|
||||
- Remove plugin AdminerTablesFilter (plugins/tables-filter.php).
|
||||
- If you use complex custom theme, you will probably need to adjust a thing or two.
|
||||
|
||||
## Usage
|
||||
More information can be found in [Upgrade Guide](docs/upgrade.md).
|
||||
|
||||
Download one for the latest [release files](https://github.com/pematon/adminer/releases), upload to the HTTP server
|
||||
Please, read also 👉 **[What to expect](#what-to-expect)** section before you decide to switch to this project.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Download one for the latest [release files](https://github.com/adminerneo/adminerneo/releases), upload to the HTTP server
|
||||
with PHP and enjoy 😉 If you are not satisfied with any combination of the database driver and language, you can
|
||||
download the source code and compile your own Adminer:
|
||||
download the source code and compile your own AdminerNeo:
|
||||
|
||||
- Download the source code.
|
||||
- Run `composer install` to install dependencies.
|
||||
- Run compile.php:
|
||||
|
||||
```shell
|
||||
# Adminer
|
||||
php compile.php <driver> <language>
|
||||
# AdminerNeo
|
||||
php compile.php <drivers> <languages>
|
||||
|
||||
# Editor
|
||||
php compile.php editor <driver> <language>
|
||||
# AdminerNeo Editor
|
||||
php compile.php editor <drivers> <languages>
|
||||
```
|
||||
|
||||
For example:
|
||||
```shell
|
||||
php compile.php pgsql cs
|
||||
php compile.php mysql,pgsql en,de,cs,sk
|
||||
```
|
||||
|
||||
[Available drivers](https://github.com/pematon/adminer/tree/master/adminer/drivers),
|
||||
[languages](https://github.com/pematon/adminer/tree/master/adminer/lang).
|
||||
[Available drivers](https://github.com/adminerneo/adminerneo/tree/main/adminer/drivers),
|
||||
[languages](https://github.com/adminerneo/adminerneo/tree/main/adminer/lang).
|
||||
|
||||
## Security
|
||||
Security
|
||||
--------
|
||||
|
||||
Adminer does not allow connecting to databases without a password and it rate-limits the connection attempts to protect
|
||||
against brute-force attacks. Still, it is highly recommended to 🔒 **restrict access to Adminer** 🔒 by whitelisting IP
|
||||
AdminerNeo does not allow connecting to databases without a password and it rate-limits the connection attempts to protect
|
||||
against brute-force attacks. Still, it is highly recommended to 🔒 **restrict access to AdminerNeo** 🔒 by whitelisting IP
|
||||
addresses allowed to connect to it, by password-protecting the access in your web server or by enabling security plugins
|
||||
(e.g. to require an OTP).
|
||||
|
||||
## Plugins
|
||||
Plugins
|
||||
-------
|
||||
|
||||
* Download plugins you want and place them into the `plugins` folder.
|
||||
* Create `index.php` file specifying which plugins do you want to use.
|
||||
@@ -103,41 +118,47 @@ function adminer_object() {
|
||||
include "./adminer.php";
|
||||
```
|
||||
|
||||
[Available plugins](https://github.com/pematon/adminer/tree/master/plugins).
|
||||
[Available plugins](https://github.com/adminerneo/adminerneo/tree/main/plugins).
|
||||
|
||||
## Main project files
|
||||
- adminer/index.php - Run development version of Adminer.
|
||||
- editor/index.php - Run development version of Adminer Editor.
|
||||
Main project files
|
||||
------------------
|
||||
|
||||
- adminer/index.php - Run development version of AdminerNeo.
|
||||
- editor/index.php - Run development version of AdminerNeo Editor.
|
||||
- editor/example.php - Example customization.
|
||||
- plugins/readme.txt - Plugins for Adminer and Adminer Editor.
|
||||
- plugins/readme.txt - Plugins for AdminerNeo and AdminerNeo Editor.
|
||||
- adminer/plugin.php - Plugin demo.
|
||||
- adminer/sqlite.php - Development version of Adminer with SQLite allowed.
|
||||
- adminer/sqlite.php - Development version of AdminerNeo with SQLite allowed.
|
||||
- editor/sqlite.php - Development version of Editor with SQLite allowed.
|
||||
- adminer/designs.php - Development version of Adminer with adminer.css switcher.
|
||||
- adminer/designs.php - Development version of AdminerNeo with adminer.css switcher.
|
||||
- compile.php - Create a single file version.
|
||||
- lang.php - Update translations.
|
||||
- tests/katalon.html - Katalon Automation Recorder test suite.
|
||||
|
||||
## Project history
|
||||
Project history
|
||||
---------------
|
||||
|
||||
Adminer was originally developed by Jakub Vrana, and it can be still found on [official pages](https://www.adminer.org/).
|
||||
Adminer was originally developed by Jakub Vrána, and it can be still found on [official pages](https://www.adminer.org/).
|
||||
Unfortunately, it is not maintained for several years. In the meantime, I (@peterpp) created for my company a set of
|
||||
custom plugins, modern theme, fixed some bugs and practically rewrote the Elasticsearch driver. I also looked closely
|
||||
and contributed to the [AdminerEvo](https://www.adminerevo.org/) project that looked promising. However, I finally
|
||||
decided to continue working on this fork and fulfill my own vision.
|
||||
|
||||
## What to expect
|
||||
What to expect
|
||||
--------------
|
||||
|
||||
Our top priority is fixing the security issues and reported bugs. But we really want to move forward and transform
|
||||
Adminer to a tool that will keep its simplicity, yet looks much better, is even easier to use and can be configured
|
||||
AdminerNeo to a tool that will keep its simplicity, yet looks much better, is even easier to use and can be configured
|
||||
without requirement of additional plugins.
|
||||
|
||||
### Version 4.x
|
||||
|
||||
Original design and backward compatibility is kept. Many issues were fixed, and we introduced several functional and
|
||||
UI improvements.
|
||||
|
||||
### Version 5
|
||||
Bridges will be burned 🔥🔥🔥. It's in development already, so you [can check](https://github.com/pematon/adminer/tree/version-5)
|
||||
|
||||
Bridges will be burned 🔥🔥🔥. It's in development already, so you [can check](https://github.com/adminerneo/adminerneo/tree/version-5)
|
||||
what's going on. Or you can become the early adopter and help us with testing 😉
|
||||
|
||||
Our goals are:
|
||||
@@ -148,6 +169,3 @@ support dark mode, configurable color variants for production/devel environment.
|
||||
- **Plugins** - Integrate several basic plugins, enable them by optional configuration.
|
||||
- **Codebase** - Prefer code readability before minimalism, use PER coding style, add namespaces.
|
||||
- **Compilation** - Allow to export selected drivers, themes, languages and plugins into a single adminer.php file.
|
||||
|
||||
We are also thinking to change the project's name, so people will clearly distinguish between original Adminer and
|
||||
other forks. Any suggestions are welcome.
|
||||
|
@@ -1,11 +1,13 @@
|
||||
# Reporting security issues
|
||||
Reporting security issues
|
||||
=========================
|
||||
|
||||
To report a security issue, please [open a draft security advisory](https://github.com/pematon/adminer/security/advisories).
|
||||
To report a security issue, please [open a draft security advisory](https://github.com/adminerneo/adminerneo/security/advisories).
|
||||
|
||||
Security issues are handled with top priority. Once acknowledged, a fix should be available and new version released
|
||||
as soon as possible. Security advisories will be made public after a fix and new version have been released,
|
||||
or the advisory has been declined.
|
||||
|
||||
## Supported versions
|
||||
Supported versions
|
||||
------------------
|
||||
|
||||
Only the last published version and the last development version (last commit) are supported.
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
$PROCEDURE = ($_GET["name"] ? $_GET["name"] : $_GET["call"]);
|
||||
|
||||
$PROCEDURE = ($_GET["name"] ?: $_GET["call"]);
|
||||
page_header(lang('Call') . ": " . h($PROCEDURE), $error);
|
||||
|
||||
$routine = routine($_GET["call"], (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDURE"));
|
||||
@@ -28,13 +29,13 @@ if (!$error && $_POST) {
|
||||
}
|
||||
$call[] = (isset($out[$key]) ? "@" . idf_escape($field["field"]) : $val);
|
||||
}
|
||||
|
||||
|
||||
$query = (isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . table($PROCEDURE) . "(" . implode(", ", $call) . ")";
|
||||
$start = microtime(true);
|
||||
$result = $connection->multi_query($query);
|
||||
$affected = $connection->affected_rows; // getting warnigns overwrites this
|
||||
$affected = $connection->affected_rows; // getting warnings overwrites this
|
||||
echo $adminer->selectQuery($query, $start, !$result);
|
||||
|
||||
|
||||
if (!$result) {
|
||||
echo "<p class='error'>" . error() . "\n";
|
||||
} else {
|
||||
@@ -42,7 +43,7 @@ if (!$error && $_POST) {
|
||||
if (is_object($connection2)) {
|
||||
$connection2->select_db(DB);
|
||||
}
|
||||
|
||||
|
||||
do {
|
||||
$result = $connection->store_result();
|
||||
if (is_object($result)) {
|
||||
@@ -53,16 +54,15 @@ if (!$error && $_POST) {
|
||||
;
|
||||
}
|
||||
} while ($connection->next_result());
|
||||
|
||||
|
||||
if ($out) {
|
||||
select($connection->query("SELECT " . implode(", ", $out)));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<form action="" method="post">
|
||||
<?php
|
||||
echo "<form action='' method='post'>\n";
|
||||
|
||||
if ($in) {
|
||||
echo "<table cellspacing='0' class='layout'>\n";
|
||||
foreach ($in as $key) {
|
||||
@@ -83,8 +83,28 @@ if ($in) {
|
||||
}
|
||||
echo "</table>\n";
|
||||
}
|
||||
?>
|
||||
<p>
|
||||
<input type="submit" value="<?php echo lang('Call'); ?>">
|
||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||
</form>
|
||||
|
||||
echo "<p>",
|
||||
"<input type='submit' value='", lang('Call'), "'>",
|
||||
"<input type='hidden' name='token' value='$token'>",
|
||||
"</p>\n",
|
||||
"</form>\n";
|
||||
|
||||
$comment = $routine["comment"];
|
||||
if ($comment !== null && $comment !== "") {
|
||||
$comment = h(trim($routine["comment"], "\n"));
|
||||
|
||||
// Remove indenting of all lines (used in MySQL routines in 'sys' database).
|
||||
if (preg_match('~^ +~', $comment, $matches)) {
|
||||
preg_match_all("~^($matches[0]|$)~m", $comment, $linesWithIndent);
|
||||
|
||||
if (count($linesWithIndent[0]) == substr_count($comment, "\n")) {
|
||||
$comment = preg_replace("~^($matches[0])~m", "", $comment);
|
||||
}
|
||||
}
|
||||
|
||||
// Format common headlines (used in MySQL routines in 'sys' database).
|
||||
$comment = preg_replace('~(^|[^\n]\n)(Description|Parameters|Example)\n~', "$1\n<strong>$2</strong>\n", $comment);
|
||||
|
||||
echo "<pre class='comment'>$comment</pre>\n";
|
||||
}
|
||||
|
@@ -182,25 +182,43 @@ if ($adminer->homepage()) {
|
||||
|
||||
if (support("routine")) {
|
||||
echo "<h3 id='routines'>" . lang('Routines') . "</h3>\n";
|
||||
|
||||
$routines = routines();
|
||||
if ($routines) {
|
||||
$commentsSupported = $routines[0]["ROUTINE_COMMENT"] !== null;
|
||||
|
||||
echo "<table>\n";
|
||||
echo '<thead><tr><th>' . lang('Name') . '<td>' . lang('Type') . '<td>' . lang('Return type') . "<td></thead>\n";
|
||||
echo '<thead><tr>',
|
||||
'<th>', lang('Name'), '</th><td>', lang('Type'), '</td><td>', lang('Return type'), "</td>";
|
||||
if ($commentsSupported) {
|
||||
echo "<td>", lang('Comment'), "</td>";
|
||||
}
|
||||
echo "<td></td>",
|
||||
"</tr></thead>\n";
|
||||
|
||||
odd('');
|
||||
foreach ($routines as $row) {
|
||||
$name = ($row["SPECIFIC_NAME"] == $row["ROUTINE_NAME"] ? "" : "&name=" . urlencode($row["ROUTINE_NAME"])); // not computed on the pages to be able to print the header first
|
||||
echo '<tr' . odd() . '>';
|
||||
echo '<th><a href="' . h(ME . ($row["ROUTINE_TYPE"] != "PROCEDURE" ? 'callf=' : 'call=') . urlencode($row["SPECIFIC_NAME"]) . $name) . '">' . h($row["ROUTINE_NAME"]) . '</a>';
|
||||
echo '<td>' . h($row["ROUTINE_TYPE"]);
|
||||
echo '<td>' . h($row["DTD_IDENTIFIER"]);
|
||||
echo '<td><a href="' . h(ME . ($row["ROUTINE_TYPE"] != "PROCEDURE" ? 'function=' : 'procedure=') . urlencode($row["SPECIFIC_NAME"]) . $name) . '">' . lang('Alter') . "</a>";
|
||||
// not computed on the pages to be able to print the header first
|
||||
$name = ($row["SPECIFIC_NAME"] == $row["ROUTINE_NAME"] ? "" : "&name=" . urlencode($row["ROUTINE_NAME"]));
|
||||
|
||||
echo '<tr', odd(), '>',
|
||||
'<th><a href="', h(ME . ($row["ROUTINE_TYPE"] != "PROCEDURE" ? 'callf=' : 'call=') . urlencode($row["SPECIFIC_NAME"]) . $name), '">', h($row["ROUTINE_NAME"]), '</a></th>',
|
||||
'<td>', h($row["ROUTINE_TYPE"]), '</td>',
|
||||
'<td>', h($row["DTD_IDENTIFIER"]), '</td>';
|
||||
|
||||
if ($commentsSupported) {
|
||||
echo '<td>', shorten_utf8(preg_replace('~\s{2,}~', " ", trim($row["ROUTINE_COMMENT"])), 50), '</td>';
|
||||
}
|
||||
|
||||
echo '<td><a href="' . h(ME . ($row["ROUTINE_TYPE"] != "PROCEDURE" ? 'function=' : 'procedure=') . urlencode($row["SPECIFIC_NAME"]) . $name) . '">' . lang('Alter') . "</a></td>";
|
||||
}
|
||||
|
||||
echo "</table>\n";
|
||||
}
|
||||
echo '<p class="links">'
|
||||
. (support("procedure") ? '<a href="' . h(ME) . 'procedure=">' . lang('Create procedure') . '</a>' : '')
|
||||
. '<a href="' . h(ME) . 'function=">' . lang('Create function') . "</a>\n"
|
||||
;
|
||||
|
||||
echo '<p class="links">',
|
||||
(support("procedure") ? '<a href="' . h(ME) . 'procedure=">' . lang('Create procedure') . '</a>' : ''),
|
||||
'<a href="' . h(ME) . 'function=">' . lang('Create function') . "</a>\n";
|
||||
}
|
||||
|
||||
if (support("sequence")) {
|
||||
|
@@ -205,9 +205,6 @@ if (isset($_GET["mongo"])) {
|
||||
return $connection->_db->selectCollection($_GET["select"])->count($where);
|
||||
}
|
||||
|
||||
$operators = array("=");
|
||||
$operator_regexp = null;
|
||||
|
||||
} elseif (class_exists('MongoDB\Driver\Manager')) {
|
||||
class Min_DB {
|
||||
var $extension = "MongoDB", $server_info = MONGODB_VERSION, $affected_rows, $error, $last_id;
|
||||
@@ -216,15 +213,14 @@ if (isset($_GET["mongo"])) {
|
||||
var $_db, $_db_name;
|
||||
|
||||
function connect($uri, $options) {
|
||||
$class = 'MongoDB\Driver\Manager';
|
||||
$this->_link = new $class($uri, $options);
|
||||
|
||||
$this->_link = new MongoDB\Driver\Manager($uri, $options);
|
||||
$this->executeCommand('admin', array('ping' => 1));
|
||||
}
|
||||
|
||||
function executeCommand($db, $command) {
|
||||
$class = 'MongoDB\Driver\Command';
|
||||
try {
|
||||
return $this->_link->executeCommand($db, new $class($command));
|
||||
return $this->_link->executeCommand($db, new MongoDB\Driver\Command($command));
|
||||
} catch (Exception $e) {
|
||||
$this->error = $e->getMessage();
|
||||
return array();
|
||||
@@ -341,9 +337,8 @@ if (isset($_GET["mongo"])) {
|
||||
}
|
||||
$limit = min(200, max(1, (int) $limit));
|
||||
$skip = $page * $limit;
|
||||
$class = 'MongoDB\Driver\Query';
|
||||
try {
|
||||
return new Min_Result($connection->_link->executeQuery("$connection->_db_name.$table", new $class($where, array('projection' => $select, 'limit' => $limit, 'skip' => $skip, 'sort' => $sort))));
|
||||
return new Min_Result($connection->_link->executeQuery("$connection->_db_name.$table", new MongoDB\Driver\Query($where, array('projection' => $select, 'limit' => $limit, 'skip' => $skip, 'sort' => $sort))));
|
||||
} catch (Exception $e) {
|
||||
$connection->error = $e->getMessage();
|
||||
return false;
|
||||
@@ -354,8 +349,7 @@ if (isset($_GET["mongo"])) {
|
||||
global $connection;
|
||||
$db = $connection->_db_name;
|
||||
$where = sql_query_where_parser($queryWhere);
|
||||
$class = 'MongoDB\Driver\BulkWrite';
|
||||
$bulk = new $class(array());
|
||||
$bulk = new MongoDB\Driver\BulkWrite(array());
|
||||
if (isset($set['_id'])) {
|
||||
unset($set['_id']);
|
||||
}
|
||||
@@ -378,8 +372,7 @@ if (isset($_GET["mongo"])) {
|
||||
global $connection;
|
||||
$db = $connection->_db_name;
|
||||
$where = sql_query_where_parser($queryWhere);
|
||||
$class = 'MongoDB\Driver\BulkWrite';
|
||||
$bulk = new $class(array());
|
||||
$bulk = new MongoDB\Driver\BulkWrite(array());
|
||||
$bulk->delete($where, array('limit' => $limit));
|
||||
return $connection->executeBulkWrite("$db.$table", $bulk, 'getDeletedCount');
|
||||
}
|
||||
@@ -387,8 +380,7 @@ if (isset($_GET["mongo"])) {
|
||||
function insert($table, $set) {
|
||||
global $connection;
|
||||
$db = $connection->_db_name;
|
||||
$class = 'MongoDB\Driver\BulkWrite';
|
||||
$bulk = new $class(array());
|
||||
$bulk = new MongoDB\Driver\BulkWrite(array());
|
||||
if ($set['_id'] == '') {
|
||||
unset($set['_id']);
|
||||
}
|
||||
@@ -483,7 +475,11 @@ if (isset($_GET["mongo"])) {
|
||||
}
|
||||
|
||||
function sql_query_where_parser($queryWhere) {
|
||||
$queryWhere = preg_replace('~^\sWHERE \(?\(?(.+?)\)?\)?$~', '\1', $queryWhere);
|
||||
$queryWhere = preg_replace('~^\s*WHERE\s*~', "", $queryWhere);
|
||||
while ($queryWhere[0] == "(") {
|
||||
$queryWhere = preg_replace('~^\((.*)\)$~', "$1", $queryWhere);
|
||||
}
|
||||
|
||||
$wheres = explode(' AND ', $queryWhere);
|
||||
$wheresOr = explode(') OR (', $queryWhere);
|
||||
$where = array();
|
||||
@@ -517,8 +513,7 @@ if (isset($_GET["mongo"])) {
|
||||
$op = $match[1];
|
||||
} elseif (preg_match('~^\(date\)(.+)~', $op, $match)) {
|
||||
$dateTime = new DateTime($val);
|
||||
$class = 'MongoDB\BSON\UTCDatetime';
|
||||
$val = new $class($dateTime->getTimestamp() * 1000);
|
||||
$val = new MongoDB\BSON\UTCDatetime($dateTime->getTimestamp() * 1000);
|
||||
$op = $match[1];
|
||||
}
|
||||
switch ($op) {
|
||||
@@ -556,30 +551,6 @@ if (isset($_GET["mongo"])) {
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
$operators = array(
|
||||
"=",
|
||||
"!=",
|
||||
">",
|
||||
"<",
|
||||
">=",
|
||||
"<=",
|
||||
"regex",
|
||||
"(f)=",
|
||||
"(f)!=",
|
||||
"(f)>",
|
||||
"(f)<",
|
||||
"(f)>=",
|
||||
"(f)<=",
|
||||
"(date)=",
|
||||
"(date)!=",
|
||||
"(date)>",
|
||||
"(date)<",
|
||||
"(date)>=",
|
||||
"(date)<=",
|
||||
);
|
||||
|
||||
$operator_regexp = 'regex';
|
||||
}
|
||||
|
||||
function table($idf) {
|
||||
@@ -629,6 +600,11 @@ if (isset($_GET["mongo"])) {
|
||||
global $adminer;
|
||||
$connection = new Min_DB;
|
||||
list($server, $username, $password) = $adminer->credentials();
|
||||
|
||||
if ($server == "") {
|
||||
$server = "localhost:27017";
|
||||
}
|
||||
|
||||
$options = array();
|
||||
if ($username . $password != "") {
|
||||
$options["username"] = $username;
|
||||
@@ -736,7 +712,38 @@ if (isset($_GET["mongo"])) {
|
||||
}
|
||||
|
||||
function driver_config() {
|
||||
global $operators, $operator_regexp;
|
||||
if (class_exists('MongoDB')) {
|
||||
$operators = ["="];
|
||||
$operator_regexp = null;
|
||||
} elseif (class_exists('MongoDB\Driver\Manager')) {
|
||||
$operators = [
|
||||
"=",
|
||||
"!=",
|
||||
">",
|
||||
"<",
|
||||
">=",
|
||||
"<=",
|
||||
"regex",
|
||||
"(f)=",
|
||||
"(f)!=",
|
||||
"(f)>",
|
||||
"(f)<",
|
||||
"(f)>=",
|
||||
"(f)<=",
|
||||
"(date)=",
|
||||
"(date)!=",
|
||||
"(date)>",
|
||||
"(date)<",
|
||||
"(date)>=",
|
||||
"(date)<=",
|
||||
];
|
||||
|
||||
$operator_regexp = 'regex';
|
||||
} else {
|
||||
$operators = ["="];
|
||||
$operator_regexp = null;
|
||||
}
|
||||
|
||||
return array(
|
||||
'possible_drivers' => array("mongo", "mongodb"),
|
||||
'jush' => "mongo",
|
||||
|
@@ -24,11 +24,26 @@ if (isset($_GET["mssql"])) {
|
||||
|
||||
function connect($server, $username, $password) {
|
||||
global $adminer;
|
||||
|
||||
$connection_info = [
|
||||
"UID" => $username,
|
||||
"PWD" => $password,
|
||||
"CharacterSet" => "UTF-8",
|
||||
];
|
||||
|
||||
$ssl = $adminer->connectSsl();
|
||||
if (isset($ssl["Encrypt"])) {
|
||||
$connection_info["Encrypt"] = $ssl["Encrypt"];
|
||||
}
|
||||
if (isset($ssl["TrustServerCertificate"])) {
|
||||
$connection_info["TrustServerCertificate"] = $ssl["TrustServerCertificate"];
|
||||
}
|
||||
|
||||
$db = $adminer->database();
|
||||
$connection_info = array("UID" => $username, "PWD" => $password, "CharacterSet" => "UTF-8");
|
||||
if ($db != "") {
|
||||
$connection_info["Database"] = $db;
|
||||
}
|
||||
|
||||
$this->_link = @sqlsrv_connect(preg_replace('~:~', ',', $server), $connection_info);
|
||||
if ($this->_link) {
|
||||
$info = sqlsrv_server_info($this->_link);
|
||||
@@ -36,6 +51,7 @@ if (isset($_GET["mssql"])) {
|
||||
} else {
|
||||
$this->_get_error();
|
||||
}
|
||||
|
||||
return (bool) $this->_link;
|
||||
}
|
||||
|
||||
@@ -303,6 +319,11 @@ if (isset($_GET["mssql"])) {
|
||||
global $adminer;
|
||||
$connection = new Min_DB;
|
||||
$credentials = $adminer->credentials();
|
||||
|
||||
if ($credentials[0] == "") {
|
||||
$credentials[0] = "localhost:1433";
|
||||
}
|
||||
|
||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
||||
return $connection;
|
||||
}
|
||||
|
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
$drivers = array("server" => "MySQL") + $drivers;
|
||||
$drivers["mysql"] = "MySQL";
|
||||
|
||||
if (!defined("DRIVER")) {
|
||||
define("DRIVER", "server"); // server - backwards compatibility
|
||||
if (isset($_GET["mysql"])) {
|
||||
define("DRIVER", "mysql");
|
||||
// MySQLi supports everything, MySQL doesn't support multiple result sets, PDO_MySQL doesn't support orgtable
|
||||
if (extension_loaded("mysqli")) {
|
||||
class Min_DB extends MySQLi {
|
||||
@@ -371,16 +371,28 @@ if (!defined("DRIVER")) {
|
||||
* @return mixed Min_DB or string for error
|
||||
*/
|
||||
function connect() {
|
||||
global $adminer, $types, $structured_types;
|
||||
global $adminer, $types, $structured_types, $edit_functions;
|
||||
|
||||
$connection = new Min_DB;
|
||||
$credentials = $adminer->credentials();
|
||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
||||
$connection->set_charset(charset($connection));
|
||||
$connection->query("SET sql_quote_show_create = 1, autocommit = 1");
|
||||
if (min_version('5.7.8', 10.2, $connection)) {
|
||||
|
||||
if (min_version('5.7.8', '10.2', $connection)) {
|
||||
$structured_types[lang('Strings')][] = "json";
|
||||
$types["json"] = 4294967295;
|
||||
}
|
||||
|
||||
// UUID data type for Mariadb >= 10.7
|
||||
if (min_version('', '10.7', $connection)) {
|
||||
$structured_types[lang('Strings')][] = "uuid";
|
||||
$types["uuid"] = 128;
|
||||
|
||||
// insert/update function
|
||||
$edit_functions[0]['uuid'] = 'uuid';
|
||||
}
|
||||
|
||||
return $connection;
|
||||
}
|
||||
$return = $connection->error;
|
||||
@@ -630,8 +642,17 @@ if (!defined("DRIVER")) {
|
||||
* @return array
|
||||
*/
|
||||
function collations() {
|
||||
global $connection;
|
||||
|
||||
$return = array();
|
||||
foreach (get_rows("SHOW COLLATION") as $row) {
|
||||
|
||||
// Since MariaDB 10.10, one collation can be compatible with more character sets, so collations no longer have unique IDs.
|
||||
// All combinations can be selected from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY table.
|
||||
$query = min_version('', '10.10', $connection) ?
|
||||
"SELECT CHARACTER_SET_NAME AS Charset, FULL_COLLATION_NAME AS Collation, IS_DEFAULT AS `Default` FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY" :
|
||||
"SHOW COLLATION";
|
||||
|
||||
foreach (get_rows($query) as $row) {
|
||||
if ($row["Default"]) {
|
||||
$return[$row["Charset"]][-1] = $row["Collation"];
|
||||
} else {
|
||||
@@ -639,9 +660,11 @@ if (!defined("DRIVER")) {
|
||||
}
|
||||
}
|
||||
ksort($return);
|
||||
|
||||
foreach ($return as $key => $val) {
|
||||
asort($return[$key]);
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
@@ -901,23 +924,30 @@ if (!defined("DRIVER")) {
|
||||
);
|
||||
}
|
||||
|
||||
/** Get information about stored routine
|
||||
* @param string
|
||||
* @param string "FUNCTION" or "PROCEDURE"
|
||||
* @return array ("fields" => array("field" => , "type" => , "length" => , "unsigned" => , "inout" => , "collation" => ), "returns" => , "definition" => , "language" => )
|
||||
*/
|
||||
/**
|
||||
* Gets information about stored routine.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string $type "FUNCTION" or "PROCEDURE"
|
||||
*
|
||||
* @return array ("fields" => array("field" => , "type" => , "length" => , "unsigned" => , "inout" => , "collation" => ), "returns" => , "definition" => , "language" => )
|
||||
*/
|
||||
function routine($name, $type) {
|
||||
global $connection, $enum_length, $inout, $types;
|
||||
$aliases = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar");
|
||||
|
||||
$info = get_rows("SELECT ROUTINE_BODY, ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB) . " AND ROUTINE_NAME = " . q($name))[0];
|
||||
|
||||
$aliases = ["bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar"];
|
||||
$space = "(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";
|
||||
$type_pattern = "((" . implode("|", array_merge(array_keys($types), $aliases)) . ")\\b(?:\\s*\\(((?:[^'\")]|$enum_length)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";
|
||||
$pattern = "$space*(" . ($type == "FUNCTION" ? "" : $inout) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern";
|
||||
$create = $connection->result("SHOW CREATE $type " . idf_escape($name), 2);
|
||||
preg_match("~\\(((?:$pattern\\s*,?)*)\\)\\s*" . ($type == "FUNCTION" ? "RETURNS\\s+$type_pattern\\s+" : "") . "(.*)~is", $create, $match);
|
||||
$fields = array();
|
||||
$fields = [];
|
||||
preg_match_all("~$pattern\\s*,?~is", $match[1], $matches, PREG_SET_ORDER);
|
||||
|
||||
foreach ($matches as $param) {
|
||||
$fields[] = array(
|
||||
$fields[] = [
|
||||
"field" => str_replace("``", "`", $param[2]) . $param[3],
|
||||
"type" => strtolower($param[5]),
|
||||
"length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $param[6]),
|
||||
@@ -926,24 +956,29 @@ if (!defined("DRIVER")) {
|
||||
"full_type" => $param[4],
|
||||
"inout" => strtoupper($param[1]),
|
||||
"collation" => strtolower($param[9]),
|
||||
);
|
||||
];
|
||||
}
|
||||
if ($type != "FUNCTION") {
|
||||
return array("fields" => $fields, "definition" => $match[11]);
|
||||
}
|
||||
return array(
|
||||
|
||||
return $type == "FUNCTION" ? [
|
||||
"fields" => $fields,
|
||||
"returns" => array("type" => $match[12], "length" => $match[13], "unsigned" => $match[15], "collation" => $match[16]),
|
||||
"returns" => ["type" => $match[12], "length" => $match[13], "unsigned" => $match[15], "collation" => $match[16]],
|
||||
"definition" => $match[17],
|
||||
"language" => "SQL", // available in information_schema.ROUTINES.PARAMETER_STYLE
|
||||
);
|
||||
"language" => $info["ROUTINE_BODY"],
|
||||
"comment" => $info["ROUTINE_COMMENT"],
|
||||
] : [
|
||||
"fields" => $fields,
|
||||
"returns" => null,
|
||||
"definition" => $match[11],
|
||||
"language" => $info["ROUTINE_BODY"],
|
||||
"comment" => $info["ROUTINE_COMMENT"],
|
||||
];
|
||||
}
|
||||
|
||||
/** Get list of routines
|
||||
* @return array ("SPECIFIC_NAME" => , "ROUTINE_NAME" => , "ROUTINE_TYPE" => , "DTD_IDENTIFIER" => )
|
||||
*/
|
||||
function routines() {
|
||||
return get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB));
|
||||
return get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER, ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB));
|
||||
}
|
||||
|
||||
/** Get list of available routine languages
|
||||
|
@@ -71,6 +71,11 @@ if (isset($_GET["pgsql"])) {
|
||||
}
|
||||
|
||||
function query($query, $unbuffered = false) {
|
||||
if (!$this->_link) {
|
||||
$this->error = "Invalid connection";
|
||||
return false;
|
||||
}
|
||||
|
||||
$result = @pg_query($this->_link, $query);
|
||||
$this->error = "";
|
||||
if (!$result) {
|
||||
@@ -497,12 +502,17 @@ ORDER BY connamespace, conname") as $row) {
|
||||
|
||||
function drop_databases($databases) {
|
||||
global $connection;
|
||||
|
||||
$connection->close();
|
||||
|
||||
return apply_queries("DROP DATABASE", $databases, 'idf_escape');
|
||||
}
|
||||
|
||||
function rename_database($name, $collation) {
|
||||
//! current database cannot be renamed
|
||||
global $connection;
|
||||
|
||||
$connection->close();
|
||||
|
||||
return queries("ALTER DATABASE " . idf_escape(DB) . " RENAME TO " . idf_escape($name));
|
||||
}
|
||||
|
||||
@@ -668,23 +678,29 @@ ORDER BY connamespace, conname") as $row) {
|
||||
}
|
||||
|
||||
function routine($name, $type) {
|
||||
$rows = get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema = current_schema() AND specific_name = ' . q($name));
|
||||
$return = $rows[0];
|
||||
$return["returns"] = array("type" => $return["type_udt_name"]);
|
||||
$return["fields"] = get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
|
||||
FROM information_schema.parameters
|
||||
WHERE specific_schema = current_schema() AND specific_name = ' . q($name) . '
|
||||
ORDER BY ordinal_position');
|
||||
return $return;
|
||||
$info = get_rows('SELECT routine_definition, external_language, type_udt_name
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema = current_schema() AND specific_name = ' . q($name))[0];
|
||||
|
||||
$fields = get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
|
||||
FROM information_schema.parameters
|
||||
WHERE specific_schema = current_schema() AND specific_name = ' . q($name) . '
|
||||
ORDER BY ordinal_position');
|
||||
|
||||
return [
|
||||
"fields" => $fields,
|
||||
"returns" => ["type" => $info["type_udt_name"]],
|
||||
"definition" => $info["routine_definition"],
|
||||
"language" => strtolower($info["external_language"]),
|
||||
"comment" => null, // Comments are not supported.
|
||||
];
|
||||
}
|
||||
|
||||
function routines() {
|
||||
return get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema = current_schema()
|
||||
ORDER BY SPECIFIC_NAME');
|
||||
return get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_name AS "ROUTINE_NAME", routine_type AS "ROUTINE_TYPE", type_udt_name AS "DTD_IDENTIFIER", null AS ROUTINE_COMMENT
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema = current_schema()
|
||||
ORDER BY SPECIFIC_NAME');
|
||||
}
|
||||
|
||||
function routine_languages() {
|
||||
@@ -770,8 +786,6 @@ AND typelem = 0"
|
||||
}
|
||||
|
||||
function create_sql($table, $auto_increment, $style) {
|
||||
global $connection;
|
||||
$return = '';
|
||||
$return_parts = array();
|
||||
$sequences = array();
|
||||
|
||||
@@ -806,8 +820,11 @@ AND typelem = 0"
|
||||
: "SELECT * FROM $sequence_name"
|
||||
);
|
||||
$sq = reset($rows);
|
||||
$sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "")
|
||||
. "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value]" . ($auto_increment && $sq['last_value'] ? " START $sq[last_value]" : "") . " CACHE $sq[cache_value];";
|
||||
|
||||
$sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "") .
|
||||
"CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value]" .
|
||||
($auto_increment && $sq['last_value'] ? " START " . ($sq["last_value"] + 1) : "") .
|
||||
" CACHE $sq[cache_value];";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -841,7 +858,7 @@ AND typelem = 0"
|
||||
}
|
||||
}
|
||||
|
||||
// coments for table & fields
|
||||
// comments for table & fields
|
||||
if ($status['Comment']) {
|
||||
$return .= "\n\nCOMMENT ON TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " IS " . q($status['Comment']) . ";";
|
||||
}
|
||||
|
@@ -47,7 +47,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
return false;
|
||||
}
|
||||
$row = $result->_result->fetchArray();
|
||||
return $row[$field];
|
||||
return $row ? $row[$field] : false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -483,6 +483,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
|
||||
function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
|
||||
global $connection;
|
||||
|
||||
$use_all_fields = ($table == "" || $foreign);
|
||||
foreach ($fields as $field) {
|
||||
if ($field[0] != "" || !$field[1] || $field[2]) {
|
||||
@@ -490,84 +491,105 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
$alter = array();
|
||||
$originals = array();
|
||||
|
||||
$alter_fields = [];
|
||||
$originals = [];
|
||||
|
||||
foreach ($fields as $field) {
|
||||
if ($field[1]) {
|
||||
$alter[] = ($use_all_fields ? $field[1] : "ADD " . implode($field[1]));
|
||||
if ($field[0] != "") {
|
||||
$originals[$field[0]] = $field[1][0];
|
||||
}
|
||||
if (!$field[1]) continue;
|
||||
|
||||
if ($field[0] != "") {
|
||||
$originals[$field[0]] = $field[1][0];
|
||||
}
|
||||
|
||||
$alter_fields[] = ($use_all_fields ? $field[1] : "ADD " . implode($field[1]));
|
||||
}
|
||||
|
||||
if (!$use_all_fields) {
|
||||
foreach ($alter as $val) {
|
||||
foreach ($alter_fields as $val) {
|
||||
if (!queries("ALTER TABLE " . table($table) . " $val")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($table != $name && !queries("ALTER TABLE " . table($table) . " RENAME TO " . table($name))) {
|
||||
return false;
|
||||
}
|
||||
} elseif (!recreate_table($table, $name, $alter, $originals, $foreign, $auto_increment)) {
|
||||
} elseif (!recreate_table($table, $name, $alter_fields, $originals, $foreign, $auto_increment)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($auto_increment) {
|
||||
queries("BEGIN");
|
||||
queries("UPDATE sqlite_sequence SET seq = $auto_increment WHERE name = " . q($name)); // ignores error
|
||||
|
||||
if (!$connection->affected_rows) {
|
||||
queries("INSERT INTO sqlite_sequence (name, seq) VALUES (" . q($name) . ", $auto_increment)");
|
||||
}
|
||||
|
||||
queries("COMMIT");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function recreate_table($table, $name, $fields, $originals, $foreign, $auto_increment, $indexes = array()) {
|
||||
function recreate_table($table, $name, $fields, $originals, $foreign, $auto_increment, $indexes = []) {
|
||||
global $connection;
|
||||
|
||||
if ($table != "") {
|
||||
if (!$fields) {
|
||||
foreach (fields($table) as $key => $field) {
|
||||
if ($indexes) {
|
||||
$field["auto_increment"] = 0;
|
||||
}
|
||||
|
||||
$fields[] = process_field($field, $field);
|
||||
$originals[$key] = idf_escape($key);
|
||||
}
|
||||
}
|
||||
|
||||
$primary_key = false;
|
||||
foreach ($fields as $field) {
|
||||
if ($field[6]) {
|
||||
$primary_key = true;
|
||||
}
|
||||
}
|
||||
$drop_indexes = array();
|
||||
|
||||
$drop_indexes = [];
|
||||
foreach ($indexes as $key => $val) {
|
||||
if ($val[2] == "DROP") {
|
||||
$drop_indexes[$val[1]] = true;
|
||||
unset($indexes[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (indexes($table) as $key_name => $index) {
|
||||
$columns = array();
|
||||
$columns = [];
|
||||
foreach ($index["columns"] as $key => $column) {
|
||||
if (!$originals[$column]) {
|
||||
if (!isset($originals[$column])) {
|
||||
continue 2;
|
||||
}
|
||||
$columns[] = $originals[$column] . ($index["descs"][$key] ? " DESC" : "");
|
||||
}
|
||||
|
||||
if (!$drop_indexes[$key_name]) {
|
||||
if ($index["type"] != "PRIMARY" || !$primary_key) {
|
||||
// Remove sqlite_ prefix from internal index created by UNIQUE column constraint.
|
||||
// This will transform column constrain to basic index.
|
||||
$key_name = preg_replace('~^sqlite_~', "", $key_name);
|
||||
|
||||
$indexes[] = array($index["type"], $key_name, $columns);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($indexes as $key => $val) {
|
||||
if ($val[0] == "PRIMARY") {
|
||||
unset($indexes[$key]);
|
||||
$foreign[] = " PRIMARY KEY (" . implode(", ", $val[2]) . ")";
|
||||
}
|
||||
}
|
||||
|
||||
foreach (foreign_keys($table) as $key_name => $foreign_key) {
|
||||
foreach ($foreign_key["source"] as $key => $column) {
|
||||
if (!$originals[$column]) {
|
||||
@@ -575,30 +597,37 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
}
|
||||
$foreign_key["source"][$key] = idf_unescape($originals[$column]);
|
||||
}
|
||||
|
||||
if (!isset($foreign[" $key_name"])) {
|
||||
$foreign[] = " " . format_foreign_key($foreign_key);
|
||||
}
|
||||
}
|
||||
|
||||
queries("BEGIN");
|
||||
}
|
||||
|
||||
foreach ($fields as $key => $field) {
|
||||
$fields[$key] = " " . implode($field);
|
||||
}
|
||||
|
||||
$fields = array_merge($fields, array_filter($foreign));
|
||||
$temp_name = ($table == $name ? "adminer_$name" : $name);
|
||||
if (!queries("CREATE TABLE " . table($temp_name) . " (\n" . implode(",\n", $fields) . "\n)")) {
|
||||
// implicit ROLLBACK to not overwrite $connection->error
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($table != "") {
|
||||
if ($originals && !queries("INSERT INTO " . table($temp_name) . " (" . implode(", ", $originals) . ") SELECT " . implode(", ", array_map('idf_escape', array_keys($originals))) . " FROM " . table($table))) {
|
||||
return false;
|
||||
}
|
||||
$triggers = array();
|
||||
|
||||
$triggers = [];
|
||||
foreach (triggers($table) as $trigger_name => $timing_event) {
|
||||
$trigger = trigger($trigger_name);
|
||||
$triggers[] = "CREATE TRIGGER " . idf_escape($trigger_name) . " " . implode(" ", $timing_event) . " ON " . table($name) . "\n$trigger[Statement]";
|
||||
}
|
||||
|
||||
$auto_increment = $auto_increment ? 0 : $connection->result("SELECT seq FROM sqlite_sequence WHERE name = " . q($table)); // if $auto_increment is set then it will be updated later
|
||||
if (!queries("DROP TABLE " . table($table)) // drop before creating indexes and triggers to allow using old names
|
||||
|| ($table == $name && !queries("ALTER TABLE " . table($temp_name) . " RENAME TO " . table($name)))
|
||||
@@ -606,16 +635,20 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($auto_increment) {
|
||||
queries("UPDATE sqlite_sequence SET seq = $auto_increment WHERE name = " . q($name)); // ignores error
|
||||
}
|
||||
|
||||
foreach ($triggers as $trigger) {
|
||||
if (!queries($trigger)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
queries("COMMIT");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -628,11 +661,12 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
}
|
||||
|
||||
function alter_indexes($table, $alter) {
|
||||
foreach ($alter as $primary) {
|
||||
if ($primary[0] == "PRIMARY") {
|
||||
return recreate_table($table, $table, array(), array(), array(), 0, $alter);
|
||||
foreach ($alter as $index) {
|
||||
if ($index[0] == "PRIMARY" || (preg_match('~^sqlite_~', $index[1]))) {
|
||||
return recreate_table($table, $table, [], [], [], 0, $alter);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (array_reverse($alter) as $val) {
|
||||
if (!queries($val[2] == "DROP"
|
||||
? "DROP INDEX " . idf_escape($val[1])
|
||||
@@ -641,6 +675,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -734,13 +769,17 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
|
||||
function create_sql($table, $auto_increment, $style) {
|
||||
global $connection;
|
||||
|
||||
$return = $connection->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = " . q($table));
|
||||
foreach (indexes($table) as $name => $index) {
|
||||
if ($name == '') {
|
||||
// Skip primary key and internal indexes.
|
||||
if ($name == '' || strpos($name, "sqlite_") === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$return .= ";\n\n" . index_sql($table, $index['type'], $name, "(" . implode(", ", array_map('idf_escape', $index['columns'])) . ")");
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
@@ -13,7 +13,7 @@ class Adminer {
|
||||
* @return string HTML code
|
||||
*/
|
||||
function name() {
|
||||
return "<a href='https://www.adminer.org/'" . target_blank() . " id='h1'>Adminer</a>";
|
||||
return "<a id='h1' href='" . h(HOME_URL) . "'>AdminerNeo</a>";
|
||||
}
|
||||
|
||||
/** Connection parameters
|
||||
@@ -1038,18 +1038,26 @@ class Adminer {
|
||||
*/
|
||||
function navigation($missing) {
|
||||
global $VERSION, $jush, $drivers, $connection;
|
||||
?>
|
||||
?>
|
||||
|
||||
<h1>
|
||||
<?php echo $this->name(); ?>
|
||||
<?php if ($missing != "auth"): ?>
|
||||
<span class="version">
|
||||
<?php echo $VERSION; ?>
|
||||
<a href="https://github.com/pematon/adminer/releases"<?php echo target_blank(); ?> id="version">
|
||||
<?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?>
|
||||
</a>
|
||||
</span>
|
||||
<?php echo $this->name(); ?>
|
||||
|
||||
<?php if ($missing != "auth"): ?>
|
||||
<span class="version">
|
||||
<?php echo $VERSION; ?>
|
||||
<a href="https://github.com/adminerneo/adminerneo/releases"<?php echo target_blank(); ?> id="version">
|
||||
<?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?>
|
||||
</a>
|
||||
</span>
|
||||
<?php
|
||||
if (!isset($_COOKIE["adminer_version"])) {
|
||||
echo script("verifyVersion('" . js_escape(ME) . "', '" . get_token() . "');");
|
||||
}
|
||||
?>
|
||||
<?php endif; ?>
|
||||
</h1>
|
||||
|
||||
<?php
|
||||
if ($missing == "auth") {
|
||||
$output = "";
|
||||
|
@@ -147,7 +147,7 @@ if ($auth) {
|
||||
set_session($key, null);
|
||||
}
|
||||
unset_permanent();
|
||||
redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), lang('Logout successful.') . ' ' . lang('Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.'));
|
||||
redirect(HOME_URL, lang('Logout successful.'));
|
||||
|
||||
} elseif ($permanent && !$_SESSION["pwds"]) {
|
||||
session_regenerate_id();
|
||||
@@ -214,6 +214,12 @@ function auth_error($error) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if (isset($_GET["username"]) && !DRIVER) {
|
||||
page_header(lang('No driver'), lang('Database driver not found.'), false);
|
||||
page_footer("auth");
|
||||
exit;
|
||||
}
|
||||
|
||||
if (isset($_GET["username"]) && !class_exists("Min_DB")) {
|
||||
unset($_SESSION["pwds"][DRIVER]);
|
||||
unset_permanent();
|
||||
|
@@ -39,7 +39,7 @@ if ($_GET["script"] == "version") {
|
||||
exit;
|
||||
}
|
||||
|
||||
global $adminer, $connection, $driver, $drivers, $edit_functions, $enum_length, $error, $functions, $grouping, $HTTPS, $inout, $jush, $LANG, $langs, $on_actions, $permanent, $structured_types, $has_token, $token, $translations, $types, $unsigned, $VERSION; // allows including Adminer inside a function
|
||||
global $adminer, $connection, $driver, $drivers, $edit_functions, $enum_length, $error, $functions, $grouping, $HTTPS, $inout, $jush, $LANG, $languages, $on_actions, $permanent, $structured_types, $has_token, $token, $translations, $types, $unsigned, $VERSION; // allows including Adminer inside a function
|
||||
|
||||
if (!$_SERVER["REQUEST_URI"]) { // IIS 5 compatibility
|
||||
$_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"];
|
||||
@@ -73,39 +73,73 @@ if (function_exists("get_magic_quotes_runtime") && get_magic_quotes_runtime()) {
|
||||
@ini_set("zend.ze1_compatibility_mode", false); // @ - deprecated
|
||||
@ini_set("precision", 15); // @ - can be disabled, 15 - internal PHP precision
|
||||
|
||||
// Migration for backward compatibility. This will keep MySQL users logged in.
|
||||
if (isset($_GET["username"])) {
|
||||
// Old 'server' URL param.
|
||||
if (isset($_GET["server"])) {
|
||||
$_GET["mysql"] = $_GET["server"];
|
||||
unset($_GET["server"]);
|
||||
}
|
||||
|
||||
// No URL param for any driver.
|
||||
$driver_params = array_filter(["mysql", "pgsql", "sqlite", "sqlite2", "oracle", "mssql", "mongo", "clickhouse", "elastic", "elastic5", "firebird", "simpledb"], function ($driver) {
|
||||
return isset($_GET[$driver]);
|
||||
});
|
||||
if (!$driver_params) {
|
||||
$_GET["mysql"] = "";
|
||||
}
|
||||
|
||||
// Migrate session data.
|
||||
if (isset($_SESSION["pwds"]["server"])) {
|
||||
foreach (["pwds", "db", "dbs", "queries"] as $key) {
|
||||
if (isset($_SESSION[$key]["server"])) {
|
||||
$_SESSION[$key]["mysql"] = $_SESSION[$key]["server"];
|
||||
unset($_SESSION[$key]["server"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
include "../adminer/include/lang.inc.php";
|
||||
include "../adminer/lang/$LANG.inc.php";
|
||||
|
||||
include "../adminer/include/pdo.inc.php";
|
||||
include "../adminer/include/driver.inc.php";
|
||||
include "../adminer/drivers/sqlite.inc.php";
|
||||
|
||||
include "../adminer/drivers/mysql.inc.php";
|
||||
include "../adminer/drivers/pgsql.inc.php";
|
||||
include "../adminer/drivers/sqlite.inc.php";
|
||||
include "../adminer/drivers/oracle.inc.php";
|
||||
include "../adminer/drivers/mssql.inc.php";
|
||||
include "../adminer/drivers/mongo.inc.php";
|
||||
|
||||
include "./include/adminer.inc.php";
|
||||
$adminer = (function_exists('adminer_object') ? adminer_object() : new Adminer);
|
||||
include "../adminer/drivers/mysql.inc.php"; // must be included as last driver
|
||||
$adminer = (function_exists('adminer_object') ? adminer_object() : new Adminer());
|
||||
|
||||
$config = driver_config();
|
||||
$possible_drivers = $config['possible_drivers'];
|
||||
$jush = $config['jush'];
|
||||
$types = $config['types'];
|
||||
$structured_types = $config['structured_types'];
|
||||
$unsigned = $config['unsigned'];
|
||||
$operators = $config['operators'];
|
||||
$operator_like = $config['operator_like'];
|
||||
$operator_regexp = $config['operator_regexp'];
|
||||
$functions = $config['functions'];
|
||||
$grouping = $config['grouping'];
|
||||
$edit_functions = $config['edit_functions'];
|
||||
if (defined("DRIVER")) {
|
||||
$config = driver_config();
|
||||
$possible_drivers = $config['possible_drivers'];
|
||||
$jush = $config['jush'];
|
||||
$types = $config['types'];
|
||||
$structured_types = $config['structured_types'];
|
||||
$unsigned = $config['unsigned'];
|
||||
$operators = $config['operators'];
|
||||
$operator_like = $config['operator_like'];
|
||||
$operator_regexp = $config['operator_regexp'];
|
||||
$functions = $config['functions'];
|
||||
$grouping = $config['grouping'];
|
||||
$edit_functions = $config['edit_functions'];
|
||||
|
||||
if ($adminer->operators === null) {
|
||||
$adminer->operators = $operators;
|
||||
$adminer->operator_like = $operator_like;
|
||||
$adminer->operator_regexp = $operator_regexp;
|
||||
if ($adminer->operators === null) {
|
||||
$adminer->operators = $operators;
|
||||
$adminer->operator_like = $operator_like;
|
||||
$adminer->operator_regexp = $operator_regexp;
|
||||
}
|
||||
} else {
|
||||
define("DRIVER", null);
|
||||
}
|
||||
|
||||
define("SERVER", $_GET[DRIVER]); // read from pgsql=localhost
|
||||
define("SERVER", DRIVER ? $_GET[DRIVER] : null); // read from pgsql=localhost
|
||||
define("DB", $_GET["db"]); // for the sake of speed and size
|
||||
define("ME", preg_replace('~\?.*~', '', relative_uri()) . '?'
|
||||
. (sid() ? SID . '&' : '')
|
||||
@@ -113,6 +147,7 @@ define("ME", preg_replace('~\?.*~', '', relative_uri()) . '?'
|
||||
. (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '')
|
||||
. (DB != "" ? 'db=' . urlencode(DB) . '&' . (isset($_GET["ns"]) ? "ns=" . urlencode($_GET["ns"]) . "&" : "") : '')
|
||||
);
|
||||
define("HOME_URL", substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1) ?: ".");
|
||||
|
||||
include "../adminer/include/version.inc.php";
|
||||
include "../adminer/include/design.inc.php";
|
||||
|
@@ -2,9 +2,22 @@
|
||||
|
||||
function dump($value)
|
||||
{
|
||||
echo "<pre>";
|
||||
var_export($value);
|
||||
echo "</pre>\n";
|
||||
$cli = PHP_SAPI == 'cli';
|
||||
|
||||
if (!$cli) {
|
||||
echo "<pre>";
|
||||
}
|
||||
|
||||
$export = var_export($value, true);
|
||||
$export = preg_replace('~=>\s+array\s*~', "=> array", $export);
|
||||
$export = preg_replace('~\(\s+\)~', "()", $export);
|
||||
echo $export;
|
||||
|
||||
if (!$cli) {
|
||||
echo "</pre>";
|
||||
}
|
||||
|
||||
echo "\n";
|
||||
}
|
||||
|
||||
function dumpe($value)
|
||||
|
@@ -18,10 +18,11 @@ function page_header($title, $error = "", $breadcrumb = [], $title2 = "") {
|
||||
|
||||
// Load Adminer version from file if cookie is missing.
|
||||
$filename = get_temp_dir() . "/adminer.version";
|
||||
if (!$_COOKIE["adminer_version"] && file_exists($filename) && filemtime($filename) + 86400 > time()) { // 86400 - 1 day in seconds
|
||||
if (!$_COOKIE["adminer_version"] && file_exists($filename) && ($lifetime = filemtime($filename) + 86400 - time()) > 0) { // 86400 - 1 day in seconds
|
||||
$data = unserialize(file_get_contents($filename));
|
||||
|
||||
$_COOKIE["adminer_version"] = $data["version"];
|
||||
cookie("adminer_version", $data["version"], 24 * 3600);
|
||||
cookie("adminer_version", $data["version"], $lifetime); // Sync expiration with the file.
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
@@ -42,12 +43,12 @@ function page_header($title, $error = "", $breadcrumb = [], $title2 = "") {
|
||||
|
||||
<body class="<?php echo lang('ltr'); ?> nojs">
|
||||
<script<?php echo nonce(); ?>>
|
||||
document.body.onkeydown = bodyKeydown;
|
||||
document.body.onclick = bodyClick;
|
||||
<?php if (!isset($_COOKIE["adminer_version"])): ?>
|
||||
document.body.onload = function () { verifyVersion('<?php echo $VERSION; ?>', '<?php echo js_escape(ME); ?>', '<?php echo get_token(); ?>') };
|
||||
<?php endif; ?>
|
||||
document.body.className = document.body.className.replace(/ nojs/, ' js');
|
||||
const body = document.body;
|
||||
|
||||
body.onkeydown = bodyKeydown;
|
||||
body.onclick = bodyClick;
|
||||
body.classList.remove("nojs");
|
||||
body.classList.add("js");
|
||||
|
||||
var offlineMessage = '<?php echo js_escape(lang('You are offline.')); ?>';
|
||||
var thousandsSeparator = '<?php echo js_escape(lang(',')); ?>';
|
||||
@@ -61,8 +62,7 @@ function page_header($title, $error = "", $breadcrumb = [], $title2 = "") {
|
||||
if ($breadcrumb !== null) {
|
||||
echo '<p id="breadcrumb">';
|
||||
|
||||
$link = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1);
|
||||
echo '<a href="' . h($link ?: ".") . '">' . lang('Home') . '</a> » ';
|
||||
echo '<a href="' . h(HOME_URL) . '">' . lang('Home') . '</a> » ';
|
||||
|
||||
$server = "";
|
||||
if ($breadcrumb === false) {
|
||||
@@ -143,7 +143,7 @@ function csp() {
|
||||
[
|
||||
// 'self' is a fallback for browsers not supporting 'strict-dynamic', 'unsafe-inline' is a fallback for browsers not supporting 'nonce-'
|
||||
"script-src" => "'self' 'unsafe-inline' 'nonce-" . get_nonce() . "' 'strict-dynamic'",
|
||||
"connect-src" => "'self' https://api.github.com/repos/pematon/adminer/releases/latest",
|
||||
"connect-src" => "'self' https://api.github.com/repos/adminerneo/adminerneo/releases/latest",
|
||||
"frame-src" => "'self'",
|
||||
"object-src" => "'none'",
|
||||
"base-uri" => "'none'",
|
||||
@@ -188,19 +188,19 @@ function page_messages($error) {
|
||||
/**
|
||||
* Prints HTML footer.
|
||||
*
|
||||
* @param $missing string "auth", "db", "ns"
|
||||
* @param ?string $missing "auth", "db", "ns"
|
||||
*/
|
||||
function page_footer($missing = "")
|
||||
function page_footer($missing = null)
|
||||
{
|
||||
global $adminer, $token;
|
||||
|
||||
echo "</div>"; // #content
|
||||
|
||||
echo "<div id='footer'>\n";
|
||||
switch_lang();
|
||||
language_select();
|
||||
|
||||
if ($missing != "auth") {
|
||||
?>
|
||||
?>
|
||||
|
||||
<div class="logout">
|
||||
<form action="" method="post">
|
||||
|
@@ -637,7 +637,7 @@ function doc_link(array $paths, $text = "<sup>?</sup>") {
|
||||
* @return string
|
||||
*/
|
||||
function ob_gzencode($string) {
|
||||
// ob_start() callback recieves an optional parameter $phase but gzencode() accepts optional parameter $level
|
||||
// ob_start() callback receives an optional parameter $phase but gzencode() accepts optional parameter $level
|
||||
return gzencode($string);
|
||||
}
|
||||
|
||||
|
@@ -108,6 +108,9 @@ function min_version($version, $maria_db = "", $connection2 = null) {
|
||||
$server_info = $match[1];
|
||||
$version = $maria_db;
|
||||
}
|
||||
if ($version == "") {
|
||||
return false;
|
||||
}
|
||||
return (version_compare($server_info, $version) >= 0);
|
||||
}
|
||||
|
||||
@@ -320,7 +323,7 @@ function ini_bool($ini) {
|
||||
return (preg_match('~^(on|true|yes)$~i', $val) || (int) $val); // boolean values set by php_value are strings
|
||||
}
|
||||
|
||||
/** Check if SID is neccessary
|
||||
/** Check if SID is necessary
|
||||
* @return bool
|
||||
*/
|
||||
function sid() {
|
||||
@@ -611,7 +614,7 @@ function auth_url($vendor, $server, $username, $db = null) {
|
||||
preg_match('~([^?]*)\??(.*)~', remove_from_uri(implode("|", array_keys($drivers)) . "|username|" . ($db !== null ? "db|" : "") . session_name()), $match);
|
||||
return "$match[1]?"
|
||||
. (sid() ? SID . "&" : "")
|
||||
. ($vendor != "server" || $server != "" ? urlencode($vendor) . "=" . urlencode($server) . "&" : "")
|
||||
. urlencode($vendor) . "=" . urlencode($server) . "&"
|
||||
. "username=" . urlencode($username)
|
||||
. ($db != "" ? "&db=" . urlencode($db) : "")
|
||||
. ($match[2] ? "&$match[2]" : "")
|
||||
@@ -830,6 +833,8 @@ function is_utf8($val) {
|
||||
* @return string escaped string with appended ...
|
||||
*/
|
||||
function shorten_utf8($string, $length = 80, $suffix = "") {
|
||||
if ($string == "") return $suffix;
|
||||
|
||||
if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{10FFFF}]", $length) . ")($)?)u", $string, $match)) { // ~s causes trash in $match[2] under some PHP versions, (.|\n) is slow
|
||||
preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $length) . ")($)?)", $string, $match);
|
||||
}
|
||||
@@ -1573,6 +1578,10 @@ function edit_form($table, $fields, $row, $update) {
|
||||
$value = "";
|
||||
$function = "now";
|
||||
}
|
||||
if ($field["type"] == "uuid" && $value == "uuid()") {
|
||||
$value = "";
|
||||
$function = "uuid";
|
||||
}
|
||||
input($field, $value, $function);
|
||||
echo "\n";
|
||||
}
|
||||
|
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
// not used in a single language version
|
||||
|
||||
$langs = array(
|
||||
$languages = [
|
||||
'en' => 'English', // Jakub Vrána - https://www.vrana.cz
|
||||
'ar' => 'العربية', // Y.M Amine - Algeria - nbr7@live.fr
|
||||
'bg' => 'Български', // Deyan Delchev
|
||||
@@ -25,8 +24,8 @@ $langs = array(
|
||||
'ja' => '日本語', // Hitoshi Ozawa - http://sourceforge.jp/projects/oss-ja-jpn/releases/
|
||||
'ka' => 'ქართული', // Saba Khmaladze skhmaladze@uglt.org
|
||||
'ko' => '한국어', // dalli - skcha67@gmail.com
|
||||
'lv' => 'Latviešu', // Kristaps Lediņš - https://krysits.com
|
||||
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt
|
||||
'lv' => 'Latviešu', // Kristaps Lediņš - https://krysits.com
|
||||
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt
|
||||
'ms' => 'Bahasa Melayu', // Pisyek
|
||||
'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be
|
||||
'no' => 'Norsk', // Iver Odin Kvello, mupublishing.com
|
||||
@@ -46,24 +45,59 @@ $langs = array(
|
||||
'vi' => 'Tiếng Việt', // Giang Manh @ manhgd google mail
|
||||
'zh' => '简体中文', // Mr. Lodar, vea - urn2.net - vea.urn2@gmail.com
|
||||
'zh-tw' => '繁體中文', // http://tzangms.com
|
||||
);
|
||||
];
|
||||
|
||||
/** Get current language
|
||||
* @return string
|
||||
*/
|
||||
function get_lang() {
|
||||
/**
|
||||
* Returns the list of available languages.
|
||||
* In compiled version, only selected languages are returned.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function get_available_languages()
|
||||
{
|
||||
global $languages;
|
||||
return $languages; // compile: available languages
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts translation key into the right form.
|
||||
* In compiled version, string keys used in plugins are dynamically translated to numeric keys.
|
||||
*
|
||||
* @param string|int $key
|
||||
*
|
||||
* @return string|int
|
||||
*/
|
||||
function convert_translation_key($key)
|
||||
{
|
||||
return $key; // compile: convert translation key
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns current language.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function get_lang()
|
||||
{
|
||||
global $LANG;
|
||||
return $LANG;
|
||||
}
|
||||
|
||||
/** Translate string
|
||||
* @param string
|
||||
* @param int
|
||||
* @return string
|
||||
*/
|
||||
function lang($idf, $number = null) {
|
||||
/**
|
||||
* Returns translated text.
|
||||
*
|
||||
* @param string|int $key Numeric key is used in compiled version.
|
||||
* @param ?int $number
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function lang($key, $number = null)
|
||||
{
|
||||
global $LANG, $translations;
|
||||
$translation = ($translations[$idf] ? $translations[$idf] : $idf);
|
||||
|
||||
$key = convert_translation_key($key);
|
||||
$translation = $translations[$key] ?: $key;
|
||||
|
||||
if (is_array($translation)) {
|
||||
$pos = ($number == 1 ? 0
|
||||
: ($LANG == 'cs' || $LANG == 'sk' ? ($number && $number < 5 ? 1 : 2) // different forms for 1, 2-4, other
|
||||
@@ -74,21 +108,39 @@ function lang($idf, $number = null) {
|
||||
: ($LANG == 'bs' || $LANG == 'ru' || $LANG == 'sr' || $LANG == 'uk' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1 except 11, 2-4 except 12-14, other
|
||||
: 1 // different forms for 1, other
|
||||
))))))); // http://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html
|
||||
|
||||
$translation = $translation[$pos];
|
||||
}
|
||||
|
||||
$args = func_get_args();
|
||||
array_shift($args);
|
||||
|
||||
$format = str_replace("%d", "%s", $translation);
|
||||
if ($format != $translation) {
|
||||
$args[0] = format_number($number);
|
||||
}
|
||||
|
||||
return vsprintf($format, $args);
|
||||
}
|
||||
|
||||
function switch_lang() {
|
||||
global $LANG, $langs;
|
||||
function language_select()
|
||||
{
|
||||
global $LANG, $languages;
|
||||
|
||||
$available_languages = get_available_languages();
|
||||
if (count($available_languages) == 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
$options = [];
|
||||
foreach ($languages as $language => $title) {
|
||||
if (isset($available_languages[$language])) {
|
||||
$options[$language] = $title;
|
||||
}
|
||||
}
|
||||
|
||||
echo "<div id='lang'><form action='' method='post'>\n";
|
||||
echo lang('Language') . ": " . html_select("lang", $langs, $LANG, "this.form.submit();");
|
||||
echo lang('Language') . ": " . html_select("lang", $options, $LANG, "this.form.submit();");
|
||||
echo " <input type='submit' value='" . lang('Use') . "' class='hidden'>\n";
|
||||
echo "<input type='hidden' name='token' value='" . get_token() . "'>\n"; // $token may be empty in auth.inc.php
|
||||
echo "</form></div>\n";
|
||||
@@ -96,31 +148,37 @@ function switch_lang() {
|
||||
|
||||
if (isset($_POST["lang"]) && verify_token()) { // $error not yet available
|
||||
cookie("adminer_lang", $_POST["lang"]);
|
||||
|
||||
$_SESSION["lang"] = $_POST["lang"]; // cookies may be disabled
|
||||
$_SESSION["translations"] = array(); // used in compiled version
|
||||
$_SESSION["translations"] = []; // used in compiled version
|
||||
|
||||
redirect(remove_from_uri());
|
||||
}
|
||||
|
||||
$LANG = "en";
|
||||
if (isset($langs[$_COOKIE["adminer_lang"]])) {
|
||||
$available_languages = get_available_languages();
|
||||
$LANG = array_keys($available_languages)[0];
|
||||
|
||||
if (isset($_COOKIE["adminer_lang"]) && isset($available_languages[$_COOKIE["adminer_lang"]])) {
|
||||
cookie("adminer_lang", $_COOKIE["adminer_lang"]);
|
||||
$LANG = $_COOKIE["adminer_lang"];
|
||||
} elseif (isset($langs[$_SESSION["lang"]])) {
|
||||
} elseif (isset($available_languages[$_SESSION["lang"]])) {
|
||||
$LANG = $_SESSION["lang"];
|
||||
} else {
|
||||
$accept_language = array();
|
||||
} elseif (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) {
|
||||
$accept_language = [];
|
||||
preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~', str_replace("_", "-", strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])), $matches, PREG_SET_ORDER);
|
||||
foreach ($matches as $match) {
|
||||
$accept_language[$match[1]] = (isset($match[3]) ? $match[3] : 1);
|
||||
}
|
||||
|
||||
arsort($accept_language);
|
||||
foreach ($accept_language as $key => $q) {
|
||||
if (isset($langs[$key])) {
|
||||
if (isset($available_languages[$key])) {
|
||||
$LANG = $key;
|
||||
break;
|
||||
}
|
||||
|
||||
$key = preg_replace('~-.*~', '', $key);
|
||||
if (!isset($accept_language[$key]) && isset($langs[$key])) {
|
||||
if (!isset($accept_language[$key]) && isset($available_languages[$key])) {
|
||||
$LANG = $key;
|
||||
break;
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@
|
||||
if (extension_loaded('pdo')) {
|
||||
/*abstract*/ class Min_PDO {
|
||||
var $_result, $server_info, $affected_rows, $errno, $error, $pdo;
|
||||
|
||||
|
||||
function __construct() {
|
||||
global $adminer;
|
||||
$pos = array_search("SQL", $adminer->operators);
|
||||
@@ -11,10 +11,10 @@ if (extension_loaded('pdo')) {
|
||||
unset($adminer->operators[$pos]);
|
||||
}
|
||||
}
|
||||
|
||||
function dsn($dsn, $username, $password, $options = array()) {
|
||||
|
||||
function dsn($dsn, $username, $password, $options = []) {
|
||||
$options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_SILENT;
|
||||
$options[PDO::ATTR_STATEMENT_CLASS] = array('Min_PDOStatement');
|
||||
$options[PDO::ATTR_STATEMENT_CLASS] = [Min_PDOStatement::class];
|
||||
try {
|
||||
$this->pdo = new PDO($dsn, $username, $password, $options);
|
||||
} catch (Exception $ex) {
|
||||
@@ -22,13 +22,13 @@ if (extension_loaded('pdo')) {
|
||||
}
|
||||
$this->server_info = @$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION);
|
||||
}
|
||||
|
||||
|
||||
/*abstract function select_db($database);*/
|
||||
|
||||
|
||||
function quote($string) {
|
||||
return $this->pdo->quote($string);
|
||||
}
|
||||
|
||||
|
||||
function query($query, $unbuffered = false) {
|
||||
$result = $this->pdo->query($query);
|
||||
$this->error = "";
|
||||
@@ -42,11 +42,11 @@ if (extension_loaded('pdo')) {
|
||||
$this->store_result($result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
function multi_query($query) {
|
||||
return $this->_result = $this->query($query);
|
||||
}
|
||||
|
||||
|
||||
function store_result($result = null) {
|
||||
if (!$result) {
|
||||
$result = $this->_result;
|
||||
@@ -61,7 +61,7 @@ if (extension_loaded('pdo')) {
|
||||
$this->affected_rows = $result->rowCount();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function next_result() {
|
||||
if (!$this->_result) {
|
||||
return false;
|
||||
@@ -69,7 +69,7 @@ if (extension_loaded('pdo')) {
|
||||
$this->_result->_offset = 0;
|
||||
return @$this->_result->nextRowset(); // @ - PDO_PgSQL doesn't support it
|
||||
}
|
||||
|
||||
|
||||
function result($query, $field = 0) {
|
||||
$result = $this->query($query);
|
||||
if (!$result) {
|
||||
@@ -79,18 +79,18 @@ if (extension_loaded('pdo')) {
|
||||
return $row[$field];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Min_PDOStatement extends PDOStatement {
|
||||
var $_offset = 0, $num_rows;
|
||||
|
||||
|
||||
function fetch_assoc() {
|
||||
return $this->fetch(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
|
||||
function fetch_row() {
|
||||
return $this->fetch(PDO::FETCH_NUM);
|
||||
}
|
||||
|
||||
|
||||
function fetch_field() {
|
||||
$row = (object) $this->getColumnMeta($this->_offset++);
|
||||
$row->orgtable = $row->table;
|
||||
|
@@ -1,2 +1,2 @@
|
||||
<?php
|
||||
$VERSION = "4.11";
|
||||
$VERSION = "4.14";
|
||||
|
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
/**
|
||||
* Adminer - Database management in a single PHP file
|
||||
* AdminerNeo - Database management in a single PHP file
|
||||
*
|
||||
* @link https://github.com/pematon/adminer
|
||||
* @link https://github.com/adminerneo/adminerneo
|
||||
* @author Jakub Vrana (https://www.vrana.cz/)
|
||||
* @author Peter Knut
|
||||
* @copyright 2007-2021 Jakub Vrana, 2024 Peter Knut
|
||||
|
@@ -31,7 +31,6 @@ $translations = array(
|
||||
'Create database' => 'إنشاء قاعدة بيانات',
|
||||
'SQL command' => 'استعلام SQL',
|
||||
'Logout' => 'تسجيل الخروج',
|
||||
'database' => 'قاعدة بيانات',
|
||||
'Use' => 'استعمال',
|
||||
'No tables.' => 'لا توجد جداول.',
|
||||
'select' => 'تحديد',
|
||||
@@ -68,7 +67,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'يتعذر اختيار الجدول',
|
||||
'Invalid CSRF token. Send the form again.' => 'رمز CSRF غير صالح. المرجو إرسال الاستمارة مرة أخرى.',
|
||||
'Comment' => 'تعليق',
|
||||
'Default values' => 'القيم الافتراضية',
|
||||
'%d byte(s)' => '%d بايت',
|
||||
'No commands to execute.' => 'لا توجد أوامر للتنفيذ.',
|
||||
'Unable to upload a file.' => 'يتعذر رفع ملف ما.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -17,6 +17,8 @@ $translations = array(
|
||||
'Language' => 'Език',
|
||||
'Invalid CSRF token. Send the form again.' => 'Невалиден шифроващ ключ. Попълнете и изпратете формуляра отново.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Ако не сте изпратили тази заявка през Adminer, затворете тази страница.',
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
'No extension' => 'Няма разширение',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Никое от поддържаните PHP разширения (%s) не е налично.',
|
||||
'Session support must be enabled.' => 'Поддръжката на сесии трябва да е разрешена.',
|
||||
@@ -79,7 +81,6 @@ $translations = array(
|
||||
'Data' => 'Данни',
|
||||
|
||||
'Database' => 'База данни',
|
||||
'database' => 'база данни',
|
||||
'Use' => 'Избор',
|
||||
'Select database' => 'Избор на база данни',
|
||||
'Invalid database.' => 'Невалидна база данни.',
|
||||
@@ -166,7 +167,6 @@ $translations = array(
|
||||
'Options' => 'Опции',
|
||||
'Comment' => 'Коментар',
|
||||
'Default value' => 'Стойност по подразбиране',
|
||||
'Default values' => 'Стойности по подразбиране',
|
||||
'Drop' => 'Премахване',
|
||||
'Are you sure?' => 'Сигурни ли сте?',
|
||||
'Size' => 'Големина',
|
||||
@@ -314,12 +314,15 @@ $translations = array(
|
||||
'Please use one of the extensions %s.' => 'Моля, използвайте някое от разширенията %s.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Schema' => 'Схема',
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'Alter schema' => 'Промяна на схемата',
|
||||
'Create schema' => 'Създаване на схема',
|
||||
'Schema has been dropped.' => 'Схемата беше премахната.',
|
||||
'Schema has been created.' => 'Схемата беше създадена.',
|
||||
'Schema has been altered.' => 'Схемата беше променена.',
|
||||
'Schema' => 'Схема',
|
||||
'Invalid schema.' => 'Невалидна схема.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
@@ -343,7 +346,6 @@ $translations = array(
|
||||
'ATTACH queries are not supported.' => null,
|
||||
'Warnings' => null,
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'ডাটাবেজ তৈরী করুন',
|
||||
'SQL command' => 'SQL-কমান্ড',
|
||||
'Logout' => 'লগআউট',
|
||||
'database' => 'ডাটাবেজ',
|
||||
'Use' => 'ব্যবহার',
|
||||
'No tables.' => 'কোন টেবিল নাই।',
|
||||
'select' => 'নির্বাচন',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'টেবিল নির্বাচন করতে অক্ষম',
|
||||
'Invalid CSRF token. Send the form again.' => 'অবৈধ CSRF টোকেন। ফর্মটি আবার পাঠান।',
|
||||
'Comment' => 'মন্তব্য',
|
||||
'Default values' => 'ডিফল্ট মান',
|
||||
'%d byte(s)' => array('%d বাইট', '%d বাইটসমূহ'),
|
||||
'No commands to execute.' => 'সম্পাদন করার মত কোন নির্দেশ নেই।',
|
||||
'Unable to upload a file.' => 'ফাইল আপলোড করা সম্ভব হচ্ছে না।',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -74,7 +74,6 @@ $translations = array(
|
||||
'Data' => 'Podaci',
|
||||
|
||||
'Database' => 'Baza podataka',
|
||||
'database' => 'baza podataka',
|
||||
'Use' => 'Koristi',
|
||||
'Select database' => 'Izaberite bazu',
|
||||
'Invalid database.' => 'Neispravna baza podataka.',
|
||||
@@ -159,7 +158,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Auto-priraštaj',
|
||||
'Options' => 'Opcije',
|
||||
'Comment' => 'Komentar',
|
||||
'Default values' => 'Podrazumijevane vrijednosti',
|
||||
'Drop' => 'Izbriši',
|
||||
'Are you sure?' => 'Da li ste sigurni?',
|
||||
'Move up' => 'Pomijeri na gore',
|
||||
@@ -335,7 +333,6 @@ $translations = array(
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Default value' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => 'Ne',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Crea una base de dades',
|
||||
'SQL command' => 'Ordre SQL',
|
||||
'Logout' => 'Desconnecta',
|
||||
'database' => 'base de dades',
|
||||
'Use' => 'Utilitza',
|
||||
'No tables.' => 'No hi ha cap taula.',
|
||||
'select' => 'registres',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Impossible seleccionar la taula',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF invàlid. Torna a enviar el formulari.',
|
||||
'Comment' => 'Comentari',
|
||||
'Default values' => 'Valors per defecte',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Cap comanda per executar.',
|
||||
'Unable to upload a file.' => 'Impossible adjuntar el fitxer.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -11,7 +11,6 @@ $translations = array(
|
||||
'Logout' => 'Odhlásit',
|
||||
'Logged as: %s' => 'Přihlášen jako: %s',
|
||||
'Logout successful.' => 'Odhlášení proběhlo v pořádku.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Díky za použití Admineru, <a href="https://www.adminer.org/cs/donation/">přispějte</a> na vývoj.',
|
||||
'Invalid server or credentials.' => 'Neplatný server nebo přihlašovací údaje.',
|
||||
'There is a space in the input password which might be the cause.' => 'Problém může být, že je v zadaném hesle mezera.',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer nepodporuje přístup k databázi bez hesla, <a href="https://www.adminer.org/cs/password/"%s>více informací</a>.',
|
||||
@@ -21,6 +20,8 @@ $translations = array(
|
||||
'Language' => 'Jazyk',
|
||||
'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formulář znovu.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Pokud jste tento požadavek neposlali z Adminera, tak tuto stránku zavřete.',
|
||||
'No driver' => 'Žádný ovladač',
|
||||
'Database driver not found.' => 'Databázový ovladač se nenašel.',
|
||||
'No extension' => 'Žádné rozšíření',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Není dostupné žádné z podporovaných PHP rozšíření (%s).',
|
||||
'Connecting to privileged ports is not allowed.' => 'Připojování k privilegovaným portům není povoleno.',
|
||||
@@ -89,7 +90,6 @@ $translations = array(
|
||||
'Data' => 'Data',
|
||||
|
||||
'Database' => 'Databáze',
|
||||
'database' => 'databáze',
|
||||
'DB' => 'DB',
|
||||
'Use' => 'Vybrat',
|
||||
'Select database' => 'Vybrat databázi',
|
||||
@@ -178,7 +178,6 @@ $translations = array(
|
||||
'Options' => 'Volby',
|
||||
'Comment' => 'Komentář',
|
||||
'Default value' => 'Výchozí hodnota',
|
||||
'Default values' => 'Výchozí hodnoty',
|
||||
'Drop' => 'Odstranit',
|
||||
'Drop %s?' => 'Odstranit %s?',
|
||||
'Are you sure?' => 'Opravdu?',
|
||||
@@ -327,12 +326,15 @@ $translations = array(
|
||||
'Please use one of the extensions %s.' => 'Prosím použijte jednu z koncovek %s.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Schema' => 'Schéma',
|
||||
'Schemas' => 'Schémy',
|
||||
'No schemas.' => 'Žádné schémy.',
|
||||
'Show schema' => 'Zobrazit schéma',
|
||||
'Alter schema' => 'Pozměnit schéma',
|
||||
'Create schema' => 'Vytvořit schéma',
|
||||
'Schema has been dropped.' => 'Schéma bylo odstraněno.',
|
||||
'Schema has been created.' => 'Schéma bylo vytvořeno.',
|
||||
'Schema has been altered.' => 'Schéma bylo změněno.',
|
||||
'Schema' => 'Schéma',
|
||||
'Invalid schema.' => 'Nesprávné schéma.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
|
@@ -65,7 +65,6 @@ $translations = array(
|
||||
'Format' => 'Format',
|
||||
'Data' => 'Data',
|
||||
'Database' => 'Database',
|
||||
'database' => 'database',
|
||||
'Use' => 'Brug',
|
||||
'Select database' => 'Vælg database',
|
||||
'Invalid database.' => 'Ugyldig database.',
|
||||
@@ -144,7 +143,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Auto Increment',
|
||||
'Options' => 'Valg',
|
||||
'Comment' => 'Kommentarer',
|
||||
'Default values' => 'Standardværdier',
|
||||
'Drop' => 'Drop',
|
||||
'Are you sure?' => 'Er du sikker?',
|
||||
'Move up' => 'Flyt op',
|
||||
@@ -294,7 +292,6 @@ $translations = array(
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Default value' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => 'Nej',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -1,9 +1,8 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'Home' => null,
|
||||
'Home' => 'Startseite',
|
||||
'Login' => 'Login',
|
||||
'Logout successful.' => 'Abmeldung erfolgreich.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Danke, dass Sie Adminer genutzt haben. <a href="https://www.adminer.org/de/donation/">Spenden willkommen!</a>',
|
||||
'Invalid server or credentials.' => 'Ungültige Server oder Anmelde-Informationen.',
|
||||
'Server' => 'Server',
|
||||
'Username' => 'Benutzer',
|
||||
@@ -33,8 +32,7 @@ $translations = array(
|
||||
'Create database' => 'Datenbank erstellen',
|
||||
'SQL command' => 'SQL-Kommando',
|
||||
'Logout' => 'Abmelden',
|
||||
'database' => 'Datenbank',
|
||||
'Use' => 'Benutzung',
|
||||
'Use' => 'Auswählen',
|
||||
'No tables.' => 'Keine Tabellen.',
|
||||
'select' => 'zeigen',
|
||||
'Item has been deleted.' => 'Datensatz wurde gelöscht.',
|
||||
@@ -71,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Auswahl der Tabelle fehlgeschlagen',
|
||||
'Invalid CSRF token. Send the form again.' => 'CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.',
|
||||
'Comment' => 'Kommentar',
|
||||
'Default values' => 'Vorgabewerte festlegen',
|
||||
'%d byte(s)' => array('%d Byte', '%d Bytes'),
|
||||
'No commands to execute.' => 'Kein Kommando vorhanden.',
|
||||
'Unable to upload a file.' => 'Hochladen von Datei fehlgeschlagen.',
|
||||
@@ -227,7 +224,7 @@ $translations = array(
|
||||
'Permanent login' => 'Passwort speichern',
|
||||
'Databases have been dropped.' => 'Datenbanken wurden entfernt.',
|
||||
'Search data in tables' => 'Suche in Tabellen',
|
||||
'as a regular expression' => null,
|
||||
'as a regular expression' => 'als regulärer Ausdruck',
|
||||
'Schema' => 'Schema',
|
||||
'Alter schema' => 'Schema ändern',
|
||||
'Create schema' => 'Schema erstellen',
|
||||
@@ -290,27 +287,33 @@ $translations = array(
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Das Master-Passwort ist abgelaufen. <a href="https://www.adminer.org/de/extension/"%s>Implementieren</a> Sie die %s Methode, um es permanent zu machen.',
|
||||
'%d / ' => '%d / ',
|
||||
|
||||
'Drop %s?' => null,
|
||||
'Materialized view' => null,
|
||||
'Vacuum' => null,
|
||||
'overwrite' => null,
|
||||
'DB' => null,
|
||||
'ATTACH queries are not supported.' => null,
|
||||
'Warnings' => null,
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Full table scan' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
'Unknown error.' => null,
|
||||
'Database does not support password.' => null,
|
||||
'Disable %s or enable %s or %s extensions.' => null,
|
||||
'Drop %s?' => '%s entfernen?',
|
||||
'Materialized view' => 'Strukturierte Ansicht',
|
||||
'Vacuum' => 'Vacuum',
|
||||
'overwrite' => 'überschreiben',
|
||||
'DB' => 'DB',
|
||||
'ATTACH queries are not supported.' => 'ATTACH Abfragen werden nicht unterstützt.',
|
||||
'Warnings' => 'Warnungen',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer unterstützt den Zugriff auf eine Datenbank ohne Passwort nicht, <a href="https://www.adminer.org/en/password/"%s>mehr Informationen</a>.',
|
||||
'Full table scan' => 'Vollständige Überprüfung der Tabelle',
|
||||
'The action will be performed after successful login with the same credentials.' => 'Die Aktion wird nach erfolgreicher Anmeldung mit denselben Anmeldedaten ausgeführt.',
|
||||
'Connecting to privileged ports is not allowed.' => 'Die Verbindung zu privilegierten Ports ist nicht erlaubt.',
|
||||
'There is a space in the input password which might be the cause.' => 'Es gibt ein Leerzeichen im Eingabepasswort, das die Ursache sein könnte.',
|
||||
'Unknown error.' => 'Unbekannter Fehler.',
|
||||
'Database does not support password.' => 'Die Datenbank unterstützt kein Passwort.',
|
||||
'Disable %s or enable %s or %s extensions.' => 'Deaktivieren Sie %s oder aktivieren Sie die Erweiterungen %s oder %s.',
|
||||
|
||||
'Columns' => null,
|
||||
'Nullable' => null,
|
||||
'Default' => null,
|
||||
'Columns' => 'Spalten',
|
||||
'Nullable' => 'Nullbar',
|
||||
'Default' => 'Standard',
|
||||
'Yes' => 'Ja',
|
||||
'No' => 'Nein',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
'One Time Password' => 'Einmal-Passwort',
|
||||
'Invalid OTP code.' => 'Ungültiger OTP-Code.',
|
||||
|
||||
'Schemas' => 'Schemata',
|
||||
'No schemas.' => 'Keine Schemata.',
|
||||
'Show schema' => 'Zeige Schemata',
|
||||
'No driver' => 'Kein Treiber',
|
||||
'Database driver not found.' => 'Datenbanktreiber nicht gefunden.',
|
||||
);
|
||||
|
@@ -80,7 +80,6 @@ $translations = array(
|
||||
'Data' => 'Δεδομένα',
|
||||
|
||||
'Database' => 'Β. Δεδομένων',
|
||||
'database' => 'β. δεδομένων',
|
||||
'Use' => 'χρήση',
|
||||
'Select database' => 'Επιλέξτε Β.Δ.',
|
||||
'Invalid database.' => 'Λανθασμένη Β.Δ.',
|
||||
@@ -167,7 +166,6 @@ $translations = array(
|
||||
'Options' => 'Επιλογές',
|
||||
'Comment' => 'Σχόλιο',
|
||||
'Default value' => 'Προεπιλεγμένη τιμή',
|
||||
'Default values' => 'Προεπιλεγμένες τιμές',
|
||||
'Drop' => 'Διαγραφή',
|
||||
'Are you sure?' => 'Είστε σίγουρος;',
|
||||
'Size' => 'Μέγεθος',
|
||||
@@ -343,7 +341,6 @@ $translations = array(
|
||||
'ATTACH queries are not supported.' => null,
|
||||
'Warnings' => null,
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -3,7 +3,7 @@ $translations = array(
|
||||
'Home' => null,
|
||||
'Login' => 'Login',
|
||||
'Logout successful.' => 'Sesión finalizada con éxito.',
|
||||
'Invalid server or credentials.' => null,
|
||||
'Invalid server or credentials.' => 'Servidor o credenciales no válidos.',
|
||||
'Server' => 'Servidor',
|
||||
'Username' => 'Usuario',
|
||||
'Password' => 'Contraseña',
|
||||
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Crear Base de datos',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Logout' => 'Cerrar sesión',
|
||||
'database' => 'base de datos',
|
||||
'Use' => 'Usar',
|
||||
'No tables.' => 'No existen tablas.',
|
||||
'select' => 'registros',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'No es posible seleccionar la tabla',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Vuelva a enviar los datos del formulario.',
|
||||
'Comment' => 'Comentario',
|
||||
'Default values' => 'Valores predeterminados',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'No es posible ejecutar ningún comando.',
|
||||
'Unable to upload a file.' => 'No es posible importar el archivo.',
|
||||
@@ -226,7 +224,7 @@ $translations = array(
|
||||
'Permanent login' => 'Guardar contraseña',
|
||||
'Databases have been dropped.' => 'Bases de datos eliminadas.',
|
||||
'Search data in tables' => 'Buscar datos en tablas',
|
||||
'as a regular expression' => null,
|
||||
'as a regular expression' => 'como una expresión regular',
|
||||
'Schema' => 'Esquema',
|
||||
'Alter schema' => 'Modificar esquema',
|
||||
'Create schema' => 'Crear esquema',
|
||||
@@ -269,42 +267,41 @@ $translations = array(
|
||||
'Edit all' => 'Editar todos',
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
|
||||
'Drop %s?' => null,
|
||||
'Tables have been optimized.' => null,
|
||||
'Materialized view' => null,
|
||||
'Vacuum' => null,
|
||||
'Selected' => null,
|
||||
'overwrite' => null,
|
||||
'DB' => null,
|
||||
'File must be in UTF-8 encoding.' => null,
|
||||
'Modify' => null,
|
||||
'Load more data' => null,
|
||||
'Loading' => null,
|
||||
'ATTACH queries are not supported.' => null,
|
||||
'Warnings' => null,
|
||||
'%d / ' => array(),
|
||||
'Limit rows' => null,
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Default value' => null,
|
||||
'Drop %s?' => '¿Eliminar %s?',
|
||||
'Tables have been optimized.' => 'Tablas optimizadas.',
|
||||
'Materialized view' => 'Vista materializada',
|
||||
'Vacuum' => 'Vacio',
|
||||
'Selected' => 'Seleccionado',
|
||||
'overwrite' => 'sobreescribir',
|
||||
'DB' => 'DB',
|
||||
'File must be in UTF-8 encoding.' => 'El archivo debe estar codificado en UTF-8.',
|
||||
'Modify' => 'Modificar',
|
||||
'Load more data' => 'Cargar mas datos',
|
||||
'Loading' => 'Cargando',
|
||||
'ATTACH queries are not supported.' => 'ATTACH consultas no está soportado.',
|
||||
'Warnings' => 'Advertencias',
|
||||
'%d / ' => '%d / ',
|
||||
'Limit rows' => 'Limitar filas',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer no soporta el acceso a bases de datos sin contraseña, <a href="https://www.adminer.org/en/password/"%s>más informacion</a>.',
|
||||
'Default value' => 'Valor por defecto',
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
'If you did not send this request from Adminer then close this page.' => null,
|
||||
'You can upload a big SQL file via FTP and import it from server.' => null,
|
||||
'Size' => null,
|
||||
'Compute' => null,
|
||||
'You are offline.' => null,
|
||||
'You have no privileges to update this table.' => null,
|
||||
'Saving' => null,
|
||||
'Unknown error.' => null,
|
||||
'Database does not support password.' => null,
|
||||
'Disable %s or enable %s or %s extensions.' => null,
|
||||
'yes' => null,
|
||||
'no' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Demasiados intentos erroneos, pruebe de nuevo en %d minuto.', 'Demasiados intentos erroneos, pruebe de nuevo en %d minutos.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'La contraseña Maestra ha expirado. <a href="https://www.adminer.org/en/extension/"%s>Implementar</a> %s un metodo para hacerla permanente.',
|
||||
'The action will be performed after successful login with the same credentials.' => 'La acción se realizará tras iniciar sesión de nuevo con las mismas credenciales.',
|
||||
'Connecting to privileged ports is not allowed.' => 'La conexion a puertos especiales no está permitida.',
|
||||
'There is a space in the input password which might be the cause.' => 'Hay un espacio en la contraseña introducida, lo que puede ser la causa.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Si no mandó ésta solicitud desde Adminer entonces cierre esta página.',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'Puede cargar un fichero SQL grande por FTP e importarlo desde el servidor.',
|
||||
'Size' => 'Tamaño',
|
||||
'Compute' => 'Procesar',
|
||||
'You are offline.' => 'Se encuentra desconectado.',
|
||||
'You have no privileges to update this table.' => 'No tiene privilegios para actualizar esta tabla.',
|
||||
'Saving' => 'Guardando',
|
||||
'Unknown error.' => 'Error desconocido.',
|
||||
'Database does not support password.' => 'La Base de Datos no soporta el uso de contraseña.',
|
||||
'Disable %s or enable %s or %s extensions.' => 'Deshabilitar %s o habilitar %s o %s extensiones.',
|
||||
'yes' => 'si',
|
||||
'no' => 'no',
|
||||
|
||||
'Columns' => null,
|
||||
'Nullable' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Loo uus andmebaas',
|
||||
'SQL command' => 'SQL-Päring',
|
||||
'Logout' => 'Logi välja',
|
||||
'database' => 'andmebaas',
|
||||
'Use' => 'Kasuta',
|
||||
'No tables.' => 'Tabeleid ei leitud.',
|
||||
'select' => 'kuva',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Tabeli valimine ebaõnnestus',
|
||||
'Invalid CSRF token. Send the form again.' => 'Sobimatu CSRF, palun postitage vorm uuesti.',
|
||||
'Comment' => 'Kommentaar',
|
||||
'Default values' => 'Vaikimisi väärtused',
|
||||
'%d byte(s)' => array('%d bait', '%d baiti'),
|
||||
'No commands to execute.' => 'Käsk puudub.',
|
||||
'Unable to upload a file.' => 'Faili üleslaadimine pole võimalik.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -78,7 +78,6 @@ $translations = array(
|
||||
'Data' => 'داده',
|
||||
|
||||
'Database' => 'پایگاه داده',
|
||||
'database' => 'پایگاه داده',
|
||||
'Use' => 'استفاده',
|
||||
'Select database' => 'انتخاب پایگاه داده',
|
||||
'Invalid database.' => 'پایگاه داده نامعتبر.',
|
||||
@@ -165,7 +164,6 @@ $translations = array(
|
||||
'Options' => 'اختیارات',
|
||||
'Comment' => 'توضیح',
|
||||
'Default value' => 'مقدار پیش فرض',
|
||||
'Default values' => 'مقادیر پیش فرض',
|
||||
'Drop' => 'حذف',
|
||||
'Are you sure?' => 'مطمئن هستید؟',
|
||||
'Size' => 'حجم',
|
||||
@@ -341,7 +339,6 @@ $translations = array(
|
||||
'ATTACH queries are not supported.' => null,
|
||||
'Warnings' => null,
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -80,7 +80,6 @@ $translations = array(
|
||||
'Data' => 'Data',
|
||||
|
||||
'Database' => 'Tietokanta',
|
||||
'database' => 'tietokanta',
|
||||
'Use' => 'Käytä',
|
||||
'Select database' => 'Valitse tietokanta',
|
||||
'Invalid database.' => 'Tietokanta ei kelpaa.',
|
||||
@@ -167,7 +166,6 @@ $translations = array(
|
||||
'Options' => 'Asetukset',
|
||||
'Comment' => 'Kommentit',
|
||||
'Default value' => 'Oletusarvo',
|
||||
'Default values' => 'Oletusarvot',
|
||||
'Drop' => 'Poista',
|
||||
'Are you sure?' => 'Oletko varma?',
|
||||
'Size' => 'Koko',
|
||||
@@ -337,7 +335,6 @@ $translations = array(
|
||||
'Type has been created.' => 'Tyyppi luotiin.',
|
||||
'Alter type' => 'Muuta tyyppiä',
|
||||
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Kiitos, kun käytät Admineriä, voit <a href="https://www.adminer.org/en/donation/">tehdä lahjoituksen tästä</a>.',
|
||||
'Drop %s?' => 'Poistetaanko %s?',
|
||||
'overwrite' => 'kirjoittaen päälle',
|
||||
'DB' => 'TK',
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => 'Ei',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -31,7 +31,6 @@ $translations = array(
|
||||
'Create database' => 'Créer une base de données',
|
||||
'SQL command' => 'Requête SQL',
|
||||
'Logout' => 'Déconnexion',
|
||||
'database' => 'base de données',
|
||||
'Use' => 'Utiliser',
|
||||
'No tables.' => 'Aucune table.',
|
||||
'select' => 'select',
|
||||
@@ -68,7 +67,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Impossible de sélectionner la table',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF invalide. Veuillez renvoyer le formulaire.',
|
||||
'Comment' => 'Commentaire',
|
||||
'Default values' => 'Valeurs par défaut',
|
||||
'%d byte(s)' => array('%d octet', '%d octets'),
|
||||
'No commands to execute.' => 'Aucune commande à exécuter.',
|
||||
'Unable to upload a file.' => 'Impossible d\'importer le fichier.',
|
||||
@@ -298,7 +296,6 @@ $translations = array(
|
||||
'ATTACH queries are not supported.' => 'Requêtes ATTACH ne sont pas supportées.',
|
||||
'Warnings' => 'Avertissements',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer ne supporte pas l\'accès aux bases de données sans mot de passe, <a href="https://www.adminer.org/en/password/"%s>plus d\'information</a>.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => 'Cette action sera exécutée après s\'être connecté avec les mêmes données de connexion.',
|
||||
'Connecting to privileged ports is not allowed.' => 'La connexion aux ports privilégiés n\'est pas autorisée.',
|
||||
'There is a space in the input password which might be the cause.' => 'Il y a un espace dans le mot de passe entré qui pourrait en être la cause.',
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => 'Non',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Crear Base de datos',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Logout' => 'Pechar sesión',
|
||||
'database' => 'base de datos',
|
||||
'Use' => 'Usar',
|
||||
'No tables.' => 'Nengunha táboa.',
|
||||
'select' => 'selecciona',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'No é posible seleccionar a táboa',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Envíe de novo os datos do formulario.',
|
||||
'Comment' => 'Comentario',
|
||||
'Default values' => 'Valores predeterminados',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Non hai comandos para executar.',
|
||||
'Unable to upload a file.' => 'Non é posible importar o ficheiro.',
|
||||
@@ -298,7 +296,6 @@ $translations = array(
|
||||
'ATTACH queries are not supported.' => null,
|
||||
'Warnings' => null,
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => 'Non',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -31,7 +31,6 @@ $translations = array(
|
||||
'Create database' => 'צור מסד נתונים',
|
||||
'SQL command' => 'שאילתת SQL',
|
||||
'Logout' => 'התנתק',
|
||||
'database' => 'מסד נתונים',
|
||||
'Use' => 'השתמש',
|
||||
'No tables.' => 'אין טבלאות',
|
||||
'select' => 'בחר',
|
||||
@@ -68,7 +67,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'בחירת הטבלה נכשלה',
|
||||
'Invalid CSRF token. Send the form again.' => 'כשל באבטחת נתונים, שלח טופס שוב',
|
||||
'Comment' => 'הערה',
|
||||
'Default values' => 'ערכי ברירת מחדל',
|
||||
'%d byte(s)' => '%d בתים',
|
||||
'No commands to execute.' => 'לא נמצאו פקודות להרצה',
|
||||
'Unable to upload a file.' => 'העלאת הקובץ נכשלה',
|
||||
@@ -282,7 +280,6 @@ $translations = array(
|
||||
'Default value' => 'ערך ברירת מחדל',
|
||||
'Full table scan' => 'סריקה טבלה מלאה',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => 'יותר מידי נסיונות כניסה נכשלו, אנא נסה עוד %d דקות',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'תודה שהשתמש ב-adminer אנא שקול <a href="https://www.adminer.org/en/donation/">לתרום</a>.',
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'סיסמת המאסטר פגה <a href="https://www.adminer.org/en/extension/"%s>התקן תוסף</a> על מנת להפוך את זה לתמידי',
|
||||
'If you did not send this request from Adminer then close this page.' => 'אם לא אתה שלחת בקשה ל-Adminer הינך יכול לסגור חלון זה',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'ניתן לעלות קבצים ב-FTP ואז למשוך אותם מהשרת',
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Adatbázis létrehozása',
|
||||
'SQL command' => 'SQL parancs',
|
||||
'Logout' => 'Kilépés',
|
||||
'database' => 'adatbázis',
|
||||
'Use' => 'Használ',
|
||||
'No tables.' => 'Nincs tábla.',
|
||||
'select' => 'kiválasztás',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Nem tudom kiválasztani a táblát',
|
||||
'Invalid CSRF token. Send the form again.' => 'Érvénytelen CSRF azonosító. Küldd újra az űrlapot.',
|
||||
'Comment' => 'Megjegyzés',
|
||||
'Default values' => 'Alapértelmezett értékek',
|
||||
'%d byte(s)' => array('%d bájt', '%d bájt', '%d bájt'),
|
||||
'No commands to execute.' => 'Nincs végrehajtható parancs.',
|
||||
'Unable to upload a file.' => 'Nem tudom feltölteni a fájlt.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -74,7 +74,6 @@ $translations = array(
|
||||
'Data' => 'Data',
|
||||
|
||||
'Database' => 'Basis data',
|
||||
'database' => 'basis data',
|
||||
'Use' => 'Gunakan',
|
||||
'Select database' => 'Pilih basis data',
|
||||
'Invalid database.' => 'Basis data tidak sah.',
|
||||
@@ -159,7 +158,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Inkrementasi Otomatis',
|
||||
'Options' => 'Opsi',
|
||||
'Comment' => 'Komentar',
|
||||
'Default values' => 'Nilai bawaan',
|
||||
'Drop' => 'Hapus',
|
||||
'Are you sure?' => 'Anda yakin?',
|
||||
'Move up' => 'Naik',
|
||||
@@ -335,7 +333,6 @@ $translations = array(
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Default value' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Crea database',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Logout' => 'Esci',
|
||||
'database' => 'database',
|
||||
'Use' => 'Usa',
|
||||
'No tables.' => 'No tabelle.',
|
||||
'select' => 'seleziona',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Selezione della tabella non riuscita',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF non valido. Reinvia la richiesta.',
|
||||
'Comment' => 'Commento',
|
||||
'Default values' => 'Valori predefiniti',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Nessun commando da eseguire.',
|
||||
'Unable to upload a file.' => 'Caricamento del file non riuscito.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => 'Valore predefinito',
|
||||
'Full table scan' => 'Analizza intera tabella',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Troppi tentativi infruttuosi di login, si prega di riprovare in %d minuto.', 'Troppi tentativi infruttuosi di login, si prega di riprovare in %d minuti.'),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'La password principale é scaduta. <a href="https://www.adminer.org/it/extension/"%s>Implementare</a> %s come metodo per renderla permanente.',
|
||||
'The action will be performed after successful login with the same credentials.' => 'La azione verrá eseguita dopo un login valido con le stesse credenziali.',
|
||||
'Connecting to privileged ports is not allowed.' => 'LA connessione a porte privilegiate non é permessa.',
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => 'No',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'データベースを作成',
|
||||
'SQL command' => 'SQLコマンド',
|
||||
'Logout' => 'ログアウト',
|
||||
'database' => 'データベース',
|
||||
'Use' => '使用',
|
||||
'No tables.' => 'テーブルがありません。',
|
||||
'select' => '選択',
|
||||
@@ -69,7 +68,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'テーブルを選択できません',
|
||||
'Invalid CSRF token. Send the form again.' => '不正なCSRFトークン。再送信してください',
|
||||
'Comment' => 'コメント',
|
||||
'Default values' => '規定値',
|
||||
'%d byte(s)' => '%d バイト',
|
||||
'No commands to execute.' => '実行するコマンドがありません',
|
||||
'Unable to upload a file.' => 'ファイルをアップロードできません',
|
||||
@@ -293,7 +291,6 @@ $translations = array(
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'ბაზის შექმნა',
|
||||
'SQL command' => 'SQL-ბრძანება',
|
||||
'Logout' => 'გასვლა',
|
||||
'database' => 'ბაზა',
|
||||
'Use' => 'არჩევა',
|
||||
'No tables.' => 'ბაზაში ცხრილი არაა.',
|
||||
'select' => 'არჩევა',
|
||||
@@ -69,7 +68,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'ცხრილიდან ინფორმაცია ვერ მოვიპოვე',
|
||||
'Invalid CSRF token. Send the form again.' => 'უმოქმედო CSRF-ტოკენი. ფორმის კიდევ ერთხელ გაგზავნა.',
|
||||
'Comment' => 'კომენტარები',
|
||||
'Default values' => 'სტანდარტული მნიშვნელობა',
|
||||
'%d byte(s)' => '%d ბაიტი',
|
||||
'No commands to execute.' => 'შესასრულებელი ბრძანება არაა.',
|
||||
'Unable to upload a file.' => 'ფაილი არ აიტვირთა სერვერზე.',
|
||||
@@ -296,7 +294,6 @@ $translations = array(
|
||||
'Warnings' => 'გაფრთხილება',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'უპაროლო წვდომა ბაზასთან არაა დაშვებული Adminer-ში, მეტი ინფორმაციისთვის ეწვიეთ <a href="https://www.adminer.org/en/password/"%s>ბმულს</a>.',
|
||||
'DB' => 'ბაზა',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'მადლობას გიხდით Adminer-ით სარგებლობისთვის, გადახედეთ ბმულს <a href="https://www.adminer.org/en/donation/">შემოწირულობა</a>.',
|
||||
'The action will be performed after successful login with the same credentials.' => 'მოქმედება შესრულდება იგივე მომხმარებლით წარმატებული ავტორიზაციის შემდეგ.',
|
||||
'Connecting to privileged ports is not allowed.' => 'პრივილეგირებულ პორტთან წვდომა დაუშვებელია.',
|
||||
'There is a space in the input password which might be the cause.' => 'პაროლში არის გამოტოვება, შეიძლება ეს ქმნის პრობლემას.',
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -72,11 +72,9 @@ $translations = array(
|
||||
'Database has been dropped.' => '데이터베이스를 삭제했습니다.',
|
||||
'Database has been renamed.' => '데이터베이스의 이름을 바꾸었습니다.',
|
||||
'Database schema' => '데이터베이스 구조',
|
||||
'database' => '데이터베이스',
|
||||
'Database' => '데이터베이스',
|
||||
'Databases have been dropped.' => '데이터베이스를 삭제했습니다.',
|
||||
'Date and time' => '시간',
|
||||
'Default values' => '기본값',
|
||||
'Delete' => '삭제',
|
||||
'descending' => '역순',
|
||||
'Drop' => '삭제',
|
||||
@@ -294,7 +292,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -74,7 +74,6 @@ $translations = array(
|
||||
'Data' => 'Duomenys',
|
||||
|
||||
'Database' => 'Duomenų bazė',
|
||||
'database' => 'duomenų bazė',
|
||||
'Use' => 'Naudoti',
|
||||
'Select database' => 'Pasirinkti duomenų bazę',
|
||||
'Invalid database.' => 'Neteisinga duomenų bazė.',
|
||||
@@ -158,7 +157,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Auto Increment',
|
||||
'Options' => 'Nustatymai',
|
||||
'Comment' => 'Komentaras',
|
||||
'Default values' => 'Reikšmės pagal nutylėjimą',
|
||||
'Drop' => 'Pašalinti',
|
||||
'Are you sure?' => 'Tikrai?',
|
||||
'Move up' => 'Perkelti į viršų',
|
||||
@@ -333,7 +331,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Izveidot datubāzi',
|
||||
'SQL command' => 'SQL pieprasījums',
|
||||
'Logout' => 'Iziet',
|
||||
'database' => 'datubāze',
|
||||
'Use' => 'Lietot',
|
||||
'No tables.' => 'Datubāzē nav tabulu.',
|
||||
'select' => 'izvēlēties',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Tabula nav pieejama',
|
||||
'Invalid CSRF token. Send the form again.' => 'Nederīgs CSRF žetons. Nosūtiet formu vēl vienu reizi.',
|
||||
'Comment' => 'Komentārs',
|
||||
'Default values' => 'Noklusētā vērtība',
|
||||
'%d byte(s)' => array('%d baits', '%d baiti', '%d baiti'),
|
||||
'No commands to execute.' => 'Nav izpildāmu komandu.',
|
||||
'Unable to upload a file.' => 'Neizdevās ielādēt failu uz servera.',
|
||||
@@ -297,7 +295,6 @@ $translations = array(
|
||||
'DB' => 'DB',
|
||||
'Warnings' => 'Brīdinājumi',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer neatbalsta pieeju bez paroles, <a href="https://www.adminer.org/en/password/"%s>vairāk informācijas šeit</a>.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Paldies, ka izmantoji Adminer, vai vēlies veikt <a href="https://www.adminer.org/en/donation/">ziedojumu</a>.',
|
||||
'The action will be performed after successful login with the same credentials.' => 'Darbība tiks pabeigta pēc derīgas pieteikšanās sistēmā.',
|
||||
'Connecting to privileged ports is not allowed.' => 'Pieeja priviliģētiem portiem nav atļauta.',
|
||||
'There is a space in the input password which might be the cause.' => 'Parole satur atstarpi, kas varētu būt lieka.',
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => 'Nē',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -11,7 +11,6 @@ $translations = array(
|
||||
'Logout' => 'Log keluar',
|
||||
'Logged as: %s' => 'Log masuk sebagai: %s',
|
||||
'Logout successful.' => 'Log keluar berjaya.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Terima kasih kerana menggunakan Adminer, pertimbangkan untuk <a href="https://www.adminer.org/en/donation/">menderma</a>.',
|
||||
'Invalid server or credentials.' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => 'Terlalu banyak percubaan log masuk yang gagal, sila cuba lagi dalam masa %d minit.',
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Kata laluan utama telah luput. <a href="https://www.adminer.org/en/extension/"%s>Gunakan</a> cara %s untuk mengekalkannya.',
|
||||
@@ -83,7 +82,6 @@ $translations = array(
|
||||
'Data' => 'Data',
|
||||
|
||||
'Database' => 'Pangkalan data',
|
||||
'database' => 'pangkalan data',
|
||||
'Use' => 'Guna',
|
||||
'Select database' => 'Pilih pangkalan data',
|
||||
'Invalid database.' => 'Pangkalan data tidak sah.',
|
||||
@@ -170,7 +168,6 @@ $translations = array(
|
||||
'Options' => 'Pilihan',
|
||||
'Comment' => 'Komen',
|
||||
'Default value' => 'Nilai lalai',
|
||||
'Default values' => 'Nilai lalai',
|
||||
'Drop' => 'Jatuh',
|
||||
'Drop %s?' => 'Jatuhkan %s?',
|
||||
'Are you sure?' => 'Anda pasti?',
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => 'Tidak',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -33,7 +33,6 @@ $translations = array(
|
||||
'Create database' => 'Database aanmaken',
|
||||
'SQL command' => 'SQL opdracht',
|
||||
'Logout' => 'Afmelden',
|
||||
'database' => 'database',
|
||||
'Use' => 'Gebruik',
|
||||
'No tables.' => 'Geen tabellen.',
|
||||
'select' => 'kies',
|
||||
@@ -71,7 +70,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Onmogelijk tabel te selecteren',
|
||||
'Invalid CSRF token. Send the form again.' => 'Ongeldig CSRF token. Verstuur het formulier opnieuw.',
|
||||
'Comment' => 'Commentaar',
|
||||
'Default values' => 'Standaard waarden',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Geen opdrachten uit te voeren.',
|
||||
'Unable to upload a file.' => 'Onmogelijk bestand te uploaden.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => 'Standaardwaarde',
|
||||
'Full table scan' => 'Full table scan',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Teveel foutieve aanmeldpogingen, probeer opnieuw binnen %d minuut.', 'Teveel foutieve aanmeldpogingen, probeer opnieuw binnen %d minuten.'),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Master wachtwoord verlopen. <a href="https://www.adminer.org/en/extension/"%s>Implementeer</a> de %s methode om het permanent te maken.',
|
||||
'The action will be performed after successful login with the same credentials.' => 'Deze actie zal uitgevoerd worden na het succesvol aanmelden met dezelfde gebruikersgegevens',
|
||||
'Connecting to privileged ports is not allowed.' => 'Verbindingen naar geprivilegieerde poorten is niet toegestaan.',
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => 'Neen',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -65,7 +65,6 @@ $translations = array(
|
||||
'Format' => 'Format',
|
||||
'Data' => 'Data',
|
||||
'Database' => 'Database',
|
||||
'database' => 'database',
|
||||
'Use' => 'Bruk',
|
||||
'Select database' => 'Velg database',
|
||||
'Invalid database.' => 'Ugyldig database.',
|
||||
@@ -144,7 +143,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Autoinkrement',
|
||||
'Options' => 'Valg',
|
||||
'Comment' => 'Kommentarer',
|
||||
'Default values' => 'Standardverdier',
|
||||
'Drop' => 'Dropp',
|
||||
'Are you sure?' => 'Er du sikker?',
|
||||
'Move up' => 'Flytt opp',
|
||||
@@ -294,7 +292,6 @@ $translations = array(
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Default value' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => 'Nei',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -11,7 +11,6 @@ $translations = array(
|
||||
'Logout' => 'Wyloguj',
|
||||
'Logged as: %s' => 'Zalogowany jako: %s',
|
||||
'Logout successful.' => 'Wylogowano pomyślnie.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Dziękujemy za używanie Adminera, rozważ proszę <a href="https://www.adminer.org/pl/donation/">dotację</a>.',
|
||||
'Invalid server or credentials.' => 'Nieprawidłowy serwer lub dane logowania.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Za dużo nieudanych prób logowania, spróbuj ponownie za %d minutę.', 'Za dużo nieudanych prób logowania, spróbuj ponownie za %d minuty.', 'Za dużo nieudanych prób logowania, spróbuj ponownie za %d minut.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Ważność hasła głównego wygasła. <a href="https://www.adminer.org/pl/extension/"%s>Zaimplementuj</a> własną metodę %s, aby ustawić je na stałe.',
|
||||
@@ -82,7 +81,6 @@ $translations = array(
|
||||
'Data' => 'Dane',
|
||||
|
||||
'Database' => 'Baza danych',
|
||||
'database' => 'baza danych',
|
||||
'Use' => 'Wybierz',
|
||||
'Select database' => 'Wybierz bazę danych',
|
||||
'Invalid database.' => 'Nie znaleziono bazy danych.',
|
||||
@@ -169,7 +167,6 @@ $translations = array(
|
||||
'Options' => 'Opcje',
|
||||
'Comment' => 'Komentarz',
|
||||
'Default value' => 'Wartość domyślna',
|
||||
'Default values' => 'Wartości domyślne',
|
||||
'Drop' => 'Usuń',
|
||||
'Drop %s?' => 'Usunąć %s?',
|
||||
'Are you sure?' => 'Czy jesteś pewien?',
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => 'Nie',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Criar Base de dados',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Logout' => 'Sair',
|
||||
'database' => 'base de dados',
|
||||
'Use' => 'Usar',
|
||||
'No tables.' => 'Não existem tabelas.',
|
||||
'select' => 'selecionar',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Não é possível selecionar a Tabela',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Enviar o formulário novamente.',
|
||||
'Comment' => 'Comentário',
|
||||
'Default values' => 'Valores padrões',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Nenhum comando para executar.',
|
||||
'Unable to upload a file.' => 'Não é possível enviar o arquivo.',
|
||||
@@ -287,7 +285,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Criar Base de dados',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Logout' => 'Terminar sessão',
|
||||
'database' => 'base de dados',
|
||||
'Use' => 'Usar',
|
||||
'No tables.' => 'Não existem tabelas.',
|
||||
'select' => 'registos',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Não é possivel selecionar a Tabela',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Enviar o formulario novamente.',
|
||||
'Comment' => 'Comentário',
|
||||
'Default values' => 'Valores predeterminados',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Nenhum comando para executar.',
|
||||
'Unable to upload a file.' => 'Não é possível enviar o ficheiro.',
|
||||
@@ -287,7 +285,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Crează baza de date',
|
||||
'SQL command' => 'SQL query',
|
||||
'Logout' => 'Ieșire',
|
||||
'database' => 'baza de date',
|
||||
'Use' => 'Alege',
|
||||
'No tables.' => 'În baza de date nu sunt tabele.',
|
||||
'select' => 'selectează',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Nu am putut selecta date din tabel',
|
||||
'Invalid CSRF token. Send the form again.' => 'CSRF token imposibil. Retrimite forma.',
|
||||
'Comment' => 'Comentariu',
|
||||
'Default values' => 'Valoarea inițială',
|
||||
'%d byte(s)' => array('%d octet', '%d octeți'),
|
||||
'No commands to execute.' => 'Nu sunt comenzi de executat.',
|
||||
'Unable to upload a file.' => 'Nu am putut încărca fișierul pe server.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'Создать базу данных',
|
||||
'SQL command' => 'SQL-запрос',
|
||||
'Logout' => 'Выйти',
|
||||
'database' => 'база данных',
|
||||
'Use' => 'Выбрать',
|
||||
'No tables.' => 'В базе данных нет таблиц.',
|
||||
'select' => 'выбрать',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Не удалось получить данные из таблицы',
|
||||
'Invalid CSRF token. Send the form again.' => 'Недействительный CSRF-токен. Отправите форму ещё раз.',
|
||||
'Comment' => 'Комментарий',
|
||||
'Default values' => 'Значения по умолчанию',
|
||||
'%d byte(s)' => array('%d байт', '%d байта', '%d байтов'),
|
||||
'No commands to execute.' => 'Нет команд для выполнения.',
|
||||
'Unable to upload a file.' => 'Не удалось загрузить файл на сервер.',
|
||||
@@ -297,7 +295,6 @@ $translations = array(
|
||||
'DB' => 'DB',
|
||||
'Warnings' => 'Предупреждения',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer не поддерживает доступ к базе данных без пароля, <a href="https://www.adminer.org/en/password/"%s>больше информации</a>.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Спасибо за использование Adminer, рассмотрите возможность <a href="https://www.adminer.org/en/donation/">пожертвования</a>.',
|
||||
'The action will be performed after successful login with the same credentials.' => 'Действие будет выполнено после успешного входа в систему с теми же учетными данными.',
|
||||
'Connecting to privileged ports is not allowed.' => 'Подключение к привилегированным портам не допускается.',
|
||||
'There is a space in the input password which might be the cause.' => 'В введеном пароле есть пробел, это может быть причиною.',
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => 'Нет',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -33,7 +33,6 @@ $translations = array(
|
||||
'Create database' => 'Vytvoriť databázu',
|
||||
'SQL command' => 'SQL príkaz',
|
||||
'Logout' => 'Odhlásiť',
|
||||
'database' => 'databáza',
|
||||
'Use' => 'Vybrať',
|
||||
'No tables.' => 'Žiadne tabuľky.',
|
||||
'select' => 'vypísať',
|
||||
@@ -71,7 +70,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'Tabuľku sa nepodarilo vypísať',
|
||||
'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odošlite formulár znova.',
|
||||
'Comment' => 'Komentár',
|
||||
'Default values' => 'Predvolené hodnoty',
|
||||
'%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtov'),
|
||||
'No commands to execute.' => 'Žiadne príkazy na vykonanie.',
|
||||
'Unable to upload a file.' => 'Súbor sa nepodarilo nahrať.',
|
||||
@@ -79,6 +77,8 @@ $translations = array(
|
||||
'File uploads are disabled.' => 'Nahrávánie súborov nie je povolené.',
|
||||
'Routine has been called, %d row(s) affected.' => array('Procedúra bola zavolaná, bol zmenený %d záznam.', 'Procedúra bola zavolaná, boli zmenené %d záznamy.', 'Procedúra bola zavolaná, bolo zmenených %d záznamov.'),
|
||||
'Call' => 'Zavolať',
|
||||
'No driver' => 'Žiadny ovládač',
|
||||
'Database driver not found.' => 'Databázový ovládač sa nenašiel.',
|
||||
'No extension' => 'Žiadne rozšírenie',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Nie je dostupné žiadne z podporovaných rozšírení (%s).',
|
||||
'Session support must be enabled.' => 'Session premenné musia byť povolené.',
|
||||
@@ -259,7 +259,7 @@ $translations = array(
|
||||
'%d query(s) executed OK.' => array('Bol vykonaný %d dotaz.', 'Boli vykonané %d dotazy.', 'Bolo vykonaných %d dotazov.'),
|
||||
'Show only errors' => 'Zobraziť iba chyby',
|
||||
'Refresh' => 'Obnoviť',
|
||||
'Invalid schema.' => 'Neplatné schéma.',
|
||||
'Invalid schema.' => 'Neplatná schéma.',
|
||||
'Please use one of the extensions %s.' => 'Prosím vyberte jednu z koncoviek %s.',
|
||||
'now' => 'teraz',
|
||||
'ltr' => 'ltr',
|
||||
@@ -287,7 +287,6 @@ $translations = array(
|
||||
'Default value' => 'Predvolená hodnota',
|
||||
'Full table scan' => 'Prechod celej tabuľky',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Príliš veľa pokusov o prihlásenie, skúste to znova za %d minutu.', 'Príliš veľa pokusov o prihlásenie, skúste to znova za %d minuty.', 'Príliš veľa pokusov o prihlásenie, skúste to znova za %d minút.'),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Vďaka za používanie Admineru, <a href="https://www.adminer.org/cs/donation/">prispejte</a> na vývoj.',
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Platnosť hlavného hesla vypršala. <a href="https://www.adminer.org/cs/extension/"%s>Implementujte</a> metodu %s, aby platilo natrvalo.',
|
||||
'The action will be performed after successful login with the same credentials.' => 'Akcia sa vykoná po úspešnom prihlásení s rovnakými prihlasovacími údajmi.',
|
||||
'Connecting to privileged ports is not allowed.' => 'Pripojenie k privilegovaným portom nie je povolené.',
|
||||
@@ -311,4 +310,7 @@ $translations = array(
|
||||
'Default' => 'Predvolené',
|
||||
'One Time Password' => 'Jednorázové heslo',
|
||||
'Invalid OTP code.' => 'Neplatný kód OTP.',
|
||||
'Schemas' => 'Schémy',
|
||||
'No schemas.' => 'Žiadne schémy.',
|
||||
'Show schema' => 'Zobraziť schému',
|
||||
);
|
||||
|
@@ -73,7 +73,6 @@ $translations = array(
|
||||
'Data' => 'Podatki',
|
||||
|
||||
'Database' => 'Baza',
|
||||
'database' => 'baza',
|
||||
'Use' => 'Uporabi',
|
||||
'Select database' => 'Izberi bazo',
|
||||
'Invalid database.' => 'Neveljavna baza.',
|
||||
@@ -154,7 +153,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Samodejno povečevanje',
|
||||
'Options' => 'Možnosti',
|
||||
'Comment' => 'Komentar',
|
||||
'Default values' => 'Privzete vrednosti',
|
||||
'Drop' => 'Zavrzi',
|
||||
'Are you sure?' => 'Ste prepričani?',
|
||||
'Move up' => 'Premakni gor',
|
||||
@@ -329,7 +327,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -355,4 +352,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -74,7 +74,6 @@ $translations = array(
|
||||
'Data' => 'Податци',
|
||||
|
||||
'Database' => 'База података',
|
||||
'database' => 'база података',
|
||||
'Use' => 'Користи',
|
||||
'Select database' => 'Изаберите базу',
|
||||
'Invalid database.' => 'Неисправна база података.',
|
||||
@@ -159,7 +158,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Ауто-прираштај',
|
||||
'Options' => 'Опције',
|
||||
'Comment' => 'Коментар',
|
||||
'Default values' => 'Подразумеване вредности',
|
||||
'Drop' => 'Избриши',
|
||||
'Are you sure?' => 'Да ли сте сигурни?',
|
||||
'Move up' => 'Помери на горе',
|
||||
@@ -335,7 +333,6 @@ $translations = array(
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Default value' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => 'Не',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -11,7 +11,6 @@ $translations = array(
|
||||
'Logout' => 'Logga ut',
|
||||
'Logged as: %s' => 'Inloggad som: %s',
|
||||
'Logout successful.' => 'Du är nu utloggad.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Tack för att du använder Adminer, vänligen fundera över att <a href="https://www.adminer.org/en/donation/">donera</a>.',
|
||||
'Invalid server or credentials.' => null,
|
||||
'There is a space in the input password which might be the cause.' => 'Det finns ett mellanslag i lösenordet, vilket kan vara anledningen.',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer tillåter inte att ansluta till en databas utan lösenord. <a href="https://www.adminer.org/en/password/"%s>Mer information</a>.',
|
||||
@@ -90,7 +89,6 @@ $translations = array(
|
||||
'Data' => 'Data',
|
||||
|
||||
'Database' => 'Databas',
|
||||
'database' => 'databas',
|
||||
'DB' => 'DB',
|
||||
'Use' => 'Använd',
|
||||
'Select database' => 'Välj databas',
|
||||
@@ -179,7 +177,6 @@ $translations = array(
|
||||
'Options' => 'Inställningar',
|
||||
'Comment' => 'Kommentar',
|
||||
'Default value' => 'Standardvärde',
|
||||
'Default values' => 'Standardvärden',
|
||||
'Drop' => 'Ta bort',
|
||||
'Drop %s?' => 'Ta bort %s?',
|
||||
'Are you sure?' => 'Är du säker?',
|
||||
@@ -357,4 +354,10 @@ $translations = array(
|
||||
'No' => 'Nej',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'தகவல்தளத்தை உருவாக்கு',
|
||||
'SQL command' => 'SQL கட்டளை',
|
||||
'Logout' => 'வெளியேறு',
|
||||
'database' => 'தகவல்தளம்',
|
||||
'Use' => 'உபயோகி',
|
||||
'No tables.' => 'அட்டவணை இல்லை.',
|
||||
'select' => 'தேர்வு செய்',
|
||||
@@ -69,7 +68,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'அட்டவணையை தேர்வு செய்ய முடியவில்லை',
|
||||
'Invalid CSRF token. Send the form again.' => 'CSRF டோக்கன் செல்லாது. படிவத்தை மீண்டும் அனுப்பவும்.',
|
||||
'Comment' => 'குறிப்பு',
|
||||
'Default values' => 'உள்ளிருக்கும் (Default) மதிப்புகள் ',
|
||||
'%d byte(s)' => array('%d பைட்', '%d பைட்டுகள்'),
|
||||
'No commands to execute.' => 'செயல் படுத்த எந்த கட்டளைகளும் இல்லை.',
|
||||
'Unable to upload a file.' => 'கோப்பை மேலேற்றம் (upload) செய்ய இயலவில்லை.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -32,7 +32,6 @@ $translations = array(
|
||||
'Create database' => 'สร้างฐานข้อมูล',
|
||||
'SQL command' => 'คำสั่ง SQL',
|
||||
'Logout' => 'ออกจากระบบ',
|
||||
'database' => 'ฐานข้อมูล',
|
||||
'Use' => 'ใช้งาน',
|
||||
'No tables.' => 'ไม่พบตาราง.',
|
||||
'select' => 'เลือก',
|
||||
@@ -70,7 +69,6 @@ $translations = array(
|
||||
'Unable to select the table' => 'ไม่สามารถเลือกตารางได้',
|
||||
'Invalid CSRF token. Send the form again.' => 'เครื่องหมาย CSRF ไม่ถูกต้อง ส่งข้อมูลใหม่อีกครั้ง.',
|
||||
'Comment' => 'หมายเหตุ',
|
||||
'Default values' => 'ค่าเริ่มต้น',
|
||||
'%d byte(s)' => '%d ไบท์',
|
||||
'No commands to execute.' => 'ไม่มีคำสั่งที่จะประมวลผล.',
|
||||
'Unable to upload a file.' => 'ไม่สามารถอัปโหลดไฟล์ได้.',
|
||||
@@ -288,7 +286,6 @@ $translations = array(
|
||||
'Default value' => null,
|
||||
'Full table scan' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
@@ -313,4 +310,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -11,7 +11,6 @@ $translations = array(
|
||||
'Logout' => 'Çıkış',
|
||||
'Logged as: %s' => '%s olarak giriş yapıldı.',
|
||||
'Logout successful.' => 'Oturum başarıyla sonlandı.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Adminer kullandığınız için teşekkür ederiz <a href="https://www.adminer.org/en/donation/">bağış yapmayı düşünün</a>.',
|
||||
'Invalid server or credentials.' => null,
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Çok fazla oturum açma denemesi yapıldı.', '%d Dakika sonra tekrar deneyiniz.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Ana şifrenin süresi doldu. Kalıcı olması için <a href="https://www.adminer.org/en/extension/"%s>%s medodunu</a> kullanın.',
|
||||
@@ -85,7 +84,6 @@ $translations = array(
|
||||
'Data' => 'Veri',
|
||||
|
||||
'Database' => 'Veri Tabanı',
|
||||
'database' => 'veri tabanı',
|
||||
'DB' => 'DB',
|
||||
'Use' => 'Kullan',
|
||||
'Select database' => 'Veri tabanı seç',
|
||||
@@ -173,7 +171,6 @@ $translations = array(
|
||||
'Options' => 'Seçenekler',
|
||||
'Comment' => 'Yorum',
|
||||
'Default value' => 'Varsayılan değer',
|
||||
'Default values' => 'Varsayılan değerler',
|
||||
'Drop' => 'Sil',
|
||||
'Drop %s?' => 'Sil %s?',
|
||||
'Are you sure?' => 'Emin misiniz?',
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => 'Hayır',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -74,7 +74,6 @@ $translations = array(
|
||||
'Data' => 'Дані',
|
||||
|
||||
'Database' => 'База даних',
|
||||
'database' => 'база даних',
|
||||
'Use' => 'Обрати',
|
||||
'Select database' => 'Обрати базу даних',
|
||||
'Invalid database.' => 'Погана база даних.',
|
||||
@@ -159,7 +158,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Автоматичне збільшення',
|
||||
'Options' => 'Опції',
|
||||
'Comment' => 'Коментарі',
|
||||
'Default values' => 'Значення за замовчуванням',
|
||||
'Drop' => 'Видалити',
|
||||
'Are you sure?' => 'Ви впевнені?',
|
||||
'Move up' => 'Пересунути вгору',
|
||||
@@ -332,7 +330,6 @@ $translations = array(
|
||||
'Default value' => 'Значення за замовчуванням',
|
||||
'Full table scan' => 'Повне сканування таблиці',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Занадто багато невдалих спроб входу. Спробуйте знову через %d хвилину.', 'Занадто багато невдалих спроб входу. Спробуйте знову через %d хвилини.', 'Занадто багато невдалих спроб входу. Спробуйте знову через %d хвилин.'),
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Дякуємо, що користуєтесь Adminer, подумайте про <a href="https://www.adminer.org/en/donation/">внесок</a>.',
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Термін дії майстер пароля минув. <a href="https://www.adminer.org/en/extension/"%s>Реалізуйте</a> метод %s, щоб зробити його постійним.',
|
||||
'The action will be performed after successful login with the same credentials.' => 'Дія буде виконуватися після успішного входу в систему з тими ж обліковими даними.',
|
||||
'Connecting to privileged ports is not allowed.' => 'Підключення до привілейованих портів заборонено.',
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => 'Ні',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -77,7 +77,6 @@ $translations = array(
|
||||
'Data' => 'Dữ liệu',
|
||||
|
||||
'Database' => 'Cơ sở dữ liệu',
|
||||
'database' => 'cơ sở dữ liệu',
|
||||
'Use' => 'Sử dụng',
|
||||
'Select database' => 'Chọn CSDL',
|
||||
'Invalid database.' => 'CSDL sai.',
|
||||
@@ -162,7 +161,6 @@ $translations = array(
|
||||
'Auto Increment' => 'Tăng tự động',
|
||||
'Options' => 'Tuỳ chọn',
|
||||
'Comment' => 'Chú thích',
|
||||
'Default values' => 'Giá trị mặc định',
|
||||
'Drop' => 'Xoá',
|
||||
'Are you sure?' => 'Bạn có chắc',
|
||||
'Size' => 'Kích thước',
|
||||
@@ -339,7 +337,6 @@ $translations = array(
|
||||
'Limit rows' => null,
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
|
||||
'Default value' => null,
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
|
||||
'The action will be performed after successful login with the same credentials.' => null,
|
||||
'Connecting to privileged ports is not allowed.' => null,
|
||||
'There is a space in the input password which might be the cause.' => null,
|
||||
@@ -357,4 +354,10 @@ $translations = array(
|
||||
'No' => 'Không',
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -11,7 +11,6 @@ $translations = array(
|
||||
'Logout' => 'Xx',
|
||||
'Logged as: %s' => 'Xx: %s',
|
||||
'Logout successful.' => 'Xx.',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Xx <a href="https://www.adminer.org/en/donation/">xx</a>.',
|
||||
'Invalid server or credentials.' => 'Xx.',
|
||||
'There is a space in the input password which might be the cause.' => 'Xx.',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Xx, <a href="https://www.adminer.org/en/password/"%s>xx</a>.',
|
||||
@@ -21,6 +20,8 @@ $translations = array(
|
||||
'Language' => 'Xx',
|
||||
'Invalid CSRF token. Send the form again.' => 'Xx.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Xx.',
|
||||
'No driver' => 'Xx',
|
||||
'Database driver not found.' => 'Xx.',
|
||||
'No extension' => 'Xx',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Xx (%s).',
|
||||
'Connecting to privileged ports is not allowed.' => 'Xx.',
|
||||
@@ -90,7 +91,6 @@ $translations = array(
|
||||
'Data' => 'Xx',
|
||||
|
||||
'Database' => 'Xx',
|
||||
'database' => 'xx',
|
||||
'DB' => 'XX',
|
||||
'Use' => 'Xx',
|
||||
'Select database' => 'Xx',
|
||||
@@ -179,7 +179,6 @@ $translations = array(
|
||||
'Options' => 'Xx',
|
||||
'Comment' => 'Xx',
|
||||
'Default value' => 'Xx',
|
||||
'Default values' => 'Xx',
|
||||
'Drop' => 'Xx',
|
||||
'Drop %s?' => 'Xx %s?',
|
||||
'Are you sure?' => 'Xx?',
|
||||
@@ -327,12 +326,15 @@ $translations = array(
|
||||
'Please use one of the extensions %s.' => 'Xx %s.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Schema' => 'Xx',
|
||||
'Schemas' => 'Xx',
|
||||
'No schemas.' => 'Xx.',
|
||||
'Show schema' => 'Xx',
|
||||
'Alter schema' => 'Xx',
|
||||
'Create schema' => 'Xx',
|
||||
'Schema has been dropped.' => 'Xx.',
|
||||
'Schema has been created.' => 'Xx.',
|
||||
'Schema has been altered.' => 'Xx.',
|
||||
'Schema' => 'Xx',
|
||||
'Invalid schema.' => 'Xx.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
|
@@ -11,7 +11,6 @@ $translations = array(
|
||||
'Logout' => '登出',
|
||||
'Logged as: %s' => '登錄為: %s',
|
||||
'Logout successful.' => '成功登出。',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => '感謝使用Adminer,請考慮為我們<a href="https://www.adminer.org/en/donation/">捐款(英文網頁)</a>.',
|
||||
'Invalid server or credentials.' => null,
|
||||
'There is a space in the input password which might be the cause.' => '您輸入的密碼中有一個空格,這可能是導致問題的原因。',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer預設不支援訪問沒有密碼的資料庫,<a href="https://www.adminer.org/en/password/"%s>詳情見這裡</a>.',
|
||||
@@ -90,7 +89,6 @@ $translations = array(
|
||||
'Data' => '資料',
|
||||
|
||||
'Database' => '資料庫',
|
||||
'database' => '資料庫',
|
||||
'DB' => '資料庫',
|
||||
'Use' => '使用',
|
||||
'Select database' => '選擇資料庫',
|
||||
@@ -179,7 +177,6 @@ $translations = array(
|
||||
'Options' => '選項',
|
||||
'Comment' => '註解',
|
||||
'Default value' => '預設值',
|
||||
'Default values' => '預設值',
|
||||
'Drop' => '刪除',
|
||||
'Drop %s?' => '刪除 %s?',
|
||||
'Are you sure?' => '你確定嗎?',
|
||||
@@ -358,4 +355,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -11,7 +11,6 @@ $translations = array(
|
||||
'Logout' => '登出',
|
||||
'Logged as: %s' => '登录用户:%s',
|
||||
'Logout successful.' => '成功登出。',
|
||||
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => '感谢使用Adminer,请考虑为我们<a href="https://www.adminer.org/en/donation/">捐款(英文页面)</a>.',
|
||||
'Invalid server or credentials.' => null,
|
||||
'There is a space in the input password which might be the cause.' => '您输入的密码中有一个空格,这可能是导致问题的原因。',
|
||||
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer默认不支持访问没有密码的数据库,<a href="https://www.adminer.org/en/password/"%s>详情见这里</a>.',
|
||||
@@ -90,7 +89,6 @@ $translations = array(
|
||||
'Data' => '数据',
|
||||
|
||||
'Database' => '数据库',
|
||||
'database' => '数据库',
|
||||
'DB' => '数据库',
|
||||
'Use' => '使用',
|
||||
'Select database' => '选择数据库',
|
||||
@@ -179,7 +177,6 @@ $translations = array(
|
||||
'Options' => '选项',
|
||||
'Comment' => '注释',
|
||||
'Default value' => '默认值',
|
||||
'Default values' => '默认值',
|
||||
'Drop' => '删除',
|
||||
'Drop %s?' => '删除 %s?',
|
||||
'Are you sure?' => '您确定吗?',
|
||||
@@ -357,4 +354,10 @@ $translations = array(
|
||||
'No' => null,
|
||||
'One Time Password' => null,
|
||||
'Invalid OTP code.' => null,
|
||||
|
||||
'Schemas' => null,
|
||||
'No schemas.' => null,
|
||||
'Show schema' => null,
|
||||
'No driver' => null,
|
||||
'Database driver not found.' => null,
|
||||
);
|
||||
|
@@ -2,15 +2,15 @@
|
||||
function adminer_object() {
|
||||
// required to run any plugin
|
||||
include_once "../plugins/plugin.php";
|
||||
|
||||
|
||||
// autoloader
|
||||
foreach (glob("../plugins/*.php") as $filename) {
|
||||
include_once $filename;
|
||||
}
|
||||
|
||||
|
||||
// enable extra drivers just by including them
|
||||
//~ include "../plugins/drivers/simpledb.php";
|
||||
|
||||
|
||||
$plugins = array(
|
||||
// specify enabled plugins here
|
||||
new AdminerDatabaseHide(array('information_schema')),
|
||||
@@ -29,16 +29,16 @@ function adminer_object() {
|
||||
new AdminerTranslation,
|
||||
new AdminerForeignSystem,
|
||||
new AdminerEnumOption,
|
||||
new AdminerTablesFilter,
|
||||
new AdminerEditForeign,
|
||||
new AdminerLoginSsl(["TrustServerCertificate" => true]),
|
||||
);
|
||||
|
||||
|
||||
/* It is possible to combine customization and plugins:
|
||||
class AdminerCustomization extends AdminerPlugin {
|
||||
}
|
||||
return new AdminerCustomization($plugins);
|
||||
*/
|
||||
|
||||
|
||||
return new AdminerPlugin($plugins);
|
||||
}
|
||||
|
||||
|
@@ -43,7 +43,8 @@ $routine_languages = routine_languages();
|
||||
<?php
|
||||
edit_fields($row["fields"], $collations, $routine);
|
||||
if (isset($_GET["function"])) {
|
||||
echo "<tbody><tr><th></th>",
|
||||
echo "<tbody><tr>",
|
||||
(support("move_col") ? "<th></th>" : ""),
|
||||
"<th>", lang('Return type'), "</th>";
|
||||
|
||||
edit_type("returns", $row["returns"], $collations, array(), ($jush == "pgsql" ? array("void", "trigger") : array()));
|
||||
|
@@ -153,7 +153,7 @@ if (!$error && $_POST) {
|
||||
$time = " <span class='time'>(" . format_time($start) . ")</span>"
|
||||
. (strlen($q) < 1000 ? " <a href='" . h(ME) . "sql=" . urlencode(trim($q)) . "'>" . lang('Edit') . "</a>" : "") // 1000 - maximum length of encoded URL in IE is 2083 characters
|
||||
;
|
||||
$affected = $connection->affected_rows; // getting warnigns overwrites this
|
||||
$affected = $connection->affected_rows; // getting warnings overwrites this
|
||||
$warnings = ($_POST["only_errors"] ? "" : $driver->warnings());
|
||||
$warnings_id = "warnings-$commands";
|
||||
if ($warnings) {
|
||||
|
@@ -24,6 +24,8 @@ pre { margin: 1em 0 0; }
|
||||
pre code { display: block; font-size: 100%; }
|
||||
pre, textarea { font: 110%/1.25 monospace; }
|
||||
pre.jush { background: #fff; }
|
||||
pre.comment { white-space: pre-wrap; }
|
||||
form + pre.comment { margin-top: 2em; }
|
||||
input, textarea, select { box-sizing: border-box; }
|
||||
input[type="image"] { vertical-align: middle; margin-top: -3px; }
|
||||
input[type="number"] { -moz-appearance: textfield; }
|
||||
@@ -109,6 +111,7 @@ table.dragging { background: #eee; }
|
||||
.rtl .pages { left: auto; right: 21em; }
|
||||
.rtl input.wayoff { left: auto; right: -1000px; }
|
||||
.rtl #lang, .rtl #menu { left: auto; right: 0; }
|
||||
.rtl pre, .rtl code { direction: ltr; }
|
||||
|
||||
@media all and (max-width: 880px) {
|
||||
.pages { left: auto; }
|
||||
|
@@ -548,7 +548,7 @@ function foreignAddRow() {
|
||||
this.onchange = function () { };
|
||||
var selects = qsa('select', row);
|
||||
for (var i=0; i < selects.length; i++) {
|
||||
selects[i].name = selects[i].name.replace(']', '1]');
|
||||
selects[i].name = selects[i].name.replace(/\d+]/, '1$&');
|
||||
selects[i].selectedIndex = 0;
|
||||
}
|
||||
parentTag(this, 'table').appendChild(row);
|
||||
|
@@ -99,14 +99,14 @@ function cookie(assign, days) {
|
||||
/**
|
||||
* Verifies current Adminer version.
|
||||
*
|
||||
* @param currentVersion string
|
||||
* @param baseUrl string
|
||||
* @param token string
|
||||
*/
|
||||
function verifyVersion(currentVersion, baseUrl, token) {
|
||||
function verifyVersion(baseUrl, token) {
|
||||
// Dummy value to prevent repeated verifications after AJAX failure.
|
||||
cookie('adminer_version=0', 1);
|
||||
|
||||
ajax('https://api.github.com/repos/pematon/adminer/releases/latest', function (request) {
|
||||
ajax('https://api.github.com/repos/adminerneo/adminerneo/releases/latest', (request) => {
|
||||
const response = JSON.parse(request.responseText);
|
||||
|
||||
const version = response.tag_name.replace(/^\D*/, '');
|
||||
@@ -115,12 +115,8 @@ function verifyVersion(currentVersion, baseUrl, token) {
|
||||
cookie('adminer_version=' + version, 1);
|
||||
|
||||
const data = 'version=' + version + '&token=' + token;
|
||||
ajax(baseUrl + 'script=version', function () {}, data);
|
||||
|
||||
if (currentVersion !== version) {
|
||||
gid('version').innerText = version;
|
||||
}
|
||||
});
|
||||
ajax(baseUrl + 'script=version', null, data);
|
||||
}, null, null, true);
|
||||
}
|
||||
|
||||
/** Get value of select
|
||||
@@ -484,10 +480,8 @@ function selectAddRow(event) {
|
||||
}
|
||||
}
|
||||
|
||||
const buttons = qsa('.icon', row);
|
||||
for (const button of buttons) {
|
||||
button.onclick = selectRemoveRow;
|
||||
}
|
||||
const button = qs('.remove', row);
|
||||
button.onclick = selectRemoveRow;
|
||||
|
||||
const parent = field.parentNode.parentNode;
|
||||
if (parent.classList.contains("sortable")) {
|
||||
@@ -534,7 +528,7 @@ function selectSearchSearch() {
|
||||
// Sorting.
|
||||
(function() {
|
||||
let placeholderRow = null, nextRow = null, dragHelper = null;
|
||||
let startY, minY, maxY;
|
||||
let startScrollY, startY, minY, maxY, lastPointerY;
|
||||
|
||||
/**
|
||||
* Initializes sortable list of DIV elements.
|
||||
@@ -575,6 +569,7 @@ function selectSearchSearch() {
|
||||
const pointerY = getPointerY(event);
|
||||
|
||||
const parent = row.parentNode;
|
||||
startScrollY = window.scrollY;
|
||||
startY = pointerY - getOffsetTop(row);
|
||||
minY = getOffsetTop(parent);
|
||||
maxY = minY + parent.offsetHeight - row.offsetHeight;
|
||||
@@ -618,6 +613,7 @@ function selectSearchSearch() {
|
||||
|
||||
window.addEventListener("mousemove", updateSorting);
|
||||
window.addEventListener("touchmove", updateSorting);
|
||||
window.addEventListener("scroll", updateSorting);
|
||||
|
||||
window.addEventListener("mouseup", finishSorting);
|
||||
window.addEventListener("touchend", finishSorting);
|
||||
@@ -626,27 +622,51 @@ function selectSearchSearch() {
|
||||
|
||||
function updateSorting(event) {
|
||||
const pointerY = getPointerY(event);
|
||||
const scrollingBoundary = 30;
|
||||
const speedCoefficient = 8;
|
||||
|
||||
let top = Math.min(Math.max(pointerY - startY, minY), maxY);
|
||||
dragHelper.style.top = `${top}px`;
|
||||
|
||||
const parent = placeholderRow.parentNode;
|
||||
top = top - minY + parent.offsetTop;
|
||||
|
||||
let sibling;
|
||||
if (top > placeholderRow.offsetTop + placeholderRow.offsetHeight / 2) {
|
||||
sibling = !nextRow.classList.contains("no-sort") ? nextRow.nextElementSibling : nextRow;
|
||||
} else if (top + placeholderRow.offsetHeight < placeholderRow.offsetTop + placeholderRow.offsetHeight / 2) {
|
||||
sibling = placeholderRow.previousElementSibling;
|
||||
} else {
|
||||
sibling = nextRow;
|
||||
// If mouse pointer is over the top boundary, scroll page down.
|
||||
let distance = pointerY - scrollingBoundary;
|
||||
if (distance < 0 && window.scrollY > 0) {
|
||||
window.scrollBy(0, distance / speedCoefficient);
|
||||
return;
|
||||
}
|
||||
|
||||
if (sibling !== nextRow) {
|
||||
const parent = placeholderRow.parentNode;
|
||||
// If mouse pointer is under the bottom boundary, scroll page up.
|
||||
distance = pointerY - window.innerHeight + scrollingBoundary;
|
||||
if (distance > 0 && window.scrollY + window.innerHeight < document.documentElement.scrollHeight) {
|
||||
window.scrollBy(0, distance / speedCoefficient);
|
||||
return;
|
||||
}
|
||||
|
||||
nextRow = sibling;
|
||||
if (sibling) {
|
||||
// Move helper row to the pointer position.
|
||||
let top = Math.min(Math.max(pointerY - startY + window.scrollY - startScrollY, minY), maxY);
|
||||
dragHelper.style.top = `${top}px`;
|
||||
|
||||
// Find a new position for the placeholder.
|
||||
const parent = placeholderRow.parentNode;
|
||||
let oldNextRow = nextRow;
|
||||
top = top - minY + parent.offsetTop;
|
||||
|
||||
let testingRow = placeholderRow;
|
||||
do {
|
||||
if (top > testingRow.offsetTop + testingRow.offsetHeight / 2 + 1) {
|
||||
if (!nextRow.classList.contains("no-sort")) {
|
||||
testingRow = nextRow;
|
||||
nextRow = nextRow.nextElementSibling;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} else if (top + testingRow.offsetHeight < testingRow.offsetTop + testingRow.offsetHeight / 2 - 1) {
|
||||
nextRow = testingRow = testingRow.previousElementSibling;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} while (nextRow);
|
||||
|
||||
// Move the placeholder to a new position.
|
||||
if (nextRow !== oldNextRow) {
|
||||
if (nextRow) {
|
||||
parent.insertBefore(placeholderRow, nextRow);
|
||||
} else {
|
||||
parent.appendChild(placeholderRow);
|
||||
@@ -667,6 +687,7 @@ function selectSearchSearch() {
|
||||
|
||||
window.removeEventListener("mousemove", updateSorting);
|
||||
window.removeEventListener("touchmove", updateSorting);
|
||||
window.removeEventListener("scroll", updateSorting);
|
||||
|
||||
window.removeEventListener("mouseup", finishSorting);
|
||||
window.removeEventListener("touchend", finishSorting);
|
||||
@@ -676,10 +697,12 @@ function selectSearchSearch() {
|
||||
function getPointerY(event) {
|
||||
if (event.type.includes("touch")) {
|
||||
const touch = event.touches[0] || event.changedTouches[0];
|
||||
return touch.clientY;
|
||||
} else {
|
||||
return event.clientY;
|
||||
lastPointerY = touch.clientY;
|
||||
} else if (event.clientY !== undefined) {
|
||||
lastPointerY = event.clientY;
|
||||
}
|
||||
|
||||
return lastPointerY;
|
||||
}
|
||||
})();
|
||||
|
||||
@@ -869,41 +892,51 @@ function fieldChange() {
|
||||
|
||||
|
||||
|
||||
/** Create AJAX request
|
||||
* @param string
|
||||
* @param function (XMLHttpRequest)
|
||||
* @param [string]
|
||||
* @param [string]
|
||||
* @return XMLHttpRequest or false in case of an error
|
||||
* @uses offlineMessage
|
||||
*/
|
||||
function ajax(url, callback, data, message) {
|
||||
var request = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : false));
|
||||
if (request) {
|
||||
var ajaxStatus = gid('ajaxstatus');
|
||||
if (message) {
|
||||
ajaxStatus.innerHTML = '<div class="message">' + message + '</div>';
|
||||
ajaxStatus.className = ajaxStatus.className.replace(/ hidden/g, '');
|
||||
} else {
|
||||
ajaxStatus.className += ' hidden';
|
||||
}
|
||||
request.open((data ? 'POST' : 'GET'), url);
|
||||
if (data) {
|
||||
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
}
|
||||
request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
request.onreadystatechange = function () {
|
||||
if (request.readyState === 4) {
|
||||
if (/^2/.test(request.status)) {
|
||||
callback(request);
|
||||
} else {
|
||||
ajaxStatus.innerHTML = (request.status ? request.responseText : '<div class="error">' + offlineMessage + '</div>');
|
||||
ajaxStatus.className = ajaxStatus.className.replace(/ hidden/g, '');
|
||||
}
|
||||
}
|
||||
};
|
||||
request.send(data);
|
||||
/**
|
||||
* Sends AJAX request.
|
||||
*
|
||||
* @param {string} url
|
||||
* @param {function|null} onSuccess (XMLHttpRequest)
|
||||
* @param {string|null} data POST data.
|
||||
* @param {string|null} progressMessage
|
||||
* @param {boolean} failSilently
|
||||
* @return XMLHttpRequest or false in case of an error
|
||||
* @uses offlineMessage
|
||||
*/
|
||||
function ajax(url, onSuccess = null, data = null, progressMessage = null, failSilently = false) {
|
||||
const ajaxStatus = gid('ajaxstatus');
|
||||
|
||||
if (progressMessage) {
|
||||
ajaxStatus.innerHTML = '<div class="message">' + progressMessage + '</div>';
|
||||
ajaxStatus.classList.remove("hidden");
|
||||
} else {
|
||||
ajaxStatus.classList.add("hidden");
|
||||
}
|
||||
|
||||
const request = new XMLHttpRequest();
|
||||
request.open((data ? 'POST' : 'GET'), url);
|
||||
request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
if (data) {
|
||||
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
}
|
||||
|
||||
request.onreadystatechange = () => {
|
||||
if (request.readyState === 4) {
|
||||
if (request.status >= 200 && request.status < 300) {
|
||||
if (onSuccess) {
|
||||
onSuccess(request);
|
||||
}
|
||||
} else if (failSilently) {
|
||||
console.error(request.status ? request.responseText : "No internet connection");
|
||||
} else {
|
||||
ajaxStatus.innerHTML = (request.status ? request.responseText : '<div class="error">' + offlineMessage + '</div>');
|
||||
ajaxStatus.classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
request.send(data);
|
||||
|
||||
return request;
|
||||
}
|
||||
|
||||
@@ -1124,10 +1157,12 @@ function inputBlur() {
|
||||
}
|
||||
}
|
||||
|
||||
/** Find submit button used by Enter
|
||||
* @param HTMLElement
|
||||
* @return HTMLInputElement
|
||||
*/
|
||||
/**
|
||||
* Finds submit button used by Enter.
|
||||
*
|
||||
* @param {HTMLElement} el
|
||||
* @return {HTMLInputElement}
|
||||
*/
|
||||
function findDefaultSubmit(el) {
|
||||
if (el.jushTextarea) {
|
||||
el = el.jushTextarea;
|
||||
@@ -1135,10 +1170,10 @@ function findDefaultSubmit(el) {
|
||||
if (!el.form) {
|
||||
return null;
|
||||
}
|
||||
var inputs = qsa('input', el.form);
|
||||
for (var i = 0; i < inputs.length; i++) {
|
||||
var input = inputs[i];
|
||||
if (input.type === 'submit' && !input.style.zIndex) {
|
||||
|
||||
const inputs = qsa('input', el.form);
|
||||
for (const input of inputs) {
|
||||
if (input.type === 'submit' && !input.classList.contains("wayoff") && !input.style.zIndex) {
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
367
compile.php
367
compile.php
@@ -6,9 +6,18 @@ function adminer_errors($errno, $errstr) {
|
||||
|
||||
error_reporting(6135); // errors and warnings
|
||||
set_error_handler('adminer_errors', E_WARNING);
|
||||
|
||||
include dirname(__FILE__) . "/adminer/include/debug.inc.php";
|
||||
include dirname(__FILE__) . "/adminer/include/version.inc.php";
|
||||
include dirname(__FILE__) . "/vendor/vrana/jsshrink/jsShrink.php";
|
||||
|
||||
function is_dev_version()
|
||||
{
|
||||
global $VERSION;
|
||||
|
||||
return (bool)preg_match('~-dev$~', $VERSION);
|
||||
}
|
||||
|
||||
function add_apo_slashes($s) {
|
||||
return addcslashes($s, "\\'");
|
||||
}
|
||||
@@ -21,85 +30,85 @@ function add_quo_slashes($s) {
|
||||
return $return;
|
||||
}
|
||||
|
||||
function remove_lang($match) {
|
||||
global $translations;
|
||||
$idf = strtr($match[2], array("\\'" => "'", "\\\\" => "\\"));
|
||||
$s = ($translations[$idf] ? $translations[$idf] : $idf);
|
||||
if ($match[3] == ",") { // lang() has parameters
|
||||
return $match[1] . (is_array($s) ? "lang(array('" . implode("', '", array_map('add_apo_slashes', $s)) . "')," : "sprintf('" . add_apo_slashes($s) . "',");
|
||||
}
|
||||
return ($match[1] && $match[4] ? $s : "$match[1]'" . add_apo_slashes($s) . "'$match[4]");
|
||||
}
|
||||
|
||||
function lang_ids($match) {
|
||||
function replace_lang($match) {
|
||||
global $lang_ids;
|
||||
$lang_id = &$lang_ids[stripslashes($match[1])];
|
||||
if ($lang_id === null) {
|
||||
$lang_id = count($lang_ids) - 1;
|
||||
|
||||
$text = stripslashes($match[1]);
|
||||
if (!isset($lang_ids[$text])) {
|
||||
$lang_ids[$text] = count($lang_ids);
|
||||
}
|
||||
return ($_SESSION["lang"] ? $match[0] : "lang($lang_id$match[2]");
|
||||
|
||||
return "lang($lang_ids[$text]$match[2]";
|
||||
}
|
||||
|
||||
function put_file($match) {
|
||||
global $project, $VERSION, $driver;
|
||||
if (basename($match[2]) == '$LANG.inc.php') {
|
||||
return $match[0]; // processed later
|
||||
}
|
||||
$return = file_get_contents(dirname(__FILE__) . "/$project/$match[2]");
|
||||
if (basename($match[2]) == "file.inc.php") {
|
||||
$return = str_replace("\n// caching headers added in compile.php", (preg_match('~-dev$~', $VERSION) ? '' : '
|
||||
if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {
|
||||
header("HTTP/1.1 304 Not Modified");
|
||||
exit;
|
||||
}
|
||||
global $project, $selected_languages, $single_driver;
|
||||
|
||||
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365*24*60*60) . " GMT");
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
header("Cache-Control: immutable");
|
||||
'), $return, $count);
|
||||
$filename = basename($match[2]);
|
||||
|
||||
// Language is processed later.
|
||||
if ($filename == '$LANG.inc.php') {
|
||||
return $match[0];
|
||||
}
|
||||
|
||||
$content = file_get_contents(dirname(__FILE__) . "/$project/$match[2]");
|
||||
|
||||
if ($filename == "file.inc.php") {
|
||||
$content = str_replace("\n// caching headers added in compile.php", (is_dev_version() ? '' : '
|
||||
if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {
|
||||
header("HTTP/1.1 304 Not Modified");
|
||||
exit;
|
||||
}
|
||||
|
||||
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365*24*60*60) . " GMT");
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
header("Cache-Control: immutable");
|
||||
'), $content, $count);
|
||||
if (!$count) {
|
||||
echo "adminer/file.inc.php: Caching headers placeholder not found\n";
|
||||
}
|
||||
}
|
||||
if ($driver && dirname($match[2]) == "../adminer/drivers") {
|
||||
$return = preg_replace('~^if \(isset\(\$_GET\["' . $driver . '"]\)\) \{(.*)^}~ms', '\1', $return);
|
||||
}
|
||||
if (basename($match[2]) != "lang.inc.php" || !$_SESSION["lang"]) {
|
||||
if (basename($match[2]) == "lang.inc.php") {
|
||||
$return = str_replace('function lang($idf, $number = null) {', 'function lang($idf, $number = null) {
|
||||
if (is_string($idf)) { // compiled version uses numbers, string comes from a plugin
|
||||
// English translation is closest to the original identifiers //! pluralized translations are not found
|
||||
$pos = array_search($idf, get_translations("en")); //! this should be cached
|
||||
if ($pos !== false) {
|
||||
$idf = $pos;
|
||||
}
|
||||
}', $return, $count);
|
||||
if (!$count) {
|
||||
echo "lang() not found\n";
|
||||
}
|
||||
}
|
||||
$tokens = token_get_all($return); // to find out the last token
|
||||
return "?>\n$return" . (in_array($tokens[count($tokens) - 1][0], array(T_CLOSE_TAG, T_INLINE_HTML), true) ? "<?php" : "");
|
||||
} elseif (preg_match('~\s*(\$pos = (.+\n).+;)~sU', $return, $match2)) {
|
||||
// single language lang() is used for plural
|
||||
return "function get_lang() {
|
||||
return '$_SESSION[lang]';
|
||||
}
|
||||
|
||||
function lang(\$translation, \$number = null) {
|
||||
if (is_array(\$translation)) {
|
||||
\$pos = $match2[2]\t\t\t: " . (preg_match("~\\\$LANG == '$_SESSION[lang]'.* \\? (.+)\n~U", $match2[1], $match3) ? $match3[1] : "1") . '
|
||||
if ($filename == "lang.inc.php") {
|
||||
$content = str_replace(
|
||||
'return $key; // compile: convert translation key',
|
||||
'static $en_translations = null;
|
||||
|
||||
// Convert string key used in plugins to compiled numeric key.
|
||||
if (is_string($key)) {
|
||||
if (!$en_translations) {
|
||||
$en_translations = get_translations("en");
|
||||
}
|
||||
|
||||
// Find text in English translations or plurals map.
|
||||
if (($index = array_search($key, $en_translations)) !== false) {
|
||||
$key = $index;
|
||||
} elseif (($index = get_plural_translation_id($key)) !== null) {
|
||||
$key = $index;
|
||||
}
|
||||
}
|
||||
|
||||
return $key;',
|
||||
$content, $count
|
||||
);
|
||||
$translation = $translation[$pos];
|
||||
}
|
||||
$translation = str_replace("%d", "%s", $translation);
|
||||
$number = format_number($number);
|
||||
return sprintf($translation, $number);
|
||||
}
|
||||
';
|
||||
} else {
|
||||
echo "lang() \$pos not found\n";
|
||||
|
||||
if (!$count) {
|
||||
echo "function lang() not found\n";
|
||||
}
|
||||
|
||||
if ($selected_languages) {
|
||||
$available_languages = array_fill_keys($selected_languages, true);
|
||||
$content = str_replace(
|
||||
'return $languages; // compile: available languages',
|
||||
'return ' . var_export($available_languages, true) . ';',
|
||||
$content
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$tokens = token_get_all($content); // to find out the last token
|
||||
|
||||
return "?>\n$content" . (in_array($tokens[count($tokens) - 1][0], array(T_CLOSE_TAG, T_INLINE_HTML), true) ? "<?php" : "");
|
||||
}
|
||||
|
||||
function lzw_compress($string) {
|
||||
@@ -139,45 +148,73 @@ function lzw_compress($string) {
|
||||
return $return . ($rest_length ? chr($rest << (8 - $rest_length)) : "");
|
||||
}
|
||||
|
||||
function put_file_lang($match) {
|
||||
global $lang_ids, $project, $langs;
|
||||
if ($_SESSION["lang"]) {
|
||||
return "";
|
||||
}
|
||||
$return = "";
|
||||
foreach ($langs as $lang => $val) {
|
||||
include dirname(__FILE__) . "/adminer/lang/$lang.inc.php"; // assign $translations
|
||||
function put_file_lang() {
|
||||
global $lang_ids, $selected_languages;
|
||||
|
||||
$languages = array_map(function ($filename) {
|
||||
preg_match('~/([^/.]+)\.inc\.php$~', $filename, $matches);
|
||||
return $matches[1];
|
||||
}, glob(dirname(__FILE__) . "/adminer/lang/*.inc.php"));
|
||||
|
||||
$cases = "";
|
||||
$plurals_map = [];
|
||||
|
||||
foreach ($languages as $language) {
|
||||
// Include only selected language and "en" into single language compilation.
|
||||
// "en" is used for translations in plugins.
|
||||
if ($selected_languages && !in_array($language, $selected_languages) && $language != "en") {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Assign $translations
|
||||
$translations = [];
|
||||
include dirname(__FILE__) . "/adminer/lang/$language.inc.php";
|
||||
|
||||
$translation_ids = array_flip($lang_ids); // default translation
|
||||
foreach ($translations as $key => $val) {
|
||||
if ($val !== null) {
|
||||
$translation_ids[$lang_ids[$key]] = implode("\t", (array) $val);
|
||||
$translation_ids[$lang_ids[$key]] = $val;
|
||||
|
||||
if ($language == "en" && is_array($val)) {
|
||||
$plurals_map[$key] = $lang_ids[$key];
|
||||
}
|
||||
}
|
||||
}
|
||||
$return .= '
|
||||
case "' . $lang . '": $compressed = "' . add_quo_slashes(lzw_compress(implode("\n", $translation_ids))) . '"; break;';
|
||||
}
|
||||
$translations_version = crc32($return);
|
||||
return '$translations = $_SESSION["translations"];
|
||||
if ($_SESSION["translations_version"] != ' . $translations_version . ') {
|
||||
$translations = array();
|
||||
$_SESSION["translations_version"] = ' . $translations_version . ';
|
||||
}
|
||||
|
||||
function get_translations($lang) {
|
||||
switch ($lang) {' . $return . '
|
||||
$cases .= 'case "' . $language . '": $compressed = "' . add_quo_slashes(lzw_compress(json_encode($translation_ids, JSON_UNESCAPED_UNICODE))) . '"; break;';
|
||||
}
|
||||
$translations = array();
|
||||
foreach (explode("\n", lzw_decompress($compressed)) as $val) {
|
||||
$translations[] = (strpos($val, "\t") ? explode("\t", $val) : $val);
|
||||
}
|
||||
return $translations;
|
||||
}
|
||||
|
||||
if (!$translations) {
|
||||
$translations = get_translations($LANG);
|
||||
$_SESSION["translations"] = $translations;
|
||||
}
|
||||
';
|
||||
$translations_version = crc32($cases);
|
||||
|
||||
return '
|
||||
function get_translations($lang) {
|
||||
switch ($lang) {' . $cases . '}
|
||||
|
||||
return json_decode(lzw_decompress($compressed), true);
|
||||
}
|
||||
|
||||
function get_plural_translation_id($key) {
|
||||
$plurals_map = ' . var_export($plurals_map, true) . ';
|
||||
|
||||
return isset($plurals_map[$key]) ? $plurals_map[$key] : null;
|
||||
}
|
||||
|
||||
$translations = $_SESSION["translations"];
|
||||
|
||||
if ($_SESSION["translations_version"] != ' . $translations_version . ') {
|
||||
$translations = [];
|
||||
$_SESSION["translations_version"] = ' . $translations_version . ';
|
||||
}
|
||||
if ($_SESSION["translations_language"] != $LANG) {
|
||||
$translations = [];
|
||||
$_SESSION["translations_language"] = $LANG;
|
||||
}
|
||||
|
||||
if (!$translations) {
|
||||
$translations = get_translations($LANG);
|
||||
$_SESSION["translations"] = $translations;
|
||||
}
|
||||
';
|
||||
}
|
||||
|
||||
function short_identifier($number, $chars) {
|
||||
@@ -224,7 +261,7 @@ function php_shrink($input) {
|
||||
}
|
||||
$tokens = array_values($tokens);
|
||||
|
||||
foreach ($tokens as $i => $token) {
|
||||
foreach ($tokens as $token) {
|
||||
if ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) {
|
||||
$short_variables[$token[1]]++;
|
||||
}
|
||||
@@ -258,7 +295,7 @@ function php_shrink($input) {
|
||||
$tokens[$i+4] = array(0, ';');
|
||||
}
|
||||
if ($token[0] == T_COMMENT || $token[0] == T_WHITESPACE || ($token[0] == T_DOC_COMMENT && $doc_comment)) {
|
||||
$space = "\n";
|
||||
$space = " ";
|
||||
} else {
|
||||
if ($token[0] == T_DOC_COMMENT) {
|
||||
$doc_comment = true;
|
||||
@@ -287,9 +324,13 @@ function php_shrink($input) {
|
||||
} elseif ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) {
|
||||
$token[1] = '$' . $short_variables[$token[1]];
|
||||
}
|
||||
if (isset($set[substr($output, -1)]) || isset($set[$token[1][0]])) {
|
||||
|
||||
if ($token[0] == T_FUNCTION || $token[0] == T_CLASS || $token[0] == T_INTERFACE || $token[0] == T_TRAIT) {
|
||||
$space = "\n";
|
||||
} elseif (isset($set[substr($output, -1)]) || isset($set[$token[1][0]])) {
|
||||
$space = '';
|
||||
}
|
||||
|
||||
$output .= $space . $token[1];
|
||||
$space = '';
|
||||
}
|
||||
@@ -340,60 +381,78 @@ function number_type() {
|
||||
}
|
||||
|
||||
$project = "adminer";
|
||||
if ($_SERVER["argv"][1] == "editor") {
|
||||
array_shift($argv);
|
||||
|
||||
if ($argv[0] == "editor") {
|
||||
$project = "editor";
|
||||
array_shift($_SERVER["argv"]);
|
||||
array_shift($argv);
|
||||
}
|
||||
|
||||
$driver = "";
|
||||
if (file_exists(dirname(__FILE__) . "/adminer/drivers/" . $_SERVER["argv"][1] . ".inc.php")) {
|
||||
$driver = $_SERVER["argv"][1];
|
||||
array_shift($_SERVER["argv"]);
|
||||
$selected_drivers = [];
|
||||
if ($argv) {
|
||||
$params = explode(",", $argv[0]);
|
||||
if (file_exists(dirname(__FILE__) . "/adminer/drivers/" . $params[0] . ".inc.php")) {
|
||||
$selected_drivers = $params;
|
||||
array_shift($argv);
|
||||
}
|
||||
}
|
||||
$single_driver = count($selected_drivers) == 1 ? $selected_drivers[0] : null;
|
||||
|
||||
unset($_COOKIE["adminer_lang"]);
|
||||
$_SESSION["lang"] = $_SERVER["argv"][1]; // Adminer functions read language from session
|
||||
include dirname(__FILE__) . "/adminer/include/lang.inc.php";
|
||||
if (isset($langs[$_SESSION["lang"]])) {
|
||||
include dirname(__FILE__) . "/adminer/lang/$_SESSION[lang].inc.php";
|
||||
array_shift($_SERVER["argv"]);
|
||||
$selected_languages = [];
|
||||
if ($argv) {
|
||||
$params = explode(",", $argv[0]);
|
||||
if (file_exists(dirname(__FILE__) . "/adminer/lang/" . $params[0] . ".inc.php")) {
|
||||
$selected_languages = $params;
|
||||
array_shift($argv);
|
||||
}
|
||||
}
|
||||
$single_language = count($selected_languages) == 1 ? $selected_languages[0] : null;
|
||||
|
||||
if ($_SERVER["argv"][1]) {
|
||||
echo "Usage: php compile.php [editor] [driver] [lang]\n";
|
||||
if ($argv) {
|
||||
echo "Usage: php compile.php [editor] [driver] [language]\n";
|
||||
echo "Purpose: Compile adminer[-driver][-lang].php or editor[-driver][-lang].php.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// check function definition in drivers
|
||||
// Check function definition in drivers.
|
||||
$file = file_get_contents(dirname(__FILE__) . "/adminer/drivers/mysql.inc.php");
|
||||
$file = preg_replace('~class Min_Driver.*\n\t}~sU', '', $file);
|
||||
preg_match_all('~\bfunction ([^(]+)~', $file, $matches); //! respect context (extension, class)
|
||||
$functions = array_combine($matches[1], $matches[0]);
|
||||
//! do not warn about functions without declared support()
|
||||
unset($functions["__construct"], $functions["__destruct"], $functions["set_charset"]);
|
||||
foreach (glob(dirname(__FILE__) . "/adminer/drivers/" . ($driver ? $driver : "*") . ".inc.php") as $filename) {
|
||||
if ($filename != "mysql.inc.php") {
|
||||
$file = file_get_contents($filename);
|
||||
foreach ($functions as $val) {
|
||||
if (!strpos($file, "$val(")) {
|
||||
fprintf(STDERR, "Missing $val in $filename\n");
|
||||
}
|
||||
|
||||
foreach (glob(dirname(__FILE__) . "/adminer/drivers/*.inc.php") as $filename) {
|
||||
preg_match('~/([^/.]+)\.inc\.php$~', $filename, $matches);
|
||||
if ($matches[1] == "mysql" || ($selected_drivers && !in_array($matches[1], $selected_drivers))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$file = file_get_contents($filename);
|
||||
foreach ($functions as $function) {
|
||||
if (!strpos($file, "$function(")) {
|
||||
fprintf(STDERR, "Missing $function in $filename\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
include dirname(__FILE__) . "/adminer/include/pdo.inc.php";
|
||||
include dirname(__FILE__) . "/adminer/include/driver.inc.php";
|
||||
$features = array("call" => "routine", "dump", "event", "privileges", "procedure" => "routine", "processlist", "routine", "scheme", "sequence", "status", "trigger", "type", "user" => "privileges", "variables", "view");
|
||||
$lang_ids = array(); // global variable simplifies usage in a callback function
|
||||
|
||||
$features = ["call" => "routine", "dump", "event", "privileges", "procedure" => "routine", "processlist", "routine", "scheme", "sequence", "status", "trigger", "type", "user" => "privileges", "variables", "view"];
|
||||
$lang_ids = []; // global variable simplifies usage in a callback functions
|
||||
|
||||
// Start with index.php.
|
||||
$file = file_get_contents(dirname(__FILE__) . "/$project/index.php");
|
||||
if ($driver) {
|
||||
$_GET[$driver] = true; // to load the driver
|
||||
include_once dirname(__FILE__) . "/adminer/drivers/$driver.inc.php";
|
||||
|
||||
// Remove including source code for unsupported features in single-driver file.
|
||||
if ($single_driver) {
|
||||
$_GET[$single_driver] = true; // to load the driver
|
||||
include_once dirname(__FILE__) . "/adminer/drivers/$single_driver.inc.php";
|
||||
|
||||
foreach ($features as $key => $feature) {
|
||||
if (!support($feature)) {
|
||||
if (!is_int($key)) {
|
||||
if (is_string($key)) {
|
||||
$feature = $key;
|
||||
}
|
||||
$file = str_replace("} elseif (isset(\$_GET[\"$feature\"])) {\n\tinclude \"./$feature.inc.php\";\n", "", $file);
|
||||
@@ -403,42 +462,51 @@ if ($driver) {
|
||||
$file = str_replace("if (isset(\$_GET[\"callf\"])) {\n\t\$_GET[\"call\"] = \$_GET[\"callf\"];\n}\nif (isset(\$_GET[\"function\"])) {\n\t\$_GET[\"procedure\"] = \$_GET[\"function\"];\n}\n", "", $file);
|
||||
}
|
||||
}
|
||||
|
||||
// Compile files included into the index.php.
|
||||
$file = preg_replace_callback('~\b(include|require) "([^"]*)";~', 'put_file', $file);
|
||||
|
||||
// Remove including debug files.
|
||||
$file = str_replace('include "../adminer/include/debug.inc.php";', '', $file);
|
||||
$file = str_replace('include "../adminer/include/coverage.inc.php";', '', $file);
|
||||
if ($driver) {
|
||||
$file = preg_replace('(include "../adminer/drivers/(?!' . preg_quote($driver) . '\.).*\s*)', '', $file);
|
||||
|
||||
// Remove including unwanted drivers.
|
||||
if ($selected_drivers) {
|
||||
$file = preg_replace_callback('~include "../adminer/drivers/([^.]+).*\n~', function ($match) use ($selected_drivers) {
|
||||
return in_array($match[1], $selected_drivers) ? $match[0] : "";
|
||||
}, $file);
|
||||
}
|
||||
$file = preg_replace_callback('~\b(include|require) "([^"]*)";~', 'put_file', $file); // bootstrap.inc.php
|
||||
if ($driver) {
|
||||
|
||||
// Compile files included into the bootstrap.inc.php.
|
||||
$file = preg_replace_callback('~\b(include|require) "([^"]*)";~', 'put_file', $file);
|
||||
|
||||
if ($single_driver) {
|
||||
// Remove source code for unsupported features.
|
||||
foreach ($features as $feature) {
|
||||
if (!support($feature)) {
|
||||
$file = preg_replace("((\t*)" . preg_quote('if (support("' . $feature . '")') . ".*\n\\1\\})sU", '', $file);
|
||||
}
|
||||
}
|
||||
if (count($drivers) == 1) {
|
||||
$file = str_replace('<?php echo html_select("auth[driver]", $drivers, DRIVER) . "\n"; ?>', "<input type='hidden' name='auth[driver]' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file);
|
||||
}
|
||||
$file = preg_replace('(;\.\./vendor/vrana/jush/modules/jush-(?!textarea\.|txt\.|js\.|' . preg_quote($driver == "mysql" ? "sql" : $driver) . '\.)[^.]+.js)', '', $file);
|
||||
$file = preg_replace_callback('~doc_link\(array\((.*)\)\)~sU', function ($match) use ($driver) {
|
||||
|
||||
$file = preg_replace('(;\.\./vendor/vrana/jush/modules/jush-(?!textarea\.|txt\.|js\.|' . preg_quote($single_driver == "mysql" ? "sql" : $single_driver) . '\.)[^.]+.js)', '', $file);
|
||||
$file = preg_replace_callback('~doc_link\(array\((.*)\)\)~sU', function ($match) use ($single_driver) {
|
||||
list(, $links) = $match;
|
||||
$links = preg_replace("~'(?!(" . ($driver == "mysql" ? "sql|mariadb" : $driver) . ")')[^']*' => [^,]*,?~", '', $links);
|
||||
$links = preg_replace("~'(?!(" . ($single_driver == "mysql" ? "sql|mariadb" : $single_driver) . ")')[^']*' => [^,]*,?~", '', $links);
|
||||
return (trim($links) ? "doc_link(array($links))" : "''");
|
||||
}, $file);
|
||||
|
||||
//! strip doc_link() definition
|
||||
}
|
||||
|
||||
if ($project == "editor") {
|
||||
$file = preg_replace('~;\.\./vendor/vrana/jush/jush\.css~', '', $file);
|
||||
$file = preg_replace('~compile_file\(\'\.\./(vendor/vrana/jush/modules/jush\.js|adminer/static/[^.]+\.gif)[^)]+\)~', "''", $file);
|
||||
}
|
||||
$file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
|
||||
|
||||
$file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'replace_lang', $file);
|
||||
$file = preg_replace_callback('~\b(include|require) "([^"]*\$LANG.inc.php)";~', 'put_file_lang', $file);
|
||||
|
||||
$file = str_replace("\r", "", $file);
|
||||
if ($_SESSION["lang"]) {
|
||||
// single language version
|
||||
$file = preg_replace_callback("~(<\\?php\\s*echo )?lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])(;\\s*\\?>)?~s", 'remove_lang', $file);
|
||||
$file = str_replace("<?php switch_lang(); ?>\n", "", $file);
|
||||
$file = str_replace('<?php echo $LANG; ?>', $_SESSION["lang"], $file);
|
||||
}
|
||||
$file = str_replace('<?php echo script_src("static/editing.js?" . filemtime("../adminer/static/editing.js")); ?>' . "\n", "", $file);
|
||||
$file = preg_replace('~\s+echo script_src\("\.\./vendor/vrana/jush/modules/jush-(textarea|txt|js|\$jush)\.js"\);~', '', $file);
|
||||
$file = str_replace('<link rel="stylesheet" type="text/css" href="../vendor/vrana/jush/jush.css">' . "\n", "", $file);
|
||||
@@ -452,7 +520,12 @@ $file = preg_replace('~"\.\./vendor/vrana/jush/modules/(jush\.js)"~', $replace,
|
||||
$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
|
||||
$file = php_shrink($file);
|
||||
|
||||
@mkdir("temp/export", 0777, true);
|
||||
$filename = "temp/export/$project" . (preg_match('~-dev$~', $VERSION) ? "" : "-$VERSION") . ($driver ? "-$driver" : "") . ($_SESSION["lang"] ? "-$_SESSION[lang]" : "") . ".php";
|
||||
@mkdir("export", 0777, true);
|
||||
$filename = "export/$project"
|
||||
. (is_dev_version() ? "" : "-$VERSION")
|
||||
. ($single_driver ? "-$single_driver" : "")
|
||||
. ($single_language ? "-$single_language" : "")
|
||||
. ".php";
|
||||
|
||||
file_put_contents($filename, $file);
|
||||
echo "$filename created (" . strlen($file) . " B).\n";
|
||||
|
@@ -1,16 +1,19 @@
|
||||
{
|
||||
"name": "vrana/adminer",
|
||||
"name": "adminerneo/adminerneo",
|
||||
"description": "Database management in a single PHP file.",
|
||||
"homepage": "https://www.adminer.org/",
|
||||
"homepage": "https://github.com/adminerneo/adminerneo",
|
||||
"keywords": [
|
||||
"database"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://sourceforge.net/p/adminer/bugs-and-features/",
|
||||
"forum": "https://sourceforge.net/p/adminer/discussion/",
|
||||
"source": "https://github.com/vrana/adminer/"
|
||||
"issues": "https://github.com/adminerneo/adminerneo/issues",
|
||||
"forum": "https://github.com/adminerneo/adminerneo/discussions",
|
||||
"source": "https://github.com/adminerneo/adminerneo"
|
||||
},
|
||||
"authors": [
|
||||
{
|
||||
"name": "Peter Knut"
|
||||
},
|
||||
{
|
||||
"name": "Jakub Vrána",
|
||||
"homepage": "https://www.vrana.cz/"
|
||||
@@ -26,7 +29,7 @@
|
||||
"GPL-2.0-only"
|
||||
],
|
||||
"require": {
|
||||
"php": "5.6 - 8.3",
|
||||
"php": "5.6 - 8.4",
|
||||
"ext-pdo": "*",
|
||||
"ext-json": "*",
|
||||
"vrana/jush": "2.0.*",
|
||||
@@ -39,6 +42,7 @@
|
||||
"ext-mysql": "*",
|
||||
"ext-pgsql": "*",
|
||||
"ext-mongo": "*",
|
||||
"ext-mongodb": "*",
|
||||
"ext-sqlsrv": "*",
|
||||
"ext-mssql": "*",
|
||||
"ext-oci8": "*",
|
||||
@@ -57,11 +61,11 @@
|
||||
"repositories": [
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "https://github.com/pematon/jush.git"
|
||||
"url": "https://github.com/peterpp/jush.git"
|
||||
},
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "https://github.com/vrana/jsshrink.git"
|
||||
"url": "https://github.com/peterpp/js-shrink.git"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
*{margin:0;padding:0}
|
||||
body{font:13px/18px Helvetica,Arial,sans-serif;background:#fff;color:#333}
|
||||
/* generic */
|
||||
a,a:visited{color:#06c;text-decoration:none;border-bottom:1px dotted}
|
||||
a:hover{border-bottom:1px solid #06c;background:#06c;color:#fff}
|
||||
a{color:#06c;text-decoration:none;border-bottom:1px dotted}
|
||||
a:hover,a:link:hover{border-bottom:1px solid #06c;background:#06c;color:#fff}
|
||||
p{padding-bottom:4px;margin-bottom:4px}
|
||||
h1{font-size:18px;font-weight:bold;padding-bottom:0px;height:40px;padding:0 0 8px 0;color:#666;border:0}
|
||||
h2{font:32px Georgia,serif;padding:10px 0 8px;margin:0;background:transparent;border:0;color:#333}
|
||||
@@ -31,6 +31,7 @@ thead th,thead td{white-space:nowrap;font-weight:bold;background:#ddd;border-col
|
||||
th:first-child,td:first-child{border-color:transparent;white-space:nowrap}
|
||||
td[align=right]{text-align:right}
|
||||
table code{font-size:13px;line-height:18px}
|
||||
.footer fieldset{float:none;}
|
||||
.hidden{display:none}
|
||||
.error,.message{padding:0;background:transparent;font-weight:bold}
|
||||
.error{color:#c00}
|
||||
@@ -46,11 +47,12 @@ border:5px solid #ccc;margin:0}
|
||||
#menu a:hover{background:#333;color:#fff;border-color:#333}
|
||||
#menu a.h1,#menu a.h1:hover{display:block;height:0;width:175px;padding:40px 0 0 0;overflow:hidden;float:left;border:0;margin:0;
|
||||
outline:0;background:url(//www.bradezone.com/random/adminer_logo.gif) no-repeat;line-height:32px}
|
||||
#menu p,#logins,#tables{white-space:nowrap;border:0;padding:0 0 4px 0;margin:0 0 4px 0}
|
||||
#menu p,#logins,#tables{border:0;padding:0 0 4px 0;margin:0 0 4px 0}
|
||||
#breadcrumb{background:#333;color:#fff;position:fixed;top:0;left:320px;line-height:40px;padding:0;z-index:1;margin:0}
|
||||
#breadcrumb a{color:#ff9}
|
||||
#breadcrumb a:hover{background:transparent;color:#ff9;border-color:#ff9}
|
||||
#schema .table{padding:4px 8px;background:#f3f3f3}
|
||||
.tables-filter{padding:0;margin:10px 0;}
|
||||
/* IE hacks */
|
||||
*+html th:first-child,*+html td:first-child{border-color:inherit;white-space:inherit}
|
||||
* html #lang,* html #menu,* html #breadcrumb{position:absolute}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Alternative style for Adminer by Frank Bültge
|
||||
*
|
||||
*
|
||||
* @link http://bueltge.de/
|
||||
* @version 02/18/2014
|
||||
*/
|
||||
@@ -31,14 +31,14 @@ p {
|
||||
margin: 0.8em 20px 0 5px
|
||||
}
|
||||
|
||||
a {
|
||||
a {
|
||||
color: #21759B;
|
||||
background: none !important;
|
||||
}
|
||||
a:visited {
|
||||
a:visited {
|
||||
color: #21759B;
|
||||
}
|
||||
a:hover, a:hover {
|
||||
a:hover, a:hover {
|
||||
text-decoration: none;
|
||||
color: #d54e21;
|
||||
}
|
||||
@@ -55,7 +55,9 @@ a.active, a.active + a {
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.icon {
|
||||
background-color: #21759B;
|
||||
}
|
||||
form {
|
||||
margin: 0;
|
||||
padding: 0 0 0 5px;
|
||||
@@ -102,7 +104,7 @@ display: table-header-group;
|
||||
vertical-align: middle;
|
||||
border-color: inherit;
|
||||
}
|
||||
thead td, thead th {
|
||||
thead td, thead th {
|
||||
background-color: #DFDFDF;
|
||||
border: none;
|
||||
border-bottom: 1px #BBB solid;
|
||||
@@ -117,12 +119,18 @@ tr:hover td, tr:hover th {
|
||||
background-color: #BCD;
|
||||
}
|
||||
|
||||
.footer {
|
||||
border-image:linear-gradient(rgba(249, 249, 249, .2), #F9F9F9) 100% 0;
|
||||
}
|
||||
.footer > div {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
display: inline;
|
||||
vertical-align: top;
|
||||
padding: 2px 12px;
|
||||
margin: 25px 12px 12px 0;
|
||||
fieldset {
|
||||
display: inline;
|
||||
vertical-align: top;
|
||||
padding: 2px 12px;
|
||||
margin: 25px 12px 12px 0;
|
||||
border: none;
|
||||
background-color: #F1F1F1;
|
||||
border: 1px solid #E3E3E3;
|
||||
@@ -136,7 +144,7 @@ fieldset {
|
||||
padding-top: 14px;
|
||||
}
|
||||
legend {
|
||||
font-weight: 900;
|
||||
font-weight: 900;
|
||||
color: #000;
|
||||
top: -1.666em;
|
||||
left: -1em;
|
||||
@@ -146,7 +154,7 @@ input {
|
||||
padding: 2px 5px 1px 5px;
|
||||
}
|
||||
input[name='limit'], input[name='length'] {
|
||||
width: 3em;
|
||||
width: 3em;
|
||||
text-align: right;
|
||||
}
|
||||
input[name='text_length'] {
|
||||
@@ -203,7 +211,7 @@ input[type=button], input[type=submit] {
|
||||
background-image: -o-linear-gradient(top, #fff, #eee);
|
||||
background-image: linear-gradient(to bottom, #fff, #eee);
|
||||
border-color: #ccc;
|
||||
-webkit-box-shadow: inset 0 0 1px 1px rgba(255,255,255, 0.9);
|
||||
-webkit-box-shadow: inset 0 0 1px 1px rgba(255,255,255, 0.9);
|
||||
box-shadow: inset 0 0 1px 1px rgba(255,255,255, 0.9);
|
||||
color: #464646;
|
||||
text-shadow: 1px 1px 0 #fff;
|
||||
@@ -217,7 +225,7 @@ input[type=button]:focus, input[type=submit]:focus {
|
||||
background-image: -o-linear-gradient(top, #fff, #eee);
|
||||
background-image: linear-gradient(to bottom, #fff, #eee);
|
||||
border-color: #bbb;
|
||||
-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,.1);
|
||||
-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,.1);
|
||||
box-shadow: 0px 1px 1px rgba(0,0,0,.1);
|
||||
color: #000;
|
||||
}
|
||||
@@ -230,7 +238,7 @@ input[type=button]:active, input[type=submit]:active {
|
||||
background-image: linear-gradient(to bottom, #eee, #f9f9f9);
|
||||
border-color: #999 #ddd #ddd #999;
|
||||
color: #555;
|
||||
-webkit-box-shadow: inset 1px 1px 0 rgba(50,50,50,0.1);
|
||||
-webkit-box-shadow: inset 1px 1px 0 rgba(50,50,50,0.1);
|
||||
box-shadow: inset 1px 1px 0 rgba(50,50,50,0.1);
|
||||
}
|
||||
input[type=button]:focus, input[type=submit]:focus {
|
||||
@@ -255,9 +263,9 @@ input[name='Auto_increment'] { /* !!! */
|
||||
width: 6em;
|
||||
}
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
margin: 0;
|
||||
img {
|
||||
vertical-align: middle;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.js .column {
|
||||
@@ -265,25 +273,25 @@ position: relative;
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
.error {
|
||||
padding: 8px;
|
||||
color: red;
|
||||
.error {
|
||||
padding: 8px;
|
||||
color: red;
|
||||
background-color: #FEE;
|
||||
}
|
||||
.message {
|
||||
padding: 8px;
|
||||
.message {
|
||||
padding: 8px;
|
||||
background-color: #DDD;
|
||||
}
|
||||
.char {
|
||||
.char {
|
||||
color: #070;
|
||||
}
|
||||
.date {
|
||||
.date {
|
||||
color: #707;
|
||||
}
|
||||
.enum {
|
||||
.enum {
|
||||
color: #077;
|
||||
}
|
||||
.binary {
|
||||
.binary {
|
||||
color: red;
|
||||
}
|
||||
.jush-sql {
|
||||
@@ -295,20 +303,20 @@ font-size: 11px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin: 2px 0 0 270px;
|
||||
#content {
|
||||
margin: 2px 0 0 270px;
|
||||
padding: 10px 20px 20px 0;
|
||||
}
|
||||
#lang {
|
||||
font-size:10px;
|
||||
height: 23px;
|
||||
width: 255px;
|
||||
display: block;
|
||||
padding: 1px 0;
|
||||
position: absolute;
|
||||
display: block;
|
||||
padding: 1px 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
text-align: center;
|
||||
background-color: #f1f1f1;
|
||||
border: 1px solid #E3E3E3;
|
||||
line-height: 1.25em;
|
||||
@@ -316,43 +324,43 @@ line-height: 1.25em;
|
||||
#lang select {
|
||||
font-size: 10px;
|
||||
}
|
||||
#breadcrumb {
|
||||
margin: 0;
|
||||
#breadcrumb {
|
||||
margin: 0;
|
||||
height: 21px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 270px;
|
||||
background-color: #f1f1f1;
|
||||
border: 1px solid #E3E3E3;
|
||||
padding: 2px 12px;
|
||||
line-height: 1.25em }
|
||||
#menu {
|
||||
position: absolute;
|
||||
#menu {
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
top: 28px;
|
||||
left: 0;
|
||||
width: 255px;
|
||||
top: 28px;
|
||||
left: 0;
|
||||
width: 255px;
|
||||
background-color: #f1f1f1;
|
||||
border: 1px solid #E3E3E3;
|
||||
}
|
||||
#menu form {
|
||||
#menu form {
|
||||
margin: 0;
|
||||
}
|
||||
#menu p, #logins, #tables {
|
||||
#menu p, #logins, #tables, .tables-filter {
|
||||
padding-left: 8px;
|
||||
border-bottom: none;
|
||||
}
|
||||
#dbs {
|
||||
padding: 0 !important;
|
||||
}
|
||||
#menu form p {
|
||||
padding-left: 0;
|
||||
text-align: left;
|
||||
}
|
||||
#dbs {
|
||||
border-bottom: none !important;
|
||||
padding-left: 3px !important;
|
||||
}
|
||||
h1 .h1:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
h1, h2 {
|
||||
font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
|
||||
margin: 0;
|
||||
@@ -371,18 +379,18 @@ h3 {
|
||||
font: normal normal normal 18px/22px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
|
||||
margin: 20px 0 0 5px;
|
||||
}
|
||||
#schema {
|
||||
#schema {
|
||||
margin: 1.5em 0 0 220px;
|
||||
position: relative;
|
||||
}
|
||||
#schema .table {
|
||||
#schema .table {
|
||||
border: 1px solid #E3E3E3;
|
||||
background-color: #F1F1F1;
|
||||
padding: 0 2px;
|
||||
cursor: move;
|
||||
padding: 0 2px;
|
||||
cursor: move;
|
||||
position: absolute;
|
||||
}
|
||||
#schema .references {
|
||||
#schema .references {
|
||||
position: absolute;
|
||||
}
|
||||
.js .hidden {
|
||||
@@ -425,4 +433,4 @@ border-bottom-left-radius: 3px;
|
||||
-khtml-border-top-right-radius: 3px;
|
||||
-webkit-border-top-right-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* Theme by Douglas Damasio [http://github.com/douglasdamasio]
|
||||
* Based on Pepa Linha
|
||||
* Color syntax inspired by Dracula Theme [https://draculatheme.com/]
|
||||
@@ -28,7 +28,7 @@
|
||||
height: 100%;
|
||||
background: var(--color-darkBackground);
|
||||
}
|
||||
|
||||
|
||||
body {
|
||||
font-family: 'Source Sans Pro', sans-serif;
|
||||
}
|
||||
@@ -36,14 +36,14 @@
|
||||
div {
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: none;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
||||
h2 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@@ -57,12 +57,12 @@
|
||||
padding-bottom: 6px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
|
||||
.rtl h2 {
|
||||
margin: 0;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
|
||||
h3 {
|
||||
font-size: 22px;
|
||||
margin: 0 0 10px;
|
||||
@@ -72,66 +72,70 @@
|
||||
color: var(--color-darkGreen);
|
||||
|
||||
}
|
||||
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
margin-bottom: 15px;
|
||||
align-items: center;
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
a {
|
||||
color:var(--color-darkPink);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
|
||||
a:visited {
|
||||
color: var(--color-darkPurple);
|
||||
}
|
||||
|
||||
|
||||
a:link:hover,
|
||||
a:visited:hover {
|
||||
color: var(--color-darkPink);
|
||||
text-decoration:underline;
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
a[href*=charsets] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
table {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
|
||||
th, td {
|
||||
border: 0;
|
||||
padding: 6px;
|
||||
color: var(--color-darkOrange);
|
||||
}
|
||||
|
||||
|
||||
th {
|
||||
background: none;
|
||||
color: var(--color-darkCyan);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
tbody tr:hover td,
|
||||
tbody tr:hover th {
|
||||
background: var(--color-darkCurrentLine);
|
||||
}
|
||||
|
||||
|
||||
table:not(.checkable) th {
|
||||
min-width: 120px;
|
||||
}
|
||||
|
||||
|
||||
#edit-fields th {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
thead td,
|
||||
thead th {
|
||||
background: var(--color-darkComment);
|
||||
}
|
||||
|
||||
|
||||
thead td,
|
||||
thead td a,
|
||||
thead td a:link:hover,
|
||||
@@ -144,37 +148,38 @@
|
||||
thead th a:visited:hover {
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
table.checkable,
|
||||
p.links + table,
|
||||
pre + table,
|
||||
#edit-fields,
|
||||
p + table,
|
||||
h3 + table {
|
||||
h3 + table,
|
||||
.scrollable table{
|
||||
border: 1px solid var(--color-darkCurrentLine);
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
|
||||
table.checkable tbody tr:hover td,
|
||||
table.checkable tbody tr:hover th {
|
||||
background: var(--color-darkCurrentLine);
|
||||
}
|
||||
|
||||
|
||||
.js .checkable .checked td,
|
||||
.js .checkable .checked th {
|
||||
background: var(--color-darkDraculaSite);
|
||||
}
|
||||
|
||||
|
||||
.js .checkable thead .checked td,
|
||||
.js .checkable thead .checked th {
|
||||
background: var(--color-darkPurple);
|
||||
}
|
||||
|
||||
|
||||
.odd th,
|
||||
.odd td {
|
||||
background: var(--color-darkDraculaVSCode);
|
||||
}
|
||||
|
||||
|
||||
fieldset {
|
||||
display: inline-block;
|
||||
padding: 15px;
|
||||
@@ -183,21 +188,21 @@
|
||||
border: 0;
|
||||
background: var(--color-darkBackground);
|
||||
}
|
||||
|
||||
|
||||
fieldset select {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
|
||||
fieldset input[type=button],
|
||||
fieldset input[type=submit],
|
||||
fieldset p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
fieldset div p {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
|
||||
legend {
|
||||
display: inline-block;
|
||||
padding: 6px 15px;
|
||||
@@ -206,17 +211,17 @@
|
||||
font-family: 'Source Sans Pro', sans-serif;
|
||||
color: var(--color-darkOrange);
|
||||
}
|
||||
|
||||
|
||||
legend a,
|
||||
legend a:link:hover {
|
||||
color: var(--color-darkOrange);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
code {
|
||||
background: none;
|
||||
}
|
||||
|
||||
|
||||
p code,
|
||||
pre code,
|
||||
pre[contenteditable=true] {
|
||||
@@ -225,7 +230,7 @@
|
||||
font-size: 17px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
|
||||
p code + a,
|
||||
p code + a:link:hover,
|
||||
p code + a:visited:hover {
|
||||
@@ -237,7 +242,7 @@
|
||||
text-decoration: underline;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
|
||||
#content {
|
||||
margin: 0;
|
||||
margin-left: 400px;
|
||||
@@ -245,12 +250,12 @@
|
||||
padding: 0;
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
|
||||
#content > p {
|
||||
margin-bottom: 15px;
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
.rtl #content {
|
||||
margin: 0;
|
||||
margin-left: 54px;
|
||||
@@ -258,7 +263,7 @@
|
||||
padding: 0;
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
|
||||
#menu {
|
||||
width: 347px;
|
||||
border-right: 1px solid var(--color-darkBackground);
|
||||
@@ -272,51 +277,44 @@
|
||||
padding: 0 15px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
#menu h1 {
|
||||
background: none left top no-repeat;
|
||||
/* background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAAyCAIAAABgVkRrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTA0RDI5NkM5QkRGMTFFMzg4ODNEQjEzNjY5NzJEMEEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTA0RDI5NkQ5QkRGMTFFMzg4ODNEQjEzNjY5NzJEMEEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MDREMjk2QTlCREYxMUUzODg4M0RCMTM2Njk3MkQwQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1MDREMjk2QjlCREYxMUUzODg4M0RCMTM2Njk3MkQwQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnG4emkAAASXSURBVHja7Fk9aNtAFL6EDKKUoqGDySRKB1FC8dDBdCgeOmQoIUMG0yGE0EFT8dDBUwidPJQQQgcNpYROGjKI0sFDB9GhaMhgSgcPpWgqHjqYYsINJfQ7PfV0tmX9JI4Sgx+HI8f26bt3733fe6elIf/LbqwdHbJWS1wYBrMstrXJVg36ZJnNhQWBWMB9k+215gq3tDeHBH3pRseJtC8ee2ezEzd62+ncDH/DhS+ttC88qbMPDntaj952uyvXD3q7ETvyyE77pq5HFz9614r7V8C2GnBezBgp9tGNl3ffzIjvwZ9B//dA7Mz3YPLTyl29UhE+MI0KW9YKh2yjwQZichEAjsNu6WlUqNqkvwHUO+0BJeD2gn4hJFXTwAIw6jUzYxlwHkCTvWqy1+0Ct7FtsPh/3Ofc9brOJ5+8ezHr9gKMcGpWf2SK8bhKk48sA1kIOiODmzc2c8U0DLrzwhI5ypjA3fsZtNrOgPP4y5pmGJXamqHd1kQMTIkENYpwEfQHEW7GsGkYZse393ewb+Y9IwE0PJcOejQ2pFgK3Li3BI14hZM269XKaiXPVPodHUOs6l48o/+t5wO038OcQGztHzd31uPfUEgQdCQi3JkfumLLHa9LoK2tunPQtJ6v5wQ9zWoPzebupms34QKxmZNJAugIDzJE+V4rbTrDSMYtr3AD+H5WFIfZ0lIFPu50otiF7zfW2dlgquKccTFWRxYQ8wlFJOVTdc2gAChq/V99vxdgD7O5CIBO/Yi/P3vsUY2dOOxBdSrzIBm2dxJwq+hlaiId9dua5OlEv/IhH0vKvAYXfvUjvUTFB2STeinJu91Oxo3Eh58onwRXcB7zWkGj/Maa9203+9soPIyWEKBEkQdc8veo+sS4wQkYzV1Bi+A1Ee5DnhO33BxsSw1/wszGPHkXmqI7yIQzPvnvhPqEFjAWtSq7j7n2YplwSctVV8F/FXazbN76nQXu68btfe3Odmqwahl5Ca6tel0UVdnVc6pRBX/JkrgYn0RCY0cdAMhYvGYxHbEklbJ++FoqD8LTUiwTlZLEha55WKOmSybWTCXD1eJG8dnc4XAYqmdgmoRFyp/ZqqHbgMiD8qGXZeAOs1RD9YyhBgBVTgL3cMTHwKd2xyUL50qmTI5p/oK/F7jnEjeycLZTFz02SrKlaSPGbe0fOx+9mbTGcMHhe/fwuFMGn4Dy7BMPA3oBGkZrbIDgcp9JgK37YYtZjmSuqApH9yPRcTp+TM939THOpkaYroMguRuSE14tbuegif11vS58poYm7i1vn6fdxF6hMoNk4leIvTJ0B1FhPQ/PxM45eZ2HGjkY8jHXqptghGJJqqmKVHn1oCr4k93xgr8XuOcZ9zmf7dQym68Et6QFcFaBk7EsQ5fdfuteHW7xPM3asyVh05EkxFJITMHuGDUCukxwvOz3YI31mtWoX7TRXkrDjQhBLeFOHBtQQ6n/f8TDlAd/6mNBP7xO7Ecbz2qNjfrl6qoU3Mr5Qa4j9yyLHqZd7jwjL241QQFdPiJTdT7RsBuapslzi5mqVSHcKXYetcZlSelU3P8EGADW25uhkIE0mQAAAABJRU5ErkJggg==); */
|
||||
background-image: url();
|
||||
line-height: 50px;
|
||||
padding-left: 50px;
|
||||
padding-top: 9px;
|
||||
/* text-transform: lowercase; */
|
||||
margin: 25px 0 10px 16px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#menu h1 a {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
#menu h1 .version {
|
||||
color: var(--color-darkPurple);
|
||||
}
|
||||
|
||||
|
||||
#menu a {
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
#menu p, #tables {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
#menu #dbs {
|
||||
background: var(--color-darkDraculaVSCode);
|
||||
padding: 0 15px 15px;
|
||||
padding: 10px 15px 15px;
|
||||
border: 1px solid var(--color-darkForeground);
|
||||
border-bottom: 0;
|
||||
box-sizing: border-box;
|
||||
color: var(--color-darkCyan);
|
||||
}
|
||||
|
||||
|
||||
#menu #dbs select {
|
||||
outline: 0;
|
||||
border-color: var(--color-darkComment);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
#menu p.links {
|
||||
margin: 0 0 15px;
|
||||
border: 1px solid var(--color-darkForeground);
|
||||
@@ -326,50 +324,55 @@
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
#menu p.links a {
|
||||
padding: 8px;
|
||||
margin: 0;
|
||||
display: table-cell;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
|
||||
#menu p.links a:hover {
|
||||
color: var(--color-darkPink);
|
||||
}
|
||||
|
||||
|
||||
#menu p.links a.active {
|
||||
font-weight: normal;
|
||||
background: var(--color-darkCurrentLine);
|
||||
color: var(--color-darkYellow);
|
||||
}
|
||||
|
||||
|
||||
.tables-filter {
|
||||
margin-top: 32px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#content p.links {
|
||||
margin: -10px 0 15px;
|
||||
}
|
||||
|
||||
|
||||
#content p.links a {
|
||||
padding: 8px;
|
||||
margin: 0;
|
||||
display: table-cell;
|
||||
border: 1px solid var(--color-darkBackground);
|
||||
}
|
||||
|
||||
|
||||
#content p.links a,
|
||||
#content p.links a:visited,
|
||||
#content p.links a:hover {
|
||||
color: var(--color-darkCyan);
|
||||
}
|
||||
|
||||
|
||||
#content p.links a.active {
|
||||
font-weight: normal;
|
||||
border: 1px solid var(--color-darkTitleSite);
|
||||
background: var(--color-darkCurrentLine);
|
||||
}
|
||||
|
||||
|
||||
#tables {
|
||||
max-height: 100%;
|
||||
margin: 32px -15px !important;
|
||||
margin: 15px -15px 32px !important;
|
||||
position: absolute;
|
||||
left: 15px;
|
||||
right: 15px;
|
||||
@@ -378,33 +381,33 @@
|
||||
overflow: hidden !important;
|
||||
overflow-y: auto !important;
|
||||
}
|
||||
|
||||
|
||||
.rtl #tables {
|
||||
overflow: hidden !important;
|
||||
overflow-y: auto !important;
|
||||
}
|
||||
|
||||
|
||||
#tables a {
|
||||
float: right;
|
||||
padding: 6px 15px;
|
||||
}
|
||||
|
||||
|
||||
.rtl #tables a {
|
||||
float: none;
|
||||
}
|
||||
|
||||
|
||||
#tables .structure, #tables .view {
|
||||
float: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
.rtl #tables a:first-child,
|
||||
.rtl #tables br + a {
|
||||
float: left;
|
||||
display: block;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
|
||||
#tables a:hover,
|
||||
#tables a:hover + a,
|
||||
#tables a.active,
|
||||
@@ -416,15 +419,15 @@
|
||||
#tables br {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.js .column {
|
||||
background: var(--color-darkDraculaVSCode);
|
||||
}
|
||||
|
||||
|
||||
.js .checked .column {
|
||||
background: var(--color-darkDraculaVSCode);
|
||||
}
|
||||
|
||||
|
||||
.pages {
|
||||
left: 400px;
|
||||
background: var(--color-darkCyan);
|
||||
@@ -434,7 +437,7 @@
|
||||
display: inline-block;
|
||||
position: static;
|
||||
}
|
||||
|
||||
|
||||
.pages a,
|
||||
.pages a:link,
|
||||
.pages a:link:hover,
|
||||
@@ -443,7 +446,7 @@
|
||||
color: var(--color-darkBackground);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
#breadcrumb {
|
||||
margin: 0;
|
||||
left: 400px;
|
||||
@@ -452,36 +455,40 @@
|
||||
padding-top: 25px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
|
||||
#breadcrumb a {
|
||||
color: var(--color-darkForeground);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
#breadcrumb,
|
||||
#breadcrumb a:hover {
|
||||
color: var(--color-darkTitleSite);
|
||||
}
|
||||
|
||||
|
||||
.rtl #breadcrumb {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-top: 25px;
|
||||
right: 400px;
|
||||
}
|
||||
|
||||
|
||||
.logout,
|
||||
.rtl .logout {
|
||||
top: 30px;
|
||||
top: 20px;
|
||||
right: 54px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
.rtl .logout {
|
||||
right: auto;
|
||||
left: 54px;
|
||||
}
|
||||
|
||||
|
||||
#logout {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
input:not([type]),
|
||||
input[type="color"],
|
||||
input[type="email"],
|
||||
@@ -498,7 +505,11 @@
|
||||
box-sizing: border-box;
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
input::placeholder {
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
table:not(#table) input:not([type]),
|
||||
table:not(#table) input[type="color"],
|
||||
table:not(#table) input[type="email"],
|
||||
@@ -510,7 +521,7 @@
|
||||
table:not(#table) input[type="search"] {
|
||||
min-width: 280px;
|
||||
}
|
||||
|
||||
|
||||
input[type=submit],
|
||||
input[type=button] {
|
||||
border: 0;
|
||||
@@ -526,14 +537,14 @@
|
||||
border-radius: 5px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
|
||||
input[type=submit][disabled],
|
||||
input[type=button][disabled] {
|
||||
background: var(--color-darkTitleSite) !important;
|
||||
color: var(--color-darkBackground);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
|
||||
input[type=submit]:hover,
|
||||
input[type=button]:hover,
|
||||
input[type=submit]:focus,
|
||||
@@ -541,17 +552,17 @@
|
||||
background: var(--color-darkGreen);
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
|
||||
.logout input[type=submit] {
|
||||
background: var(--color-darkRed);
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
.logout input[type=submit]:hover {
|
||||
background: var(--color-darkRed);
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
|
||||
input.default,
|
||||
input.default {
|
||||
box-shadow: none;
|
||||
@@ -559,22 +570,22 @@
|
||||
color: var(--color-darkDraculaVSCode);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
select {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 6px 0;
|
||||
padding: 6px;
|
||||
border: 1px solid var(--color-darkCurrentLine);
|
||||
background-color: var(--color-darkBackground);
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
label {
|
||||
cursor: pointer;
|
||||
margin: 18px;
|
||||
color: var(--color-darkOrange);
|
||||
}
|
||||
|
||||
|
||||
.error,
|
||||
.message {
|
||||
margin: 0;
|
||||
@@ -582,23 +593,23 @@
|
||||
background: var(--color-darkCurrentLine);
|
||||
color: var(--color-darkRed);
|
||||
}
|
||||
|
||||
|
||||
#logins a,
|
||||
#tables a,
|
||||
#tables span {
|
||||
background: none;
|
||||
}
|
||||
|
||||
|
||||
#form > p {
|
||||
margin-bottom: 15px;
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#schema .table {
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
|
||||
#schema .table a {
|
||||
display: block;
|
||||
margin: -6px;
|
||||
@@ -607,20 +618,20 @@
|
||||
color: var(--color-darkBackground);
|
||||
background: var(--color-darkPurple);
|
||||
}
|
||||
|
||||
|
||||
#schema .table br {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
#schema .table span {
|
||||
display: block;
|
||||
margin-bottom: 1px solid var(--color-darkDraculaVSCode);
|
||||
}
|
||||
|
||||
|
||||
#lang {
|
||||
position: fixed;
|
||||
top: 55px;
|
||||
right: 100%;
|
||||
top: 30px;
|
||||
right: calc(100% + 8px);
|
||||
z-index: 10;
|
||||
margin-right: -340px;
|
||||
line-height: normal;
|
||||
@@ -628,7 +639,7 @@
|
||||
left: auto;
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
|
||||
#lang select {
|
||||
font-size: 12px;
|
||||
padding: 0;
|
||||
@@ -641,26 +652,26 @@
|
||||
cursor: pointer;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
|
||||
#lang select option {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
.rtl #lang {
|
||||
margin-right: 0;
|
||||
left: 100%;
|
||||
margin-left: -261px;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
|
||||
.jush {
|
||||
color: var(--color-darkForeground);
|
||||
}
|
||||
|
||||
|
||||
.jush a {
|
||||
color: var(--color-darkPurple);
|
||||
}
|
||||
|
||||
|
||||
.jush-sql a,
|
||||
.jush-sql_code a,
|
||||
.jush-sqlite a,
|
||||
@@ -670,7 +681,7 @@
|
||||
.jush-simpledb a {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
.jush-bac,
|
||||
.jush-php_bac,
|
||||
.jush-bra,
|
||||
@@ -678,7 +689,7 @@
|
||||
.jush-sqlite_quo {
|
||||
color: var(--color-darkYellow);
|
||||
}
|
||||
|
||||
|
||||
.jush-php_quo,
|
||||
.jush-quo,
|
||||
.jush-quo_one,
|
||||
@@ -690,21 +701,21 @@
|
||||
.jush-sql_eot {
|
||||
color: var(--color-darkOrange);
|
||||
}
|
||||
|
||||
|
||||
.jush-num,
|
||||
.jush-clr {
|
||||
color: var(--color-darkPurple);
|
||||
}
|
||||
|
||||
|
||||
@media print {
|
||||
.logout {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
#breadcrumb {
|
||||
position: static;
|
||||
}
|
||||
|
||||
|
||||
#content {
|
||||
margin: 0;
|
||||
}
|
||||
|
@@ -225,8 +225,8 @@ h1{
|
||||
}
|
||||
|
||||
h2{
|
||||
font-size: 24px;
|
||||
margin: 0;
|
||||
font-size: 24px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 50px;
|
||||
border-bottom: 1px solid #333;
|
||||
@@ -442,6 +442,13 @@ td textarea
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
th input::placeholder,
|
||||
td input::placeholder
|
||||
{
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
th input:hover,
|
||||
th select:hover,
|
||||
td input:hover,
|
||||
@@ -502,7 +509,7 @@ input[type='radio']{
|
||||
height: 18px;
|
||||
vertical-align: middle;
|
||||
margin-left: 8px;
|
||||
margin-right: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/* checkbox */
|
||||
@@ -657,6 +664,14 @@ legend{
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.footer {
|
||||
border-image: linear-gradient(rgba(0, 0, 0, .2), #000) 100% 0;
|
||||
}
|
||||
|
||||
.footer > div{
|
||||
background: #000;
|
||||
}
|
||||
|
||||
/* menu
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
@@ -692,12 +707,6 @@ legend{
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
/* db select */
|
||||
#dbs select{
|
||||
width: 228px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
/* links */
|
||||
#menu .links{
|
||||
padding-top: 0;
|
||||
@@ -985,6 +994,11 @@ code.jush-sql ~ a:first-of-type::before{
|
||||
/* logout form
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
body > form{
|
||||
position: absolute;
|
||||
.logout {
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
#logout {
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
@@ -196,7 +196,7 @@ html>/**/body #content table a[id|="Rows"] { /* Select data (Rows) */
|
||||
margin-right: 5px;
|
||||
}
|
||||
/* Edit,modify row (pen icon) */
|
||||
html>/**/body #content form table thead>tr>td a[href$="&modify=1"],
|
||||
html>/**/body #content form table thead>tr>td a[href$="&modify=1"],
|
||||
html>/**/body #content form table a[href*="&edit="][href*="&where"] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjcwNEVCNDY0MDM4NzExRTFBREUyQ0JDMzAwQUI1NjI2IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjcwNEVCNDYzMDM4NzExRTFBREUyQ0JDMzAwQUI1NjI2IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MT7FiQAAAiZJREFUeNqMk1FIU1EYx/9nO3e+NranKIw2ErM9SQQXxCKMRdFDCWEaNIuIetseQiIKG/jQQ4H0kkQxdLRaYiijtdWwljjKjQlNRQPHEhWUjca9eb3bPd2tFTdrrgMf53x8/98533e+cwhqDFsDQccpILHYXvbv+f1NBcD5DfB8BcZpLfDAvp9+YrE81c+azc6jLlf3RE/PLgWgtBaoGVZZltv4dLpbcjph6+w8Fhgc3CD/AQIMhzOr5osOV7orlUrBaDTC29gY2L25eZPurwfOtAIHW6rUosKyjOtXr7ns4bEW7G1+Bp7n3Tv1eq+V42bojfMAIdvDpzv67MWiDIvFguFHTS8FgfrnCJmZ4zhUvUQtLEkiVlYWEJ98MW7dg35F0SV/yWgtWBByyGaXEH379L16oFtPyRutlG4H53KrEIQsXo0ORQ0c7qg9C2+V02rw2loakvQdwz7PhMGAXkYR0krVlpaN/gteXp6HohQw9MQzqcK3GSO/Yd8YgyiKf2bAGBrEPC6fdfTZM5nPqq/g8YA3pqZ9S42V4ZEww0iI/VUxFSUYCkW0nbsSOT415YbJZMbDB76PtARTvA5GgWBUqdosmhdJs413tBOdbofR1CXev+uI19Ux94ckCb77xGr9NdD1PE4eOnKhdfR5/3Qk5I99WUIgkkBcLcykxhWNFbf4pd2V0htkl06QgdkMYskFTOdFtlERF0qXXZm1a7kSL9sPAQYA2Q4Ie25SbgYAAAAASUVORK5CYII=") no-repeat 3px 3px;
|
||||
}
|
||||
@@ -485,9 +485,10 @@ fieldset {
|
||||
/*** Others ***/
|
||||
#lang {
|
||||
background: transparent;
|
||||
font-size: .9em;
|
||||
font-size: .9em;
|
||||
left: auto;
|
||||
right: 120px;
|
||||
top: 3px;
|
||||
position:fixed;
|
||||
z-index: 10;
|
||||
padding-top: 2px;
|
||||
|
Submodule designs/hydra deleted from f8aa49777e
@@ -1,29 +0,0 @@
|
||||
/* Redesigned by Janamou - September 2008 */
|
||||
|
||||
body { color: #000; background-color: #fff; line-height: 1.25em; font-family: Verdana, Arial, Helvetica, sans-serif; margin: 0; font-size: 90%; }
|
||||
a { color: black; }
|
||||
a:visited { color: black; }
|
||||
a:hover { color: #626262; text-decoration: none; }
|
||||
h1 { margin: 0; padding: 5px; }
|
||||
h2 { margin: 0; padding: 7px 0px 7px 10px; border: 1px solid #a3a3a3; font-weight: normal; background: #FCE28E url('data:image/gif;base64,R0lGODlhEAAiAIMAAP/nnf/nn//nof/kk//llP/ab//Zav/aa/7aagAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAEAAiAAMERBDISSsIOOvNu/9gKI5k6VnoJKxs6wpmmsayZQ54jhN8zxfAoHBYMBiPyKTyeGg6m4iodEpFLK/YrHbL7Xq/4LB4LI4AADs=') top left repeat-x; margin-bottom: 20px; }
|
||||
h3 { font-weight: normal; font-size: 130%; margin: .8em 0; }
|
||||
table { margin: 0 20px .8em 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; }
|
||||
td, th { margin-bottom: 1em; border: 0; border-right: 1px solid #999; border-bottom: 1px solid #999; padding: .2em .3em; }
|
||||
th { background: black; color: white; }
|
||||
th a, th a:visited { color: white; text-decoration: none; }
|
||||
th a:hover { color: #626262; }
|
||||
fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: 0 .5em .5em 0; border: 1px solid #999; }
|
||||
img { vertical-align: middle; margin: 0; padding: 0; }
|
||||
.error { color: red; background: #fee; padding: .5em .8em; border: 1px solid red; }
|
||||
.message { color: black; background: #dedede; padding: .5em .8em; border: 1px solid black; }
|
||||
#menu { overflow: scroll; position: absolute; top: 0; left: 0; width: 270px; white-space: nowrap; background: #FFE594 url('data:image/gif;base64,R0lGODlhXgEBAIIAAPzabPzijvzihPzefvzmnPzedPzmlPzadCwAAAAAXgEBAAIDYEi63P5wGTXJvNZew7sJBNiBwWeWaPoFbNq+cCzPs8DaeJDvuGAPOh9wIBgWAwMjMblsOpnQqHRKrRaY1+sguz1sB4esN0wulM+HtNqMZqsBafgBTp/PAfQ8fs/v+/8ACQA7') top left repeat-y; height: 100%; _height: 650px; border: 1px solid #a3a3a3; }
|
||||
#menu form { margin: 0; }
|
||||
#menu p, #logins li, #tables li { text-align: center; font-size: 11px; }
|
||||
#menu p a, #logins li a, #tables li a { color: black; }
|
||||
#menu p a:hover, #logins li a:hover, #tables li a:hover { color: #626262; text-decoration: none; }
|
||||
#logins a, #tables a, #tables span { background: #FFE594; }
|
||||
#content { margin: 1.5em 0 0 293px; padding: 10px 20px 20px 0; }
|
||||
#lang { margin: 0; padding: 0; text-align: center; font-size: 10px; width: 270px; background-color: #d9dadb; border-bottom: 1px solid black; }
|
||||
#lang a { color: black; font-weight: bold; }
|
||||
#breadcrumb { position: absolute; top: 0; left: 293px; background: #d9dadb; font-size: 10px; margin: 0; padding: 2px 5px 2px 5px; }
|
||||
#breadcrumb a { color: black; }
|
@@ -1,290 +0,0 @@
|
||||
/*
|
||||
Ok, it's a mess. You don't have to read it!
|
||||
*/
|
||||
|
||||
body {
|
||||
font-family: "Segoe UI", Tahoma, sans-serif;
|
||||
}
|
||||
|
||||
body a[href^="#"] {
|
||||
color:#000; text-decoration: none; border-bottom: 1px dotted #999;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.jush-bac {
|
||||
color:#22c !important;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color:#000; text-decoration: none;
|
||||
}
|
||||
|
||||
/*
|
||||
@group Headers (visually)
|
||||
*/
|
||||
|
||||
#menu .logout {
|
||||
border-bottom:0; height:auto; padding: 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@end
|
||||
*/
|
||||
|
||||
/*
|
||||
@group Sidebar (visually)
|
||||
*/
|
||||
|
||||
#menu {
|
||||
margin:0; padding:0;
|
||||
position:static; float:left; margin-left:-100%;
|
||||
width:25%; padding-top:80px;
|
||||
line-height:1.4;
|
||||
}
|
||||
|
||||
/* header "adminer 2.3.2" */
|
||||
h1 {
|
||||
margin:0; padding:0;
|
||||
position: fixed; left:0; top:0;
|
||||
width:25%; height:60px;
|
||||
border-bottom: 1px solid #bbb;
|
||||
background-color:#efefef; background-color:rgba(240,240,240,0.9);
|
||||
line-height:60px; text-indent:20px;
|
||||
}
|
||||
|
||||
#h1 {
|
||||
font-weight:bold; color:#666; font-style:normal;
|
||||
}
|
||||
|
||||
#menu a {
|
||||
padding:1px; margin-right:4px;
|
||||
color:#000; font-size:small; text-decoration: none;
|
||||
}
|
||||
|
||||
#menu a:hover {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
#menu #tables + p a {
|
||||
color:green;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
#menu form+form, #menu #tables {
|
||||
position: fixed; left:0; top:100px; width:25%;
|
||||
}
|
||||
|
||||
#menu #tables {
|
||||
max-height:100%; padding-top:130px; overflow-y:auto;
|
||||
}
|
||||
*/
|
||||
/* @todo ev. position fixed for whole sidebar (not simple) */
|
||||
|
||||
/*
|
||||
@end
|
||||
*/
|
||||
|
||||
/*
|
||||
@group Sidebar (based on HTML position, not visual)
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* languages */
|
||||
#lang {
|
||||
position: absolute; left:auto; left:120px; top:0px; z-index:3;
|
||||
font-size:11px; line-height:60px; text-decoration: underline; text-transform:lowercase;
|
||||
opacity:0.5;
|
||||
}
|
||||
|
||||
#lang:hover {
|
||||
opacity:1;
|
||||
}
|
||||
|
||||
#lang select {
|
||||
display:none;
|
||||
}
|
||||
|
||||
#lang:hover select {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* logout */
|
||||
input[name="logout"] {
|
||||
position:fixed; right:15px; top:22px;
|
||||
}
|
||||
|
||||
/*
|
||||
@end
|
||||
*/
|
||||
|
||||
/*
|
||||
@group Content: main
|
||||
*/
|
||||
|
||||
|
||||
#content {
|
||||
margin:0; padding:155px 0 50px 0;
|
||||
position: static; float:left; margin-left:25%;
|
||||
width:75%;
|
||||
}
|
||||
|
||||
#content > * {
|
||||
margin-left:20px; margin-right:20px;
|
||||
}
|
||||
|
||||
|
||||
#content h2 {
|
||||
margin:0; padding:0;
|
||||
position:fixed; left:25%; top:0; margin-left:-1px;
|
||||
width:75%;
|
||||
border-bottom: 1px solid #bbb;
|
||||
background-color:#efefef; background-color:rgba(240,240,240,0.9);
|
||||
font-weight:bold; line-height:60px; text-indent:20px;
|
||||
}
|
||||
|
||||
/* breadcrumbs */
|
||||
#breadcrumb {
|
||||
margin:0; padding:0;
|
||||
position:absolute; top:75px; left:25%;
|
||||
background:url() no-repeat;
|
||||
text-indent: 20px;
|
||||
}
|
||||
|
||||
/* Dump link */
|
||||
#menu .logout a {
|
||||
margin:0; padding:2px 4px;
|
||||
position:absolute; left:25%; top:110px;
|
||||
border-radius:3px;
|
||||
background-color:#053AC0; color:#fff; margin-left:120px; text-transform: uppercase; font-size:11px; text-decoration: none;
|
||||
}
|
||||
|
||||
/* SQL command link */
|
||||
body #menu .logout a[href$="sql="] {
|
||||
margin-left: 20px;
|
||||
background-color:green;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@end
|
||||
*/
|
||||
|
||||
/*
|
||||
@group Content: details
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#content p > a {
|
||||
margin-right:1ex;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#content p > a[href$="&database="],
|
||||
#content p > a[href*="&edit="] {
|
||||
color:green !important;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@group Messages
|
||||
*/
|
||||
|
||||
.message {
|
||||
background-color:#D0EE76;
|
||||
color:#000;
|
||||
}
|
||||
|
||||
.error {
|
||||
background-color:#fbb;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.message a,
|
||||
.error a {
|
||||
margin-left:1em;
|
||||
color:#000; opacity:0.5; font-size:smaller;
|
||||
}
|
||||
|
||||
/*
|
||||
@end
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#menu p {
|
||||
padding:20px; /* wtf? */
|
||||
}
|
||||
|
||||
#menu form + form p:before {
|
||||
content:'DB:'; font-size:11px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
@group Tables
|
||||
*/
|
||||
|
||||
table {
|
||||
border:1px solid #ccc;
|
||||
}
|
||||
|
||||
table thead tr > * {
|
||||
padding:5px;
|
||||
border-color:#ccc;
|
||||
border-bottom:2px solid #ccc;
|
||||
background-color:#f2f2f2;
|
||||
text-align: left; font-weight:bold;
|
||||
}
|
||||
|
||||
thead a {
|
||||
color:#333; text-decoration: none;
|
||||
}
|
||||
|
||||
body thead tr:hover > * {
|
||||
background-color:#f2f2f2;
|
||||
}
|
||||
|
||||
body tbody tr:hover > * {
|
||||
background-color:#f2f7ff;
|
||||
}
|
||||
|
||||
/*
|
||||
@end
|
||||
*/
|
||||
|
||||
/*
|
||||
@group Pagination
|
||||
*/
|
||||
|
||||
#content .pages {
|
||||
margin:1em 0 2em;
|
||||
}
|
||||
|
||||
#content .pages a {
|
||||
padding:3px 5px; margin:0 1px;
|
||||
border:1px solid #eee;
|
||||
text-decoration:none; color: #000;
|
||||
}
|
||||
|
||||
#content .pages a:hover {
|
||||
background-color:#eee;
|
||||
border-color: #fff;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@end
|
||||
*/
|
||||
/*
|
||||
@end
|
||||
*/
|
@@ -2,11 +2,11 @@
|
||||
/* So I merged them into one file, fixed a couple of problems, added some paddings here and there, voila!
|
||||
|
||||
/* Redesigned (iconized) by Hever [hev.cz] - June 2009, ver 0.1.3 */
|
||||
/**
|
||||
/**
|
||||
* Alternative style for Adminer by Frank Bueltge
|
||||
* @link http://bueltge.de/
|
||||
*/
|
||||
|
||||
|
||||
/* Added icons */
|
||||
/* IE doesn't support inline images - using some hack that eliminate IE*/
|
||||
html/*\*/>/*/*/body .error {background:#FFEEEE url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIsSURBVDjLpVNLSJQBEP7+h6uu62vLVAJDW1KQTMrINQ1vPQzq1GOpa9EppGOHLh0kCEKL7JBEhVCHihAsESyJiE4FWShGRmauu7KYiv6Pma+DGoFrBQ7MzGFmPr5vmDFIYj1mr1WYfrHPovA9VVOqbC7e/1rS9ZlrAVDYHig5WB0oPtBI0TNrUiC5yhP9jeF4X8NPcWfopoY48XT39PjjXeF0vWkZqOjd7LJYrmGasHPCCJbHwhS9/F8M4s8baid764Xi0Ilfp5voorpJfn2wwx/r3l77TwZUvR+qajXVn8PnvocYfXYH6k2ioOaCpaIdf11ivDcayyiMVudsOYqFb60gARJYHG9DbqQFmSVNjaO3K2NpAeK90ZCqtgcrjkP9aUCXp0moetDFEeRXnYCKXhm+uTW0CkBFu4JlxzZkFlbASz4CQGQVBFeEwZm8geyiMuRVntzsL3oXV+YMkvjRsydC1U+lhwZsWXgHb+oWVAEzIwvzyVlk5igsi7DymmHlHsFQR50rjl+981Jy1Fw6Gu0ObTtnU+cgs28AKgDiy+Awpj5OACBAhZ/qh2HOo6i+NeA73jUAML4/qWux8mt6NjW1w599CS9xb0mSEqQBEDAtwqALUmBaG5FV3oYPnTHMjAwetlWksyByaukxQg2wQ9FlccaK/OXA3/uAEUDp3rNIDQ1ctSk6kHh1/jRFoaL4M4snEMeD73gQx4M4PsT1IZ5AfYH68tZY7zv/ApRMY9mnuVMvAAAAAElFTkSuQmCC") no-repeat scroll 0.8em center; padding-left:38px;}
|
||||
@@ -74,10 +74,9 @@ thead td, thead th {background-color: #DFDFDF; border: none; border-bottom: 1px
|
||||
thead tr:hover td, thead tr:hover th {background-color: #DDD !important;}
|
||||
tr:nth-child(2n) td, tr:nth-child(2n) th, .odd td, .odd th, tr.odd {background-color: #F1F1F1;}
|
||||
tr:hover td, tr:hover th {background-color: #BCD;}
|
||||
fieldset {display: inline; vertical-align: top; padding: 2px 12px; margin: 25px 12px 12px 0; border: none; background-color: #F1F1F1; border: 1px solid #E3E3E3; position: relative; padding-top: 14px;}
|
||||
fieldset {display: inline; vertical-align: top; padding: 2px 12px; margin: 25px 12px 12px 0; border: none; background-color: #F1F1F1; border: 1px solid #E3E3E3; position: relative;}
|
||||
fieldset, x:-moz-any-link {padding-top: 4px;}
|
||||
fieldset {%padding-top: 14px;}
|
||||
legend {font-weight: 900; color: #000; position: absolute; top: -1.666em; left: -1em; padding: 0 4px;}
|
||||
legend {font-weight: 900; color: #000; position: relative; top: -0.8em; left: -1em; padding: 0 4px;}
|
||||
input[name='limit'], input[name*='length'] {width: 3em; xtext-align: right;}
|
||||
input[name='text_length'] {width: 5em;}
|
||||
select + input, select + select {margin-left: 2px;}
|
||||
@@ -93,6 +92,8 @@ fieldset div {margin-bottom: 2px;}
|
||||
input[name='Comment'] { /* !!! */ width: 24em;}
|
||||
input[name='Auto_increment'] { /* !!! */width: 6em;}
|
||||
img {vertical-align: middle; margin: 0; padding: 0;}
|
||||
.footer{border-image: linear-gradient(rgba(249, 249, 249, .2), #F9F9F9) 100% 0}
|
||||
.footer > div {background-color: #F9F9F9;}
|
||||
.error {padding: 8px; color: red; background-color: #FEE;}
|
||||
.message {padding: 8px; background-color: #DDD;}
|
||||
.char {color: #070;}
|
||||
@@ -108,7 +109,8 @@ img {vertical-align: middle; margin: 0; padding: 0;}
|
||||
#menu form {margin: 0;}
|
||||
#menu p, #logins, #tables {padding-left: 8px; font-size: 10pt; border-bottom: none;}
|
||||
#menu form p {padding-left: 0; text-align: left;}
|
||||
h1 .h1:hover {text-decoration: underline;}
|
||||
#dbs, .tables-filter {padding-left:8px !important;}
|
||||
h1 .h1:hover {text-decoration: underline;}
|
||||
h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 10px; line-height: 35px; text-shadow: rgba(255,255,255,1) 0 1px 0px; background: none;}
|
||||
h1 {font-size: 12px;}
|
||||
h1 .h1 {font-size: 12px;}
|
||||
@@ -117,8 +119,6 @@ h3 {margin: 40px 0 0; font-weight: 400; font-size: 130%;}
|
||||
#schema {margin: 1.5em 0 0 220px; position: relative;}
|
||||
#schema .table {border: 1px solid #E3E3E3; background-color: #F1F1F1; padding: 0 2px; cursor: move; position: absolute;}
|
||||
#schema .references {position: absolute;}
|
||||
.js .hidden {display: inline;}
|
||||
.js td.hidden, .js input.hidden {display: none;}
|
||||
legend a {color: #333; text-decoration: none; cursor: default;}
|
||||
legend a:hover {color: #333;}
|
||||
code {background: transparent;}
|
||||
@@ -126,4 +126,4 @@ fieldset, legend, h2, table, .error, .message {-moz-border-radius: 5px; -khtml-b
|
||||
#breadcrumb, #lang, #menu {-moz-border-radius-bottomright: 5px; -khtml-border-bottom-right-radius: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;}
|
||||
#breadcrumb {-moz-border-radius-bottomleft: 5px; -khtml-border-bottom-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px;}
|
||||
#menu {-moz-border-radius-topright: 5px; -khtml-border-top-right-radius: 5px; -webkit-border-top-right-radius: 5px; border-bottom-top-radius: 5px;}
|
||||
#loader {margin-left: 35px;}
|
||||
#loader {margin-left: 35px;}
|
||||
|
@@ -473,26 +473,6 @@ h1 {
|
||||
#h1 {
|
||||
font-style: normal;
|
||||
}
|
||||
#dbs {
|
||||
color: transparent;
|
||||
}
|
||||
#dbs:before {
|
||||
content: " ";
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-right: -0.5em;
|
||||
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' viewBox='0 0 58.201 58.201' enable-background='new 0 0 58.201 58.201' xml:space='preserve' width='512px' height='512px'%3E%3Cg%3E%3Cpath d='M31.707,33.07c-0.87,0.027-1.74,0.042-2.606,0.042c-0.869,0-1.742-0.014-2.614-0.042 c-7.341-0.201-13.191-1.238-17.403-2.717C7.104,29.685,5.409,28.899,4.1,28v7.111v0.5v0.5V37.4c2.846,2.971,12.394,5.711,25,5.711 s22.154-2.74,25-5.711v-1.289v-0.5v-0.5V28c-1.318,0.905-3.028,1.697-5.025,2.367C44.865,31.839,39.027,32.87,31.707,33.07z' fill='%23FFFFFF'/%3E%3Cpath d='M4.1,14.889V22v0.5V23v1.289c2.638,2.754,11.033,5.31,22.286,5.668c0.115,0.004,0.233,0.005,0.349,0.008 c0.326,0.009,0.651,0.018,0.982,0.023C28.174,29.996,28.635,30,29.1,30s0.926-0.004,1.383-0.011 c0.33-0.005,0.656-0.014,0.982-0.023c0.116-0.003,0.234-0.005,0.349-0.008c11.253-0.359,19.648-2.915,22.286-5.668V23v-0.5V22 v-7.111C49.233,18.232,38.944,20,29.1,20S8.968,18.232,4.1,14.889z' fill='%23FFFFFF'/%3E%3Cpath d='M53.965,8.542C52.843,4.241,44.215,0,29.1,0C14.023,0,5.404,4.22,4.247,8.51C4.162,8.657,4.1,8.818,4.1,9v0.5v1.806 C6.937,14.267,16.417,17,29.1,17s22.164-2.733,25-5.694V9.5V9C54.1,8.832,54.044,8.681,53.965,8.542z' fill='%23FFFFFF'/%3E%3Cpath d='M4.1,41v8.201c0,0.162,0.043,0.315,0.117,0.451c1.181,4.895,11.747,8.549,24.883,8.549c13.106,0,23.655-3.639,24.875-8.516 c0.08-0.144,0.125-0.309,0.125-0.484v-8.199c-4.135,2.911-12.655,5.199-25,5.199C16.754,46.201,8.234,43.911,4.1,41z' fill='%23FFFFFF'/%3E%3C/g%3E%3C/svg%3E") center no-repeat;
|
||||
background-size: auto 100%;
|
||||
}
|
||||
.rtl #dbs:before {
|
||||
margin-right: 0;
|
||||
margin-left: -0.5em;
|
||||
}
|
||||
#dbs span {
|
||||
display: none;
|
||||
}
|
||||
#menu p {
|
||||
margin: 1.5em 0 0;
|
||||
}
|
||||
@@ -506,6 +486,10 @@ h1 {
|
||||
#menu .error {
|
||||
padding: 0.2em 0.4em;
|
||||
}
|
||||
.tables-filter {
|
||||
padding: 0;
|
||||
margin-top: 1.2em;
|
||||
}
|
||||
input[type="submit"],
|
||||
input[type="reset"],
|
||||
input[type="button"],
|
||||
@@ -551,7 +535,7 @@ input[type="file"]::-ms-browse {
|
||||
background: #4c3957;
|
||||
color: #fff;
|
||||
padding: 0.5em 0.8em 0.6em;
|
||||
margin: 0;
|
||||
margin: 0 0.5em;
|
||||
border-style: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -573,7 +557,7 @@ input[type="file"]::-webkit-file-upload-button {
|
||||
background: #4c3957;
|
||||
color: #fff;
|
||||
padding: 0.5em 0.8em 0.6em;
|
||||
margin: 0;
|
||||
margin: 0 0.5em;
|
||||
border-style: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -587,24 +571,24 @@ input[type="file"]:disabled::-webkit-file-upload-button {
|
||||
background-color: rgba(76, 57, 87, 0.35);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
input[type="file"]::-moz-file-upload-button {
|
||||
input[type="file"]::file-selector-button {
|
||||
display: inline-block;
|
||||
font-size: 85%;
|
||||
text-align: center;
|
||||
background: #4c3957;
|
||||
color: #fff;
|
||||
padding: 0.5em 0.8em 0.6em;
|
||||
margin: 0;
|
||||
margin: 0 0.5em;
|
||||
border-style: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
input[type="file"]:hover::-moz-file-upload-button,
|
||||
input[type="file"]:focus::-moz-file-upload-button {
|
||||
input[type="file"]:hover::file-selector-button,
|
||||
input[type="file"]:focus::file-selector-button {
|
||||
color: #fff;
|
||||
background: #ec5f12;
|
||||
text-decoration: none;
|
||||
}
|
||||
input[type="file"]:disabled::-moz-file-upload-button {
|
||||
input[type="file"]:disabled::file-selector-button {
|
||||
background-color: rgba(76, 57, 87, 0.35);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
@@ -1,202 +0,0 @@
|
||||
/*
|
||||
VERSION: mancave-hever1-27.1.alpha
|
||||
*/
|
||||
|
||||
/* Merged and fixed version of Hever's and Frank Bueltge's skins by Oguz KONYA. I liked Bueltge's skin but I wanted the icons, too.
|
||||
So I merged them into one file, fixed a couple of problems, added some paddings here and there, voila! */
|
||||
|
||||
/* Redesigned (iconized) by Hever [hev.cz] - June 2009, ver 0.1.3 */
|
||||
/**
|
||||
* * Alternative style for Adminer by Frank Bueltge
|
||||
* * @link http://bueltge.de/
|
||||
* */
|
||||
|
||||
/* Added icons */
|
||||
/* IE doesn't support inline images - using some hack that eliminate IE*/
|
||||
|
||||
html/*\*/>/*/*/body .error {background:#FFEEEE url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIsSURBVDjLpVNLSJQBEP7+h6uu62vLVAJDW1KQTMrINQ1vPQzq1GOpa9EppGOHLh0kCEKL7JBEhVCHihAsESyJiE4FWShGRmauu7KYiv6Pma+DGoFrBQ7MzGFmPr5vmDFIYj1mr1WYfrHPovA9VVOqbC7e/1rS9ZlrAVDYHig5WB0oPtBI0TNrUiC5yhP9jeF4X8NPcWfopoY48XT39PjjXeF0vWkZqOjd7LJYrmGasHPCCJbHwhS9/F8M4s8baid764Xi0Ilfp5voorpJfn2wwx/r3l77TwZUvR+qajXVn8PnvocYfXYH6k2ioOaCpaIdf11ivDcayyiMVudsOYqFb60gARJYHG9DbqQFmSVNjaO3K2NpAeK90ZCqtgcrjkP9aUCXp0moetDFEeRXnYCKXhm+uTW0CkBFu4JlxzZkFlbASz4CQGQVBFeEwZm8geyiMuRVntzsL3oXV+YMkvjRsydC1U+lhwZsWXgHb+oWVAEzIwvzyVlk5igsi7DymmHlHsFQR50rjl+981Jy1Fw6Gu0ObTtnU+cgs28AKgDiy+Awpj5OACBAhZ/qh2HOo6i+NeA73jUAML4/qWux8mt6NjW1w599CS9xb0mSEqQBEDAtwqALUmBaG5FV3oYPnTHMjAwetlWksyByaukxQg2wQ9FlccaK/OXA3/uAEUDp3rNIDQ1ctSk6kHh1/jRFoaL4M4snEMeD73gQx4M4PsT1IZ5AfYH68tZY7zv/ApRMY9mnuVMvAAAAAElFTkSuQmCC") no-repeat scroll 0.8em center; padding-left:38px;}
|
||||
html/*\*/>/*/*/body .message, #menu p.message {background:#49526D url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKfSURBVDjLpZPrS1NhHMf9O3bOdmwDCWREIYKEUHsVJBI7mg3FvCxL09290jZj2EyLMnJexkgpLbPUanNOberU5taUMnHZUULMvelCtWF0sW/n7MVMEiN64AsPD8/n83uucQDi/id/DBT4Dolypw/qsz0pTMbj/WHpiDgsdSUyUmeiPt2+V7SrIM+bSss8ySGdR4abQQv6lrui6VxsRonrGCS9VEjSQ9E7CtiqdOZ4UuTqnBHO1X7YXl6Daa4yGq7vWO1D40wVDtj4kWQbn94myPGkCDPdSesczE2sCZShwl8CzcwZ6NiUs6n2nYX99T1cnKqA2EKui6+TwphA5k4yqMayopU5mANV3lNQTBdCMVUA9VQh3GuDMHiVcLCS3J4jSLhCGmKCjBEx0xlshjXYhApfMZRP5CyYD+UkG08+xt+4wLVQZA1tzxthm2tEfD3JxARH7QkbD1ZuozaggdZbxK5kAIsf5qGaKMTY2lAU/rH5HW3PLsEwUYy+YCcERmIjJpDcpzb6l7th9KtQ69fi09ePUej9l7cx2DJbD7UrG3r3afQHOyCo+V3QQzE35pvQvnAZukk5zL5qRL59jsKbPzdheXoBZc4saFhBS6AO7V4zqCpiawuptwQG+UAa7Ct3UT0hh9p9EnXT5Vh6t4C22QaUDh6HwnECOmcO7K+6kW49DKqS2DrEZCtfuI+9GrNHg4fMHVSO5kE7nAPVkAxKBxcOzsajpS4Yh4ohUPPWKTUh3PaQEptIOr6BiJjcZXCwktaAGfrRIpwblqOV3YKdhfXOIvBLeREWpnd8ynsaSJoyESFphwTtfjN6X1jRO2+FxWtCWksqBApeiFIR9K6fiTpPiigDoadqCEag5YUFKl6Yrciw0VOlhOivv/Ff8wtn0KzlebrUYwAAAABJRU5ErkJggg==") no-repeat scroll 0.8em center; padding-left:38px;}
|
||||
|
||||
html/*\*/>/*/*/body a[href$="sql="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHGSURBVHjaxFPNLkNREP5aB6WhaKLSVtKFiIUqK1sLT2DhTXgDL2FlxSOw8FOLRiyQWhDRiKSEhKQJou49P9fMnFsLsevCJCcz594z3/m+mTmJKIrQjSXRpXUNoGqbm39qcMbAkbyIvbVwYQhD3tIeWsOQ1+QVH86Xyz+JXJPIOb9iAI4ZpOMd/yN/vb/vAdiC93cP0El2dNA6z4RjYyW2MaPU0BB0u+0BOGGsVML49LSA3J+cYDCblb0l6jeHBwg/26isrOB0a8uzYBlBgKShgD8M53J4aTTQqFaRSCYl+WxnG83zcxTmKpKg+vtFu9W8NDQDMCXW+VivYyAzjKmlJahUSpiYUKPVbCKTz0sCGzOyOpBLzdcXlCMdDDIxO4vboyoyhQIKlYocLi0uIjczIyBcA98dYqx9NywxUEyDi/P29IyF1VU5dFeroS+dRnF+Xvajk5N0ayjx8tq6+FuSyiwUF4LRHi/reLg4o9ijs6xG9RjWGowUi/h4fcXexoa0L4oc0mNZuVgFzID09VKBnFXoUb7Pnb5zQrvVovpkZC4QzwfiN6QM1eBqdxcmnq6IAA395Mlz8eTxTZwg/pcl/v01fgswAESqYZbsIsnLAAAAAElFTkSuQmCC") no-repeat scroll left bottom; padding-left:22px;}
|
||||
html/*\*/>/*/*/body a[href*="dump="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJrSURBVHjajFPPaxNREP72V8ymTbGQbRB/IT0otdV6CcWTgqCoUFQQEXoSEQ/+AypK755E1KsULIpGgw1F9KC22lgstFgQLdoWhSab2PRHTNrs7nvObGhSsRa/ZXjv7c6b+eabWUVKiX9AJQuRRci2k+260N91VwgJIQSEV1mVnjf5axTjvCfFFn7hCcBlBzJNVRA0gAZTQ1ODgXC4gDtjV9AW2QNFUTA0/Q66kPLSqVg4shYF8vEdKQ7mln+i+/VVRM0oFpbmETLq/SS6J4R/OfHtHmV24XouHFo94REDAyE9hMZgBMkvT2GZFqxQE6by0/g4P74SoKLB2ZZzWA8ffqRQLBcxNTuFjRTwxpmbfad7Oo/rHhdN6B20/6JvaKyBCnODhqNbL+PRxHXUGXWINV5kl9TDrkQct/pnZKHkyPsDGcl4MJiWq5Ecsf84LxTL8nbyK2+Pke3XHWJAQkLXgMdDNjRNRTxlQ6UmakRD0vN8NEd7EBsFO6Impu1fzGCCrOSXwCro5HEiZiExnEVnrKlaypNhG4fba02aTC8ik1/ibZrM9RlIkkGnjH0jWWJQWRn8TpLI8fcZ6MSA1WrZFERx2eHPTEPqjksBqASDLh7ZZ+HlWA6H9tYyvhjNomNnI8Km7p8/f5+HGdB46/lJeOoYPHV8mbGy8gA59HngU74asNkKYKVzlQCuW9GA6B5si+DVeA4HWmsM4qksTnZY1TMz0NRauysaUAmt2+oxM1tCM6k8mS74WXjIdm8O+JdWg36oKgXqgnzb3TvRXvZEneN6YPNIFw7MY70W5haXnlUHbp3f+b/wW4ABAAtWTLcKdqLcAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
html/*\*/>/*/*/body a[href$="dump="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHzSURBVHjajJPPS+NQEMcnaaxpdWsp6Q8vtWtdkIo9+B948SjIgruCUg8F/wGP/glePe5JcBehwl4qePGm0J6KQj30UBHEzaFLUromTfPizJMnrxhhB4bJvDfzme97SZQgCOB/be98J2AsAMYYMP81KjKg0WhMYljHtS30RSz4gjkGdot559F7OLt8vvi1bJRBURS4vr8CTTQ3m80SFv1MpVJlwzBA13XuNGUwGKyY1p+Vk9aPzWw8C7ZjQXximu+9ATA5KhQK5Uwmw+nCIpEIJBIJOLjah3Q8w7379x5urFsOUEUhTl/C6R+ef35mARzPhW6vC+q/iHvyvaYwXwIQje6j1+tBv98H13VhNBpxxyPA5tw2TI50MPQsrMbXbOo53fmtaJIC7iSZAMPhkOe+73MA5Ruz3yCfz9NlvykLBUSjUR41TQPP8zhE7JNSyj8E0CbJpkiXKRoIRFABeQcQd0DFwlVV5evUTFBZRSiATEwnp4lCAa0LI2AoQC4WimRl4qgyYOw12rYNyWSSX6L4mKiBnukDK5VKYJrmmBpZwW6r1TotFotTuVyOQwQgnU7zV9npdKDdbj+hgnXRN/Yz1ev1zwg6QP+KU2disRiXblkWOI7zhJOPce+wWq2aoQDZarXaJ2xYQGfod5VKxQ2rexFgAI4OiAKxKkWeAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
|
||||
html/*\*/>/*/*/body select[name="db"] {background:white url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEYSURBVBgZBcHPio5hGAfg6/2+R980k6wmJgsJ5U/ZOAqbSc2GnXOwUg7BESgLUeIQ1GSjLFnMwsKGGg1qxJRmPM97/1zXFAAAAEADdlfZzr26miup2svnelq7d2aYgt3rebl585wN6+K3I1/9fJe7O/uIePP2SypJkiRJ0vMhr55FLCA3zgIAOK9uQ4MS361ZOSX+OrTvkgINSjS/HIvhjxNNFGgQsbSmabohKDNoUGLohsls6BaiQIMSs2FYmnXdUsygQYmumy3Nhi6igwalDEOJEjPKP7CA2aFNK8Bkyy3fdNCg7r9/fW3jgpVJbDmy5+PB2IYp4MXFelQ7izPrhkPHB+P5/PjhD5gCgCenx+VR/dODEwD+A3T7nqbxwf1HAAAAAElFTkSuQmCC") no-repeat scroll left bottom; padding-left:16px; background: #49526D;}
|
||||
html/*\*/>/*/*/body select[name="db"] option {padding-left:18px;}
|
||||
|
||||
html/*\*/>/*/*/body #menu li a[href*="&select="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHISURBVDjLpVPNK0RRFP+9D98syMwUspHkm9I0YkFZWBFKkZ0s7a3Ewh+ilChK7FgoZCJFKYlYKB8zk2+Z5t0P577He29kQU7dd+6575zf+d1zztWklPiPmOozt/U4SThjXIoyIQS4AJjSXO0lGGlvcXAm6Vzsz4xUhm0AIeX4QLig+C+ZpxbOG1wGhGYHr1zMUmZGWRgs0ha3PE1nX/8mWmdgWTzLB+DUYbhm9FfZ35IEyrhXA3VXJfPbsV8B9LQUIeUHYJ8ASobag1jcucNgW8g9W4reYSDi2YnnZDoDiwCokDANct6NwTB0LEdj0HRA/wxa2SN25JNBEdWluUhZ366gqmAaGvrCAXKOozccTGPgt8+vn8GYSGcgyTYp3dpBnBg42nbQPRBTo5bTvqYkmxL6AQhNTWQGBXY3B7BxlEBXozcW64dxRKoKUZBju+P06gl5WaaviMJBM3TNDlbypemIZgHYOnlwASsCmW7nHADGnBoQ3c76YmweJ9BR5zFYjsbRHwm4tmJg6PhWA7pCXXk+bu7fURHKweXtq/sWaksz7SC/CCGFrwtyZ3r+rCnFRZ7qr1qc6mLZj4f9OEyPL8lVpbX/PucPv5QPKHB1TdEAAAAASUVORK5CYII=") no-repeat scroll left bottom; clear:left; display:block; float:left; height:16px; margin-right:8px; padding-top:1px; overflow:hidden; padding-left:16px; width:0; text-decoration:none;}
|
||||
|
||||
html/*\*/>/*/*/body #menu li a[href*="&table="], html/*\*/>/*/*/body #menu li a[href*="&view="] {clear:right; margin-left:24px; display:block; height:17px; padding-bottom:1px; text-decoration:none;}
|
||||
|
||||
html/*\*/>/*/*/body #menu p#tables br {display:none;}
|
||||
|
||||
html/*\*/>/*/*/body a[href*="&create="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ6SURBVDjLpZNZSNRRGMV//2XGsjFrMg2z0so2K21xIFpepYUiAsGIICLffI8eWiBBeg3qQV+KwBYKLB8qpHUmrahcKLc0QsxldNSxdPz/79LD1ChBUXTh8sG93POdc75zDa01/7NsgGvPR09rzQmpVZZSCqlAKIWUCqk0QqoZWyKFRir1uvxIbsAGUFqXHQqkpP1L57M3Pm5MMJBKpQHUdF9BKIGQAlcJXOlOVykSdye3leO6MmkGQNyHw+uO/1X3bzGBK+S0B1IqAKqDg3986HeCZPffwvJtoNT7lOZLvUdtAPEDAKBkRzo3QwMUb89InN1uGGD3spdE214xe8MRUnM2MfppNW0Pqy7YAK5UKK2xLbhdP4hlmdxpGMQwwQT8ziNiI534c7cT6WrFazikzF2Eb8HS1IQEDdiWwcHAQmpehTkQSAcgNvSMiYFW5uUUMdV3HW+ywefGNqITJsbUUL75k4FWYJtQ+yaMZcXrk1ANk/33mbdiD7EvlRieETy+FJLkMFcjRRSW3emIAwiF1hqPBfu2LGSWbbA1uZ41SfWkrtxPrPcypsfFiWYzFGzGKTjFV28WEJeIUHETLdOgrmkI1VdHpCdEet5enP4qLK9mKrqMgedv6cyrAP+qxOTiUxAi7oEJi8frELoFoTLpa7nI/HQvscgSRt+0kV1SSW7qYtp7xrBMphm4Mi5h/VIfTcEq1u0oJaknSEdNiMYHET7UvcMpPEN31Ed7zxgASmk1I0g6dK66s8CRak5mVxjnfS05+TsZCw/T9baTx1nnGb47DrQksjE6HrsHYPz6nYt3+Sc3L8+wA2tz0J6pF5OD4WP7Kpq7f5fO79DfSxjdtCtDAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
html/*\*/>/*/*/body a[href$="&create="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIpSURBVDjLpZNPSFRRFMZ/749/Kt3IqFTSRoSMmrGIYTTbpEJtjBCCok1Em9JVG1dRC8FFEES5aGFEgRRZWq1iLKKxBiNqLDcltQgmHR9hY6LOu+feFm+YGVsZXbh8nHO53/nud8+xjDH8z3IB7r5avGgMZ8XoBq01okFpjYhGtEGJLtmCKINo/XbgVFPUBdDG9PVEq0P/UvnSvdlwQYFoHQIY/3obpRVKFL5W+OIXUVThrL91AN+XihKCwIeTu85sqPryqsJXUvRARAMwkshsiKB7fw25UgKVJwA40V7H/cl5jh+oL+RGk/P0xIqxl11dr8AXjTYG14HRNxkcx+ZhMoNlg52/ND6VAWMoc6F5+2Zy/l9PMIDrWByL1jI+tcDRaN06BaXxbDqLUnq9AqPBteHpuwUcJ0AIcgBXH93h+/wEyyuLrPk5cmv7gNY8gdIYYyhz4PDeWuIpj85IsS2ujQ2zJAk6DkZpqGnixcwYyU+PifUOX7Eh6DoAx7aIpzwA4imPeMrj+bTH+88PaNkZQWwhsrULsXxie9oAzgcESgUe2NAZCeE6AXZGQhwKh/Cyc5RZVXQ39wFwoeMmjXVhgMqiB8awe0cVP36u0Fi/iW9zvwuzkF3+xUz6Nal0gv6uWww+O02lUwGwmv8FM3l55EtLTvQWXwm+EkRpfNEoUZRXHCE5PUFbuJ0nH4cot1wSH14C3LA2Os6x3m2DwDmgGlgChpLX0/1/AIu8MA7WsWBMAAAAAElFTkSuQmCC") no-repeat scroll left bottom; padding-left:22px;}
|
||||
|
||||
html/*\*/>/*/*/body #content p a {padding-left:2px;}
|
||||
html/*\*/>/*/*/body #content p a[href*="&create="] {padding-left:22px;}
|
||||
html/*\*/>/*/*/body #content p a[href*="&select="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHISURBVDjLpVPNK0RRFP+9D98syMwUspHkm9I0YkFZWBFKkZ0s7a3Ewh+ilChK7FgoZCJFKYlYKB8zk2+Z5t0P577He29kQU7dd+6575zf+d1zztWklPiPmOozt/U4SThjXIoyIQS4AJjSXO0lGGlvcXAm6Vzsz4xUhm0AIeX4QLig+C+ZpxbOG1wGhGYHr1zMUmZGWRgs0ha3PE1nX/8mWmdgWTzLB+DUYbhm9FfZ35IEyrhXA3VXJfPbsV8B9LQUIeUHYJ8ASobag1jcucNgW8g9W4reYSDi2YnnZDoDiwCokDANct6NwTB0LEdj0HRA/wxa2SN25JNBEdWluUhZ366gqmAaGvrCAXKOozccTGPgt8+vn8GYSGcgyTYp3dpBnBg42nbQPRBTo5bTvqYkmxL6AQhNTWQGBXY3B7BxlEBXozcW64dxRKoKUZBju+P06gl5WaaviMJBM3TNDlbypemIZgHYOnlwASsCmW7nHADGnBoQ3c76YmweJ9BR5zFYjsbRHwm4tmJg6PhWA7pCXXk+bu7fURHKweXtq/sWaksz7SC/CCGFrwtyZ3r+rCnFRZ7qr1qc6mLZj4f9OEyPL8lVpbX/PucPv5QPKHB1TdEAAAAASUVORK5CYII=") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
html/*\*/>/*/*/body #content p a[href*="&page="] {background-image:none; padding-left:0;}
|
||||
html/*\*/>/*/*/body #content p a[href$="?database="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIkSURBVDjLpVNNiFJRFP7eU1E0KSLTMpAwYSxyaidDtChm0WYQ3NSutv2s2kwwm2igNgMtooUQEQhhA9GqhSDTQsZZFDbNDBgVg5bSw9J8rzFF33udc+HGg0ladOHj3nPe+b7zc99VbNvG/yy30yiVSl4SnCNcsixrivYEgY7WJu0faX9EKGUyGVNyFFkBkY/T+WkoFEpFIhEEAgH4/X7w916vB8Mw0Gg00G63y+S7mM1mm4LIAYxisbhSr9c5nT1pjUYju1qt2oVC4YnkqbIUMk6Ew+F/9hyNRkFJLuyaATmFoqZp8Pl88Hq98Hg8wtfv99HpdNBsNhGPx0XsRAG3241ut4vBYCDs8XgMXdcxHA7FN/b9VUD25HK5RAUczKC+hYgcNpNN05xcAQdLkqIoIlj6VFWdXIEUkAQGV8M2k2vaG3z6sYGfVR39XzsHlm/dX3h5d31xlwAHM5goBd5+LuO75z3OnU3jyP4EVrZeKGub2p309cP7VKcAQ2Znoiz3deMVTk1Nw1RNTB+ahamMkD45w7RrfwSYwFdFf6K4Quf6pmvwKHswl7wh7Jvnc4gfTPHR52zhcqVSeZZMJgOxWEyI8BC5CmOnh63WKtZbZczPPsa94hX4XCLJQHG+xnw+f5SEFghZmvhefgvcTqn2HN3gBmZSZ5CInMaHr1Wsvivjy3ZvSZn0nHO5XJDIxwgWDbW2vL10m9xXCUGCQXi49qA1/xvyq6BCh7yZeQAAAABJRU5ErkJggg==") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
html/*\*/>/*/*/body #content p a[href*="&edit="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJvSURBVDjLpZPrS5NhGIf9W7YvBYOkhlkoqCklWChv2WyKik7blnNris72bi6dus0DLZ0TDxW1odtopDs4D8MDZuLU0kXq61CijSIIasOvv94VTUfLiB74fXngup7nvrnvJABJ/5PfLnTTdcwOj4RsdYmo5glBWP6iOtzwvIKSWstI0Wgx80SBblpKtE9KQs/We7EaWoT/8wbWP61gMmCH0lMDvokT4j25TiQU/ITFkek9Ow6+7WH2gwsmahCPdwyw75uw9HEO2gUZSkfyI9zBPCJOoJ2SMmg46N61YO/rNoa39Xi41oFuXysMfh36/Fp0b7bAfWAH6RGi0HglWNCbzYgJaFjRv6zGuy+b9It96N3SQvNKiV9HvSaDfFEIxXItnPs23BzJQd6DDEVM0OKsoVwBG/1VMzpXVWhbkUM2K4oJBDYuGmbKIJ0qxsAbHfRLzbjcnUbFBIpx/qH3vQv9b3U03IQ/HfFkERTzfFj8w8jSpR7GBE123uFEYAzaDRIqX/2JAtJbDat/COkd7CNBva2cMvq0MGxp0PRSCPF8BXjWG3FgNHc9XPT71Ojy3sMFdfJRCeKxEsVtKwFHwALZfCUk3tIfNR8XiJwc1LmL4dg141JPKtj3WUdNFJqLGFVPC4OkR4BxajTWsChY64wmCnMxsWPCHcutKBxMVp5mxA1S+aMComToaqTRUQknLTH62kHOVEE+VQnjahscNCy0cMBWsSI0TCQcZc5ALkEYckL5A5noWSBhfm2AecMAjbcRWV0pUTh0HE64TNf0mczcnnQyu/MilaFJCae1nw2fbz1DnVOxyGTlKeZft/Ff8x1BRssfACjTwQAAAABJRU5ErkJggg==") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
html/*\*/>/*/*/body #content p a[href*="&table="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJcSURBVDjLpZPtT5JhFMafrW997I9rscA+FFu2QRurtlw5cQ4InLpwBogIPNFSiNJ4C+JVkj0QTBHQKFPQlJfwlanY1tXz3ARkn2jd27Wz++yc33XOvd0UAOp/RNGR/X5zeH9rOlTDVKAK3fsqJrxlqN27GHPuYHh+G4rXRQzZNjEws47Hli/oo/PxNsAU3qvWT3/gX3TPuHrWBhiC30nSktXDtKLB1NI4NKkxqBMqjDByPFkcxNBCPwbCfXgUeEBq705m0AZM+qsk2e3hau88W+4ANOy+XPLFQrkrcbW31KkOYJx9rBaAOzPR0gVHW6x593q9cDgcqB6e4sZoogMYdXzD0ck5ZhfLsHGKVfAqVoadKcMdzcLr82PuwwZCoRACgQCWVzdhoK2gaVpDAMNzWzhkAXamQpze/I4t13w+j2AwiFwuh7W1NXg8HmQyGSgUCshkssuU3F7AQf0c84kK3n68KFc4hXQ6DavVCqlUCqVSSdaIx+NQq9UGMsHg7Ab2jxtwp5rOvqUqia3CUqnEObWn0mp1KBaLcLlckMvloPpfrhOAl230/SGLxQK3241CoQC9Xg9nskKk1emQzWZZkBZCoRBU3/NP2GMBgXTTObjSjI1GA8lkEgzDwO/3E4iObXY6nYhEIhCJRHoWcIW6b1pF7egMlYNT7NROUKzU8XX3GJ+3D2E0GgmAm4Zbh2s0mUyIRqMcAGKx+BIlMeSiYu1K/fbEMm4+TaFnJIHrSgZX5TFIZNPo7e1Fj9QOs9kMlUqFaw9pCASCnzwe7x15xG6/rUQiAZ/Px9/5XyhZOMVGKlOdAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
|
||||
html/*\*/>/*/*/body #content a[href*="&database="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKRSURBVDjLhVNLTBNRFD3TTju1FCcBaxuaQEr94ydiZIHGpcFISBOi0YREZWHCVoyRxKUxxq0LXcACQyLsjO6KjSEiDfHDz0S0CLSxlFKd2g7MTDudGd+bMAQCxJucuXfuu+fcO/PeYwzDALVoNMqRuI3guq7rR4g/SEBC/Svxc8T3EUTD4bCGTcZQAUI+RvxLr9d70u/3o6KiAm63G3Qtn89DFEUkk0lks9lRkrvW3t6e2lCgRZFI5F0ikaDtjN1MVVVjYmLCGBoa6qccC7Z1kQafz4f/WSAQAGlyaXOOpQ+SNNUymQxcLhc4joPD4TBzkiRBEASkUimEQiGzdlcBlmWRy+WgKIr5Xi6XUSgUUCwWzTVN+IAzeOOde71orP0eAaOkbrDWf6Cw2+3mBLSYgny3KULXPOUY2BUB/hMd4IOn8XfhMGYjvU+2TECLLRLDMNA0zYw5JYa6Ghke/hyEn9/gZEqo3OuHp7qW3yJgESjoNPSdlb8gWCOCr29BMT0Ip5tBYnIWqlL6o8irzVsEaHcKSqQCen4cweok+FAblNRz2JxlODx1cEkzGWmVbTl7Z/jHhgCF1Z3GYjIKf+U8+ANhQn4Gm6OMUiGI9MhHg5Gl1sbu8UnKNc8B7Ui3ipxEcwvlpVFw6hz2N1xGabkXdqeBYqEOmfefEZWac4e6xz9Z22hbn+BmLBZbi8fjEBdG4NF/QdUDSM88hQ4FawKJR6cxLDZl86qzZdtdoDYwMBAkQg/2LL/ovNLVh++Dd7G0OAau9hTkrKgnnE39GW3f/Z6enpUdBSx7ePu4eq+zi4VNw+TbV0gsxFd5b9X5i4+mpnY63tsErl6okhvrfWzT0SAMR3FMXsnean08Pb/b/fgHqpjCspi90kkAAAAASUVORK5CYII=") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
html/*\*/>/*/*/body #content p a[href*="&schema="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFOSURBVDjLtVK7SgNRED0b9iuM2lr4QK1DQIyk0FZsJAj+gH+ilRZb2NjaRHTLmA9QFKz9huzm7t37Hu+u7IJgQjR6YLjDzOXMmcMERIR5EE5qXA4z4sqACYWEC5wfLQXf/WtMIuDSoL0A7DZDjBj/uYI0l8jzEEJYJMkvCEZM4PqZIxlzpGk+kSCY18TGtGYcx9Tv96dOqBUMBgNyzsFaC621312Ac+59yJFlGRhj5VvVoigKvniglEK32w1mkd3r9ejPPAjOhqdknYX18p1/rzo3pYqTh0OSRkJI5UMgPn4s61sX66SkhtEGcISGsQad5gH2FvehfV5BaIF2cwet5RZyKeu68pe5ubKG7dUNP5AQGltMN57Mosgr5EIiVQmYGvtc1PVicqHY+dXpk8Dg7v22XKFo1ARe9v1bDOlXKKKCs4Sn1xdU1v3vIc2CD3bN4xJjfJWvAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
|
||||
html/*\*/>/*/*/body #content p a[href*="&sql="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ5SURBVHjapFNLaxNRFP4mnZmQZtKYpJ2I8ZE0NSbSWKpgBYNUhIJQUDddCaILwb34C0RcCi60vpa14sZFoSjxUWxTFEubFkxf9kFS+7Jp0yQmM5mH905SF9pSwQt3vnPnnvPNd86cA13Xsds+23XKsdMdQx//s0z/6hi54he3e8/0d3ZuK0FTFGhUJkVVhSbLUAiq5IxSCQrBEkGWOu8Lh38HGrlpWnlXCKhNSbZQo3cEE9FomYAuKZstE2wFa8RR1cpKqK2o4JhxmLVJVAlh5Df6IFj5MgENcHq9EAMBg2RucBDVLpdxVon0iXdvIf8sQHRIsNReht3XjI3ZI8iuPAOrkDyorBq3G6vT08ikUuAsFiN46HkXXL56eI41QV1/BMF+GulvCfCMDFvNXtSIHrC0KDTPhXgc7lAQdQ2thk2XIpewnkzCJvTA4T8PabEbfDWD+ZFxyEUdX94sw6QVCkZlxWAQU+8/YGZgALV+v0HgbWmBNzQMR0M7it8fg+HWwQk2cLkkcvJh5NNFsCVJMgq1ubiE5o4OI5CS8FYrya8b9saLKC48gIlTIG/6sBaLw3PpHrTEMrSXr4kPIaAKFkbjSA0PEVuFlB+DO8Ah2HoB8tITVPE6iplDWOn7jLn0CSQevoDV6TI+zEpUASkkZzaTYrLIrH3C/qMCFEbE4th9OEQexfQBrPYP44d+DuY91eBp+1dGgFVIDb729kKpdJfQtIy2yFNMdN/E5McYzAebUEhOYjZuQXaj5+9W/nOYbl9vLN26doOFScVI9BXmZ6dy9jpnpO1O5dfsRtBxxlk4Xu9mT4Z80DkpVlhZvdp+d3RmpyH7JcAAnHiAVYWMsdkAAAAASUVORK5CYII=") no-repeat scroll 2px bottom; padding-left:24px;}
|
||||
|
||||
html/*\*/>/*/*/body table tbody input[name*="check"] {display:block; float:left;}
|
||||
|
||||
html/*\*/>/*/*/body table a[href*="&edit="][href*="&where"] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFUSURBVDjLrZM/SAJxGIZdWwuDlnCplkAEm1zkaIiGFFpyMIwGK5KGoK2lphDKkMDg3LLUSIJsSKhIi+684CokOtTiMizCGuzEU5K3vOEgKvtBDe/2Pc8H3x8NAM1fQlx4H9M3pcOWp6TXWmM8A7j0629v1nraiAVC0IrrwATKIgs5xyG5QiE+Z4iQdoeU2oAsnqCSO1NSTu+D9VhqRLD8nIB8F0Q2MgmJDyipCzjvYJkIfpN2UBLG8MpP4dxvQ3ZzGuyyBQ2H+AnOOCBd9aL6soh81A5hyYSGWyCFvxUcerqI4S+CvYVOFPMHxLAq8I3qdHVY5LbBhJzEsCrwutpRFBlUHy6wO2tEYtWAzLELPN2P03kjfj3luqDycV2F8AgefWbEnVqEHa2IznSD6BdsVDNStB0lfh0FPoQjdx8RrAqGzC0YprSgxzsUMOY2bf37N/6Ud1Vc9yYcH50CAAAAAElFTkSuQmCC") no-repeat scroll right bottom; padding-right:18px;}
|
||||
|
||||
html/*\*/>/*/*/body table input + a[href*="&edit="][href*="&where"] {width:0; float:left; display:block; height:16px; overflow:hidden; text-decoration:none; padding:0 0 0 18px; background-position:2px bottom; margin-left:5px;}
|
||||
html/*\*/>/*/*/body table tbody td:first-child {white-space:normal;}
|
||||
html/*\*/>/*/*/body table thead input {margin-right: 5px;}
|
||||
|
||||
html/*\*/>/*/*/body input[name="delete"], html/*\*/>/*/*/body input[name="drop"] {background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVHjapFM5bsJQEB2zSIDFJrHYpEtyAyoKJAp6CrqIkBPkNDlBAKXjBEgUpKOBCyQNijFiEZvZl8z7wsjESYpkpNFfPO/Nmz9j6Xg80n/M9fWi3W7fMOnd4XAo8qogAbvO5xKvL6lU6s0aL1kVMDjP5ye/36+Gw2FyOp3EQFqtVtTr9WixWHT5/JhOp6s2ghP4ORaLyaFQiGazGa3Xa0HgdrvJ6/WSpmk0Go0MjnvIZDLVM0Gr1brm/WskEkkA3O/3abvdQjq5XC6xgoiVka7rNB6PNT6ns9nsu+OkpODxeBLBYJAGgwHt9/uzQ8Vms6Hdbie+KYqC+ASTFrARBMx2HwgEaDKZiHqn0yktl0uxtzrMMAyKx+MCc+4Cs13hwQCC1GQy+W3Lms2mUIUygbEqEBLNun8z8zswVgUfLO0WD4Z6kekn8/l8okNM8GFVUMYDoVWQ6HA4bEAzoyzL1O12kbRsJajwhYZhiUajJEnShWSAQaqqKnU6HahEGysXg9RoNPJ8+cwZZLSKp47m8/k5Kxzg4XBocNxDLper2ka5Xq+LUeatilahJLN1mEJ+ZDHKJthGAKvVauJnYi9ysHIqQee1xOsLg3/+mf5inwIMAJMhb74NwG5wAAAAAElFTkSuQmCC") no-repeat scroll left center; padding:1px 5px 1px 18px; border:0; cursor:pointer; font-size:.9em;}
|
||||
html/*\*/>/*/*/body input[name="delete"]:hover, html/*\*/>/*/*/body input[name="drop"]:hover {color:red; background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==")}
|
||||
|
||||
.logout {font-size: 8pt !important;}
|
||||
#logout{ height:17px; border: none; background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJHSURBVDjLlZPNi81hFMc/z7137p1mTCFvNZfGSzLIWNjZKRvFRoqNhRCSYm8xS3+AxRRZ2JAFJWJHSQqTQkbEzYwIM+6Yid/znJfH4prLXShOnb6r8/nWOd8Tcs78bz0/f+KMu50y05nK/wy+uHDylbutqS5extvGcxaWqtoGDA8PZ3dnrs2srQc2Zko41UXLmLdyDW5OfvsUkUgbYGbU63UAQggdmvMzFmzZCgTi7CQmkZwdEaX0JwDgTnGbTCaE0G4zw80omhPI92lcEtkNkdgJCCHwJX7mZvNaB0A14SaYJlwTrpHsTkoFlV1nt2c3x5YYo1/vM9A/gKpxdfwyu/v3teCayKq4JEwT5EB2R6WgYmrs2bYbcUNNUVfEhIfFYy69uci+1fuRX84mkawFSxd/4nVWUopUVIykwlQxRTJBTIDA4Pp1jBZPuNW4wUAPmCqWIn29X1k4f5Ku8g9mpKCkakRLVEs1auVuauVuyqHMo8ejNCe+sWPVTkQKXCMmkeZUmUZjETF1tc6ooly+fgUVw9So1/tRN6YnZji46QghBFKKuAouERNhMlbAHZFE6e7pB+He8MMw+GGI4xtOMf1+lsl3TQ4NHf19BSlaO1DB9BfMHdX0O0iqSgiBbJkjm491hClJbA1LxCURgpPzXwAHhg63necAIi3XngXLcRU0fof8ETMljIyM5LGxMcbHxzvy/6fuXdWgt6+PWncv1e4euqo1ZmabvHs5+jn8yzufO7hiiZmuNpNBM13rbvVSpbrXJE7/BMkHtU9jFIC/AAAAAElFTkSuQmCC") no-repeat center left; overflow: hidden; text-indent: 18px; line-height: 0px; cursor:pointer; margin-left:6px; color: #21759B; text-decoration: underline;}
|
||||
#logout:hover {text-decoration: none; color: #D54E21;}
|
||||
#logins a, #tables a {background: none repeat scroll 0 0 transparent;}
|
||||
/*body {margin: 0; line-height: 1.25em; font-size: 13px; background: #F9F9F9;}*/
|
||||
body {margin: 0; line-height: 1.25em; font-size: 13px; background: #110236; color: #fff;}
|
||||
body, select, option, optgroup, button {font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;} /* IE6 */
|
||||
input[type='submit'], input[type='reset'], input[type='button'], input[type='file'] {font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;}
|
||||
input, textarea, pre, code, samp, kbd, var {font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif; font-size: 12px;}
|
||||
/*a {color: #21759B;}
|
||||
a:visited {color: #21759B;}
|
||||
a:hover {text-decoration: none; color: #D54E21;}*/
|
||||
a {color: #F1E5B3;}
|
||||
a:visited {color: #F1E5B3;}
|
||||
a:hover {text-decoration: none; color: #D68D20;}
|
||||
form {margin: 0;}
|
||||
table {margin: 10px 12px 12px 0; border: 1px #BBB solid; font-size: 90%;}
|
||||
th {text-align: left;}
|
||||
/*td, th {background-color: #fff; padding: 4px 6px; border: 1px #DfDfDf solid; border-width: 1px 0 0 1px;}*/
|
||||
td, th {background-color: #1D294D; padding: 4px 6px; border: 1px #DfDfDf solid; border-width: 1px 0 0 1px;}
|
||||
tr:first-child td, tr:first-child th {border-top-width: 0;}
|
||||
tr:first-child th {padding-right: 30px;}
|
||||
td:first-child, th:first-child {border-left-width: 0;}
|
||||
/*thead td, thead th {background-color: #DFDFDF; border: none; border-bottom: 1px #BBB solid;}*/
|
||||
thead td, thead th {background-color: #110236; border: none; border-bottom: 1px #BBB solid;}
|
||||
thead tr:hover td, thead tr:hover th {background-color: #110236 !important;}
|
||||
/*tr:nth-child(2n) td, tr:nth-child(2n) th, .odd td, .odd th, tr.odd {background-color: #F1F1F1;}*/
|
||||
tr:nth-child(2n) td, tr:nth-child(2n) th, .odd td, .odd th, tr.odd {background-color: #49526D;}
|
||||
/*tr:hover td, tr:hover th {background-color: #BCD;}*/
|
||||
tr:hover td, tr:hover th {background-color: red; /* #3D4E80;*/}
|
||||
/*fieldset {display: inline; vertical-align: top; padding: 2px 12px; margin: 25px 12px 12px 0; border: none; background-color: #F1F1F1; border: 1px solid #E3E3E3; position: relative; padding-top: 14px;}*/
|
||||
fieldset {display: inline; vertical-align: top; padding: 2px 12px; margin: 25px 12px 12px 0; border: none; background-color: #1D294D; border: 1px solid #E3E3E3; position: relative; padding-top: 14px;}
|
||||
fieldset, x:-moz-any-link {padding-top: 4px;}
|
||||
fieldset {%padding-top: 14px;}
|
||||
legend {font-weight: 900; color: #fff; position: absolute; top: -1.666em; left: -1em; padding: 0 4px;}
|
||||
input[name='limit'], input[name*='length'] {width: 3em; xtext-align: right;}
|
||||
input[name='text_length'] {width: 5em;}
|
||||
select + input, select + select {margin-left: 2px;}
|
||||
/*textarea, input, select {border-width: 1px; border-style: solid; -moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; border-color: #DFDFDF;}*/
|
||||
textarea, input, select {border-width: 1px; border-style: solid; -moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; border-color: #5C5C5C; background-color: #49526D; color: #ccc}
|
||||
input[type="checkbox"], input[type="radio"], input[type="image"] {border: 0 none;}
|
||||
/*input[type=button], input[type=submit] {border-color: #bbb; color: #464646;}*/
|
||||
input[type=button], input[type=submit] {border-color: #999; color: #fff;}
|
||||
/*input[type=button]:hover, input[type=submit]:hover {color: #fff; border-color: #666;}*/
|
||||
input[type=button]:hover, input[type=submit]:hover {color: #fff; border-color: #fff; background-color:#49526D;}
|
||||
input[type=button], input[type=submit] {text-decoration: none; font-size: 11px !important; line-height: 14px; padding: 2px 8px; cursor: pointer; border-width: 1px; border-style: solid; -moz-border-radius: 11px; -khtml-border-radius: 11px; -webkit-border-radius: 11px; border-radius: 11px; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; -khtml-box-sizing: content-box; box-sizing: content-box;background-color:#49526D;}
|
||||
input + label input, select + label input {margin-left: 4px;}
|
||||
td input[type='checkbox']:first-child, td input[type='radio']:first-child {margin-left: 2px;}
|
||||
label:hover {text-decoration: underline;}
|
||||
fieldset div {margin-bottom: 2px;}
|
||||
input[name='Comment'] { /* !!! */ width: 24em;}
|
||||
input[name='Auto_increment'] { /* !!! */width: 6em;}
|
||||
img {vertical-align: middle; margin: 0; padding: 0;}
|
||||
.error {padding: 8px; color: red; background-color: #FEE;}
|
||||
/*.message {padding: 8px; background-color: #DDD;}*/
|
||||
.message {padding: 8px; background-color: #49526D;}
|
||||
.char {color: #070;}
|
||||
.date {color: #707;}
|
||||
.enum {color: #077;}
|
||||
.binary {color: red;}
|
||||
/*.jush-sql {padding: 2px 4px; margin-right: 4px; outline: 1px #BBB dashed; font-size: 9pt;}*/
|
||||
.jush-sql {padding: 2px 4px; margin-right: 4px; font-size: 9pt;background-color:#49526D;}
|
||||
.jush a {
|
||||
color: #B4D5FF !important;
|
||||
}
|
||||
.jush, .jush-bac {
|
||||
color: #fff;
|
||||
}
|
||||
#content {margin: 2px 0 0 300px; padding: 10px 20px 20px 0;}
|
||||
#lang {height: 23px; width: 250px; display: block; padding: 1px 10px; position: absolute; top: 0; left: 0; text-align: center; background-color: #f1f1f1; border: 1px solid #E3E3E3; line-height: 1.25em;}
|
||||
#lang select {font-size: 8pt;}
|
||||
/*#breadcrumb {margin: 0; height: 21px; display: block; position: absolute; top: 0; left: 300px; background-color: #f1f1f1; border: 1px solid #E3E3E3; padding: 2px 12px; line-height: 1.25em }
|
||||
#menu {position: absolute; padding: 10px; margin: 0; top: 28px; left: 0; width: 250px; background-color: #f1f1f1; border: 1px solid #E3E3E3;}*/
|
||||
#breadcrumb {margin: 0; height: 21px; display: block; position: absolute; top: 0; left: 300px; background-color: #000; border: 1px solid #E3E3E3; padding: 2px 12px; line-height: 1.25em; color:#ccc; }
|
||||
#breadcrumb a {
|
||||
color:red;
|
||||
}
|
||||
#menu {position: absolute; padding: 10px; margin: 0; top: 28px; left: 0; width: 250px; background-color: #110236; border: 1px solid #E3E3E3;}
|
||||
#menu form {margin: 0;}
|
||||
#menu p {padding-left: 8px; font-size: 10pt; border-bottom: none;}
|
||||
#menu form p {padding-left: 0; text-align: left;}
|
||||
h1 .h1:hover {text-decoration: underline;}
|
||||
/*h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 10px; line-height: 35px; text-shadow: rgba(255,255,255,1) 0 1px 0px; background: none;}*/
|
||||
h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 10px; line-height: 35px; /*text-shadow: rgba(185,185,185,1) 0 1px 0px;*/ background: none;color:#A3A3A3}
|
||||
h1 {font-size: 12px;}
|
||||
h1 .h1 {font-size: 12px;}
|
||||
h2 {padding: 22px 0 0 10px;}
|
||||
h3 {margin: 40px 0 0; font-weight: 400; font-size: 130%;}
|
||||
#schema {margin: 1.5em 0 0 220px; position: relative;}
|
||||
/*#schema .table {border: 1px solid #E3E3E3; background-color: #F1F1F1; padding: 0 2px; cursor: move; position: absolute;}*/
|
||||
#schema .table {border: 1px solid #E3E3E3; background-color: #110236; padding: 0 2px; cursor: move; position: absolute;}
|
||||
#schema .references {position: absolute;}
|
||||
.js .hidden {display: inline;}
|
||||
.js td.hidden, .js input.hidden {display: none;}
|
||||
legend a {color: #F1E5B3; text-decoration: none; cursor: default;}
|
||||
legend a:hover {color: #333;}
|
||||
code {background: transparent;}
|
||||
fieldset, legend, h2, table, .error, .message {-moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px;border-radius: 5px;}
|
||||
#breadcrumb, #lang, #menu {-moz-border-radius-bottomright: 5px; -khtml-border-bottom-right-radius: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;}
|
||||
#breadcrumb {-moz-border-radius-bottomleft: 5px; -khtml-border-bottom-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px;}
|
||||
#menu {-moz-border-radius-topright: 5px; -khtml-border-top-right-radius: 5px; -webkit-border-top-right-radius: 5px; border-bottom-top-radius: 5px;}
|
||||
#loader {margin-left: 35px;}
|
||||
|
||||
/*custom*/
|
||||
.js .checked td,.js .checked th, .js .checkable .checked td, .js .checkable .checked th{
|
||||
background:#5A3901;
|
||||
}
|
||||
tbody tr:hover td,tbody tr:hover th{
|
||||
background:#333333;
|
||||
}
|
||||
.js .column {
|
||||
background: none repeat scroll 0 0 #110236;
|
||||
margin-top: -0.3em;
|
||||
padding: 0.3em 1ex 0.3em 0;
|
||||
position: absolute;
|
||||
}
|
||||
.js:hover .column:hover {
|
||||
background: none repeat scroll 0 0 #110236;
|
||||
}
|
||||
|
||||
#content pre {background-color:#49526D}
|
||||
|
||||
#lang{background:#110236;}
|
||||
|
||||
.pages {background:#43486F;}
|
||||
.pages {background:#999671;}
|
||||
.pages {background:#817F5A;}
|
||||
|
||||
#logins a:hover, #tables a[title]:hover, #tables a.active, #tables a.select:hover + a, #tables a.select.active + a {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.footer, .footer>div {
|
||||
background-color: #49526D;
|
||||
opacity: .9;
|
||||
}
|
||||
.footer {
|
||||
border-image: none;
|
||||
padding: 30px 12px 0px;
|
||||
border: 1px #BBB solid;
|
||||
margin: 12px -20px 12px -1px;
|
||||
margin-right: none;
|
||||
}
|
@@ -1,14 +1,14 @@
|
||||
/*
|
||||
|
||||
|
||||
VERSION: adminer-theme-mancave2-2.1.alpha
|
||||
|
||||
|
||||
AUTHORS: panreach@gmail.com, dev@monolithforge.com //NOTE: CREDITS below that we stole from ;-)
|
||||
|
||||
|
||||
LICENSE: www.adminer.org
|
||||
|
||||
NOTES:
|
||||
|
||||
NOTES:
|
||||
This (mancave-2.0-alpha) theme still needs some debugging! ;/
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@@ -240,17 +240,13 @@ h1{
|
||||
padding: 0 18px;
|
||||
border-bottom: 1px solid #444;
|
||||
font-weight: bold;
|
||||
height: 70px;
|
||||
line-height: 70px;
|
||||
color: #555;
|
||||
background: none;
|
||||
position: relative;
|
||||
top: 12px;
|
||||
}
|
||||
|
||||
h2{
|
||||
font-size: 24px;
|
||||
margin: 0;
|
||||
font-size: 24px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 50px;
|
||||
border-bottom: 1px solid #333;
|
||||
@@ -261,7 +257,7 @@ h2{
|
||||
line-height: 77px;
|
||||
}
|
||||
|
||||
h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 32px 15px 3px 10px; line-height: 35px; /*text-shadow: rgba(185,185,185,1) 0 1px 0px;*/ background: none;color:#A3A3A3}
|
||||
h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 40px 15px 3px 10px; line-height: 35px; /*text-shadow: rgba(185,185,185,1) 0 1px 0px;*/ background: none;color:#A3A3A3}
|
||||
|
||||
h3{
|
||||
font-weight: bold;
|
||||
@@ -362,7 +358,6 @@ th{
|
||||
position: relative;
|
||||
background: #110236;
|
||||
font-weight: normal;
|
||||
width: 17%;
|
||||
border-left: 5px solid #777;
|
||||
border-bottom: 1px solid #777;
|
||||
color: #eee;
|
||||
@@ -456,13 +451,13 @@ textarea
|
||||
}
|
||||
|
||||
textarea, input, select {
|
||||
border-width: 1px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border-color: #5C5C5C;
|
||||
background-color: #49526D;
|
||||
border-width: 1px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border-color: #5C5C5C;
|
||||
background-color: #49526D;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
@@ -547,7 +542,7 @@ input[type='radio']{
|
||||
height: 18px;
|
||||
vertical-align: middle;
|
||||
margin-left: 8px;
|
||||
margin-right: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/* checkbox */
|
||||
@@ -634,7 +629,7 @@ label input {
|
||||
|
||||
/* submit */
|
||||
input[type='submit']{
|
||||
color: #999;
|
||||
color: #999;
|
||||
background-color: #110236;
|
||||
padding: 0 25px;
|
||||
margin-right: 20px;
|
||||
@@ -761,9 +756,8 @@ legend{
|
||||
}
|
||||
|
||||
/* db select */
|
||||
#dbs select{
|
||||
width: 228px;
|
||||
margin-left: 8px;
|
||||
#dbs {
|
||||
padding-left: 18px !important;
|
||||
}
|
||||
|
||||
/* links */
|
||||
@@ -869,17 +863,17 @@ legend{
|
||||
}
|
||||
|
||||
#breadcrumb {
|
||||
margin: 0;
|
||||
height: 21px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
height: 21px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 300px;
|
||||
background-color: #000;
|
||||
border: 1px dashed #ccc;
|
||||
background-color: #000;
|
||||
border: 1px dashed #ccc;
|
||||
border-top:0;
|
||||
padding: 2px 12px 24px 12px;
|
||||
line-height: 1.5em;
|
||||
padding: 2px 12px 24px 12px;
|
||||
line-height: 1.5em;
|
||||
color:#800000;
|
||||
z-index:5000;
|
||||
}
|
||||
@@ -1079,14 +1073,14 @@ body > form{
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
margin: 0;
|
||||
height: 21px;
|
||||
display: block;
|
||||
background-color: #110236;
|
||||
border: 1px dashed #ccc;
|
||||
margin: 0;
|
||||
height: 21px;
|
||||
display: block;
|
||||
background-color: #110236;
|
||||
border: 1px dashed #ccc;
|
||||
border-top:0;
|
||||
padding: 2px 12px 36px 12px;
|
||||
line-height: 1.5em;
|
||||
padding: 2px 12px 36px 12px;
|
||||
line-height: 1.5em;
|
||||
color:#ccc;
|
||||
z-index:5000;
|
||||
}
|
||||
@@ -1096,14 +1090,14 @@ body > form{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 140px;
|
||||
margin: 0;
|
||||
height: 21px;
|
||||
display: block;
|
||||
background-color: #110236;
|
||||
border: 1px dashed #ccc;
|
||||
margin: 0;
|
||||
height: 21px;
|
||||
display: block;
|
||||
background-color: #110236;
|
||||
border: 1px dashed #ccc;
|
||||
border-top:0;
|
||||
padding: 2px 12px 36px 12px;
|
||||
line-height: 1.5em;
|
||||
padding: 2px 12px 36px 12px;
|
||||
line-height: 1.5em;
|
||||
color:#ccc;
|
||||
z-index:5000;
|
||||
|
||||
@@ -1179,7 +1173,7 @@ p#tables a.select::before {
|
||||
/* edit row */
|
||||
html/*\*/>/*/*/body table input + a[href*="&edit="][href*="&where"] {
|
||||
content: '';
|
||||
width:18px;
|
||||
width:18px;
|
||||
vertical-align:middle;
|
||||
display:inline-block;
|
||||
overflow:hidden;
|
||||
|
@@ -403,14 +403,6 @@ tr.odd td {
|
||||
color: #090;
|
||||
}
|
||||
|
||||
.js .hidden {
|
||||
display: initial;
|
||||
}
|
||||
|
||||
.js input.hidden, .js td.hidden {
|
||||
display: none
|
||||
}
|
||||
|
||||
.logout {
|
||||
top: 28px;
|
||||
}
|
||||
@@ -534,13 +526,13 @@ table tbody input ~ a[href*="&edit="][href*="&where"] {
|
||||
}
|
||||
|
||||
#lang {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: auto;
|
||||
position: fixed;
|
||||
line-height: 1;
|
||||
left: initial;
|
||||
font-size: 11px
|
||||
font-size: 11px;
|
||||
left: auto;
|
||||
top: 0;
|
||||
right: calc(100% - 20rem + 3px);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#lang select {
|
||||
@@ -597,7 +589,6 @@ table tbody input ~ a[href*="&edit="][href*="&where"] {
|
||||
background: inherit;
|
||||
color: #fff;
|
||||
padding: 3px;
|
||||
width: 15rem;
|
||||
}
|
||||
|
||||
#menu select option {
|
||||
@@ -614,10 +605,32 @@ table tbody input ~ a[href*="&edit="][href*="&where"] {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tables-filter {
|
||||
padding: .8em .5em;
|
||||
}
|
||||
|
||||
.tables-filter input {
|
||||
color: #fff;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.tables-filter input::placeholder {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#logins a, #tables a {
|
||||
background: 0 0
|
||||
}
|
||||
|
||||
.logout {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: 5;
|
||||
color: #fff;
|
||||
margin: 2px 8px;
|
||||
}
|
||||
|
||||
#logout {
|
||||
color: #fff;
|
||||
text-decoration: none
|
||||
|
@@ -22,7 +22,7 @@ a, a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
a:hover, a:link:hover {
|
||||
background-color: #006AEB !important;
|
||||
border-bottom: 1px solid #006AEB;
|
||||
color: #FFF;
|
||||
@@ -294,7 +294,6 @@ table code {
|
||||
border: none;
|
||||
margin: 0 0 4px;
|
||||
padding: 0 0 4px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#breadcrumb {
|
||||
@@ -383,7 +382,7 @@ a[href$="dump="] {
|
||||
}
|
||||
|
||||
select[name="db"] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEYSURBVBgZBcHPio5hGAfg6/2+R980k6wmJgsJ5U/ZOAqbSc2GnXOwUg7BESgLUeIQ1GSjLFnMwsKGGg1qxJRmPM97/1zXFAAAAEADdlfZzr26miup2svnelq7d2aYgt3rebl585wN6+K3I1/9fJe7O/uIePP2SypJkiRJ0vMhr55FLCA3zgIAOK9uQ4MS361ZOSX+OrTvkgINSjS/HIvhjxNNFGgQsbSmabohKDNoUGLohsls6BaiQIMSs2FYmnXdUsygQYmumy3Nhi6igwalDEOJEjPKP7CA2aFNK8Bkyy3fdNCg7r9/fW3jgpVJbDmy5+PB2IYp4MXFelQ7izPrhkPHB+P5/PjhD5gCgCenx+VR/dODEwD+A3T7nqbxwf1HAAAAAElFTkSuQmCC") no-repeat scroll 90% center white;
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEYSURBVBgZBcHPio5hGAfg6/2+R980k6wmJgsJ5U/ZOAqbSc2GnXOwUg7BESgLUeIQ1GSjLFnMwsKGGg1qxJRmPM97/1zXFAAAAEADdlfZzr26miup2svnelq7d2aYgt3rebl585wN6+K3I1/9fJe7O/uIePP2SypJkiRJ0vMhr55FLCA3zgIAOK9uQ4MS361ZOSX+OrTvkgINSjS/HIvhjxNNFGgQsbSmabohKDNoUGLohsls6BaiQIMSs2FYmnXdUsygQYmumy3Nhi6igwalDEOJEjPKP7CA2aFNK8Bkyy3fdNCg7r9/fW3jgpVJbDmy5+PB2IYp4MXFelQ7izPrhkPHB+P5/PjhD5gCgCenx+VR/dODEwD+A3T7nqbxwf1HAAAAAElFTkSuQmCC") no-repeat scroll left center white;
|
||||
padding-left: 16px;
|
||||
}
|
||||
|
||||
@@ -413,6 +412,11 @@ select[name="db"] option {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.tables-filter {
|
||||
padding: 0;
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
a[href*="&create="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ6SURBVDjLpZNZSNRRGMV//2XGsjFrMg2z0so2K21xIFpepYUiAsGIICLffI8eWiBBeg3qQV+KwBYKLB8qpHUmrahcKLc0QsxldNSxdPz/79LD1ChBUXTh8sG93POdc75zDa01/7NsgGvPR09rzQmpVZZSCqlAKIWUCqk0QqoZWyKFRir1uvxIbsAGUFqXHQqkpP1L57M3Pm5MMJBKpQHUdF9BKIGQAlcJXOlOVykSdye3leO6MmkGQNyHw+uO/1X3bzGBK+S0B1IqAKqDg3986HeCZPffwvJtoNT7lOZLvUdtAPEDAKBkRzo3QwMUb89InN1uGGD3spdE214xe8MRUnM2MfppNW0Pqy7YAK5UKK2xLbhdP4hlmdxpGMQwwQT8ziNiI534c7cT6WrFazikzF2Eb8HS1IQEDdiWwcHAQmpehTkQSAcgNvSMiYFW5uUUMdV3HW+ywefGNqITJsbUUL75k4FWYJtQ+yaMZcXrk1ANk/33mbdiD7EvlRieETy+FJLkMFcjRRSW3emIAwiF1hqPBfu2LGSWbbA1uZ41SfWkrtxPrPcypsfFiWYzFGzGKTjFV28WEJeIUHETLdOgrmkI1VdHpCdEet5enP4qLK9mKrqMgedv6cyrAP+qxOTiUxAi7oEJi8frELoFoTLpa7nI/HQvscgSRt+0kV1SSW7qYtp7xrBMphm4Mi5h/VIfTcEq1u0oJaknSEdNiMYHET7UvcMpPEN31Ed7zxgASmk1I0g6dK66s8CRak5mVxjnfS05+TsZCw/T9baTx1nnGb47DrQksjE6HrsHYPz6nYt3+Sc3L8+wA2tz0J6pF5OD4WP7Kpq7f5fO79DfSxjdtCtDAAAAAElFTkSuQmCC") no-repeat scroll 2px center;
|
||||
padding-left: 22px;
|
||||
@@ -545,6 +549,11 @@ input[name="delete"]:hover, input[name="drop"]:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.logout {
|
||||
color: #fff;
|
||||
margin-top: 0.7em;
|
||||
}
|
||||
|
||||
#logout {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJHSURBVDjLlZPNi81hFMc/z7137p1mTCFvNZfGSzLIWNjZKRvFRoqNhRCSYm8xS3+AxRRZ2JAFJWJHSQqTQkbEzYwIM+6Yid/znJfH4prLXShOnb6r8/nWOd8Tcs78bz0/f+KMu50y05nK/wy+uHDylbutqS5extvGcxaWqtoGDA8PZ3dnrs2srQc2Zko41UXLmLdyDW5OfvsUkUgbYGbU63UAQggdmvMzFmzZCgTi7CQmkZwdEaX0JwDgTnGbTCaE0G4zw80omhPI92lcEtkNkdgJCCHwJX7mZvNaB0A14SaYJlwTrpHsTkoFlV1nt2c3x5YYo1/vM9A/gKpxdfwyu/v3teCayKq4JEwT5EB2R6WgYmrs2bYbcUNNUVfEhIfFYy69uci+1fuRX84mkawFSxd/4nVWUopUVIykwlQxRTJBTIDA4Pp1jBZPuNW4wUAPmCqWIn29X1k4f5Ku8g9mpKCkakRLVEs1auVuauVuyqHMo8ejNCe+sWPVTkQKXCMmkeZUmUZjETF1tc6ooly+fgUVw9So1/tRN6YnZji46QghBFKKuAouERNhMlbAHZFE6e7pB+He8MMw+GGI4xtOMf1+lsl3TQ4NHf19BSlaO1DB9BfMHdX0O0iqSgiBbJkjm491hClJbA1LxCURgpPzXwAHhg63necAIi3XngXLcRU0fof8ETMljIyM5LGxMcbHxzvy/6fuXdWgt6+PWncv1e4euqo1ZmabvHs5+jn8yzufO7hiiZmuNpNBM13rbvVSpbrXJE7/BMkHtU9jFIC/AAAAAElFTkSuQmCC") no-repeat scroll left center;
|
||||
border: none;
|
||||
|
@@ -22,7 +22,7 @@ a,a:visited {
|
||||
color:black;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
a:hover, a:link:hover {
|
||||
color:white;
|
||||
background:#006aeb;
|
||||
}
|
||||
@@ -224,14 +224,18 @@ input[name=logout]:hover {
|
||||
background:#ea0202;
|
||||
}
|
||||
|
||||
#logins a, #tables a {
|
||||
#logins a, #tables a {
|
||||
background:none;
|
||||
}
|
||||
|
||||
#logins a:hover, #tables a:hover {
|
||||
#logins a:hover, #tables a:hover {
|
||||
background:#006aeb;
|
||||
}
|
||||
|
||||
.logout {
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
#logout {
|
||||
color:#006aeb;
|
||||
text-decoration:none;
|
||||
|
@@ -160,6 +160,14 @@ tr.odd td {
|
||||
background:#fcfaf5;
|
||||
}
|
||||
|
||||
.footer {
|
||||
border-image: linear-gradient(rgba(242, 242, 242, 0), #f2f2f2) 100% 0;
|
||||
}
|
||||
|
||||
.footer div {
|
||||
background: #f2f2f2;
|
||||
}
|
||||
|
||||
#content tbody tr.checked td, tr.checked.odd td {
|
||||
background:#fbe2e2;
|
||||
color:red;
|
||||
@@ -221,7 +229,7 @@ tr.odd td {
|
||||
#menu {
|
||||
background:#34495e;
|
||||
position:fixed;
|
||||
top:-10px;
|
||||
top:5px;
|
||||
color:#FFF;
|
||||
padding:20px;
|
||||
padding-top:40px;
|
||||
@@ -287,9 +295,14 @@ input[name=logout]:hover {
|
||||
}
|
||||
|
||||
.logout {
|
||||
position: fixed;
|
||||
z-index:3;
|
||||
}
|
||||
|
||||
.logout form {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.js .column {
|
||||
background:#ecf0f1;
|
||||
}
|
||||
|
@@ -8,7 +8,7 @@ body {
|
||||
font-size: 11pt; }
|
||||
body, select, option, optgroup, button {
|
||||
font-family: Calibri, Arial, Helvetica, sans-serif; } /* IE6 */
|
||||
input[type='submit'], input[type='reset'], input[type='button'], input[type='file'],
|
||||
input[type='submit'], input[type='reset'], input[type='button'], input[type='file'],
|
||||
input[name$='[comment]'], input[name='Comment'] {
|
||||
font-family: Calibri, Arial, Helvetica, sans-serif; }
|
||||
input, textarea, pre, code, samp, kbd, var {
|
||||
@@ -185,6 +185,10 @@ h3 {
|
||||
background: #DEF;
|
||||
}
|
||||
|
||||
.tables-filter {
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-top: 8px;
|
||||
color: #000;
|
||||
@@ -221,10 +225,6 @@ h2 {
|
||||
|
||||
|
||||
/* -- GUI adjustments ------------------------------------------------------- */
|
||||
.js .hidden {
|
||||
display: inline; }
|
||||
.js td.hidden, .js input.hidden {
|
||||
display: none; }
|
||||
legend a {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
@@ -287,4 +287,3 @@ fieldset table {
|
||||
p.tabs {
|
||||
display: none; }
|
||||
}
|
||||
|
||||
|
Submodule designs/pepa-linha-dark deleted from 0f4f3789af
@@ -93,10 +93,6 @@ tbody tr:hover th {
|
||||
background: none;
|
||||
}
|
||||
|
||||
table:not(.checkable) th {
|
||||
min-width: 120px;
|
||||
}
|
||||
|
||||
thead td,
|
||||
thead th {
|
||||
background: #34567c;
|
||||
@@ -270,7 +266,7 @@ p code + a:visited:hover {
|
||||
|
||||
#menu #dbs {
|
||||
background: #fff;
|
||||
padding: 0 15px 15px;
|
||||
padding: 0;
|
||||
border: 1px solid #dae8fa;
|
||||
border-bottom: 0;
|
||||
box-sizing: border-box;
|
||||
@@ -280,7 +276,6 @@ p code + a:visited:hover {
|
||||
#menu #dbs select {
|
||||
outline: 0;
|
||||
border-color: rgba(0, 0, 0, 0.1);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#menu p.links {
|
||||
@@ -310,6 +305,11 @@ p code + a:visited:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.tables-filter {
|
||||
padding: 0;
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
#content p.links {
|
||||
margin: -10px 0 15px;
|
||||
}
|
||||
@@ -522,7 +522,7 @@ input.default {
|
||||
select {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 6px 0;
|
||||
padding: 6px;
|
||||
border: 1px solid #bbbbbb;
|
||||
}
|
||||
|
||||
@@ -652,11 +652,11 @@ label {
|
||||
.logout {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
#breadcrumb {
|
||||
position: static;
|
||||
}
|
||||
|
||||
|
||||
#content {
|
||||
margin: 0;
|
||||
}
|
||||
|
@@ -1,127 +0,0 @@
|
||||
#menu {
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 270px;
|
||||
padding: 0;
|
||||
border-right: 1px #ccc solid;
|
||||
}
|
||||
|
||||
#menu p {
|
||||
margin: 0;
|
||||
padding: 4px 10px;
|
||||
}
|
||||
|
||||
#menu p select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#menu h1 {
|
||||
height: 25px;
|
||||
padding: 0 10px;
|
||||
margin: 0;
|
||||
line-height: 20px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#menu h1 a {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#menu h1 .version {
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
#menu * {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#tables {
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 118px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
width: 270px;
|
||||
}
|
||||
|
||||
#logins li, #tables li {
|
||||
position: relative;
|
||||
height: 23px;
|
||||
}
|
||||
|
||||
#logins a {
|
||||
display: block;
|
||||
margin-top: 5px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
#tables a {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
#tables a[href*="select"] {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
#tables a[href*="table"] {
|
||||
position: absolute;
|
||||
left: 65px;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
#lang {
|
||||
top: -1px;
|
||||
right: 2px;
|
||||
left: auto;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin: 0;
|
||||
padding: 0 10px 10px 10px;
|
||||
position: absolute;
|
||||
left: 270px;
|
||||
right: 0;
|
||||
top: 82px;
|
||||
bottom: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#content h2 {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 55px;
|
||||
position: fixed;
|
||||
left: 270px;
|
||||
right: 0;
|
||||
top: 26px;
|
||||
line-height: 55px;
|
||||
padding-left: 10px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#breadcrumb {
|
||||
position: fixed;
|
||||
left: 270px;
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 25px;
|
||||
margin: 0;
|
||||
border-bottom: 1px solid #999;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user