add phpmyadmin sources 4.1.4
21
sources/CONTRIBUTING.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Contributing to phpMyAdmin
|
||||||
|
|
||||||
|
As an open source project, phpMyAdmin welcomes contributions of many forms.
|
||||||
|
|
||||||
|
## Bug reporting
|
||||||
|
|
||||||
|
Please report [bugs on SourceForge.net][1].
|
||||||
|
|
||||||
|
[1]: https://sourceforge.net/p/phpmyadmin/bugs/new/
|
||||||
|
|
||||||
|
## Patches submission
|
||||||
|
|
||||||
|
Patches are welcome either as [pull requests on GitHub][2].
|
||||||
|
|
||||||
|
[2]: https://github.com/phpmyadmin/phpmyadmin/pulls
|
||||||
|
|
||||||
|
## More information
|
||||||
|
|
||||||
|
You can find more information on our website:
|
||||||
|
|
||||||
|
http://www.phpmyadmin.net/home_page/improve.php
|
445
sources/ChangeLog
Normal file
|
@ -0,0 +1,445 @@
|
||||||
|
phpMyAdmin - ChangeLog
|
||||||
|
======================
|
||||||
|
|
||||||
|
4.1.4.0 (2014-01-07)
|
||||||
|
- bug #3840 (additional fix) When exporting to gzip format, the data is compressed 2 times
|
||||||
|
- bug #4209 Missing compression in one case
|
||||||
|
- bug #4208 Can't browse tables after sorting on columns with fieldnames that have a '-'
|
||||||
|
- bug #4184 Switch to wrong page after adding an index
|
||||||
|
- bug #3885 Additional fix for this bug
|
||||||
|
- bug #4212 Table "disappears" if it has the same name as its tablegroup
|
||||||
|
- bug #4213 Datetime Quick Edit decrements by one day
|
||||||
|
- bug #4217 Current value not highlighted when browsing foreign values
|
||||||
|
- bug #4220 Incorrect key values in foreign key browser
|
||||||
|
- bug #4215 MariaDB 5.5: error in Drizzle detection
|
||||||
|
|
||||||
|
4.1.3.0 (2013-12-31)
|
||||||
|
- bug #3938 PDFDefaultPageSize doc and easy configurability
|
||||||
|
- bug #4198 Hovering over pie chart gives fatal JS error
|
||||||
|
- bug #4200 Missing syntax highlighting
|
||||||
|
- bug #4201 Exports are not compressed
|
||||||
|
- bug #4131 Import: "number of rows to skip" is ambiguous
|
||||||
|
- bug #4205 Add a user shows additional "edit user group" link
|
||||||
|
- bug #4202 Cannot read property 'token' of undefined
|
||||||
|
- bug #4203 On refreshing designer, $.FullScreen is undefined
|
||||||
|
- bug #3920 Lost space in navigation area
|
||||||
|
|
||||||
|
4.1.2.0 (2013-12-23)
|
||||||
|
- bug #4178 Quick edit for BIT type does not work
|
||||||
|
- bug #2760 Warn about incomplete exports
|
||||||
|
- bug #4190 Fractional seconds cause row update even if the value is not changed
|
||||||
|
- bug #4170 Overflow scroll for table grid is not a good solution
|
||||||
|
- bug #2961 Relations settings not updated on config change
|
||||||
|
- bug #4187 SQL query inline edit doesn't post changes on the first run
|
||||||
|
+ rfe #1465 Docs for connections to IPv6 only MySQL instances
|
||||||
|
+ rfe #1468 [interface] No floating for server breadcrumb menu
|
||||||
|
|
||||||
|
4.1.1.0 (2013-12-17)
|
||||||
|
- bug #4154 Error using UNION query
|
||||||
|
- bug #4173 Transformations overview not reachable
|
||||||
|
- bug #4149 Js freezes in the management of replication
|
||||||
|
- bug #3903 Query fails when using aliases after ordering result
|
||||||
|
- bug #4181 Adding columns in table creation clears existing columns
|
||||||
|
- bug #4023 Requires wildcard EXECUTE/ALTER ROUTINE on DB to allow
|
||||||
|
Procedures to be executed by user
|
||||||
|
- bug #4186 Adding a column when creating a table does not propagate index info
|
||||||
|
- bug #4185 Unable to execute create procedure statement from query window
|
||||||
|
|
||||||
|
4.1.0.0 (2013-12-11)
|
||||||
|
+ rfe #499 On user creation, warn if the user already exists
|
||||||
|
+ Use indeterminate check all checkbox in server privileges
|
||||||
|
+ Break server_status.php functions into smaller functions
|
||||||
|
+ PMA_DBI functions in database_interface.lib.php renamed to be compliant with PEAR standards
|
||||||
|
+ [interface] Make warning about existing config directory clearer
|
||||||
|
+ rfe #1414 Allow specifying controlport
|
||||||
|
+ PMA_DBI functions in database interface libraries renamed to be compliant with PEAR standards
|
||||||
|
+ rfe #1412 Creating a view from an empty set of results
|
||||||
|
+ Improved layout on db and table operations pages
|
||||||
|
+ rfe #1410 Added support for AES_ENCRYPT for blob fields
|
||||||
|
+ rfe #1423 Clarify option text for icon/text settings
|
||||||
|
+ [interface] Upgraded CodeMirror to 3.x series
|
||||||
|
+ rfe #1363 Improved query profiler
|
||||||
|
+ [interface] rfe #1429 Better suggestion for database name
|
||||||
|
+ rfe #1433 Support relations with ndbcluster
|
||||||
|
- bug #3962 Proper escaping of JSON export
|
||||||
|
+ rfe #1382 Optional ReCAPTCHA support
|
||||||
|
+ rfe #1434 Improvements to the table browsing navigation bar
|
||||||
|
+ rfe #1233 and rfe #1283 Improvements to Relation View interface
|
||||||
|
+ rfe #1397 Use fractional seconds in time, datetime, and timestamp
|
||||||
|
+ rfe #175 Allow cross-database relations
|
||||||
|
- [core] Dropped support for PHP 5.2.
|
||||||
|
+ rfe #487 and rfe #1405 Find and Replacing column wise
|
||||||
|
+ rfe #1373 Use same create view dialog for editing a view
|
||||||
|
+ rfe #316 Configurable menus; allow user groups with customized menus per group
|
||||||
|
- bug #4024 Editing field a record is selected by makes pma load forever
|
||||||
|
- bug #4035 Query "inline" link disappears when turning off "Explain SQL" option
|
||||||
|
+ rfe #1385 Hide tables, functions, procedures, events and views in navigation tree
|
||||||
|
+ rfe #1321 Export view as if it was a table
|
||||||
|
+ Dropped configuration directive: SQP
|
||||||
|
+ Dropped configuration directive: MySQLManual*
|
||||||
|
+ rfe #1041 and bug #2954 Improved support for SSL connections between MySQL and phpMyAdmin
|
||||||
|
- bug #4056 Language: Vague error message when adding a varchar field
|
||||||
|
+ [setup] rfe #1452 Use type="password" for server passwords
|
||||||
|
+ rfe #1451 HTML5 input tag enhancements
|
||||||
|
- bug #1193 Text field too small when editing a row longer than $cfg['LimitChars']
|
||||||
|
+ Privileges tab for table level
|
||||||
|
- bug #4068 Headline in operations not readable in IE10
|
||||||
|
- bug #4000 "Table does not contain unique column" message appears after adding a unique column
|
||||||
|
+ rfe #1428 add 'new database' entry to nav tree
|
||||||
|
+ rfe #1457 Stone Age icon found
|
||||||
|
+ rfe #1463 Filter tables and databases by regular expression
|
||||||
|
+ Change the proxy variable names in the config to remove the VersionCheck prefix from them
|
||||||
|
+ Added an Error Reporting Component
|
||||||
|
+ Javascript files are no longer uglified
|
||||||
|
- bug #4145 Config screen fails to validate MemoryLimit = -1 (new default)
|
||||||
|
- bug #4123 Double config including
|
||||||
|
- bug #4134 After deleting all rows on a page, it returns to a blank page
|
||||||
|
+ Dropped configuration directive: DisableIS, ShowDatabasesCommand
|
||||||
|
- bug #4152 Not possible to enter % for search in date fields
|
||||||
|
- bug #3931 IN Clause search does not permit multiple values
|
||||||
|
- bug #4086 Clicking OK from edit popup opens new tab
|
||||||
|
- bug #2983 unknown table status: TABLE_TYPE
|
||||||
|
- bug #4030 ORDER BY SUM(`field`) does not sort DESC
|
||||||
|
- bug #4133 CSV import breaks when no blank line at end of file
|
||||||
|
- bug #4153 Unable to import if newline encoding is MAC style
|
||||||
|
- bug #4096 horizontal scrollbar should not overflow on the left column
|
||||||
|
- bug #4159 bug with navigation between database and table filter
|
||||||
|
- bug #4119 Huge session data with $cfg['Error_Handler']['gather']
|
||||||
|
- bug #4169 Table list jumps to table on click
|
||||||
|
- bug #4168 Rename multiple columns is not working
|
||||||
|
|
||||||
|
4.0.10.0 (2013-12-04)
|
||||||
|
- bug #4150 Clicking database name in query window opens a new tab
|
||||||
|
- bug #4141 Wrong page is shown after editing; also, do not show a modal
|
||||||
|
dialog for multi-row edit
|
||||||
|
- bug #3939 PHP NavigationTree error when paging through list
|
||||||
|
- bug #4075 Support A10 Networks load balancer
|
||||||
|
- bug #4083 row deleting isn't binlogs friendly
|
||||||
|
- bug #4163 Setup script does not recognize manually-configured server
|
||||||
|
- bug #4158 Events page says no privileges with ALL PRIVILEGES
|
||||||
|
|
||||||
|
4.0.9.0 (2013-11-04)
|
||||||
|
- bug #4104 Can't edit updatable view when searching
|
||||||
|
- bug #4108 Missing refresh by deleting databases
|
||||||
|
- bug #3995 Drizzle server charset notice
|
||||||
|
- bug #3911 Filtering database names includes empty groupings
|
||||||
|
- bug #3678 Does not display or manipulate bit(64) fields appropriately
|
||||||
|
- bug #4129 Unneeded navi panel refresh
|
||||||
|
- bug #4120 SSL redirects to port 80
|
||||||
|
- bug #4144 DROP DATABASE displays wrong database name
|
||||||
|
- bug #4059 Running delete query asks for confirmation but says it was already executed
|
||||||
|
- bug #4147 Accessibility: Images without Alt nor title attribute
|
||||||
|
|
||||||
|
4.0.8.0 (2013-10-06)
|
||||||
|
- bug #3988 Rename view is not working
|
||||||
|
- bug #4041 Interaction between linkified fields and grid editing
|
||||||
|
- bug #3975 Table grouping isn't implemented properly
|
||||||
|
- bug #4060 Browser tries to remember wrong password when creating new user
|
||||||
|
- bug #4002 Edit Index on big table doesn't show "Loading" or any message
|
||||||
|
- bug #4098 Default table tab is ignored
|
||||||
|
- bug #4099 Server/library difference warning: setting is ignored
|
||||||
|
- bug #4100 table tree group strategy
|
||||||
|
- bug #4102 ALTER TABLE ORDER BY and InnoDB
|
||||||
|
- bug #4103 Tracking report: cannot delete a statement
|
||||||
|
- bug #3996 Drizzle navigation doesn't expand
|
||||||
|
- bug #4074 GIS column editor: point not displayed
|
||||||
|
- bug #4109 Drizzle tables in navigation are shown as views
|
||||||
|
- bug #4095 NUL symbols added to the end of database dump file
|
||||||
|
- bug #4105 More disappears in table Structure
|
||||||
|
- bug #3992 Multi-row edit doesn't clear values when checking NULL
|
||||||
|
|
||||||
|
4.0.7.0 (2013-09-23)
|
||||||
|
- bug #3993 Sorting in database overview with statistics doesn't work
|
||||||
|
- bug Handle the situation where PHP_SELF is not set
|
||||||
|
- bug #4080 Overwrite existing file not obeyed
|
||||||
|
- bug #3929 Database-specific privileges are not copied when cloning user
|
||||||
|
- bug #3997 Error handling in case MySQL extension is missing
|
||||||
|
- bug #4089 Moving Columns will alter column definition
|
||||||
|
- bug #4091 Insert ignore option does not work
|
||||||
|
- bug #4090 Downloading BLOB downloads page template
|
||||||
|
- bug #4092 Clicking on table name in view of information_schema redirects to wrong page
|
||||||
|
- bug #4079 Copy Table Add AUTO_INCREMENT value checkbox not working
|
||||||
|
- bug #4088 MySQL server version at index.php incorrect w/ controlhost
|
||||||
|
- bug #4001 Import error: Class 'ImportOds' not found
|
||||||
|
- bug #3986 Missing DROP VIEW button
|
||||||
|
|
||||||
|
4.0.6.0 (2013-09-05)
|
||||||
|
- bug #4036 Call to undefined function mb_detect_encoding (clarify the doc)
|
||||||
|
- bug Missing hints when changing a column's structure
|
||||||
|
- bug #4048 Cannot select foreign value in Search
|
||||||
|
- bug #4025 gzip export is not actually compressed with mod_deflate
|
||||||
|
- bug #4054 query analysis doesn't launch in status monitor
|
||||||
|
+ Add pmahomme icon credits (FamFamFam silk icon set)
|
||||||
|
- bug #4064 Table structure statistics "Space usage" caption too small for l10n
|
||||||
|
- bug #4051 Wrong tabindex when inserting rows
|
||||||
|
- bug #4066 varchar field not truncated in table browse mode
|
||||||
|
+ rfe #1435 Opening database should expand it in the navigation menu
|
||||||
|
- (performance) Removed ShowTooltip directive
|
||||||
|
- bug #4046 Exporting huge Tables causes memory-Problems
|
||||||
|
|
||||||
|
4.0.5.0 (2013-08-04)
|
||||||
|
- bug #3977 Not detected configuration storage
|
||||||
|
- bug #3970 Pressing enter in the filter field reloads page
|
||||||
|
- bug #3984 Cannot insert in this table (PHP < 5.4)
|
||||||
|
- bug #3989 Reloading privileges does not update the interface
|
||||||
|
- bug #3960 NavigationBarIconic config not honored
|
||||||
|
- bug #3985 Call to undefined function mb_detect_encoding
|
||||||
|
- bug #4007 Analyze option not shown for InnoDB tables
|
||||||
|
- bug #4015 Forcing a storage engine for configuration storage
|
||||||
|
- bug Incorrect Drizzle 7 detection
|
||||||
|
- bug #4019 Create database if not exists (export): add an option to the
|
||||||
|
interface to enable generating CREATE DATABASE and USE (false by default)
|
||||||
|
- bug #4012 Crash on CSV file import
|
||||||
|
- bug #4009 Statistic Monitor shows only last 3 digits in graph
|
||||||
|
- bug #3998 Non-permanent SQL history not working
|
||||||
|
- bug #3578 Transformations for text/plain on a BLOB column
|
||||||
|
- [security] Improved protection against cross framing, see PMASA-2013-10
|
||||||
|
+ Reinstated configuration directive: AllowThirdPartyFraming
|
||||||
|
|
||||||
|
4.0.4.2 (2013-07-28)
|
||||||
|
- [security] fix unescaped parameter, see PMASA-2013-8
|
||||||
|
- [security] Fix stored XSS in Server status monitor, see PMASA-2013-9
|
||||||
|
- [security] Fix stored XSS in navigation panel logo link, see PMASA-2013-9
|
||||||
|
- [security] Fix self-XSS in setup, trusted proxies validation, see PMASA-2013-9
|
||||||
|
- [security] Fix full path disclosure, see PMASA-2013-12
|
||||||
|
- [security] Fix control user SQL injection in pmd_pdf.php, see PMASA-2013-15
|
||||||
|
- [security] Fix control user SQL injection in schema_export.php, see PMASA-2013-15
|
||||||
|
- [security] Fix self-XSS in schema export, see PMASA-2013-14
|
||||||
|
- [security] Fix unencoded json object, see PMASA-2013-11
|
||||||
|
- [security] Fix stored XSS in link transformation plugin, see PMASA-2013-13
|
||||||
|
|
||||||
|
4.0.4.1 (2013-06-30)
|
||||||
|
- [security] Global variables scope injection vulnerability (see PMASA-2013-7)
|
||||||
|
|
||||||
|
4.0.4.0 (2013-06-17)
|
||||||
|
- bug #3959 Using DefaultTabDatabase in NavigationTree for Database Click
|
||||||
|
- bug #3961 Avoid Suhosin warning when in simulation mode
|
||||||
|
- bug #3897 Row Statistics and Space usage bugs
|
||||||
|
- bug #3966 Only display "table has no unique column" message when applicable
|
||||||
|
- bug #3965 Default language wrong with zh-TW
|
||||||
|
- bug #3921 Call to undefined function PMA_isSuperuser() if default server is
|
||||||
|
not set
|
||||||
|
- bug #3971 Ctrl/shift + click opens links in same window
|
||||||
|
- bug #3964 Import using https does not work
|
||||||
|
- bug Missing removeCRLF option in ExportCsv and ExportExcel plugins
|
||||||
|
- bug #3631 Drop not working Visio schema export.
|
||||||
|
- bug #3645 Better handling of invalid ODS documents
|
||||||
|
- bug #3976 Number of pages
|
||||||
|
- bug #3922 User privileges, database name unescaped
|
||||||
|
|
||||||
|
4.0.3.0 (2013-06-05)
|
||||||
|
- bug #3941 Recent tables list always empty
|
||||||
|
- bug #3933 Do not translate "Open Document" in export settings
|
||||||
|
- bug #3927 List of tables is missing after expanding in the navigation frame
|
||||||
|
- bug #3942 Warnings about reserved word for many non reserved words
|
||||||
|
- bug #3912 Exporting row selection, resulted by ORDER BY query
|
||||||
|
- bug #3957 Cookies must be enabled past this point
|
||||||
|
- bug #3956 "Browse foreign values" search filter / page selector not working
|
||||||
|
- bug #3579 NOW() function incorrectly selected (partial regression)
|
||||||
|
- [security] Javascript execution vulnerability in Create view,
|
||||||
|
reported by Maxim Rupp (see PMASA-2013-6)
|
||||||
|
|
||||||
|
4.0.2.0 (2013-05-24)
|
||||||
|
- bug #3902 Cannot browse when table name contains keyword "call"
|
||||||
|
+ center loading indicator for navigation refresh, related to bug #3920
|
||||||
|
- bug #3925 Table sorting in navigation panel is case-sensitive
|
||||||
|
- bug #3915 Import of CSV file (Replace table data with file) with duplicate values
|
||||||
|
- bug #3907 undefined variables, function parameter problems
|
||||||
|
- bug #3898 Structure not refreshed after column drop
|
||||||
|
- bug #3926 View is not updatable
|
||||||
|
- bug #3919 PropertiesIconic not honored
|
||||||
|
- bug #3930 Databases to choose for specific privileges show up escaped
|
||||||
|
- bug #3910 Export database with empty table as a php array, does not produce valid PHP
|
||||||
|
- bug #3936 Query profiler chart not loading from SQL Query page
|
||||||
|
- bug #3946 Missing CSV import option "Do not abort on INSERT error"
|
||||||
|
- bug #3943 Missing Operations>Table options>AUTO_INCREMENT
|
||||||
|
- bug Missing CREATE DATABASE statement when exporting at database level
|
||||||
|
- bug #3924 Show warning when CSV file does not contain data for all columns
|
||||||
|
- bug #3947 Missing Sql Query after modify structure
|
||||||
|
- bug #3948 Server export problems
|
||||||
|
- bug #3917 CountTables directive is deprecated
|
||||||
|
|
||||||
|
4.0.1.0 (2013-05-14)
|
||||||
|
- bug #3879 Import broken for CSV using LOAD DATA
|
||||||
|
- bug #3889 When login fails and error display is active, login data is displayed
|
||||||
|
- bug #3890 [import] Web server upload directory import fails
|
||||||
|
- bug #3891 [import] Server upload folder import file name missing in success message
|
||||||
|
+ rfe #1421 [auth] Add retry button on connection failure with config auth
|
||||||
|
- bug #3894 [interface] Provide feedback if no columns selected for multi-submit
|
||||||
|
- bug #3799 [interface] Incorrect select field change on ctrl key navigation in Firefox
|
||||||
|
- bug #3885 [browse] display_binary_as_hex option causes unexpected behavior
|
||||||
|
- bug #3899 Git commit links to Github missing
|
||||||
|
- bug #3900 CSP WARN in Firefox console
|
||||||
|
- bug #3901 Setup script warning for config auth (stored login data) shows link BBcode
|
||||||
|
- bug #3895 [browse] Fixed getting BLOB data
|
||||||
|
- bug #3905 [export] Custom Exporting exports all databases
|
||||||
|
- bug #3909 [import] Import of CSV FIle to selected table doesn't work
|
||||||
|
- bug #3904 Browsing an empty table should not display its Structure
|
||||||
|
- bug #3908 Calendar widget improperly redirects to home
|
||||||
|
- bug #3918 Greyed out tabs when there are no rows fixed
|
||||||
|
- bug #3916 [interface] Missing scrollbar (original theme)
|
||||||
|
+ [vendor] add tcpdf path to vendor_config.php
|
||||||
|
- bug fix compat with tcpdf >= 6.0 (tested with 6.0.012)
|
||||||
|
|
||||||
|
4.0.0.0 (2013-05-03)
|
||||||
|
+ Patch #3481047 for rfe #3480477 Insert as new row enhancement
|
||||||
|
+ Patch #3480999 Activate codemirror in the query window
|
||||||
|
- Patch #3495284 XML Import - fix message and redirect
|
||||||
|
+ rfe #3484063 Null checkbox behavior
|
||||||
|
+ Patch #3497179 Contest-5: Add user: Allow create DB w/same name + grant u_%
|
||||||
|
+ Patch #3498201 Contest-6: Export all privileges
|
||||||
|
+ Patch #3502814 for rfe #3187077 Change password buttons should match
|
||||||
|
+ rfe #3488640 Expand table-group in non-light navigation frame if only one
|
||||||
|
+ Patch #3509360 Contest-3: Option "Truncate table" before "insert"
|
||||||
|
+ Patch #3506552 Contest-2: Show index information in the data dictionary
|
||||||
|
+ Patch #3510656 Contest-1: Ignoring foreign keys while dropping tables
|
||||||
|
- Bug #3509686 Reverting sort on joined column does not work
|
||||||
|
+ New transformation: append string
|
||||||
|
+ rfe #3507804 Session upload progress (PHP 5.4)
|
||||||
|
+ rfe #3488185 draggable columns vs copy column name
|
||||||
|
+ Patch #3507001 Contest-4: Textarea for large character columns
|
||||||
|
+ Removed the PHP version of the ENUM editor
|
||||||
|
+ Patch #3507111 Display distinct results, linked to corresponding data rows
|
||||||
|
- bug #3507917 [export] JSON has unescaped values for allegedly numeric columns
|
||||||
|
+ rfe #3516187 show tables creation, last update, last check timestamps in db_structure
|
||||||
|
- bug #3059806 Supporting running from CIFS/Samba shares
|
||||||
|
- bug #3516341 [export] Open Document Text, Word and Texy! Text show table structure twice
|
||||||
|
- bug [export] Texy! Text: Columns containing Pipe Character don't export properly
|
||||||
|
+ [export] Show triggers in Open Document Text, Word and Texy! Text
|
||||||
|
- Patch #3415061 [auth] Login screen appears under the page
|
||||||
|
+ rfe #3517354 [interface] Allow disabling CodeMirror with $cfg['CodemirrorEnable'] = false
|
||||||
|
+ rfe #3475567 [interface] New directive $cfg['HideStructureActions']
|
||||||
|
- bug #3468272 [import] Fixed import of ODS with more paragraphs in a cell
|
||||||
|
- bug #3510196 [core] Improved redirecting with ForceSSL option
|
||||||
|
+ rfe #3518852 [edit] edit blob but not other binary, new option $cfg['ProtectBinary'] = 'noblob'
|
||||||
|
+ Hide language select box if there are no locales installed
|
||||||
|
+ Removed some directives: verbose_check, SuggestDBName, LightTabs,
|
||||||
|
VerboseMultiSubmit, ReplaceHelpImg
|
||||||
|
- Patch #3500882 Fixing checkbox behaviour while editing identical rows
|
||||||
|
+ rfe #3441722 [interface] Display description of datatypes
|
||||||
|
+ rfe #3517835 [structure] Move columns easily
|
||||||
|
+ Ajaxified "Create View" functionality
|
||||||
|
+ [import] New plugin: import mediawiki
|
||||||
|
+ New navigation system
|
||||||
|
+ Discontinued the use of a frame-based layout
|
||||||
|
+ rfe #3528994 [interface] Allow wrapping possibly long values in replication-status table
|
||||||
|
+ [interface] Autoselect username input on cookie login page
|
||||||
|
- bug #3563799 [interface] Grid editing destroying huge amount of data
|
||||||
|
+ [import] Remove support for the unactive docSQL import format
|
||||||
|
- bug #3577443 [edit] "Browse foreign values" does not show on ajax edit
|
||||||
|
+ rfe #3522109 [browse] Grid editing: action to trigger it (or disable)
|
||||||
|
- bug #3526598 [interface] SQL query not shown when creating table
|
||||||
|
+ Dropped configuration directive: AllowThirdPartyFraming
|
||||||
|
+ Dropped configuration directive: LeftFrameLight
|
||||||
|
+ Dropped configuration directive: DisplayDatabasesList
|
||||||
|
+ Dropped configuration directives: ShowTooltipAliasDB and ShowTooltipAliasTB
|
||||||
|
+ Dropped configuration directive: NaviDatabaseNameColor
|
||||||
|
+ Added configuration directive: MaxNavigationItems
|
||||||
|
+ Renamed configuration directive: LeftFrameDBTree => NavigationTreeEnableGrouping
|
||||||
|
+ Renamed configuration directive: LeftFrameDBSeparator => NavigationTreeDbSeparator
|
||||||
|
+ Renamed configuration directive: LeftFrameTableSeparator => NavigationTreeTableSeparator
|
||||||
|
+ Renamed configuration directive: LeftFrameTableLevel => NavigationTreeTableLevel
|
||||||
|
+ Renamed configuration directive: LeftPointerEnable => NavigationTreePointerEnable
|
||||||
|
+ Renamed configuration directive: LeftDefaultTabTable => NavigationTreeDefaultTabTable
|
||||||
|
+ Renamed configuration directive: LeftDisplayTableFilterMinimum => NavigationTreeDisplayTableFilterMinimum
|
||||||
|
+ Renamed configuration directive: LeftDisplayLogo => NavigationDisplayLogo
|
||||||
|
+ Renamed configuration directive: LeftLogoLink => NavigationLogoLink
|
||||||
|
+ Renamed configuration directive: LeftLogoLinkWindow => NavigationLogoLinkWindow
|
||||||
|
+ Renamed configuration directive: LeftDisplayServers => NavigationDisplayServers
|
||||||
|
+ Renamed configuration directive: LeftRecentTable => NumRecentTables
|
||||||
|
+ Renamed configuration directive: LeftDisplayDatabaseFilterMinimum => NavigationTreeDisplayDbFilterMinimum
|
||||||
|
+ Removed the "Mark row on click" feature; must now click the checkbox to mark
|
||||||
|
+ Removed the "Synchronize" feature
|
||||||
|
+ Improved layout of server variables page
|
||||||
|
+ rfe #1052091 [config] Double-underscores in PMA table names
|
||||||
|
+ Improved the "" dropdown on the table structure page
|
||||||
|
+ [interface] Added "scroll to top" link in menubar
|
||||||
|
+ [designer] Fullscreen mode for the designer
|
||||||
|
+ Upgraded jquery to v1.8.3 and jquery-ui to v1.9.2
|
||||||
|
+ Patch #3597529 [status] Add raw value as title on server status page
|
||||||
|
+ Support MySQL 5.6 partitioning
|
||||||
|
+ Removed the AjaxEnable directive
|
||||||
|
+ rfe #3542567 Accept IPv6 ranges and IPv6 CIDR notations in $cfg['Servers'][$i]['AllowDeny']['rules']
|
||||||
|
- Bug #3576788 Grid editing shows the value before silent truncation
|
||||||
|
- Upgraded jqPlot to 1.0.4 r1121
|
||||||
|
- Upgraded to jquery-ui-timepicker-addon 1.1.1
|
||||||
|
+ rfe #3599046 [interface] Added comments for indexes
|
||||||
|
- Replaced qtip with jQuery UI tooltip
|
||||||
|
- Upgraded CodeMirror to 2.37
|
||||||
|
- bug #2951 [export] Correctly export decimal fields.
|
||||||
|
- bug #3762 [core] Make Advisor work on Windows withou COM extension.
|
||||||
|
- bug #3519 [export] Prevent infinite recursion in PDF export.
|
||||||
|
- bug #3827 Table specific privileges not displayed for db name containing
|
||||||
|
underscore
|
||||||
|
- rfe #1386 Add IF NOT EXISTS clause when copying database
|
||||||
|
- No longer package .travis.yml configuration file when creating a release.
|
||||||
|
- bug #3830 Can't export custom query because it lowercases table names
|
||||||
|
- bug #3829 Enabling query profiling crashes javascript based navigation
|
||||||
|
+ rfe #879 Reserved word warning
|
||||||
|
+ Remove the database ordering sub-feature of the only_db directive
|
||||||
|
- bug #3840 When exporting to gzip format, the data is compressed 2 times
|
||||||
|
+ rfe #1319 Permit to create index when creating foreign key
|
||||||
|
- bug #3703 Incorrect updating of the list of users
|
||||||
|
- bug #3853 Blowfish implementation might be broken (replace with phpseclib)
|
||||||
|
- bug #3865 Using like operator on each backslash needs 4 backslash protection
|
||||||
|
- bug #3860 Displayed git revision info is not set
|
||||||
|
- bug #3871 Check referential integrity broken across databases
|
||||||
|
- bug #3874 [export] No preselected option when exporting table
|
||||||
|
- bug #3873 Can't copy table to target database if table exists there
|
||||||
|
- bug #3683 Incorrect listing of records from to count
|
||||||
|
- bug #3876 [import] PHP 5.2 - unexpected T_PAAMAYIM_NEKUDOTAYIM
|
||||||
|
- [security] Local file inclusion vulnerability, reported by Janek Vind
|
||||||
|
(see PMASA-2013-4)
|
||||||
|
- [security] Global variables overwrite in export.php, reported by Janek Vind
|
||||||
|
(see PMASA-2013-5)
|
||||||
|
- bug #3892 [export] SQL Export files are empty
|
||||||
|
|
||||||
|
3.5.8.2 (2013-07-28)
|
||||||
|
- [security] Fix self-XSS in "Showing rows", see PMASA-2013-8
|
||||||
|
- [security] Fix self-XSS in Display chart, see PMASA-2013-9
|
||||||
|
- [security] Fix stored XSS in Server status monitor, see PMASA-2013-9
|
||||||
|
- [security] Fix stored XSS in navigation panel logo link, see PMASA-2013-9
|
||||||
|
- [security] Fix self-XSS in setup, trusted proxies validation, see PMASA-2013-9
|
||||||
|
+ [security] JSON content type header for version_check.php, see PMASA-2013-9
|
||||||
|
+ [security] Backport fix for jQuery issue #9521 from jQuery 1.6.3, see PMASA-2013-9
|
||||||
|
+ [security] Fix full path disclosure, see PMASA-2013-12
|
||||||
|
+ [security] Fix control user SQL injection in pmd_pdf.php, see PMASA-2013-15
|
||||||
|
+ [security] Fix control user SQL injection in schema_export.php, see PMASA-2013-15
|
||||||
|
- [security] Fix self-XSS in schema export, see PMASA-2013-14
|
||||||
|
- [security] Fix unencoded json object, see PMASA-2013-11
|
||||||
|
|
||||||
|
3.5.8.1 (2013-04-24)
|
||||||
|
- [security] Remote code execution (preg_replace), reported by Janek Vind
|
||||||
|
(see PMASA-2013-2)
|
||||||
|
- [security] Locally Saved SQL Dump File Multiple File Extension Remote Code
|
||||||
|
Execution, reported by Janek Vind (see PMASA-2013-3)
|
||||||
|
|
||||||
|
3.5.8.0 (2013-04-08)
|
||||||
|
- bug #3828 MariaDB reported as MySQL
|
||||||
|
- bug #3854 Incorrect header for Safari 6.0
|
||||||
|
- bug #3705 Attempt to open trigger for edit gives NULL
|
||||||
|
- Use HTML5 DOCTYPE
|
||||||
|
- [security] Self-XSS on GIS visualisation page, reported by Janek Vind
|
||||||
|
- bug #3800 Incorrect keyhandler behaviour #2
|
||||||
|
|
||||||
|
3.5.7.0 (2013-02-15)
|
||||||
|
- bug #3779 [core] Problem with backslash in enum fields
|
||||||
|
- bug #3816 Missing server_processlist.php
|
||||||
|
- bug #3821 Safari: white page
|
||||||
|
- Correct detection of the Chrome browser
|
||||||
|
|
||||||
|
3.5.6.0 (2013-01-28)
|
||||||
|
- bug #3593604 [status] Erroneous advisor rule
|
||||||
|
- bug #3596070 [status] localStorage broken in server status monitor
|
||||||
|
- bug #3598736 [routines] Editing a procedure with special characters
|
||||||
|
- bug #3600322 [core] Visualize GIS data throws Fatal Error
|
||||||
|
- bug #3599362 [core] Double-escaped error message
|
||||||
|
- bug #3776 [cookies] Login without auth on second server
|
||||||
|
|
||||||
|
--- Older ChangeLogs can be found on our project website ---
|
||||||
|
http://www.phpmyadmin.net/old-stuff/ChangeLogs/
|
||||||
|
|
||||||
|
# vim: et ts=4 sw=4 sts=4
|
||||||
|
# vim: ft=changelog fenc=utf-8
|
||||||
|
# vim: fde=getline(v\:lnum-1)=~'^\\s*$'&&getline(v\:lnum)=~'\\S'?'>1'\:1&&v\:lnum>4&&getline(v\:lnum)!~'^#'
|
||||||
|
# vim: fdn=1 fdm=expr
|
340
sources/LICENSE
Normal file
|
@ -0,0 +1,340 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
104
sources/README
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
phpMyAdmin - Readme
|
||||||
|
===================
|
||||||
|
|
||||||
|
Version 4.1.4
|
||||||
|
|
||||||
|
A set of PHP-scripts to manage MySQL over the web.
|
||||||
|
|
||||||
|
http://www.phpmyadmin.net/
|
||||||
|
|
||||||
|
Copyright
|
||||||
|
---------
|
||||||
|
|
||||||
|
Copyright (C) 1998-2000
|
||||||
|
Tobias Ratschiller <tobias_at_ratschiller.com>
|
||||||
|
|
||||||
|
Copyright (C) 2001-2014
|
||||||
|
Marc Delisle <marc_at_infomarc.info>
|
||||||
|
Olivier Müller <om_at_omnis.ch>
|
||||||
|
Robin Johnson <robbat2_at_users.sourceforge.net>
|
||||||
|
Alexander M. Turek <me_at_derrabus.de>
|
||||||
|
Michal Čihař <michal_at_cihar.com>
|
||||||
|
Garvin Hicking <me_at_supergarv.de>
|
||||||
|
Michael Keck <mkkeck_at_users.sourceforge.net>
|
||||||
|
Sebastian Mendel <cybot_tm_at_users.sourceforge.net>
|
||||||
|
[check documentation for more details]
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License version 2, as published by the
|
||||||
|
Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Third party licenses
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
phpMyAdmin includes several third party libraries which come under their
|
||||||
|
respective licenses.
|
||||||
|
|
||||||
|
jQuery's license, which is where we got the files under js/jquery/ is
|
||||||
|
(MIT|GPL), a copy of each license is available in this repository (GPL
|
||||||
|
is available as LICENSE, MIT as js/jquery/MIT-LICENSE.txt).
|
||||||
|
|
||||||
|
TCPDF which is located under libraries/tcpdf is released under GPL
|
||||||
|
version 3 and the license is available as libraries/tcpdf/LICENSE.TXT.
|
||||||
|
|
||||||
|
DejaVu fonts which are located under libraries/tcpdf/fonts/ and their
|
||||||
|
license is documented in
|
||||||
|
libraries/tcpdf/fonts/dejavu-fonts-ttf-2.33/LICENSE.
|
||||||
|
|
||||||
|
PHP-gettext which is located under libraries/php-gettext/ is released
|
||||||
|
under GPL version 2 license which is available in the LICENSE file.
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
* PHP 5.3 or later
|
||||||
|
* MySQL 5.0 or later
|
||||||
|
* a web-browser (doh!)
|
||||||
|
|
||||||
|
Summary
|
||||||
|
-------
|
||||||
|
|
||||||
|
phpMyAdmin is intended to handle the administration of MySQL over the web.
|
||||||
|
For a summary of features, please see the documentation in the doc folder.
|
||||||
|
|
||||||
|
Download
|
||||||
|
--------
|
||||||
|
|
||||||
|
You can get the newest version at http://www.phpmyadmin.net/.
|
||||||
|
|
||||||
|
More Information
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Please see the documentation in the doc folder.
|
||||||
|
|
||||||
|
Support
|
||||||
|
-------
|
||||||
|
|
||||||
|
See reference about support forums under http://www.phpmyadmin.net/
|
||||||
|
|
||||||
|
|
||||||
|
Enjoy!
|
||||||
|
------
|
||||||
|
|
||||||
|
The phpMyAdmin Devel team
|
||||||
|
|
||||||
|
|
||||||
|
PS:
|
||||||
|
|
||||||
|
Please, don't send us emails with question like "How do I compile PHP with
|
||||||
|
MySQL-support". We just don't have the time to be your free help desk.
|
||||||
|
|
||||||
|
Please send your questions to the appropriate mailing lists / forums. Before
|
||||||
|
contacting us, please read the documentation (especially the FAQ part).
|
||||||
|
|
1
sources/RELEASE-DATE-4.1.4
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Tue Jan 7 15:18:49 UTC 2014
|
66
sources/browse_foreigners.php
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* display selection for relational field values
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
require_once 'libraries/transformations.lib.php';
|
||||||
|
require_once 'libraries/browse_foreigners.lib.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets globals from $_REQUEST
|
||||||
|
*/
|
||||||
|
$request_params = array(
|
||||||
|
'data',
|
||||||
|
'field'
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($request_params as $one_request_param) {
|
||||||
|
if (isset($_REQUEST[$one_request_param])) {
|
||||||
|
$GLOBALS[$one_request_param] = $_REQUEST[$one_request_param];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PMA_Util::checkParameters(array('db', 'table', 'field'));
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$response->getFooter()->setMinimal();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$header->disableMenu();
|
||||||
|
$header->setBodyId('body_browse_foreigners');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the frame
|
||||||
|
*/
|
||||||
|
|
||||||
|
$cfgRelation = PMA_getRelationsParam();
|
||||||
|
$foreigners = ($cfgRelation['relwork'] ? PMA_getForeigners($db, $table) : false);
|
||||||
|
$foreign_limit = PMA_getForeignLimit(
|
||||||
|
isset($foreign_navig) ? $foreign_navig : null
|
||||||
|
);
|
||||||
|
|
||||||
|
$foreignData = PMA_getForeignData(
|
||||||
|
$foreigners, $_REQUEST['field'], true,
|
||||||
|
isset($_REQUEST['foreign_filter'])
|
||||||
|
? $_REQUEST['foreign_filter']
|
||||||
|
: '',
|
||||||
|
isset($foreign_limit) ? $foreign_limit : null
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
$code = PMA_getJsScriptToHandleSelectRelationalFields();
|
||||||
|
|
||||||
|
$header->getScripts()->addCode($code);
|
||||||
|
|
||||||
|
// HTML output
|
||||||
|
$html = PMA_getHtmlForRelationalFieldSelection(
|
||||||
|
$db, $table, $_REQUEST['field'], $foreignData,
|
||||||
|
isset($fieldkey) ? $fieldkey : null,
|
||||||
|
isset($data) ? $data : null
|
||||||
|
);
|
||||||
|
|
||||||
|
$response->addHtml($html);
|
||||||
|
?>
|
153
sources/changelog.php
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Simple script to set correct charset for changelog
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets core libraries and defines some variables
|
||||||
|
*/
|
||||||
|
require 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$response->disable();
|
||||||
|
|
||||||
|
$filename = CHANGELOG_FILE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read changelog.
|
||||||
|
*/
|
||||||
|
// Check if the file is available, some distributions remove these.
|
||||||
|
if (is_readable($filename)) {
|
||||||
|
|
||||||
|
// Test if the if is in a compressed format
|
||||||
|
if (substr($filename, -3) == '.gz') {
|
||||||
|
ob_start();
|
||||||
|
readgzfile($filename);
|
||||||
|
$changelog = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
} else {
|
||||||
|
$changelog = file_get_contents($filename);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
printf(
|
||||||
|
__('The %s file is not available on this system, please visit www.phpmyadmin.net for more information.'),
|
||||||
|
$filename
|
||||||
|
);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whole changelog in variable.
|
||||||
|
*/
|
||||||
|
$changelog = htmlspecialchars($changelog);
|
||||||
|
|
||||||
|
$tracker_url = 'https://sourceforge.net/support/tracker.php?aid=\\1';
|
||||||
|
$tracker_url_bug = 'https://sourceforge.net/p/phpmyadmin/bugs/\\1/';
|
||||||
|
$tracker_url_rfe = 'https://sourceforge.net/p/phpmyadmin/feature-requests/\\1/';
|
||||||
|
$tracker_url_patch = 'https://sourceforge.net/p/phpmyadmin/patches/\\1/';
|
||||||
|
$github_url = 'https://github.com/phpmyadmin/phpmyadmin/';
|
||||||
|
$faq_url = 'http://docs.phpmyadmin.net/en/latest/faq.html';
|
||||||
|
|
||||||
|
$replaces = array(
|
||||||
|
'@(http://[./a-zA-Z0-9.-_-]*[/a-zA-Z0-9_])@'
|
||||||
|
=> '<a href="\\1">\\1</a>',
|
||||||
|
|
||||||
|
// sourceforge users
|
||||||
|
'/([0-9]{4}-[0-9]{2}-[0-9]{2}) (.+[^ ]) +<(.*)@users.sourceforge.net>/i'
|
||||||
|
=> '\\1 <a href="https://sourceforge.net/users/\\3/">\\2</a>',
|
||||||
|
'/thanks to ([^\(\r\n]+) \(([-\w]+)\)/i'
|
||||||
|
=> 'thanks to <a href="https://sourceforge.net/users/\\2/">\\1</a>',
|
||||||
|
'/thanks to ([^\(\r\n]+) -\s+([-\w]+)/i'
|
||||||
|
=> 'thanks to <a href="https://sourceforge.net/users/\\2/">\\1</a>',
|
||||||
|
|
||||||
|
// mail address
|
||||||
|
'/([0-9]{4}-[0-9]{2}-[0-9]{2}) (.+[^ ]) +<(.*@.*)>/i'
|
||||||
|
=> '\\1 <a href="mailto:\\3">\\2</a>',
|
||||||
|
|
||||||
|
// linking patches
|
||||||
|
'/patch\s*#?([0-9]{6,})/i'
|
||||||
|
=> '<a href="' . $tracker_url . '">patch #\\1</a>',
|
||||||
|
|
||||||
|
// linking RFE
|
||||||
|
'/(?:rfe|feature)\s*#?([0-9]{6,})/i'
|
||||||
|
=> '<a href="https://sourceforge.net/support/tracker.php?aid=\\1">RFE #\\1</a>',
|
||||||
|
|
||||||
|
// linking files
|
||||||
|
'/(\s+)([\\/a-z_0-9\.]+\.(?:php3?|html|pl|js|sh))/i'
|
||||||
|
=> '\\1<a href="' . $github_url . 'commits/HEAD/\\2">\\2</a>',
|
||||||
|
|
||||||
|
// FAQ entries
|
||||||
|
'/FAQ ([0-9]+)\.([0-9a-z]+)/i'
|
||||||
|
=> '<a href="' . $faq_url . '#faq\\1-\\2">FAQ \\1.\\2</a>',
|
||||||
|
|
||||||
|
// linking bugs
|
||||||
|
'/bug\s*#?([0-9]{6,})/i'
|
||||||
|
=> '<a href="https://sourceforge.net/support/tracker.php?aid=\\1">bug #\\1</a>',
|
||||||
|
|
||||||
|
// all other 6+ digit numbers are treated as bugs
|
||||||
|
'/(?<!bug|RFE|patch) #?([0-9]{6,})/i'
|
||||||
|
=> '<a href="' . $tracker_url . '">bug #\\1</a>',
|
||||||
|
|
||||||
|
// transitioned SF.net project bug/rfe/patch links
|
||||||
|
// by the time we reach 6-digit numbers, we can probably retire the above links
|
||||||
|
'/patch\s*#?([0-9]{4,5}) /i'
|
||||||
|
=> '<a href="' . $tracker_url_patch . '">patch #\\1</a> ',
|
||||||
|
'/(?:rfe|feature)\s*#?([0-9]{4,5}) /i'
|
||||||
|
=> '<a href="' . $tracker_url_rfe . '">RFE #\\1</a> ',
|
||||||
|
'/bug\s*#?([0-9]{4,5}) /i'
|
||||||
|
=> '<a href="' . $tracker_url_bug . '">bug #\\1</a> ',
|
||||||
|
'/(?<!bug|RFE|patch) #?([0-9]{4,5}) /i'
|
||||||
|
=> '<a href="' . $tracker_url_bug . '">bug #\\1</a> ',
|
||||||
|
|
||||||
|
// CVE/CAN entries
|
||||||
|
'/((CAN|CVE)-[0-9]+-[0-9]+)/'
|
||||||
|
=> '<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=\\1">\\1</a>',
|
||||||
|
|
||||||
|
// PMASAentries
|
||||||
|
'/(PMASA-[0-9]+-[0-9]+)/'
|
||||||
|
=> '<a href="http://www.phpmyadmin.net/home_page/security/\\1.php">\\1</a>',
|
||||||
|
|
||||||
|
// Highlight releases (with links)
|
||||||
|
'/([0-9]+)\.([0-9]+)\.([0-9]+)\.0 (\([0-9-]+\))/'
|
||||||
|
=> '<a name="\\1_\\2_\\3"></a>'
|
||||||
|
. '<a href="' . $github_url . 'commits/RELEASE_\\1_\\2_\\3">'
|
||||||
|
. '\\1.\\2.\\3.0 \\4</a>',
|
||||||
|
'/([0-9]+)\.([0-9]+)\.([0-9]+)\.([1-9][0-9]*) (\([0-9-]+\))/'
|
||||||
|
=> '<a name="\\1_\\2_\\3_\\4"></a>'
|
||||||
|
. '<a href="' . $github_url . 'commits/RELEASE_\\1_\\2_\\3_\\4">'
|
||||||
|
. '\\1.\\2.\\3.\\4 \\5</a>',
|
||||||
|
|
||||||
|
// Highlight releases (not linkable)
|
||||||
|
'/( ### )(.*)/'
|
||||||
|
=> '\\1<b>\\2</b>',
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
header('Content-type: text/html; charset=utf-8');
|
||||||
|
?>
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<link rel="icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<title>phpMyAdmin - ChangeLog</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>phpMyAdmin - ChangeLog</h1>
|
||||||
|
<?php
|
||||||
|
echo '<pre>';
|
||||||
|
echo preg_replace(array_keys($replaces), $replaces, $changelog);
|
||||||
|
echo '</pre>';
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var links = document.getElementsByTagName("a");
|
||||||
|
for(var i = 0; i < links.length; i++) {
|
||||||
|
links[i].target = "_blank";
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
15
sources/chk_rel.php
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Displays status of phpMyAdmin configuration storage
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_getRelationsParamDiagnostic(PMA_getRelationsParam())
|
||||||
|
);
|
||||||
|
|
||||||
|
?>
|
27
sources/composer.json
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"name": "phpmyadmin/phpmyadmin",
|
||||||
|
"type": "application",
|
||||||
|
"description": "MySQL web administration tool",
|
||||||
|
"keywords": ["phpmyadmin","mysql","web"],
|
||||||
|
"homepage": "http://www.phpmyadmin.net/",
|
||||||
|
"license": "GPL-2.0+",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "The phpMyAdmin Team",
|
||||||
|
"email": "phpmyadmin-devel@lists.sourceforge.net",
|
||||||
|
"homepage": "http://www.phpmyadmin.net/home_page/team.php"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"forum": "https://sourceforge.net/p/phpmyadmin/discussion/Help",
|
||||||
|
"issues": "https://sourceforge.net/p/phpmyadmin/bugs/",
|
||||||
|
"wiki": "http://wiki.phpmyadmin.net/",
|
||||||
|
"source": "https://github.com/phpmyadmin/phpmyadmin"
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"satooshi/php-coveralls": "dev-master"
|
||||||
|
}
|
||||||
|
}
|
152
sources/config.sample.inc.php
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* phpMyAdmin sample configuration, you can use it as base for
|
||||||
|
* manual configuration. For easier setup you can use setup/
|
||||||
|
*
|
||||||
|
* All directives are explained in documentation in the doc/ folder
|
||||||
|
* or at <http://docs.phpmyadmin.net/>.
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is needed for cookie based authentication to encrypt password in
|
||||||
|
* cookie
|
||||||
|
*/
|
||||||
|
$cfg['blowfish_secret'] = 'a8b7c6d'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Servers configuration
|
||||||
|
*/
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* First server
|
||||||
|
*/
|
||||||
|
$i++;
|
||||||
|
/* Authentication type */
|
||||||
|
$cfg['Servers'][$i]['auth_type'] = 'cookie';
|
||||||
|
/* Server parameters */
|
||||||
|
$cfg['Servers'][$i]['host'] = 'localhost';
|
||||||
|
$cfg['Servers'][$i]['connect_type'] = 'tcp';
|
||||||
|
$cfg['Servers'][$i]['compress'] = false;
|
||||||
|
/* Select mysql if your server does not have mysqli */
|
||||||
|
$cfg['Servers'][$i]['extension'] = 'mysqli';
|
||||||
|
$cfg['Servers'][$i]['AllowNoPassword'] = false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* phpMyAdmin configuration storage settings.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* User used to manipulate with storage */
|
||||||
|
// $cfg['Servers'][$i]['controlhost'] = '';
|
||||||
|
// $cfg['Servers'][$i]['controlport'] = '';
|
||||||
|
// $cfg['Servers'][$i]['controluser'] = 'pma';
|
||||||
|
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
|
||||||
|
|
||||||
|
/* Storage database and tables */
|
||||||
|
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
|
||||||
|
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
|
||||||
|
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
|
||||||
|
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
|
||||||
|
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
|
||||||
|
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
|
||||||
|
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
|
||||||
|
// $cfg['Servers'][$i]['history'] = 'pma__history';
|
||||||
|
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
|
||||||
|
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
|
||||||
|
// $cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
|
||||||
|
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
|
||||||
|
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
|
||||||
|
// $cfg['Servers'][$i]['users'] = 'pma__users';
|
||||||
|
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
|
||||||
|
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
|
||||||
|
/* Contrib / Swekey authentication */
|
||||||
|
// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* End of servers configuration
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Directories for saving/loading files from server
|
||||||
|
*/
|
||||||
|
$cfg['UploadDir'] = '';
|
||||||
|
$cfg['SaveDir'] = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines whether a user should be displayed a "show all (records)"
|
||||||
|
* button in browse mode or not.
|
||||||
|
* default = false
|
||||||
|
*/
|
||||||
|
//$cfg['ShowAll'] = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of rows displayed when browsing a result set. If the result
|
||||||
|
* set contains more rows, "Previous" and "Next".
|
||||||
|
* default = 30
|
||||||
|
*/
|
||||||
|
//$cfg['MaxRows'] = 50;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* disallow editing of binary fields
|
||||||
|
* valid values are:
|
||||||
|
* false allow editing
|
||||||
|
* 'blob' allow editing except for BLOB fields
|
||||||
|
* 'noblob' disallow editing except for BLOB fields
|
||||||
|
* 'all' disallow editing
|
||||||
|
* default = blob
|
||||||
|
*/
|
||||||
|
//$cfg['ProtectBinary'] = 'false';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default language to use, if not browser-defined or user-defined
|
||||||
|
* (you find all languages in the locale folder)
|
||||||
|
* uncomment the desired line:
|
||||||
|
* default = 'en'
|
||||||
|
*/
|
||||||
|
//$cfg['DefaultLang'] = 'en';
|
||||||
|
//$cfg['DefaultLang'] = 'de';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* default display direction (horizontal|vertical|horizontalflipped)
|
||||||
|
*/
|
||||||
|
//$cfg['DefaultDisplay'] = 'vertical';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many columns should be used for table display of a database?
|
||||||
|
* (a value larger than 1 results in some information being hidden)
|
||||||
|
* default = 1
|
||||||
|
*/
|
||||||
|
//$cfg['PropertiesNumColumns'] = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set to true if you want DB-based query history.If false, this utilizes
|
||||||
|
* JS-routines to display query history (lost by window close)
|
||||||
|
*
|
||||||
|
* This requires configuration storage enabled, see above.
|
||||||
|
* default = false
|
||||||
|
*/
|
||||||
|
//$cfg['QueryHistoryDB'] = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When using DB-based query history, how many entries should be kept?
|
||||||
|
*
|
||||||
|
* default = 25
|
||||||
|
*/
|
||||||
|
//$cfg['QueryHistoryMax'] = 100;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should error reporting be enabled for JavaScript errors
|
||||||
|
*
|
||||||
|
* default = 'ask'
|
||||||
|
*/
|
||||||
|
//$cfg['SendErrorReports'] = 'ask';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* You can find more configuration options in the documentation
|
||||||
|
* in the doc/ folder or at <http://docs.phpmyadmin.net/>.
|
||||||
|
*/
|
||||||
|
?>
|
135
sources/db_create.php
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Database creating page
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets some core libraries
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
require_once 'libraries/mysql_charsets.inc.php';
|
||||||
|
if (! PMA_DRIZZLE) {
|
||||||
|
include_once 'libraries/replication.inc.php';
|
||||||
|
}
|
||||||
|
require 'libraries/build_html_for_db.lib.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the url to return to in case of error in a sql statement
|
||||||
|
*/
|
||||||
|
$err_url = 'index.php?' . PMA_URL_getCommon();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds and executes the db creation sql query
|
||||||
|
*/
|
||||||
|
$sql_query = 'CREATE DATABASE ' . PMA_Util::backquote($_POST['new_db']);
|
||||||
|
if (! empty($_POST['db_collation'])) {
|
||||||
|
list($db_charset) = explode('_', $_POST['db_collation']);
|
||||||
|
if (in_array($db_charset, $mysql_charsets)
|
||||||
|
&& in_array($_POST['db_collation'], $mysql_collations[$db_charset])
|
||||||
|
) {
|
||||||
|
$sql_query .= ' DEFAULT'
|
||||||
|
. PMA_generateCharsetQueryPart($_POST['db_collation']);
|
||||||
|
}
|
||||||
|
$db_collation_for_ajax = $_POST['db_collation'];
|
||||||
|
unset($db_charset);
|
||||||
|
}
|
||||||
|
$sql_query .= ';';
|
||||||
|
|
||||||
|
$result = $GLOBALS['dbi']->tryQuery($sql_query);
|
||||||
|
|
||||||
|
if (! $result) {
|
||||||
|
$message = PMA_Message::rawError($GLOBALS['dbi']->getError());
|
||||||
|
// avoid displaying the not-created db name in header or navi panel
|
||||||
|
$GLOBALS['db'] = '';
|
||||||
|
$GLOBALS['table'] = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If in an Ajax request, just display the message with {@link PMA_Response}
|
||||||
|
*/
|
||||||
|
if ($GLOBALS['is_ajax_request'] == true) {
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$response->isSuccess(false);
|
||||||
|
$response->addJSON('message', $message);
|
||||||
|
} else {
|
||||||
|
include_once 'index.php';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$message = PMA_Message::success(__('Database %1$s has been created.'));
|
||||||
|
$message->addParam($_POST['new_db']);
|
||||||
|
$GLOBALS['db'] = $_POST['new_db'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If in an Ajax request, build the output and send it
|
||||||
|
*/
|
||||||
|
if ($GLOBALS['is_ajax_request'] == true) {
|
||||||
|
//Construct the html for the new database, so that it can be appended to
|
||||||
|
// the list of databases on server_databases.php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the array to be passed to {@link PMA_URL_getCommon}
|
||||||
|
* to generate the links
|
||||||
|
*
|
||||||
|
* @global array $GLOBALS['db_url_params']
|
||||||
|
* @name $db_url_params
|
||||||
|
*/
|
||||||
|
$db_url_params['db'] = $_POST['new_db'];
|
||||||
|
|
||||||
|
$is_superuser = $GLOBALS['dbi']->isSuperuser();
|
||||||
|
$column_order = PMA_getColumnOrder();
|
||||||
|
$url_query = PMA_URL_getCommon($_POST['new_db']);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* String that will contain the output HTML
|
||||||
|
* @name $new_db_string
|
||||||
|
*/
|
||||||
|
$new_db_string = '<tr>';
|
||||||
|
|
||||||
|
if (empty($db_collation_for_ajax)) {
|
||||||
|
$db_collation_for_ajax = PMA_getServerCollation();
|
||||||
|
}
|
||||||
|
|
||||||
|
// $dbstats comes from the create table dialog
|
||||||
|
if (! empty($dbstats)) {
|
||||||
|
$current = array(
|
||||||
|
'SCHEMA_NAME' => $_POST['new_db'],
|
||||||
|
'DEFAULT_COLLATION_NAME' => $db_collation_for_ajax,
|
||||||
|
'SCHEMA_TABLES' => '0',
|
||||||
|
'SCHEMA_TABLE_ROWS' => '0',
|
||||||
|
'SCHEMA_DATA_LENGTH' => '0',
|
||||||
|
'SCHEMA_MAX_DATA_LENGTH' => '0',
|
||||||
|
'SCHEMA_INDEX_LENGTH' => '0',
|
||||||
|
'SCHEMA_LENGTH' => '0',
|
||||||
|
'SCHEMA_DATA_FREE' => '0'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$current = array(
|
||||||
|
'SCHEMA_NAME' => $_POST['new_db']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
list($column_order, $generated_html) = PMA_buildHtmlForDb(
|
||||||
|
$current, $is_superuser, $url_query,
|
||||||
|
$column_order, $replication_types, $replication_info
|
||||||
|
);
|
||||||
|
$new_db_string .= $generated_html;
|
||||||
|
|
||||||
|
$new_db_string .= '</tr>';
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$response->addJSON('message', $message);
|
||||||
|
$response->addJSON('new_db_string', $new_db_string);
|
||||||
|
$response->addJSON(
|
||||||
|
'sql_query',
|
||||||
|
PMA_Util::getMessage(
|
||||||
|
null, $sql_query, 'success'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
include_once '' . $cfg['DefaultTabDatabase'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
291
sources/db_datadict.php
Normal file
|
@ -0,0 +1,291 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Renders data dictionary
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the variables sent or posted to this script, then displays headers
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
if (! isset($selected_tbl)) {
|
||||||
|
include 'libraries/db_common.inc.php';
|
||||||
|
include 'libraries/db_info.inc.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$header->enablePrintView();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the relations settings
|
||||||
|
*/
|
||||||
|
$cfgRelation = PMA_getRelationsParam();
|
||||||
|
|
||||||
|
require_once 'libraries/transformations.lib.php';
|
||||||
|
require_once 'libraries/Index.class.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check parameters
|
||||||
|
*/
|
||||||
|
PMA_Util::checkParameters(array('db'));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the url to return to in case of error in a sql statement
|
||||||
|
*/
|
||||||
|
if (strlen($table)) {
|
||||||
|
$err_url = 'tbl_sql.php?' . PMA_URL_getCommon($db, $table);
|
||||||
|
} else {
|
||||||
|
$err_url = 'db_sql.php?' . PMA_URL_getCommon($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($cfgRelation['commwork']) {
|
||||||
|
$comment = PMA_getDbComment($db);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays DB comment
|
||||||
|
*/
|
||||||
|
if ($comment) {
|
||||||
|
echo '<p>' . __('Database comment: ')
|
||||||
|
. '<i>' . htmlspecialchars($comment) . '</i></p>';
|
||||||
|
} // end if
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Selects the database and gets tables names
|
||||||
|
*/
|
||||||
|
$GLOBALS['dbi']->selectDb($db);
|
||||||
|
$tables = $GLOBALS['dbi']->getTables($db);
|
||||||
|
|
||||||
|
$count = 0;
|
||||||
|
foreach ($tables as $table) {
|
||||||
|
$comments = PMA_getComments($db, $table);
|
||||||
|
|
||||||
|
echo '<div>' . "\n";
|
||||||
|
|
||||||
|
echo '<h2>' . htmlspecialchars($table) . '</h2>' . "\n";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets table informations
|
||||||
|
*/
|
||||||
|
$show_comment = PMA_Table::sGetStatusInfo($db, $table, 'TABLE_COMMENT');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets table keys and retains them
|
||||||
|
*/
|
||||||
|
|
||||||
|
$GLOBALS['dbi']->selectDb($db);
|
||||||
|
$indexes = $GLOBALS['dbi']->getTableIndexes($db, $table);
|
||||||
|
$primary = '';
|
||||||
|
$indexes = array();
|
||||||
|
$lastIndex = '';
|
||||||
|
$indexes_info = array();
|
||||||
|
$indexes_data = array();
|
||||||
|
$pk_array = array(); // will be use to emphasis prim. keys in the table
|
||||||
|
// view
|
||||||
|
foreach ($indexes as $row) {
|
||||||
|
// Backups the list of primary keys
|
||||||
|
if ($row['Key_name'] == 'PRIMARY') {
|
||||||
|
$primary .= $row['Column_name'] . ', ';
|
||||||
|
$pk_array[$row['Column_name']] = 1;
|
||||||
|
}
|
||||||
|
// Retains keys informations
|
||||||
|
if ($row['Key_name'] != $lastIndex) {
|
||||||
|
$indexes[] = $row['Key_name'];
|
||||||
|
$lastIndex = $row['Key_name'];
|
||||||
|
}
|
||||||
|
$indexes_info[$row['Key_name']]['Sequences'][] = $row['Seq_in_index'];
|
||||||
|
$indexes_info[$row['Key_name']]['Non_unique'] = $row['Non_unique'];
|
||||||
|
if (isset($row['Cardinality'])) {
|
||||||
|
$indexes_info[$row['Key_name']]['Cardinality'] = $row['Cardinality'];
|
||||||
|
}
|
||||||
|
// I don't know what does following column mean....
|
||||||
|
// $indexes_info[$row['Key_name']]['Packed'] = $row['Packed'];
|
||||||
|
|
||||||
|
$indexes_info[$row['Key_name']]['Comment'] = $row['Comment'];
|
||||||
|
|
||||||
|
$indexes_data[$row['Key_name']][$row['Seq_in_index']]['Column_name']
|
||||||
|
= $row['Column_name'];
|
||||||
|
if (isset($row['Sub_part'])) {
|
||||||
|
$indexes_data[$row['Key_name']][$row['Seq_in_index']]['Sub_part']
|
||||||
|
= $row['Sub_part'];
|
||||||
|
}
|
||||||
|
|
||||||
|
} // end while
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets columns properties
|
||||||
|
*/
|
||||||
|
$columns = $GLOBALS['dbi']->getColumns($db, $table);
|
||||||
|
|
||||||
|
if (PMA_MYSQL_INT_VERSION < 50025) {
|
||||||
|
// We need this to correctly learn if a TIMESTAMP is NOT NULL, since
|
||||||
|
// SHOW FULL COLUMNS or INFORMATION_SCHEMA incorrectly says NULL
|
||||||
|
// and SHOW CREATE TABLE says NOT NULL
|
||||||
|
// http://bugs.mysql.com/20910.
|
||||||
|
|
||||||
|
$show_create_table_query = 'SHOW CREATE TABLE '
|
||||||
|
. PMA_Util::backquote($db) . '.'
|
||||||
|
. PMA_Util::backquote($table);
|
||||||
|
$show_create_table = $GLOBALS['dbi']->fetchValue(
|
||||||
|
$show_create_table_query, 0, 1
|
||||||
|
);
|
||||||
|
$analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if we can use Relations
|
||||||
|
if (!empty($cfgRelation['relation'])) {
|
||||||
|
// Find which tables are related with the current one and write it in
|
||||||
|
// an array
|
||||||
|
$res_rel = PMA_getForeigners($db, $table);
|
||||||
|
|
||||||
|
if (count($res_rel) > 0) {
|
||||||
|
$have_rel = true;
|
||||||
|
} else {
|
||||||
|
$have_rel = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$have_rel = false;
|
||||||
|
} // end if
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the comments of the table if MySQL >= 3.23
|
||||||
|
*/
|
||||||
|
if (!empty($show_comment)) {
|
||||||
|
echo __('Table comments:') . ' ';
|
||||||
|
echo htmlspecialchars($show_comment) . '<br /><br />';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the table structure
|
||||||
|
*/
|
||||||
|
|
||||||
|
echo '<table width="100%" class="print">';
|
||||||
|
echo '<tr><th width="50">' . __('Column') . '</th>';
|
||||||
|
echo '<th width="80">' . __('Type') . '</th>';
|
||||||
|
echo '<th width="40">' . __('Null') . '</th>';
|
||||||
|
echo '<th width="70">' . __('Default') . '</th>';
|
||||||
|
if ($have_rel) {
|
||||||
|
echo ' <th>' . __('Links to') . '</th>' . "\n";
|
||||||
|
}
|
||||||
|
echo ' <th>' . __('Comments') . '</th>' . "\n";
|
||||||
|
if ($cfgRelation['mimework']) {
|
||||||
|
echo ' <th>MIME</th>' . "\n";
|
||||||
|
}
|
||||||
|
echo '</tr>';
|
||||||
|
$odd_row = true;
|
||||||
|
foreach ($columns as $row) {
|
||||||
|
|
||||||
|
if ($row['Null'] == '') {
|
||||||
|
$row['Null'] = 'NO';
|
||||||
|
}
|
||||||
|
$extracted_columnspec
|
||||||
|
= PMA_Util::extractColumnSpec($row['Type']);
|
||||||
|
|
||||||
|
// reformat mysql query output
|
||||||
|
// set or enum types: slashes single quotes inside options
|
||||||
|
if ('set' == $extracted_columnspec['type']
|
||||||
|
|| 'enum' == $extracted_columnspec['type']
|
||||||
|
) {
|
||||||
|
$type_nowrap = '';
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$type_nowrap = ' class="nowrap"';
|
||||||
|
}
|
||||||
|
$type = htmlspecialchars($extracted_columnspec['print_type']);
|
||||||
|
$attribute = $extracted_columnspec['attribute'];
|
||||||
|
if (! isset($row['Default'])) {
|
||||||
|
if ($row['Null'] != 'NO') {
|
||||||
|
$row['Default'] = '<i>NULL</i>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$row['Default'] = htmlspecialchars($row['Default']);
|
||||||
|
}
|
||||||
|
$column_name = $row['Field'];
|
||||||
|
|
||||||
|
$tmp_column = $analyzed_sql[0]['create_table_fields'][$column_name];
|
||||||
|
if (PMA_MYSQL_INT_VERSION < 50025
|
||||||
|
&& ! empty($tmp_column['type'])
|
||||||
|
&& $tmp_column['type'] == 'TIMESTAMP'
|
||||||
|
&& $tmp_column['timestamp_not_null']
|
||||||
|
) {
|
||||||
|
// here, we have a TIMESTAMP that SHOW FULL COLUMNS reports as
|
||||||
|
// having the NULL attribute, but SHOW CREATE TABLE says the
|
||||||
|
// contrary. Believe the latter.
|
||||||
|
/**
|
||||||
|
* @todo merge this logic with the one in tbl_structure.php
|
||||||
|
* or move it in a function similar to $GLOBALS['dbi']->getColumnsFull()
|
||||||
|
* but based on SHOW CREATE TABLE because information_schema
|
||||||
|
* cannot be trusted in this case (MySQL bug)
|
||||||
|
*/
|
||||||
|
$row['Null'] = 'NO';
|
||||||
|
}
|
||||||
|
echo '<tr class="';
|
||||||
|
echo $odd_row ? 'odd' : 'even'; $odd_row = ! $odd_row;
|
||||||
|
echo '">';
|
||||||
|
echo '<td class="nowrap">';
|
||||||
|
|
||||||
|
if (isset($pk_array[$row['Field']])) {
|
||||||
|
echo '<u>' . htmlspecialchars($column_name) . '</u>';
|
||||||
|
} else {
|
||||||
|
echo htmlspecialchars($column_name);
|
||||||
|
}
|
||||||
|
echo '</td>';
|
||||||
|
echo '<td' . $type_nowrap . ' lang="en" dir="ltr">' . $type . '</td>';
|
||||||
|
echo '<td>';
|
||||||
|
echo (($row['Null'] == 'NO') ? __('No') : __('Yes'));
|
||||||
|
echo '</td>';
|
||||||
|
echo '<td class="nowrap">';
|
||||||
|
if (isset($row['Default'])) {
|
||||||
|
echo $row['Default'];
|
||||||
|
}
|
||||||
|
echo '</td>';
|
||||||
|
|
||||||
|
if ($have_rel) {
|
||||||
|
echo ' <td>';
|
||||||
|
if (isset($res_rel[$column_name])) {
|
||||||
|
echo htmlspecialchars(
|
||||||
|
$res_rel[$column_name]['foreign_table']
|
||||||
|
. ' -> '
|
||||||
|
. $res_rel[$column_name]['foreign_field']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
echo '</td>' . "\n";
|
||||||
|
}
|
||||||
|
echo ' <td>';
|
||||||
|
if (isset($comments[$column_name])) {
|
||||||
|
echo htmlspecialchars($comments[$column_name]);
|
||||||
|
}
|
||||||
|
echo '</td>' . "\n";
|
||||||
|
if ($cfgRelation['mimework']) {
|
||||||
|
$mime_map = PMA_getMIME($db, $table, true);
|
||||||
|
|
||||||
|
echo ' <td>';
|
||||||
|
if (isset($mime_map[$column_name])) {
|
||||||
|
echo htmlspecialchars(
|
||||||
|
str_replace('_', '/', $mime_map[$column_name]['mimetype'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
echo '</td>' . "\n";
|
||||||
|
}
|
||||||
|
echo '</tr>';
|
||||||
|
} // end foreach
|
||||||
|
$count++;
|
||||||
|
echo '</table>';
|
||||||
|
// display indexes information
|
||||||
|
if (count(PMA_Index::getFromTable($table, $db)) > 0) {
|
||||||
|
echo PMA_Index::getView($table, $db, true);
|
||||||
|
}
|
||||||
|
echo '</div>';
|
||||||
|
} //ends main while
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the footer
|
||||||
|
*/
|
||||||
|
echo PMA_Util::getButton();
|
||||||
|
|
||||||
|
?>
|
26
sources/db_events.php
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Events management.
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include required files
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
require_once 'libraries/Util.class.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include all other files
|
||||||
|
*/
|
||||||
|
require_once 'libraries/rte/rte_events.lib.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do the magic
|
||||||
|
*/
|
||||||
|
$_PMA_RTE = 'EVN';
|
||||||
|
require_once 'libraries/rte/rte_main.inc.php';
|
||||||
|
|
||||||
|
?>
|
94
sources/db_export.php
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* dumps a database
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets some core libraries
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$scripts = $header->getScripts();
|
||||||
|
$scripts->addFile('export.js');
|
||||||
|
|
||||||
|
// $sub_part is also used in db_info.inc.php to see if we are coming from
|
||||||
|
// db_export.php, in which case we don't obey $cfg['MaxTableList']
|
||||||
|
$sub_part = '_export';
|
||||||
|
require_once 'libraries/db_common.inc.php';
|
||||||
|
$url_query .= '&goto=db_export.php';
|
||||||
|
require_once 'libraries/db_info.inc.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the form
|
||||||
|
*/
|
||||||
|
$export_page_title = __('View dump (schema) of database');
|
||||||
|
|
||||||
|
// exit if no tables in db found
|
||||||
|
if ($num_tables < 1) {
|
||||||
|
PMA_Message::error(__('No tables found in database.'))->display();
|
||||||
|
exit;
|
||||||
|
} // end if
|
||||||
|
|
||||||
|
$multi_values = '<div>';
|
||||||
|
$multi_values .= '<a href="#"';
|
||||||
|
$multi_values .= ' onclick="setSelectOptions(\'dump\', \'table_select[]\', true);'
|
||||||
|
. ' return false;">';
|
||||||
|
$multi_values .= __('Select All');
|
||||||
|
$multi_values .= '</a>';
|
||||||
|
$multi_values .= ' / ';
|
||||||
|
$multi_values .= '<a href="#"';
|
||||||
|
$multi_values .= ' onclick="setSelectOptions(\'dump\', \'table_select[]\', false);'
|
||||||
|
. ' return false;">';
|
||||||
|
$multi_values .= __('Unselect All');
|
||||||
|
$multi_values .= '</a><br />';
|
||||||
|
|
||||||
|
$multi_values .= '<select name="table_select[]" id="table_select" size="10"'
|
||||||
|
. ' multiple="multiple">';
|
||||||
|
$multi_values .= "\n";
|
||||||
|
|
||||||
|
// when called by libraries/mult_submits.inc.php
|
||||||
|
if (!empty($_POST['selected_tbl']) && empty($table_select)) {
|
||||||
|
$table_select = $_POST['selected_tbl'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the selected tables are defined in $_GET
|
||||||
|
// (from clicking Back button on export.php)
|
||||||
|
if (isset($_GET['table_select'])) {
|
||||||
|
$_GET['table_select'] = urldecode($_GET['table_select']);
|
||||||
|
$_GET['table_select'] = explode(",", $_GET['table_select']);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($tables as $each_table) {
|
||||||
|
if (isset($_GET['table_select'])) {
|
||||||
|
if (in_array($each_table['Name'], $_GET['table_select'])) {
|
||||||
|
$is_selected = ' selected="selected"';
|
||||||
|
} else {
|
||||||
|
$is_selected = '';
|
||||||
|
}
|
||||||
|
} elseif (isset($table_select)) {
|
||||||
|
if (in_array($each_table['Name'], $table_select)) {
|
||||||
|
$is_selected = ' selected="selected"';
|
||||||
|
} else {
|
||||||
|
$is_selected = '';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$is_selected = ' selected="selected"';
|
||||||
|
}
|
||||||
|
$table_html = htmlspecialchars($each_table['Name']);
|
||||||
|
$multi_values .= ' <option value="' . $table_html . '"'
|
||||||
|
. $is_selected . '>'
|
||||||
|
. str_replace(' ', ' ', $table_html) . '</option>' . "\n";
|
||||||
|
} // end for
|
||||||
|
|
||||||
|
$multi_values .= "\n";
|
||||||
|
$multi_values .= '</select></div>';
|
||||||
|
|
||||||
|
$export_type = 'database';
|
||||||
|
require_once 'libraries/display_export.inc.php';
|
||||||
|
|
||||||
|
?>
|
25
sources/db_import.php
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Database import page
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$scripts = $header->getScripts();
|
||||||
|
$scripts->addFile('import.js');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets tables informations and displays top links
|
||||||
|
*/
|
||||||
|
require 'libraries/db_common.inc.php';
|
||||||
|
require 'libraries/db_info.inc.php';
|
||||||
|
|
||||||
|
$import_type = 'database';
|
||||||
|
require 'libraries/display_import.inc.php';
|
||||||
|
|
||||||
|
?>
|
300
sources/db_operations.php
Normal file
|
@ -0,0 +1,300 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* handles miscellaneous db operations:
|
||||||
|
* - move/rename
|
||||||
|
* - copy
|
||||||
|
* - changing collation
|
||||||
|
* - changing comment
|
||||||
|
* - adding tables
|
||||||
|
* - viewing PDF schemas
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* requirements
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
require_once 'libraries/mysql_charsets.inc.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* functions implementation for this script
|
||||||
|
*/
|
||||||
|
require_once 'libraries/operations.lib.php';
|
||||||
|
|
||||||
|
// add a javascript file for jQuery functions to handle Ajax actions
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$scripts = $header->getScripts();
|
||||||
|
$scripts->addFile('db_operations.js');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rename/move or copy database
|
||||||
|
*/
|
||||||
|
if (strlen($db)
|
||||||
|
&& (! empty($_REQUEST['db_rename']) || ! empty($_REQUEST['db_copy']))
|
||||||
|
) {
|
||||||
|
if (! empty($_REQUEST['db_rename'])) {
|
||||||
|
$move = true;
|
||||||
|
} else {
|
||||||
|
$move = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! isset($_REQUEST['newname']) || ! strlen($_REQUEST['newname'])) {
|
||||||
|
$message = PMA_Message::error(__('The database name is empty!'));
|
||||||
|
} else {
|
||||||
|
$sql_query = ''; // in case target db exists
|
||||||
|
$_error = false;
|
||||||
|
if ($move
|
||||||
|
|| (isset($_REQUEST['create_database_before_copying'])
|
||||||
|
&& $_REQUEST['create_database_before_copying'])
|
||||||
|
) {
|
||||||
|
$sql_query = PMA_getSqlQueryAndCreateDbBeforeCopy();
|
||||||
|
}
|
||||||
|
|
||||||
|
// here I don't use DELIMITER because it's not part of the
|
||||||
|
// language; I have to send each statement one by one
|
||||||
|
|
||||||
|
// to avoid selecting alternatively the current and new db
|
||||||
|
// we would need to modify the CREATE definitions to qualify
|
||||||
|
// the db name
|
||||||
|
PMA_runProcedureAndFunctionDefinitions($db);
|
||||||
|
|
||||||
|
// go back to current db, just in case
|
||||||
|
$GLOBALS['dbi']->selectDb($db);
|
||||||
|
|
||||||
|
$tables_full = $GLOBALS['dbi']->getTablesFull($db);
|
||||||
|
|
||||||
|
include_once "libraries/plugin_interface.lib.php";
|
||||||
|
// remove all foreign key constraints, otherwise we can get errors
|
||||||
|
$export_sql_plugin = PMA_getPlugin(
|
||||||
|
"export",
|
||||||
|
"sql",
|
||||||
|
'libraries/plugins/export/',
|
||||||
|
array(
|
||||||
|
'single_table' => isset($single_table),
|
||||||
|
'export_type' => 'database'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$GLOBALS['sql_constraints_query_full_db']
|
||||||
|
= PMA_getSqlConstraintsQueryForFullDb(
|
||||||
|
$tables_full, $export_sql_plugin, $move, $db
|
||||||
|
);
|
||||||
|
|
||||||
|
$views = PMA_getViewsAndCreateSqlViewStandIn(
|
||||||
|
$tables_full, $export_sql_plugin, $db
|
||||||
|
);
|
||||||
|
|
||||||
|
list($sql_query, $_error) = PMA_getSqlQueryForCopyTable(
|
||||||
|
$tables_full, $sql_query, $move, $db
|
||||||
|
);
|
||||||
|
|
||||||
|
// handle the views
|
||||||
|
if (! $_error) {
|
||||||
|
$_error = PMA_handleTheViews($views, $move, $db);
|
||||||
|
}
|
||||||
|
unset($views);
|
||||||
|
|
||||||
|
// now that all tables exist, create all the accumulated constraints
|
||||||
|
if (! $_error && count($GLOBALS['sql_constraints_query_full_db']) > 0) {
|
||||||
|
PMA_createAllAccumulatedConstraints();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! PMA_DRIZZLE && PMA_MYSQL_INT_VERSION >= 50100) {
|
||||||
|
// here DELIMITER is not used because it's not part of the
|
||||||
|
// language; each statement is sent one by one
|
||||||
|
|
||||||
|
PMA_runEventDefinitionsForDb($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
// go back to current db, just in case
|
||||||
|
$GLOBALS['dbi']->selectDb($db);
|
||||||
|
|
||||||
|
// Duplicate the bookmarks for this db (done once for each db)
|
||||||
|
PMA_duplicateBookmarks($_error, $db);
|
||||||
|
|
||||||
|
if (! $_error && $move) {
|
||||||
|
/**
|
||||||
|
* cleanup pmadb stuff for this db
|
||||||
|
*/
|
||||||
|
include_once 'libraries/relation_cleanup.lib.php';
|
||||||
|
PMA_relationsCleanupDatabase($db);
|
||||||
|
|
||||||
|
// if someday the RENAME DATABASE reappears, do not DROP
|
||||||
|
$local_query = 'DROP DATABASE ' . PMA_Util::backquote($db) . ';';
|
||||||
|
$sql_query .= "\n" . $local_query;
|
||||||
|
$GLOBALS['dbi']->query($local_query);
|
||||||
|
|
||||||
|
$message = PMA_Message::success(
|
||||||
|
__('Database %1$s has been renamed to %2$s')
|
||||||
|
);
|
||||||
|
$message->addParam($db);
|
||||||
|
$message->addParam($_REQUEST['newname']);
|
||||||
|
} elseif (! $_error) {
|
||||||
|
$message = PMA_Message::success(
|
||||||
|
__('Database %1$s has been copied to %2$s')
|
||||||
|
);
|
||||||
|
$message->addParam($db);
|
||||||
|
$message->addParam($_REQUEST['newname']);
|
||||||
|
}
|
||||||
|
$reload = true;
|
||||||
|
|
||||||
|
/* Change database to be used */
|
||||||
|
if (! $_error && $move) {
|
||||||
|
$db = $_REQUEST['newname'];
|
||||||
|
} elseif (! $_error) {
|
||||||
|
if (isset($_REQUEST['switch_to_new'])
|
||||||
|
&& $_REQUEST['switch_to_new'] == 'true'
|
||||||
|
) {
|
||||||
|
$GLOBALS['PMA_Config']->setCookie('pma_switch_to_new', 'true');
|
||||||
|
$db = $_REQUEST['newname'];
|
||||||
|
} else {
|
||||||
|
$GLOBALS['PMA_Config']->setCookie('pma_switch_to_new', '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_error && ! isset($message)) {
|
||||||
|
$message = PMA_Message::error();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Database has been successfully renamed/moved. If in an Ajax request,
|
||||||
|
* generate the output with {@link PMA_Response} and exit
|
||||||
|
*/
|
||||||
|
if ($GLOBALS['is_ajax_request'] == true) {
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$response->isSuccess($message->isSuccess());
|
||||||
|
$response->addJSON('message', $message);
|
||||||
|
$response->addJSON('newname', $_REQUEST['newname']);
|
||||||
|
$response->addJSON(
|
||||||
|
'sql_query',
|
||||||
|
PMA_Util::getMessage(null, $sql_query)
|
||||||
|
);
|
||||||
|
$response->addJSON('db', $db);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Settings for relations stuff
|
||||||
|
*/
|
||||||
|
|
||||||
|
$cfgRelation = PMA_getRelationsParam();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if comments were updated
|
||||||
|
* (must be done before displaying the menu tabs)
|
||||||
|
*/
|
||||||
|
if (isset($_REQUEST['comment'])) {
|
||||||
|
PMA_setDbComment($db, $_REQUEST['comment']);
|
||||||
|
}
|
||||||
|
|
||||||
|
require 'libraries/db_common.inc.php';
|
||||||
|
$url_query .= '&goto=db_operations.php';
|
||||||
|
|
||||||
|
// Gets the database structure
|
||||||
|
$sub_part = '_structure';
|
||||||
|
require 'libraries/db_info.inc.php';
|
||||||
|
echo "\n";
|
||||||
|
|
||||||
|
if (isset($message)) {
|
||||||
|
echo PMA_Util::getMessage($message, $sql_query);
|
||||||
|
unset($message);
|
||||||
|
}
|
||||||
|
|
||||||
|
$_REQUEST['db_collation'] = PMA_getDbCollation($db);
|
||||||
|
$is_information_schema = $GLOBALS['dbi']->isSystemSchema($db);
|
||||||
|
|
||||||
|
$response->addHTML('<div id="boxContainer" data-box-width="300">');
|
||||||
|
|
||||||
|
if (!$is_information_schema) {
|
||||||
|
if ($cfgRelation['commwork']) {
|
||||||
|
/**
|
||||||
|
* database comment
|
||||||
|
*/
|
||||||
|
$response->addHTML(PMA_getHtmlForDatabaseComment($db));
|
||||||
|
}
|
||||||
|
|
||||||
|
$response->addHTML('<div class="operations_half_width">');
|
||||||
|
ob_start();
|
||||||
|
include 'libraries/display_create_table.lib.php';
|
||||||
|
$content = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
$response->addHTML($content);
|
||||||
|
$response->addHTML('</div>');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rename database
|
||||||
|
*/
|
||||||
|
if ($db != 'mysql') {
|
||||||
|
$response->addHTML(PMA_getHtmlForRenameDatabase($db));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drop link if allowed
|
||||||
|
// Don't even try to drop information_schema.
|
||||||
|
// You won't be able to. Believe me. You won't.
|
||||||
|
// Don't allow to easily drop mysql database, RFE #1327514.
|
||||||
|
if (($is_superuser || $GLOBALS['cfg']['AllowUserDropDatabase'])
|
||||||
|
&& ! $db_is_information_schema
|
||||||
|
&& (PMA_DRIZZLE || $db != 'mysql')
|
||||||
|
) {
|
||||||
|
$response->addHTML(PMA_getHtmlForDropDatabaseLink($db));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Copy database
|
||||||
|
*/
|
||||||
|
$response->addHTML(PMA_getHtmlForCopyDatabase($db));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change database charset
|
||||||
|
*/
|
||||||
|
$response->addHTML(PMA_getHtmlForChangeDatabaseCharset($db, $table));
|
||||||
|
|
||||||
|
if ($num_tables > 0
|
||||||
|
&& ! $cfgRelation['allworks']
|
||||||
|
&& $cfg['PmaNoRelation_DisableWarning'] == false
|
||||||
|
) {
|
||||||
|
$message = PMA_Message::notice(
|
||||||
|
__('The phpMyAdmin configuration storage has been deactivated. To find out why click %shere%s.')
|
||||||
|
);
|
||||||
|
$message->addParam(
|
||||||
|
'<a href="' . $cfg['PmaAbsoluteUri']
|
||||||
|
. 'chk_rel.php?' . $url_query . '">',
|
||||||
|
false
|
||||||
|
);
|
||||||
|
$message->addParam('</a>', false);
|
||||||
|
/* Show error if user has configured something, notice elsewhere */
|
||||||
|
if (!empty($cfg['Servers'][$server]['pmadb'])) {
|
||||||
|
$message->isError(true);
|
||||||
|
}
|
||||||
|
$response->addHTML('<div class="operations_full_width">');
|
||||||
|
$response->addHTML($message->getDisplay());
|
||||||
|
$response->addHTML('</div>');
|
||||||
|
} // end if
|
||||||
|
} // end if (!$is_information_schema)
|
||||||
|
|
||||||
|
$response->addHTML('</div>');
|
||||||
|
|
||||||
|
// not sure about displaying the PDF dialog in case db is information_schema
|
||||||
|
if ($cfgRelation['pdfwork'] && $num_tables > 0) {
|
||||||
|
// We only show this if we find something in the new pdf_pages table
|
||||||
|
$test_query = '
|
||||||
|
SELECT *
|
||||||
|
FROM ' . PMA_Util::backquote($GLOBALS['cfgRelation']['db'])
|
||||||
|
. '.' . PMA_Util::backquote($cfgRelation['pdf_pages']) . '
|
||||||
|
WHERE db_name = \'' . PMA_Util::sqlAddSlashes($db) . '\'';
|
||||||
|
$test_rs = PMA_queryAsControlUser(
|
||||||
|
$test_query,
|
||||||
|
null,
|
||||||
|
PMA_DatabaseInterface::QUERY_STORE
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Export Relational Schema View
|
||||||
|
*/
|
||||||
|
$response->addHTML(PMA_getHtmlForExportRelationalSchemaView($url_query));
|
||||||
|
} // end if
|
||||||
|
|
||||||
|
?>
|
178
sources/db_printview.php
Normal file
|
@ -0,0 +1,178 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Print view of a database
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$header->enablePrintView();
|
||||||
|
|
||||||
|
PMA_Util::checkParameters(array('db'));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the url to return to in case of error in a sql statement
|
||||||
|
*/
|
||||||
|
$err_url = 'db_sql.php?' . PMA_URL_getCommon($db);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Settings for relations stuff
|
||||||
|
*/
|
||||||
|
$cfgRelation = PMA_getRelationsParam();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If there is at least one table, displays the printer friendly view, else
|
||||||
|
* an error message
|
||||||
|
*/
|
||||||
|
$tables = $GLOBALS['dbi']->getTablesFull($db);
|
||||||
|
$num_tables = count($tables);
|
||||||
|
|
||||||
|
echo '<br />';
|
||||||
|
|
||||||
|
// 1. No table
|
||||||
|
if ($num_tables == 0) {
|
||||||
|
echo __('No tables found in database.');
|
||||||
|
} else {
|
||||||
|
// 2. Shows table information
|
||||||
|
echo '<table>';
|
||||||
|
echo '<thead>';
|
||||||
|
echo '<tr>';
|
||||||
|
echo '<th>' . __('Table') . '</th>';
|
||||||
|
echo '<th>' . __('Rows') . '</th>';
|
||||||
|
echo '<th>' . __('Type') . '</th>';
|
||||||
|
if ($cfg['ShowStats']) {
|
||||||
|
echo '<th>' . __('Size') . '</th>';
|
||||||
|
}
|
||||||
|
echo '<th>' . __('Comments') . '</th>';
|
||||||
|
echo '</tr>';
|
||||||
|
echo '</thead>';
|
||||||
|
echo '<tbody>';
|
||||||
|
$sum_entries = $sum_size = 0;
|
||||||
|
$odd_row = true;
|
||||||
|
foreach ($tables as $sts_data) {
|
||||||
|
if (PMA_Table::isMerge($db, $sts_data['TABLE_NAME'])
|
||||||
|
|| strtoupper($sts_data['ENGINE']) == 'FEDERATED'
|
||||||
|
) {
|
||||||
|
$merged_size = true;
|
||||||
|
} else {
|
||||||
|
$merged_size = false;
|
||||||
|
}
|
||||||
|
$sum_entries += $sts_data['TABLE_ROWS'];
|
||||||
|
echo '<tr class="' . ($odd_row ? 'odd' : 'even') . '">';
|
||||||
|
echo '<th>';
|
||||||
|
echo htmlspecialchars($sts_data['TABLE_NAME']);
|
||||||
|
echo '</th>';
|
||||||
|
|
||||||
|
if (isset($sts_data['TABLE_ROWS'])) {
|
||||||
|
echo '<td class="right">';
|
||||||
|
if ($merged_size) {
|
||||||
|
echo '<i>';
|
||||||
|
echo PMA_Util::formatNumber($sts_data['TABLE_ROWS'], 0);
|
||||||
|
echo '</i>';
|
||||||
|
} else {
|
||||||
|
echo PMA_Util::formatNumber($sts_data['TABLE_ROWS'], 0);
|
||||||
|
}
|
||||||
|
echo '</td>';
|
||||||
|
echo '<td class="nowrap">';
|
||||||
|
echo $sts_data['ENGINE'];
|
||||||
|
echo '</td>';
|
||||||
|
if ($cfg['ShowStats']) {
|
||||||
|
$tblsize = $sts_data['Data_length'] + $sts_data['Index_length'];
|
||||||
|
$sum_size += $tblsize;
|
||||||
|
list($formated_size, $unit)
|
||||||
|
= PMA_Util::formatByteDown($tblsize, 3, 1);
|
||||||
|
echo '<td class="right nowrap">';
|
||||||
|
echo $formated_size . ' ' . $unit;
|
||||||
|
echo '</td>';
|
||||||
|
} // end if
|
||||||
|
} else {
|
||||||
|
echo '<td colspan="3" class="center">';
|
||||||
|
echo __('in use');
|
||||||
|
echo '</td>';
|
||||||
|
}
|
||||||
|
echo '<td>';
|
||||||
|
if (! empty($sts_data['Comment'])) {
|
||||||
|
echo htmlspecialchars($sts_data['Comment']);
|
||||||
|
$needs_break = '<br />';
|
||||||
|
} else {
|
||||||
|
$needs_break = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! empty($sts_data['Create_time'])
|
||||||
|
|| ! empty($sts_data['Update_time'])
|
||||||
|
|| ! empty($sts_data['Check_time'])
|
||||||
|
) {
|
||||||
|
echo $needs_break;
|
||||||
|
echo '<table width="100%">';
|
||||||
|
|
||||||
|
if (! empty($sts_data['Create_time'])) {
|
||||||
|
echo '<tr>';
|
||||||
|
echo '<td class="right">' . __('Creation:') . '</td>';
|
||||||
|
echo '<td class="right">';
|
||||||
|
echo PMA_Util::localisedDate(strtotime($sts_data['Create_time']));
|
||||||
|
echo '</td>';
|
||||||
|
echo '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! empty($sts_data['Update_time'])) {
|
||||||
|
echo '<tr>';
|
||||||
|
echo '<td class="right">' . __('Last update:') . '</td>';
|
||||||
|
echo '<td class="right">';
|
||||||
|
echo PMA_Util::localisedDate(strtotime($sts_data['Update_time']));
|
||||||
|
echo '</td>';
|
||||||
|
echo '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! empty($sts_data['Check_time'])) {
|
||||||
|
echo '<tr>';
|
||||||
|
echo '<td class="right">' . __('Last check:') . '</td>';
|
||||||
|
echo '<td class="right">';
|
||||||
|
echo PMA_Util::localisedDate(strtotime($sts_data['Check_time']));
|
||||||
|
echo '</td>';
|
||||||
|
echo '</tr>';
|
||||||
|
}
|
||||||
|
echo '</table>';
|
||||||
|
}
|
||||||
|
echo '</td>';
|
||||||
|
echo '</tr>';
|
||||||
|
}
|
||||||
|
echo '<tr>';
|
||||||
|
echo '<th class="center">';
|
||||||
|
printf(
|
||||||
|
_ngettext('%s table', '%s tables', $num_tables),
|
||||||
|
PMA_Util::formatNumber($num_tables, 0)
|
||||||
|
);
|
||||||
|
echo '</th>';
|
||||||
|
echo '<th class="right nowrap">';
|
||||||
|
echo PMA_Util::formatNumber($sum_entries, 0);
|
||||||
|
echo '</th>';
|
||||||
|
echo '<th class="center">';
|
||||||
|
echo '--';
|
||||||
|
echo '</th>';
|
||||||
|
if ($cfg['ShowStats']) {
|
||||||
|
list($sum_formated, $unit)
|
||||||
|
= PMA_Util::formatByteDown($sum_size, 3, 1);
|
||||||
|
echo '<th class="right nowrap">';
|
||||||
|
echo $sum_formated . ' ' . $unit;
|
||||||
|
echo '</th>';
|
||||||
|
}
|
||||||
|
echo '<th></th>';
|
||||||
|
echo '</tr>';
|
||||||
|
echo '</tbody>';
|
||||||
|
echo '</table>';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the footer
|
||||||
|
*/
|
||||||
|
echo PMA_Util::getButton();
|
||||||
|
|
||||||
|
echo "<div id='PMA_disable_floating_menubar'></div>\n";
|
||||||
|
?>
|
78
sources/db_qbe.php
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* query by example the whole database
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* requirements
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
require_once 'libraries/DBQbe.class.php';
|
||||||
|
require_once 'libraries/bookmark.lib.php';
|
||||||
|
require_once 'libraries/sql.lib.php';
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
|
||||||
|
// Gets the relation settings
|
||||||
|
$cfgRelation = PMA_getRelationsParam();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A query has been submitted -> (maybe) execute it
|
||||||
|
*/
|
||||||
|
$message_to_display = false;
|
||||||
|
if (isset($_REQUEST['submit_sql']) && ! empty($sql_query)) {
|
||||||
|
if (! preg_match('@^SELECT@i', $sql_query)) {
|
||||||
|
$message_to_display = true;
|
||||||
|
} else {
|
||||||
|
$goto = 'db_sql.php';
|
||||||
|
|
||||||
|
// Parse and analyze the query
|
||||||
|
include_once 'libraries/parse_analyze.inc.php';
|
||||||
|
|
||||||
|
PMA_executeQueryAndSendQueryResponse(
|
||||||
|
$analyzed_sql_results, false, $_REQUEST['db'], null, null, null, null,
|
||||||
|
false, null, null, null, null, $goto, $pmaThemeImage, null, null, null,
|
||||||
|
$sql_query, null, null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$sub_part = '_qbe';
|
||||||
|
require 'libraries/db_common.inc.php';
|
||||||
|
$url_query .= '&goto=db_qbe.php';
|
||||||
|
$url_params['goto'] = 'db_qbe.php';
|
||||||
|
require 'libraries/db_info.inc.php';
|
||||||
|
|
||||||
|
if ($message_to_display) {
|
||||||
|
PMA_Message::error(__('You have to choose at least one column to display'))->display();
|
||||||
|
}
|
||||||
|
unset($message_to_display);
|
||||||
|
|
||||||
|
// create new qbe search instance
|
||||||
|
$db_qbe = new PMA_DBQbe($GLOBALS['db']);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the Query by example form
|
||||||
|
*/
|
||||||
|
if ($cfgRelation['designerwork']) {
|
||||||
|
$url = 'pmd_general.php' . PMA_URL_getCommon(
|
||||||
|
array_merge(
|
||||||
|
$url_params,
|
||||||
|
array('query' => 1)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_Message::notice(
|
||||||
|
sprintf(
|
||||||
|
__('Switch to %svisual builder%s'),
|
||||||
|
'<a href="' . $url . '">',
|
||||||
|
'</a>'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$response->addHTML($db_qbe->getSelectionForm($cfgRelation));
|
||||||
|
?>
|
27
sources/db_routines.php
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Routines management.
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include required files
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
require_once 'libraries/Util.class.php';
|
||||||
|
require_once 'libraries/mysql_charsets.inc.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include all other files
|
||||||
|
*/
|
||||||
|
require_once 'libraries/rte/rte_routines.lib.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do the magic
|
||||||
|
*/
|
||||||
|
$_PMA_RTE = 'RTN';
|
||||||
|
require_once 'libraries/rte/rte_main.inc.php';
|
||||||
|
|
||||||
|
?>
|
57
sources/db_search.php
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* searchs the entire database
|
||||||
|
*
|
||||||
|
* @todo make use of UNION when searching multiple tables
|
||||||
|
* @todo display executed query, optional?
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets some core libraries
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
require_once 'libraries/DbSearch.class.php';
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$scripts = $header->getScripts();
|
||||||
|
$scripts->addFile('db_search.js');
|
||||||
|
$scripts->addFile('sql.js');
|
||||||
|
$scripts->addFile('makegrid.js');
|
||||||
|
$scripts->addFile('jquery/jquery-ui-timepicker-addon.js');
|
||||||
|
|
||||||
|
require 'libraries/db_common.inc.php';
|
||||||
|
|
||||||
|
// If config variable $GLOBALS['cfg']['Usedbsearch'] is on false : exit.
|
||||||
|
if (! $GLOBALS['cfg']['UseDbSearch']) {
|
||||||
|
PMA_Util::mysqlDie(
|
||||||
|
__('Access denied'), '', false, $err_url
|
||||||
|
);
|
||||||
|
} // end if
|
||||||
|
$url_query .= '&goto=db_search.php';
|
||||||
|
$url_params['goto'] = 'db_search.php';
|
||||||
|
|
||||||
|
// Create a database search instance
|
||||||
|
$db_search = new PMA_DbSearch($GLOBALS['db']);
|
||||||
|
|
||||||
|
// Display top links if we are not in an Ajax request
|
||||||
|
if ( $GLOBALS['is_ajax_request'] != true) {
|
||||||
|
include 'libraries/db_info.inc.php';
|
||||||
|
}
|
||||||
|
$response->addHTML('<div id="searchresults">');
|
||||||
|
|
||||||
|
// Main search form has been submitted, get results
|
||||||
|
if (isset($_REQUEST['submit_search'])) {
|
||||||
|
$response->addHTML($db_search->getSearchResults());
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we are in an Ajax request, we need to exit after displaying all the HTML
|
||||||
|
if ($GLOBALS['is_ajax_request'] == true && empty($_REQUEST['ajax_page_request'])) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Display the search form
|
||||||
|
$response->addHTML($db_search->getSelectionForm($url_params));
|
||||||
|
?>
|
44
sources/db_sql.php
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Database SQL executor
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs common work
|
||||||
|
*/
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$scripts = $header->getScripts();
|
||||||
|
$scripts->addFile('functions.js');
|
||||||
|
$scripts->addFile('makegrid.js');
|
||||||
|
$scripts->addFile('sql.js');
|
||||||
|
|
||||||
|
require 'libraries/db_common.inc.php';
|
||||||
|
require_once 'libraries/sql_query_form.lib.php';
|
||||||
|
|
||||||
|
// After a syntax error, we return to this script
|
||||||
|
// with the typed query in the textarea.
|
||||||
|
$goto = 'db_sql.php';
|
||||||
|
$back = 'db_sql.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query box, bookmark, insert data from textfile
|
||||||
|
*/
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_getHtmlForSqlQueryForm(
|
||||||
|
true, false,
|
||||||
|
isset($_REQUEST['delimiter'])
|
||||||
|
? htmlspecialchars($_REQUEST['delimiter'])
|
||||||
|
: ';'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
?>
|
317
sources/db_structure.php
Normal file
|
@ -0,0 +1,317 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Database structure manipulation
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function implementations for this script
|
||||||
|
*/
|
||||||
|
require_once 'libraries/structure.lib.php';
|
||||||
|
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$scripts = $header->getScripts();
|
||||||
|
$scripts->addFile('db_structure.js');
|
||||||
|
$scripts->addFile('tbl_change.js');
|
||||||
|
$scripts->addFile('jquery/jquery-ui-timepicker-addon.js');
|
||||||
|
|
||||||
|
// Drops/deletes/etc. multiple tables if required
|
||||||
|
if ((!empty($_POST['submit_mult']) && isset($_POST['selected_tbl']))
|
||||||
|
|| isset($_POST['mult_btn'])
|
||||||
|
) {
|
||||||
|
$action = 'db_structure.php';
|
||||||
|
$err_url = 'db_structure.php?'. PMA_URL_getCommon($db);
|
||||||
|
|
||||||
|
// see bug #2794840; in this case, code path is:
|
||||||
|
// db_structure.php -> libraries/mult_submits.inc.php -> sql.php
|
||||||
|
// -> db_structure.php and if we got an error on the multi submit,
|
||||||
|
// we must display it here and not call again mult_submits.inc.php
|
||||||
|
if (! isset($_POST['error']) || false === $_POST['error']) {
|
||||||
|
include 'libraries/mult_submits.inc.php';
|
||||||
|
}
|
||||||
|
if (empty($_POST['message'])) {
|
||||||
|
$_POST['message'] = PMA_Message::success();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
require 'libraries/db_common.inc.php';
|
||||||
|
$url_query .= '&goto=db_structure.php';
|
||||||
|
|
||||||
|
// Gets the database structure
|
||||||
|
$sub_part = '_structure';
|
||||||
|
require 'libraries/db_info.inc.php';
|
||||||
|
|
||||||
|
if (!PMA_DRIZZLE) {
|
||||||
|
include_once 'libraries/replication.inc.php';
|
||||||
|
} else {
|
||||||
|
$server_slave_status = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once 'libraries/bookmark.lib.php';
|
||||||
|
|
||||||
|
require_once 'libraries/mysql_charsets.inc.php';
|
||||||
|
$db_collation = PMA_getDbCollation($db);
|
||||||
|
|
||||||
|
$titles = PMA_Util::buildActionTitles();
|
||||||
|
|
||||||
|
// 1. No tables
|
||||||
|
|
||||||
|
if ($num_tables == 0) {
|
||||||
|
$response->addHTML(
|
||||||
|
'<p>' . __('No tables found in database.') . '</p>' . "\n"
|
||||||
|
);
|
||||||
|
if (empty($db_is_information_schema)) {
|
||||||
|
ob_start();
|
||||||
|
include 'libraries/display_create_table.lib.php';
|
||||||
|
$content = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
$response->addHTML($content);
|
||||||
|
unset($content);
|
||||||
|
} // end if (Create Table dialog)
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// else
|
||||||
|
// 2. Shows table informations
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the tables list
|
||||||
|
*/
|
||||||
|
$response->addHTML('<div id="tableslistcontainer">');
|
||||||
|
$_url_params = array(
|
||||||
|
'pos' => $pos,
|
||||||
|
'db' => $db);
|
||||||
|
|
||||||
|
// Add the sort options if they exists
|
||||||
|
if (isset($_REQUEST['sort'])) {
|
||||||
|
$_url_params['sort'] = $_REQUEST['sort'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_REQUEST['sort_order'])) {
|
||||||
|
$_url_params['sort_order'] = $_REQUEST['sort_order'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_Util::getListNavigator(
|
||||||
|
$total_num_tables, $pos, $_url_params, 'db_structure.php',
|
||||||
|
'frame_content', $GLOBALS['cfg']['MaxTableList']
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// tables form
|
||||||
|
$response->addHTML(
|
||||||
|
'<form method="post" action="db_structure.php" '
|
||||||
|
. 'name="tablesForm" id="tablesForm">'
|
||||||
|
);
|
||||||
|
|
||||||
|
$response->addHTML(PMA_URL_getHiddenInputs($db));
|
||||||
|
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_tableHeader($db_is_information_schema, $server_slave_status)
|
||||||
|
);
|
||||||
|
|
||||||
|
$i = $sum_entries = 0;
|
||||||
|
$overhead_check = '';
|
||||||
|
$create_time_all = '';
|
||||||
|
$update_time_all = '';
|
||||||
|
$check_time_all = '';
|
||||||
|
$num_columns = $cfg['PropertiesNumColumns'] > 1
|
||||||
|
? ceil($num_tables / $cfg['PropertiesNumColumns']) + 1
|
||||||
|
: 0;
|
||||||
|
$row_count = 0;
|
||||||
|
$sum_size = (double) 0;
|
||||||
|
$overhead_size = (double) 0;
|
||||||
|
|
||||||
|
$hidden_fields = array();
|
||||||
|
$odd_row = true;
|
||||||
|
$sum_row_count_pre = '';
|
||||||
|
|
||||||
|
foreach ($tables as $keyname => $current_table) {
|
||||||
|
// Get valid statistics whatever is the table type
|
||||||
|
|
||||||
|
$drop_query = '';
|
||||||
|
$drop_message = '';
|
||||||
|
$overhead = '';
|
||||||
|
|
||||||
|
$table_is_view = false;
|
||||||
|
$table_encoded = urlencode($current_table['TABLE_NAME']);
|
||||||
|
// Sets parameters for links
|
||||||
|
$tbl_url_query = $url_query . '&table=' . $table_encoded;
|
||||||
|
// do not list the previous table's size info for a view
|
||||||
|
|
||||||
|
list($current_table, $formatted_size, $unit, $formatted_overhead,
|
||||||
|
$overhead_unit, $overhead_size, $table_is_view, $sum_size)
|
||||||
|
= PMA_getStuffForEngineTypeTable(
|
||||||
|
$current_table, $db_is_information_schema,
|
||||||
|
$is_show_stats, $table_is_view, $sum_size, $overhead_size
|
||||||
|
);
|
||||||
|
|
||||||
|
if (! PMA_Table::isMerge($db, $current_table['TABLE_NAME'])) {
|
||||||
|
$sum_entries += $current_table['TABLE_ROWS'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($current_table['Collation'])) {
|
||||||
|
$collation = '<dfn title="'
|
||||||
|
. PMA_getCollationDescr($current_table['Collation']) . '">'
|
||||||
|
. $current_table['Collation'] . '</dfn>';
|
||||||
|
} else {
|
||||||
|
$collation = '---';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($is_show_stats) {
|
||||||
|
if ($formatted_overhead != '') {
|
||||||
|
$overhead = '<a href="tbl_structure.php?'
|
||||||
|
. $tbl_url_query . '#showusage">'
|
||||||
|
. '<span>' . $formatted_overhead . '</span>'
|
||||||
|
. '<span class="unit">' . $overhead_unit . '</span>'
|
||||||
|
. '</a>' . "\n";
|
||||||
|
$overhead_check .=
|
||||||
|
"markAllRows('row_tbl_" . ($i + 1) . "');";
|
||||||
|
} else {
|
||||||
|
$overhead = '-';
|
||||||
|
}
|
||||||
|
} // end if
|
||||||
|
|
||||||
|
unset($showtable);
|
||||||
|
|
||||||
|
if ($GLOBALS['cfg']['ShowDbStructureCreation']) {
|
||||||
|
list($create_time, $create_time_all) = PMA_getTimeForCreateUpdateCheck(
|
||||||
|
$current_table, 'Create_time', $create_time_all
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($GLOBALS['cfg']['ShowDbStructureLastUpdate']) {
|
||||||
|
// $showtable might already be set from ShowDbStructureCreation, see above
|
||||||
|
list($update_time, $update_time_all) = PMA_getTimeForCreateUpdateCheck(
|
||||||
|
$current_table, 'Update_time', $update_time_all
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($GLOBALS['cfg']['ShowDbStructureLastCheck']) {
|
||||||
|
// $showtable might already be set from ShowDbStructureCreation, see above
|
||||||
|
list($check_time, $check_time_all) = PMA_getTimeForCreateUpdateCheck(
|
||||||
|
$current_table, 'Check_time', $check_time_all
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
list($alias, $truename) = PMA_getAliasAndTrueName(
|
||||||
|
$tooltip_aliasname, $current_table, $tooltip_truename
|
||||||
|
);
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
|
||||||
|
$row_count++;
|
||||||
|
if ($table_is_view) {
|
||||||
|
$hidden_fields[] = '<input type="hidden" name="views[]" value="'
|
||||||
|
. htmlspecialchars($current_table['TABLE_NAME']) . '" />';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Always activate links for Browse, Search and Empty, even if
|
||||||
|
* the icons are greyed, because
|
||||||
|
* 1. for views, we don't know the number of rows at this point
|
||||||
|
* 2. for tables, another source could have populated them since the
|
||||||
|
* page was generated
|
||||||
|
*
|
||||||
|
* I could have used the PHP ternary conditional operator but I find
|
||||||
|
* the code easier to read without this operator.
|
||||||
|
*/
|
||||||
|
list($browse_table, $search_table, $browse_table_label, $empty_table,
|
||||||
|
$tracking_icon) = PMA_getHtmlForActionLinks(
|
||||||
|
$current_table, $table_is_view, $tbl_url_query,
|
||||||
|
$titles, $truename, $db_is_information_schema, $url_query
|
||||||
|
);
|
||||||
|
|
||||||
|
if (! $db_is_information_schema) {
|
||||||
|
list($drop_query, $drop_message)
|
||||||
|
= PMA_getTableDropQueryAndMessage($table_is_view, $current_table);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($num_columns > 0
|
||||||
|
&& $num_tables > $num_columns
|
||||||
|
&& ($row_count % $num_columns) == 0
|
||||||
|
) {
|
||||||
|
$row_count = 1;
|
||||||
|
$odd_row = true;
|
||||||
|
|
||||||
|
$response->addHTML(
|
||||||
|
'</tr></tbody></table>'
|
||||||
|
);
|
||||||
|
|
||||||
|
$response->addHTML(PMA_tableHeader(false, $server_slave_status));
|
||||||
|
}
|
||||||
|
|
||||||
|
list($do, $ignored) = PMA_getServerSlaveStatus(
|
||||||
|
$server_slave_status, $truename
|
||||||
|
);
|
||||||
|
|
||||||
|
list($html_output, $odd_row) = PMA_getHtmlForStructureTableRow(
|
||||||
|
$i, $odd_row, $table_is_view, $current_table,
|
||||||
|
$browse_table_label, $tracking_icon, $server_slave_status,
|
||||||
|
$browse_table, $tbl_url_query, $search_table, $db_is_information_schema,
|
||||||
|
$titles, $empty_table, $drop_query, $drop_message, $collation,
|
||||||
|
$formatted_size, $unit, $overhead,
|
||||||
|
(isset ($create_time) ? $create_time : ''),
|
||||||
|
(isset ($update_time) ? $update_time : ''),
|
||||||
|
(isset ($check_time) ? $check_time : ''),
|
||||||
|
$is_show_stats, $ignored, $do, $colspan_for_structure
|
||||||
|
);
|
||||||
|
$response->addHTML($html_output);
|
||||||
|
|
||||||
|
} // end foreach
|
||||||
|
|
||||||
|
// Show Summary
|
||||||
|
$response->addHTML('</tbody>');
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_getHtmlBodyForTableSummary(
|
||||||
|
$num_tables, $server_slave_status, $db_is_information_schema, $sum_entries,
|
||||||
|
$db_collation, $is_show_stats, $sum_size, $overhead_size, $create_time_all,
|
||||||
|
$update_time_all, $check_time_all, $sum_row_count_pre
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$response->addHTML('</table>');
|
||||||
|
//check all
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_getHtmlForCheckAllTables(
|
||||||
|
$pmaThemeImage, $text_dir, $overhead_check,
|
||||||
|
$db_is_information_schema, $hidden_fields
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$response->addHTML('</form>'); //end of form
|
||||||
|
|
||||||
|
// display again the table list navigator
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_Util::getListNavigator(
|
||||||
|
$total_num_tables, $pos, $_url_params, 'db_structure.php',
|
||||||
|
'frame_content', $GLOBALS['cfg']['MaxTableList']
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$response->addHTML('</div><hr />');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Work on the database
|
||||||
|
*/
|
||||||
|
/* DATABASE WORK */
|
||||||
|
/* Printable view of a table */
|
||||||
|
$response->addHTML(
|
||||||
|
PMA_getHtmlForTablePrintViewLink($url_query)
|
||||||
|
. PMA_getHtmlForDataDictionaryLink($url_query)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (empty($db_is_information_schema)) {
|
||||||
|
ob_start();
|
||||||
|
include 'libraries/display_create_table.lib.php';
|
||||||
|
$content = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
$response->addHTML($content);
|
||||||
|
} // end if (Create Table dialog)
|
||||||
|
|
||||||
|
?>
|
252
sources/db_tracking.php
Normal file
|
@ -0,0 +1,252 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Tracking configuration for database
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run common work
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
//Get some js files needed for Ajax requests
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$header = $response->getHeader();
|
||||||
|
$scripts = $header->getScripts();
|
||||||
|
$scripts->addFile('db_structure.js');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If we are not in an Ajax request, then do the common work and show the links etc.
|
||||||
|
*/
|
||||||
|
require 'libraries/db_common.inc.php';
|
||||||
|
$url_query .= '&goto=tbl_tracking.php&back=db_tracking.php';
|
||||||
|
|
||||||
|
// Get the database structure
|
||||||
|
$sub_part = '_structure';
|
||||||
|
require 'libraries/db_info.inc.php';
|
||||||
|
|
||||||
|
// Work to do?
|
||||||
|
// (here, do not use $_REQUEST['db] as it can be crafted)
|
||||||
|
if (isset($_REQUEST['delete_tracking']) && isset($_REQUEST['table'])) {
|
||||||
|
PMA_Tracker::deleteTracking($GLOBALS['db'], $_REQUEST['table']);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If in an Ajax request, generate the success message and use
|
||||||
|
* {@link PMA_Response()} to send the output
|
||||||
|
*/
|
||||||
|
if ($GLOBALS['is_ajax_request'] == true) {
|
||||||
|
$response = PMA_Response::getInstance();
|
||||||
|
$response->addJSON('message', PMA_Message::success());
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get tracked data about the database
|
||||||
|
$data = PMA_Tracker::getTrackedData($_REQUEST['db'], '', '1');
|
||||||
|
|
||||||
|
// No tables present and no log exist
|
||||||
|
if ($num_tables == 0 && count($data['ddlog']) == 0) {
|
||||||
|
echo '<p>' . __('No tables found in database.') . '</p>' . "\n";
|
||||||
|
|
||||||
|
if (empty($db_is_information_schema)) {
|
||||||
|
include 'libraries/display_create_table.lib.php';
|
||||||
|
}
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Prepare statement to get HEAD version
|
||||||
|
$all_tables_query = ' SELECT table_name, MAX(version) as version FROM ' .
|
||||||
|
PMA_Util::backquote($GLOBALS['cfg']['Server']['pmadb']) . '.' .
|
||||||
|
PMA_Util::backquote($GLOBALS['cfg']['Server']['tracking']) .
|
||||||
|
' WHERE db_name = \'' . PMA_Util::sqlAddSlashes($_REQUEST['db']) . '\' ' .
|
||||||
|
' GROUP BY table_name' .
|
||||||
|
' ORDER BY table_name ASC';
|
||||||
|
|
||||||
|
$all_tables_result = PMA_queryAsControlUser($all_tables_query);
|
||||||
|
|
||||||
|
// If a HEAD version exists
|
||||||
|
if ($GLOBALS['dbi']->numRows($all_tables_result) > 0) {
|
||||||
|
?>
|
||||||
|
<div id="tracked_tables">
|
||||||
|
<h3><?php echo __('Tracked tables');?></h3>
|
||||||
|
|
||||||
|
<table id="versions" class="data">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><?php echo __('Database');?></th>
|
||||||
|
<th><?php echo __('Table');?></th>
|
||||||
|
<th><?php echo __('Last version');?></th>
|
||||||
|
<th><?php echo __('Created');?></th>
|
||||||
|
<th><?php echo __('Updated');?></th>
|
||||||
|
<th><?php echo __('Status');?></th>
|
||||||
|
<th><?php echo __('Action');?></th>
|
||||||
|
<th><?php echo __('Show');?></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Print out information about versions
|
||||||
|
|
||||||
|
$drop_image_or_text = '';
|
||||||
|
if (PMA_Util::showIcons('ActionLinksMode')) {
|
||||||
|
$drop_image_or_text .= PMA_Util::getImage(
|
||||||
|
'b_drop.png',
|
||||||
|
__('Delete tracking data for this table')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (PMA_Util::showText('ActionLinksMode')) {
|
||||||
|
$drop_image_or_text .= __('Drop');
|
||||||
|
}
|
||||||
|
|
||||||
|
$style = 'odd';
|
||||||
|
while ($one_result = $GLOBALS['dbi']->fetchArray($all_tables_result)) {
|
||||||
|
list($table_name, $version_number) = $one_result;
|
||||||
|
$table_query = ' SELECT * FROM ' .
|
||||||
|
PMA_Util::backquote($GLOBALS['cfg']['Server']['pmadb']) . '.' .
|
||||||
|
PMA_Util::backquote($GLOBALS['cfg']['Server']['tracking']) .
|
||||||
|
' WHERE `db_name` = \'' . PMA_Util::sqlAddSlashes($_REQUEST['db'])
|
||||||
|
. '\' AND `table_name` = \'' . PMA_Util::sqlAddSlashes($table_name)
|
||||||
|
. '\' AND `version` = \'' . $version_number . '\'';
|
||||||
|
|
||||||
|
$table_result = PMA_queryAsControlUser($table_query);
|
||||||
|
$version_data = $GLOBALS['dbi']->fetchArray($table_result);
|
||||||
|
|
||||||
|
if ($version_data['tracking_active'] == 1) {
|
||||||
|
$version_status = __('active');
|
||||||
|
} else {
|
||||||
|
$version_status = __('not active');
|
||||||
|
}
|
||||||
|
$tmp_link = 'tbl_tracking.php?' . $url_query . '&table='
|
||||||
|
. htmlspecialchars($version_data['table_name']);
|
||||||
|
$delete_link = 'db_tracking.php?' . $url_query . '&table='
|
||||||
|
. htmlspecialchars($version_data['table_name'])
|
||||||
|
. '&delete_tracking=true&';
|
||||||
|
?>
|
||||||
|
<tr class="noclick <?php echo $style;?>">
|
||||||
|
<td><?php echo htmlspecialchars($version_data['db_name']);?></td>
|
||||||
|
<td><?php echo htmlspecialchars($version_data['table_name']);?></td>
|
||||||
|
<td><?php echo $version_data['version'];?></td>
|
||||||
|
<td><?php echo $version_data['date_created'];?></td>
|
||||||
|
<td><?php echo $version_data['date_updated'];?></td>
|
||||||
|
<td><?php echo $version_status;?></td>
|
||||||
|
<td>
|
||||||
|
<a class="drop_tracking_anchor ajax" href="<?php echo $delete_link;?>" >
|
||||||
|
<?php echo $drop_image_or_text; ?></a>
|
||||||
|
<?php
|
||||||
|
echo '</td>'
|
||||||
|
. '<td>'
|
||||||
|
. '<a href="' . $tmp_link . '">' . __('Versions') . '</a>'
|
||||||
|
. ' | '
|
||||||
|
. '<a href="' . $tmp_link . '&report=true&version='
|
||||||
|
. $version_data['version'] . '">' . __('Tracking report') . '</a>'
|
||||||
|
. ' | '
|
||||||
|
. '<a href="' . $tmp_link . '&snapshot=true&version='
|
||||||
|
. $version_data['version'] . '">' . __('Structure snapshot')
|
||||||
|
. '</a>'
|
||||||
|
. '</td>'
|
||||||
|
. '</tr>';
|
||||||
|
if ($style == 'even') {
|
||||||
|
$style = 'odd';
|
||||||
|
} else {
|
||||||
|
$style = 'even';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($tmp_link);
|
||||||
|
?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
$sep = $GLOBALS['cfg']['NavigationTreeTableSeparator'];
|
||||||
|
|
||||||
|
// Get list of tables
|
||||||
|
$table_list = PMA_Util::getTableList($GLOBALS['db']);
|
||||||
|
|
||||||
|
// For each table try to get the tracking version
|
||||||
|
foreach ($table_list as $key => $value) {
|
||||||
|
// If $value is a table group.
|
||||||
|
if (array_key_exists(('is' . $sep . 'group'), $value)
|
||||||
|
&& $value['is' . $sep . 'group']
|
||||||
|
) {
|
||||||
|
foreach ($value as $temp_table) {
|
||||||
|
// If $temp_table is a table with the value for 'Name' is set,
|
||||||
|
// rather than a propery of the table group.
|
||||||
|
if (is_array($temp_table)
|
||||||
|
&& array_key_exists('Name', $temp_table)
|
||||||
|
) {
|
||||||
|
$tracking_version = PMA_Tracker::getVersion(
|
||||||
|
$GLOBALS['db'],
|
||||||
|
$temp_table['Name']
|
||||||
|
);
|
||||||
|
if ($tracking_version == -1) {
|
||||||
|
$my_tables[] = $temp_table['Name'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { // If $value is a table.
|
||||||
|
if (PMA_Tracker::getVersion($GLOBALS['db'], $value['Name']) == -1) {
|
||||||
|
$my_tables[] = $value['Name'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If untracked tables exist
|
||||||
|
if (isset($my_tables)) {
|
||||||
|
?>
|
||||||
|
<h3><?php echo __('Untracked tables');?></h3>
|
||||||
|
|
||||||
|
<table id="noversions" class="data">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="width: 300px"><?php echo __('Table');?></th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
// Print out list of untracked tables
|
||||||
|
|
||||||
|
$style = 'odd';
|
||||||
|
|
||||||
|
foreach ($my_tables as $key => $tablename) {
|
||||||
|
if (PMA_Tracker::getVersion($GLOBALS['db'], $tablename) == -1) {
|
||||||
|
$my_link = '<a href="tbl_tracking.php?' . $url_query
|
||||||
|
. '&table=' . htmlspecialchars($tablename) .'">';
|
||||||
|
$my_link .= PMA_Util::getIcon('eye.png', __('Track table'));
|
||||||
|
$my_link .= '</a>';
|
||||||
|
?>
|
||||||
|
<tr class="noclick <?php echo $style;?>">
|
||||||
|
<td><?php echo htmlspecialchars($tablename);?></td>
|
||||||
|
<td><?php echo $my_link;?></td>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
if ($style == 'even') {
|
||||||
|
$style = 'odd';
|
||||||
|
} else {
|
||||||
|
$style = 'even';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
// If available print out database log
|
||||||
|
if (count($data['ddlog']) > 0) {
|
||||||
|
$log = '';
|
||||||
|
foreach ($data['ddlog'] as $entry) {
|
||||||
|
$log .= '# ' . $entry['date'] . ' ' . $entry['username'] . "\n"
|
||||||
|
. $entry['statement'] . "\n";
|
||||||
|
}
|
||||||
|
echo PMA_Util::getMessage(__('Database Log'), $log);
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
25
sources/db_triggers.php
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
/**
|
||||||
|
* Triggers management.
|
||||||
|
*
|
||||||
|
* @package PhpMyAdmin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include required files
|
||||||
|
*/
|
||||||
|
require_once 'libraries/common.inc.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include all other files
|
||||||
|
*/
|
||||||
|
require_once 'libraries/rte/rte_triggers.lib.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do the magic
|
||||||
|
*/
|
||||||
|
$_PMA_RTE = 'TRI';
|
||||||
|
require_once 'libraries/rte/rte_main.inc.php';
|
||||||
|
|
||||||
|
?>
|
153
sources/doc/Makefile
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
# Makefile for Sphinx documentation
|
||||||
|
#
|
||||||
|
|
||||||
|
# You can set these variables from the command line.
|
||||||
|
SPHINXOPTS =
|
||||||
|
SPHINXBUILD = sphinx-build
|
||||||
|
PAPER =
|
||||||
|
BUILDDIR = .
|
||||||
|
|
||||||
|
# Internal variables.
|
||||||
|
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||||
|
PAPEROPT_letter = -D latex_paper_size=letter
|
||||||
|
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||||
|
# the i18n builder cannot share the environment and doctrees with the others
|
||||||
|
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||||
|
|
||||||
|
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "Please use \`make <target>' where <target> is one of"
|
||||||
|
@echo " html to make standalone HTML files"
|
||||||
|
@echo " dirhtml to make HTML files named index.html in directories"
|
||||||
|
@echo " singlehtml to make a single large HTML file"
|
||||||
|
@echo " pickle to make pickle files"
|
||||||
|
@echo " json to make JSON files"
|
||||||
|
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||||
|
@echo " qthelp to make HTML files and a qthelp project"
|
||||||
|
@echo " devhelp to make HTML files and a Devhelp project"
|
||||||
|
@echo " epub to make an epub"
|
||||||
|
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||||
|
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||||
|
@echo " text to make text files"
|
||||||
|
@echo " man to make manual pages"
|
||||||
|
@echo " texinfo to make Texinfo files"
|
||||||
|
@echo " info to make Texinfo files and run them through makeinfo"
|
||||||
|
@echo " gettext to make PO message catalogs"
|
||||||
|
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||||
|
@echo " linkcheck to check all external links for integrity"
|
||||||
|
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -rf $(BUILDDIR)/*
|
||||||
|
|
||||||
|
html:
|
||||||
|
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||||
|
|
||||||
|
dirhtml:
|
||||||
|
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||||
|
|
||||||
|
singlehtml:
|
||||||
|
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||||
|
|
||||||
|
pickle:
|
||||||
|
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can process the pickle files."
|
||||||
|
|
||||||
|
json:
|
||||||
|
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can process the JSON files."
|
||||||
|
|
||||||
|
htmlhelp:
|
||||||
|
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||||
|
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||||
|
|
||||||
|
qthelp:
|
||||||
|
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||||
|
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||||
|
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/phpMyAdmin.qhcp"
|
||||||
|
@echo "To view the help file:"
|
||||||
|
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/phpMyAdmin.qhc"
|
||||||
|
|
||||||
|
devhelp:
|
||||||
|
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished."
|
||||||
|
@echo "To view the help file:"
|
||||||
|
@echo "# mkdir -p $$HOME/.local/share/devhelp/phpMyAdmin"
|
||||||
|
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/phpMyAdmin"
|
||||||
|
@echo "# devhelp"
|
||||||
|
|
||||||
|
epub:
|
||||||
|
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||||
|
|
||||||
|
latex:
|
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||||
|
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||||
|
"(use \`make latexpdf' here to do that automatically)."
|
||||||
|
|
||||||
|
latexpdf:
|
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||||
|
@echo "Running LaTeX files through pdflatex..."
|
||||||
|
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||||
|
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||||
|
|
||||||
|
text:
|
||||||
|
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||||
|
|
||||||
|
man:
|
||||||
|
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||||
|
|
||||||
|
texinfo:
|
||||||
|
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
||||||
|
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||||
|
"(use \`make info' here to do that automatically)."
|
||||||
|
|
||||||
|
info:
|
||||||
|
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||||
|
@echo "Running Texinfo files through makeinfo..."
|
||||||
|
make -C $(BUILDDIR)/texinfo info
|
||||||
|
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
||||||
|
|
||||||
|
gettext:
|
||||||
|
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
||||||
|
|
||||||
|
changes:
|
||||||
|
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||||
|
@echo
|
||||||
|
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||||
|
|
||||||
|
linkcheck:
|
||||||
|
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||||
|
@echo
|
||||||
|
@echo "Link check complete; look for any errors in the above output " \
|
||||||
|
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||||
|
|
||||||
|
doctest:
|
||||||
|
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||||
|
@echo "Testing of doctests in the sources finished, look at the " \
|
||||||
|
"results in $(BUILDDIR)/doctest/output.txt."
|
189
sources/doc/_ext/configext.py
Normal file
|
@ -0,0 +1,189 @@
|
||||||
|
from sphinx.locale import l_, _
|
||||||
|
from sphinx.domains import Domain, ObjType
|
||||||
|
from sphinx.roles import XRefRole
|
||||||
|
from sphinx.domains.std import GenericObject, StandardDomain
|
||||||
|
from sphinx.directives import ObjectDescription
|
||||||
|
from sphinx.util.nodes import clean_astext, make_refnode
|
||||||
|
from sphinx.util import ws_re
|
||||||
|
from sphinx import addnodes
|
||||||
|
from sphinx.util.docfields import Field
|
||||||
|
from docutils import nodes
|
||||||
|
|
||||||
|
def get_id_from_cfg(text):
|
||||||
|
'''
|
||||||
|
Formats anchor ID from config option.
|
||||||
|
'''
|
||||||
|
if text[:6] == '$cfg[\'':
|
||||||
|
text = text[6:]
|
||||||
|
if text[-2:] == '\']':
|
||||||
|
text = text[:-2]
|
||||||
|
text = text.replace('[$i]', '')
|
||||||
|
parts = text.split("']['")
|
||||||
|
return parts
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigOption(ObjectDescription):
|
||||||
|
indextemplate = l_('configuration option; %s')
|
||||||
|
parse_node = None
|
||||||
|
|
||||||
|
has_arguments = True
|
||||||
|
|
||||||
|
doc_field_types = [
|
||||||
|
Field('default', label=l_('Default value'), has_arg=False,
|
||||||
|
names=('default', )),
|
||||||
|
Field('type', label=l_('Type'), has_arg=False,
|
||||||
|
names=('type',)),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def handle_signature(self, sig, signode):
|
||||||
|
signode.clear()
|
||||||
|
signode += addnodes.desc_name(sig, sig)
|
||||||
|
# normalize whitespace like XRefRole does
|
||||||
|
name = ws_re.sub('', sig)
|
||||||
|
return name
|
||||||
|
|
||||||
|
def add_target_and_index(self, name, sig, signode):
|
||||||
|
targetparts = get_id_from_cfg(name)
|
||||||
|
targetname = 'cfg_%s' % '_'.join(targetparts)
|
||||||
|
signode['ids'].append(targetname)
|
||||||
|
self.state.document.note_explicit_target(signode)
|
||||||
|
indextype = 'single'
|
||||||
|
|
||||||
|
# Generic index entries
|
||||||
|
indexentry = self.indextemplate % (name,)
|
||||||
|
self.indexnode['entries'].append((indextype, indexentry,
|
||||||
|
targetname, targetname))
|
||||||
|
self.indexnode['entries'].append((indextype, name,
|
||||||
|
targetname, targetname))
|
||||||
|
|
||||||
|
# Server section
|
||||||
|
if targetparts[0] == 'Servers' and len(targetparts) > 1:
|
||||||
|
indexname = ', '.join(targetparts[1:])
|
||||||
|
self.indexnode['entries'].append((indextype, l_('server configuration; %s') % indexname,
|
||||||
|
targetname, targetname))
|
||||||
|
self.indexnode['entries'].append((indextype, indexname,
|
||||||
|
targetname, targetname))
|
||||||
|
else:
|
||||||
|
indexname = ', '.join(targetparts)
|
||||||
|
self.indexnode['entries'].append((indextype, indexname,
|
||||||
|
targetname, targetname))
|
||||||
|
|
||||||
|
self.env.domaindata['config']['objects'][self.objtype, name] = \
|
||||||
|
self.env.docname, targetname
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigSectionXRefRole(XRefRole):
|
||||||
|
"""
|
||||||
|
Cross-referencing role for configuration sections (adds an index entry).
|
||||||
|
"""
|
||||||
|
|
||||||
|
def result_nodes(self, document, env, node, is_ref):
|
||||||
|
if not is_ref:
|
||||||
|
return [node], []
|
||||||
|
varname = node['reftarget']
|
||||||
|
tgtid = 'index-%s' % env.new_serialno('index')
|
||||||
|
indexnode = addnodes.index()
|
||||||
|
indexnode['entries'] = [
|
||||||
|
('single', varname, tgtid, varname),
|
||||||
|
('single', _('configuration section; %s') % varname, tgtid, varname)
|
||||||
|
]
|
||||||
|
targetnode = nodes.target('', '', ids=[tgtid])
|
||||||
|
document.note_explicit_target(targetnode)
|
||||||
|
return [indexnode, targetnode, node], []
|
||||||
|
|
||||||
|
class ConfigSection(ObjectDescription):
|
||||||
|
indextemplate = l_('configuration section; %s')
|
||||||
|
parse_node = None
|
||||||
|
|
||||||
|
def handle_signature(self, sig, signode):
|
||||||
|
if self.parse_node:
|
||||||
|
name = self.parse_node(self.env, sig, signode)
|
||||||
|
else:
|
||||||
|
signode.clear()
|
||||||
|
signode += addnodes.desc_name(sig, sig)
|
||||||
|
# normalize whitespace like XRefRole does
|
||||||
|
name = ws_re.sub('', sig)
|
||||||
|
return name
|
||||||
|
|
||||||
|
def add_target_and_index(self, name, sig, signode):
|
||||||
|
targetname = '%s-%s' % (self.objtype, name)
|
||||||
|
signode['ids'].append(targetname)
|
||||||
|
self.state.document.note_explicit_target(signode)
|
||||||
|
if self.indextemplate:
|
||||||
|
colon = self.indextemplate.find(':')
|
||||||
|
if colon != -1:
|
||||||
|
indextype = self.indextemplate[:colon].strip()
|
||||||
|
indexentry = self.indextemplate[colon+1:].strip() % (name,)
|
||||||
|
else:
|
||||||
|
indextype = 'single'
|
||||||
|
indexentry = self.indextemplate % (name,)
|
||||||
|
self.indexnode['entries'].append((indextype, indexentry,
|
||||||
|
targetname, targetname))
|
||||||
|
self.env.domaindata['config']['objects'][self.objtype, name] = \
|
||||||
|
self.env.docname, targetname
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigOptionXRefRole(XRefRole):
|
||||||
|
"""
|
||||||
|
Cross-referencing role for configuration options (adds an index entry).
|
||||||
|
"""
|
||||||
|
|
||||||
|
def result_nodes(self, document, env, node, is_ref):
|
||||||
|
if not is_ref:
|
||||||
|
return [node], []
|
||||||
|
varname = node['reftarget']
|
||||||
|
tgtid = 'index-%s' % env.new_serialno('index')
|
||||||
|
indexnode = addnodes.index()
|
||||||
|
indexnode['entries'] = [
|
||||||
|
('single', varname, tgtid, varname),
|
||||||
|
('single', _('configuration option; %s') % varname, tgtid, varname)
|
||||||
|
]
|
||||||
|
targetnode = nodes.target('', '', ids=[tgtid])
|
||||||
|
document.note_explicit_target(targetnode)
|
||||||
|
return [indexnode, targetnode, node], []
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigFileDomain(Domain):
|
||||||
|
name = 'config'
|
||||||
|
label = 'Config'
|
||||||
|
|
||||||
|
object_types = {
|
||||||
|
'option': ObjType(l_('config option'), 'option'),
|
||||||
|
'section': ObjType(l_('config section'), 'section'),
|
||||||
|
}
|
||||||
|
directives = {
|
||||||
|
'option': ConfigOption,
|
||||||
|
'section': ConfigSection,
|
||||||
|
}
|
||||||
|
roles = {
|
||||||
|
'option': ConfigOptionXRefRole(),
|
||||||
|
'section': ConfigSectionXRefRole(),
|
||||||
|
}
|
||||||
|
|
||||||
|
initial_data = {
|
||||||
|
'objects': {}, # (type, name) -> docname, labelid
|
||||||
|
}
|
||||||
|
|
||||||
|
def clear_doc(self, docname):
|
||||||
|
for key, (fn, _) in self.data['objects'].items():
|
||||||
|
if fn == docname:
|
||||||
|
del self.data['objects'][key]
|
||||||
|
|
||||||
|
def resolve_xref(self, env, fromdocname, builder,
|
||||||
|
typ, target, node, contnode):
|
||||||
|
docname, labelid = self.data['objects'].get((typ, target), ('', ''))
|
||||||
|
if not docname:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return make_refnode(builder, fromdocname, docname,
|
||||||
|
labelid, contnode)
|
||||||
|
|
||||||
|
def get_objects(self):
|
||||||
|
for (type, name), info in self.data['objects'].iteritems():
|
||||||
|
yield (name, name, type, info[0], info[1],
|
||||||
|
self.object_types[type].attrs['searchprio'])
|
||||||
|
|
||||||
|
def setup(app):
|
||||||
|
app.add_domain(ConfigFileDomain)
|
||||||
|
|
292
sources/doc/conf.py
Normal file
|
@ -0,0 +1,292 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# phpMyAdmin documentation build configuration file, created by
|
||||||
|
# sphinx-quickstart on Wed Sep 26 14:04:48 2012.
|
||||||
|
#
|
||||||
|
# This file is execfile()d with the current directory set to its containing dir.
|
||||||
|
#
|
||||||
|
# Note that not all possible configuration values are present in this
|
||||||
|
# autogenerated file.
|
||||||
|
#
|
||||||
|
# All configuration values have a default; values that are commented out
|
||||||
|
# serve to show the default.
|
||||||
|
|
||||||
|
import sys, os
|
||||||
|
|
||||||
|
# If extensions (or modules to document with autodoc) are in another directory,
|
||||||
|
# add these directories to sys.path here. If the directory is relative to the
|
||||||
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||||
|
#sys.path.insert(0, os.path.abspath('.'))
|
||||||
|
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "_ext")))
|
||||||
|
|
||||||
|
# -- General configuration -----------------------------------------------------
|
||||||
|
|
||||||
|
# If your documentation needs a minimal Sphinx version, state it here.
|
||||||
|
#needs_sphinx = '1.0'
|
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||||
|
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||||
|
extensions = ['configext']
|
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
|
templates_path = ['_templates']
|
||||||
|
|
||||||
|
# The suffix of source filenames.
|
||||||
|
source_suffix = '.rst'
|
||||||
|
|
||||||
|
# The encoding of source files.
|
||||||
|
#source_encoding = 'utf-8-sig'
|
||||||
|
|
||||||
|
# The master toctree document.
|
||||||
|
master_doc = 'index'
|
||||||
|
|
||||||
|
# General information about the project.
|
||||||
|
project = u'phpMyAdmin'
|
||||||
|
copyright = u'2012 - 2013, The phpMyAdmin devel team'
|
||||||
|
|
||||||
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
|
# |version| and |release|, also used in various other places throughout the
|
||||||
|
# built documents.
|
||||||
|
#
|
||||||
|
# The short X.Y version.
|
||||||
|
version = '4.1.4'
|
||||||
|
# The full version, including alpha/beta/rc tags.
|
||||||
|
release = version
|
||||||
|
|
||||||
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
|
# for a list of supported languages.
|
||||||
|
#language = None
|
||||||
|
|
||||||
|
# There are two options for replacing |today|: either, you set today to some
|
||||||
|
# non-false value, then it is used:
|
||||||
|
#today = ''
|
||||||
|
# Else, today_fmt is used as the format for a strftime call.
|
||||||
|
#today_fmt = '%B %d, %Y'
|
||||||
|
|
||||||
|
# List of patterns, relative to source directory, that match files and
|
||||||
|
# directories to ignore when looking for source files.
|
||||||
|
exclude_patterns = ['_build', 'html', 'doctrees']
|
||||||
|
|
||||||
|
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||||
|
#default_role = None
|
||||||
|
|
||||||
|
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||||
|
#add_function_parentheses = True
|
||||||
|
|
||||||
|
# If true, the current module name will be prepended to all description
|
||||||
|
# unit titles (such as .. function::).
|
||||||
|
#add_module_names = True
|
||||||
|
|
||||||
|
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||||
|
# output. They are ignored by default.
|
||||||
|
#show_authors = False
|
||||||
|
|
||||||
|
# The name of the Pygments (syntax highlighting) style to use.
|
||||||
|
pygments_style = 'sphinx'
|
||||||
|
|
||||||
|
# A list of ignored prefixes for module index sorting.
|
||||||
|
#modindex_common_prefix = []
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for HTML output ---------------------------------------------------
|
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
|
# a list of builtin themes.
|
||||||
|
html_theme = 'default'
|
||||||
|
|
||||||
|
# Theme options are theme-specific and customize the look and feel of a theme
|
||||||
|
# further. For a list of options available for each theme, see the
|
||||||
|
# documentation.
|
||||||
|
#html_theme_options = {}
|
||||||
|
|
||||||
|
# Add any paths that contain custom themes here, relative to this directory.
|
||||||
|
#html_theme_path = []
|
||||||
|
|
||||||
|
# The name for this set of Sphinx documents. If None, it defaults to
|
||||||
|
# "<project> v<release> documentation".
|
||||||
|
#html_title = None
|
||||||
|
|
||||||
|
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||||
|
#html_short_title = None
|
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at the top
|
||||||
|
# of the sidebar.
|
||||||
|
#html_logo = None
|
||||||
|
|
||||||
|
# The name of an image file (within the static path) to use as favicon of the
|
||||||
|
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||||
|
# pixels large.
|
||||||
|
#html_favicon = None
|
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
|
html_static_path = ['_static']
|
||||||
|
|
||||||
|
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||||
|
# using the given strftime format.
|
||||||
|
#html_last_updated_fmt = '%b %d, %Y'
|
||||||
|
|
||||||
|
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||||
|
# typographically correct entities.
|
||||||
|
#html_use_smartypants = True
|
||||||
|
|
||||||
|
# Custom sidebar templates, maps document names to template names.
|
||||||
|
#html_sidebars = {}
|
||||||
|
|
||||||
|
# Additional templates that should be rendered to pages, maps page names to
|
||||||
|
# template names.
|
||||||
|
#html_additional_pages = {}
|
||||||
|
|
||||||
|
# If false, no module index is generated.
|
||||||
|
#html_domain_indices = True
|
||||||
|
|
||||||
|
# If false, no index is generated.
|
||||||
|
#html_use_index = True
|
||||||
|
|
||||||
|
# If true, the index is split into individual pages for each letter.
|
||||||
|
#html_split_index = False
|
||||||
|
|
||||||
|
# If true, links to the reST sources are added to the pages.
|
||||||
|
#html_show_sourcelink = True
|
||||||
|
|
||||||
|
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||||
|
#html_show_sphinx = True
|
||||||
|
|
||||||
|
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||||
|
#html_show_copyright = True
|
||||||
|
|
||||||
|
# If true, an OpenSearch description file will be output, and all pages will
|
||||||
|
# contain a <link> tag referring to it. The value of this option must be the
|
||||||
|
# base URL from which the finished HTML is served.
|
||||||
|
#html_use_opensearch = ''
|
||||||
|
|
||||||
|
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||||
|
#html_file_suffix = None
|
||||||
|
|
||||||
|
# Output file base name for HTML help builder.
|
||||||
|
htmlhelp_basename = 'phpMyAdmindoc'
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for LaTeX output --------------------------------------------------
|
||||||
|
|
||||||
|
latex_elements = {
|
||||||
|
# The paper size ('letterpaper' or 'a4paper').
|
||||||
|
#'papersize': 'letterpaper',
|
||||||
|
|
||||||
|
# The font size ('10pt', '11pt' or '12pt').
|
||||||
|
#'pointsize': '10pt',
|
||||||
|
|
||||||
|
# Additional stuff for the LaTeX preamble.
|
||||||
|
#'preamble': '',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Grouping the document tree into LaTeX files. List of tuples
|
||||||
|
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||||
|
latex_documents = [
|
||||||
|
('index', 'phpMyAdmin.tex', u'phpMyAdmin Documentation',
|
||||||
|
u'The phpMyAdmin devel team', 'manual'),
|
||||||
|
]
|
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at the top of
|
||||||
|
# the title page.
|
||||||
|
#latex_logo = None
|
||||||
|
|
||||||
|
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||||
|
# not chapters.
|
||||||
|
#latex_use_parts = False
|
||||||
|
|
||||||
|
# If true, show page references after internal links.
|
||||||
|
#latex_show_pagerefs = False
|
||||||
|
|
||||||
|
# If true, show URL addresses after external links.
|
||||||
|
#latex_show_urls = False
|
||||||
|
|
||||||
|
# Documents to append as an appendix to all manuals.
|
||||||
|
#latex_appendices = []
|
||||||
|
|
||||||
|
# If false, no module index is generated.
|
||||||
|
#latex_domain_indices = True
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for manual page output --------------------------------------------
|
||||||
|
|
||||||
|
# One entry per manual page. List of tuples
|
||||||
|
# (source start file, name, description, authors, manual section).
|
||||||
|
man_pages = [
|
||||||
|
('index', 'phpmyadmin', u'phpMyAdmin Documentation',
|
||||||
|
[u'The phpMyAdmin devel team'], 1)
|
||||||
|
]
|
||||||
|
|
||||||
|
# If true, show URL addresses after external links.
|
||||||
|
#man_show_urls = False
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for Texinfo output ------------------------------------------------
|
||||||
|
|
||||||
|
# Grouping the document tree into Texinfo files. List of tuples
|
||||||
|
# (source start file, target name, title, author,
|
||||||
|
# dir menu entry, description, category)
|
||||||
|
texinfo_documents = [
|
||||||
|
('index', 'phpMyAdmin', u'phpMyAdmin Documentation',
|
||||||
|
u'The phpMyAdmin devel team', 'phpMyAdmin', 'One line description of project.',
|
||||||
|
'Miscellaneous'),
|
||||||
|
]
|
||||||
|
|
||||||
|
# Documents to append as an appendix to all manuals.
|
||||||
|
#texinfo_appendices = []
|
||||||
|
|
||||||
|
# If false, no module index is generated.
|
||||||
|
#texinfo_domain_indices = True
|
||||||
|
|
||||||
|
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
||||||
|
#texinfo_show_urls = 'footnote'
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for Epub output ---------------------------------------------------
|
||||||
|
|
||||||
|
# Bibliographic Dublin Core info.
|
||||||
|
epub_title = u'phpMyAdmin'
|
||||||
|
epub_author = u'The phpMyAdmin devel team'
|
||||||
|
epub_publisher = u'The phpMyAdmin devel team'
|
||||||
|
epub_copyright = copyright
|
||||||
|
|
||||||
|
# The language of the text. It defaults to the language option
|
||||||
|
# or en if the language is not set.
|
||||||
|
#epub_language = ''
|
||||||
|
|
||||||
|
# The scheme of the identifier. Typical schemes are ISBN or URL.
|
||||||
|
#epub_scheme = ''
|
||||||
|
|
||||||
|
# The unique identifier of the text. This can be a ISBN number
|
||||||
|
# or the project homepage.
|
||||||
|
#epub_identifier = ''
|
||||||
|
|
||||||
|
# A unique identification for the text.
|
||||||
|
#epub_uid = ''
|
||||||
|
|
||||||
|
# A tuple containing the cover image and cover page html template filenames.
|
||||||
|
#epub_cover = ()
|
||||||
|
|
||||||
|
# HTML files that should be inserted before the pages created by sphinx.
|
||||||
|
# The format is a list of tuples containing the path and title.
|
||||||
|
#epub_pre_files = []
|
||||||
|
|
||||||
|
# HTML files shat should be inserted after the pages created by sphinx.
|
||||||
|
# The format is a list of tuples containing the path and title.
|
||||||
|
#epub_post_files = []
|
||||||
|
|
||||||
|
# A list of files that should not be packed into the epub file.
|
||||||
|
#epub_exclude_files = []
|
||||||
|
|
||||||
|
# The depth of the table of contents in toc.ncx.
|
||||||
|
#epub_tocdepth = 3
|
||||||
|
|
||||||
|
# Allow duplicate toc entries.
|
||||||
|
#epub_tocdup = True
|
||||||
|
|
||||||
|
# Highlight PHP without starting <?php tag
|
||||||
|
from sphinx.highlighting import lexers
|
||||||
|
from pygments.lexers.web import PhpLexer
|
||||||
|
|
||||||
|
lexers['php'] = PhpLexer(startinline=True)
|
2813
sources/doc/config.rst
Normal file
30
sources/doc/copyright.rst
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
.. _copyright:
|
||||||
|
|
||||||
|
Copyright
|
||||||
|
=========
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
Copyright (C) 1998-2000 Tobias Ratschiller <tobias_at_ratschiller.com>
|
||||||
|
Copyright (C) 2001-2013 Marc Delisle <marc_at_infomarc.info>
|
||||||
|
Olivier Müller <om_at_omnis.ch>
|
||||||
|
Robin Johnson <robbat2_at_users.sourceforge.net>
|
||||||
|
Alexander M. Turek <me_at_derrabus.de>
|
||||||
|
Michal Čihař <michal_at_cihar.com>
|
||||||
|
Garvin Hicking <me_at_supergarv.de>
|
||||||
|
Michael Keck <mkkeck_at_users.sourceforge.net>
|
||||||
|
Sebastian Mendel <cybot_tm_at_users.sourceforge.net>
|
||||||
|
[check credits for more details]
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License version 2, as
|
||||||
|
published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see `http://www.gnu.org/licenses/
|
||||||
|
<http://www.gnu.org/licenses/>`_.
|
626
sources/doc/credits.rst
Normal file
|
@ -0,0 +1,626 @@
|
||||||
|
.. _credits:
|
||||||
|
|
||||||
|
Credits
|
||||||
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
Credits, in chronological order
|
||||||
|
+++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
* Tobias Ratschiller <tobias\_at\_ratschiller.com>
|
||||||
|
|
||||||
|
* creator of the phpmyadmin project
|
||||||
|
|
||||||
|
* maintainer from 1998 to summer 2000
|
||||||
|
|
||||||
|
* Marc Delisle <marc\_at\_infomarc.info>
|
||||||
|
|
||||||
|
* multi-language version in December 1998
|
||||||
|
|
||||||
|
* various fixes and improvements
|
||||||
|
|
||||||
|
* :term:`SQL` analyser (most of it)
|
||||||
|
|
||||||
|
* current project maintainer
|
||||||
|
|
||||||
|
* maintains content on our website
|
||||||
|
|
||||||
|
* Olivier Müller <om\_at\_omnis.ch>
|
||||||
|
|
||||||
|
* started SourceForge phpMyAdmin project in March 2001
|
||||||
|
|
||||||
|
* sync'ed different existing CVS trees with new features and bugfixes
|
||||||
|
|
||||||
|
* multi-language improvements, dynamic language selection
|
||||||
|
|
||||||
|
* many bugfixes and improvements
|
||||||
|
|
||||||
|
* Loïc Chapeaux <lolo\_at\_phpheaven.net>
|
||||||
|
|
||||||
|
* rewrote and optimized javascript, DHTML and DOM stuff
|
||||||
|
|
||||||
|
* rewrote the scripts so they fit the :term:`PEAR` coding standards and
|
||||||
|
generate XHTML1.0 and CSS2 compliant codes
|
||||||
|
|
||||||
|
* improved the language detection system
|
||||||
|
|
||||||
|
* many bugfixes and improvements
|
||||||
|
|
||||||
|
* Robin Johnson <robbat2\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* database maintenance controls
|
||||||
|
|
||||||
|
* table type code
|
||||||
|
|
||||||
|
* Host authentication :term:`IP` Allow/Deny
|
||||||
|
|
||||||
|
* DB-based configuration (Not completed)
|
||||||
|
|
||||||
|
* :term:`SQL` parser and pretty-printer
|
||||||
|
|
||||||
|
* :term:`SQL` validator
|
||||||
|
|
||||||
|
* many bugfixes and improvements
|
||||||
|
|
||||||
|
* Armel Fauveau <armel.fauveau\_at\_globalis-ms.com>
|
||||||
|
|
||||||
|
* bookmarks feature
|
||||||
|
|
||||||
|
* multiple dump feature
|
||||||
|
|
||||||
|
* gzip dump feature
|
||||||
|
|
||||||
|
* zip dump feature
|
||||||
|
|
||||||
|
* Geert Lund <glund\_at\_silversoft.dk>
|
||||||
|
|
||||||
|
* various fixes
|
||||||
|
|
||||||
|
* moderator of the phpMyAdmin former users forum at phpwizard.net
|
||||||
|
|
||||||
|
* Korakot Chaovavanich <korakot\_at\_iname.com>
|
||||||
|
|
||||||
|
* "insert as new row" feature
|
||||||
|
|
||||||
|
* Pete Kelly <webmaster\_at\_trafficg.com>
|
||||||
|
|
||||||
|
* rewrote and fix dump code
|
||||||
|
|
||||||
|
* bugfixes
|
||||||
|
|
||||||
|
* Steve Alberty <alberty\_at\_neptunlabs.de>
|
||||||
|
|
||||||
|
* rewrote dump code for PHP4
|
||||||
|
|
||||||
|
* mySQL table statistics
|
||||||
|
|
||||||
|
* bugfixes
|
||||||
|
|
||||||
|
* Benjamin Gandon <gandon\_at\_isia.cma.fr>
|
||||||
|
|
||||||
|
* main author of the version 2.1.0.1
|
||||||
|
|
||||||
|
* bugfixes
|
||||||
|
|
||||||
|
* Alexander M. Turek <me\_at\_derrabus.de>
|
||||||
|
|
||||||
|
* MySQL 4.0 / 4.1 / 5.0 compatibility
|
||||||
|
|
||||||
|
* abstract database interface (PMA\_DBI) with MySQLi support
|
||||||
|
|
||||||
|
* privileges administration
|
||||||
|
|
||||||
|
* :term:`XML` exports
|
||||||
|
|
||||||
|
* various features and fixes
|
||||||
|
|
||||||
|
* German language file updates
|
||||||
|
|
||||||
|
* Mike Beck <mike.beck\_at\_web.de>
|
||||||
|
|
||||||
|
* automatic joins in QBE
|
||||||
|
|
||||||
|
* links column in printview
|
||||||
|
|
||||||
|
* Relation view
|
||||||
|
|
||||||
|
* Michal Čihař <michal\_at\_cihar.com>
|
||||||
|
|
||||||
|
* enhanced index creation/display feature
|
||||||
|
|
||||||
|
* feature to use a different charset for HTML than for MySQL
|
||||||
|
|
||||||
|
* improvements of export feature
|
||||||
|
|
||||||
|
* various features and fixes
|
||||||
|
|
||||||
|
* Czech language file updates
|
||||||
|
|
||||||
|
* created current website for phpMyAdmin
|
||||||
|
|
||||||
|
* Christophe Gesché from the "MySQL Form Generator for PHPMyAdmin"
|
||||||
|
(http://sf.net/projects/phpmysqlformgen/)
|
||||||
|
|
||||||
|
* suggested the patch for multiple table printviews
|
||||||
|
|
||||||
|
* Garvin Hicking <me\_at\_supergarv.de>
|
||||||
|
|
||||||
|
* built the patch for vertical display of table rows
|
||||||
|
|
||||||
|
* built the Javascript based Query window + :term:`SQL` history
|
||||||
|
|
||||||
|
* Improvement of column/db comments
|
||||||
|
|
||||||
|
* (MIME)-Transformations for columns
|
||||||
|
|
||||||
|
* Use custom alias names for Databases in left frame
|
||||||
|
|
||||||
|
* hierarchical/nested table display
|
||||||
|
|
||||||
|
* :term:`PDF`-scratchboard for WYSIWYG-
|
||||||
|
distribution of :term:`PDF` relations
|
||||||
|
|
||||||
|
* new icon sets
|
||||||
|
|
||||||
|
* vertical display of column properties page
|
||||||
|
|
||||||
|
* some bugfixes, features, support, German language additions
|
||||||
|
|
||||||
|
* Yukihiro Kawada <kawada\_at\_den.fujifilm.co.jp>
|
||||||
|
|
||||||
|
* japanese kanji encoding conversion feature
|
||||||
|
|
||||||
|
* Piotr Roszatycki <d3xter\_at\_users.sourceforge.net> and Dan Wilson
|
||||||
|
|
||||||
|
* the Cookie authentication mode
|
||||||
|
|
||||||
|
* Axel Sander <n8falke\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* table relation-links feature
|
||||||
|
|
||||||
|
* Maxime Delorme <delorme.maxime\_at\_free.fr>
|
||||||
|
|
||||||
|
* :term:`PDF` schema output, thanks also to
|
||||||
|
Olivier Plathey for the "FPDF" library (see <http://www.fpdf.org/>), Steven
|
||||||
|
Wittens for the "UFPDF" library (see <http://www.acko.net/node/56>) and
|
||||||
|
Nicola Asuni for the "TCPDF" library (see <http://www.tcpdf.org/>).
|
||||||
|
|
||||||
|
* Olof Edlund <olof.edlund\_at\_upright.se>
|
||||||
|
|
||||||
|
* :term:`SQL` validator server
|
||||||
|
|
||||||
|
* Ivan R. Lanin <ivanlanin\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* phpMyAdmin logo (until June 2004)
|
||||||
|
|
||||||
|
* Mike Cochrane <mike\_at\_graftonhall.co.nz>
|
||||||
|
|
||||||
|
* blowfish library from the Horde project (withdrawn in release 4.0)
|
||||||
|
|
||||||
|
* Marcel Tschopp <ne0x\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* mysqli support
|
||||||
|
|
||||||
|
* many bugfixes and improvements
|
||||||
|
|
||||||
|
* Nicola Asuni (Tecnick.com)
|
||||||
|
|
||||||
|
* TCPDF library (`http://www.tcpdf.org <http://www.tcpdf.org>`_)
|
||||||
|
|
||||||
|
* Michael Keck <mkkeck\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* redesign for 2.6.0
|
||||||
|
|
||||||
|
* phpMyAdmin sailboat logo (June 2004)
|
||||||
|
|
||||||
|
* Mathias Landhäußer
|
||||||
|
|
||||||
|
* Representation at conferences
|
||||||
|
|
||||||
|
* Sebastian Mendel <cybot\_tm\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* interface improvements
|
||||||
|
|
||||||
|
* various bugfixes
|
||||||
|
|
||||||
|
* Ivan A Kirillov
|
||||||
|
|
||||||
|
* new relations Designer
|
||||||
|
|
||||||
|
* Raj Kissu Rajandran (Google Summer of Code 2008)
|
||||||
|
|
||||||
|
* BLOBstreaming support (withdrawn in release 4.0)
|
||||||
|
|
||||||
|
* Piotr Przybylski (Google Summer of Code 2008, 2010 and 2011)
|
||||||
|
|
||||||
|
* improved setup script
|
||||||
|
|
||||||
|
* user preferences
|
||||||
|
|
||||||
|
* Drizzle support
|
||||||
|
|
||||||
|
* Derek Schaefer (Google Summer of Code 2009)
|
||||||
|
|
||||||
|
* Improved the import system
|
||||||
|
|
||||||
|
* Alexander Rutkowski (Google Summer of Code 2009)
|
||||||
|
|
||||||
|
* Tracking mechanism
|
||||||
|
|
||||||
|
* Zahra Naeem (Google Summer of Code 2009)
|
||||||
|
|
||||||
|
* Synchronization feature (removed in release 4.0)
|
||||||
|
|
||||||
|
* Tomáš Srnka (Google Summer of Code 2009)
|
||||||
|
|
||||||
|
* Replication support
|
||||||
|
|
||||||
|
* Muhammad Adnan (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* Relation schema export to multiple formats
|
||||||
|
|
||||||
|
* Lori Lee (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* User interface improvements
|
||||||
|
|
||||||
|
* ENUM/SET editor
|
||||||
|
|
||||||
|
* Simplified interface for export/import
|
||||||
|
|
||||||
|
* Ninad Pundalik (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* AJAXifying the interface
|
||||||
|
|
||||||
|
* Martynas Mickevičius (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* Charts
|
||||||
|
|
||||||
|
* Barrie Leslie
|
||||||
|
|
||||||
|
* BLOBstreaming support with PBMS PHP extension (withdrawn in release
|
||||||
|
4.0)
|
||||||
|
|
||||||
|
* Ankit Gupta (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* Visual query builder
|
||||||
|
|
||||||
|
* Madhura Jayaratne (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* OpenGIS support
|
||||||
|
|
||||||
|
* Ammar Yasir (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* Zoom search
|
||||||
|
|
||||||
|
* Aris Feryanto (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* Browse-mode improvements
|
||||||
|
|
||||||
|
* Thilanka Kaushalya (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* AJAXification
|
||||||
|
|
||||||
|
* Tyron Madlener (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* Query statistics and charts for the status page
|
||||||
|
|
||||||
|
* Zarubin Stas (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* Automated testing
|
||||||
|
|
||||||
|
* Rouslan Placella (Google Summer of Code 2011 and 2012)
|
||||||
|
|
||||||
|
* Improved support for Stored Routines, Triggers and Events
|
||||||
|
|
||||||
|
* Italian translation updates
|
||||||
|
|
||||||
|
* Removal of frames, new navigation
|
||||||
|
|
||||||
|
* Dieter Adriaenssens
|
||||||
|
|
||||||
|
* Various bugfixes
|
||||||
|
|
||||||
|
* Dutch translation updates
|
||||||
|
|
||||||
|
* Alex Marin (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* New plugins and properties system
|
||||||
|
|
||||||
|
* Thilina Buddika Abeyrathna (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Atul Pratap Singh (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Chanaka Indrajith (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Yasitha Pandithawatta (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* Automated testing
|
||||||
|
|
||||||
|
* Jim Wigginton (phpseclib.sourceforge.net)
|
||||||
|
|
||||||
|
* phpseclib
|
||||||
|
|
||||||
|
* Bin Zu (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Supun Nakandala (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Mohamed Ashraf (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* AJAX error reporting
|
||||||
|
|
||||||
|
* Adam Kang (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Automated testing
|
||||||
|
|
||||||
|
* Ayush Chaudhary (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Automated testing
|
||||||
|
|
||||||
|
* Kasun Chathuranga (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Interface improvements
|
||||||
|
|
||||||
|
|
||||||
|
And also to the following people who have contributed minor changes,
|
||||||
|
enhancements, bugfixes or support for a new language since version
|
||||||
|
2.1.0:
|
||||||
|
|
||||||
|
Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita,
|
||||||
|
Péter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow, Mats
|
||||||
|
Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kläger,
|
||||||
|
Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg,
|
||||||
|
Andreas Pauley, Bernard M. Piller, Laurent Haas, "Sakamoto", Yuval
|
||||||
|
Sarna, www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun,
|
||||||
|
Peter Svec, Michael Tacelosky, Rachim Tamsjadi, Kositer Uros, Luís V.,
|
||||||
|
Martijn W. van der Lee, Algis Vainauskas, Daniel Villanueva, Vinay,
|
||||||
|
Ignacio Vazquez-Abrams, Chee Wai, Jakub Wilk, Thomas Michael
|
||||||
|
Winningham, Vilius Zigmantas, "Manuzhai".
|
||||||
|
|
||||||
|
|
||||||
|
Translators
|
||||||
|
+++++++++++
|
||||||
|
|
||||||
|
Following people have contributed to translation of phpMyAdmin:
|
||||||
|
|
||||||
|
* Arabic
|
||||||
|
|
||||||
|
* Abdullah Al-Saedi <abdullah.10\_at\_windowslive.com>
|
||||||
|
|
||||||
|
* Bulgarian
|
||||||
|
|
||||||
|
* stoyanster <stoyanster\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Catalan
|
||||||
|
|
||||||
|
* Xavier Navarro <xvnavarro\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Czech
|
||||||
|
|
||||||
|
* Michal Čihař <michal\_at\_cihar.com>
|
||||||
|
|
||||||
|
* Danish
|
||||||
|
|
||||||
|
* opensource <opensource\_at\_jth.net>
|
||||||
|
* Jørgen Thomsen <opensource\_at\_jth.net>
|
||||||
|
|
||||||
|
* German
|
||||||
|
|
||||||
|
* mrbendig <mrbendig\_at\_mrbendig.com>
|
||||||
|
* torsten.funck <torsten.funck\_at\_googlemail.com>
|
||||||
|
* Sven Strickroth <email\_at\_cs-ware.de>
|
||||||
|
* typo3 <typo3\_at\_dirk-weise.de>
|
||||||
|
* Jo Michael <me\_at\_mynetx.net>
|
||||||
|
|
||||||
|
* Greek
|
||||||
|
|
||||||
|
* Panagiotis Papazoglou <papaz_p\_at\_yahoo.com>
|
||||||
|
|
||||||
|
* English (United Kingdom)
|
||||||
|
|
||||||
|
* Robert Readman <robert_readman\_at\_hotmail.com>
|
||||||
|
|
||||||
|
* Spanish
|
||||||
|
|
||||||
|
* Matías Bellone <matiasbellone\_at\_gmail.com>
|
||||||
|
|
||||||
|
* French
|
||||||
|
|
||||||
|
* Marc Delisle <marc\_at\_infomarc.info>
|
||||||
|
|
||||||
|
* Hindi
|
||||||
|
|
||||||
|
* u4663530 <u4663530\_at\_anu.edu.au>
|
||||||
|
* rsedwardian <rsedwardian\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Hungarian
|
||||||
|
|
||||||
|
* gergo314 <gergo314\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Italian
|
||||||
|
|
||||||
|
* Rouslan Placella <rouslan\_at\_placella.com>
|
||||||
|
|
||||||
|
* Japanese
|
||||||
|
|
||||||
|
* Yuichiro <yuichiro\_at\_pop07.odn.ne.jp>
|
||||||
|
|
||||||
|
* Lithuanian
|
||||||
|
|
||||||
|
* Kęstutis <forkik\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Norwegian Bokmål
|
||||||
|
|
||||||
|
* Sven-Erik Andersen <sven.erik.andersen\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Dutch
|
||||||
|
|
||||||
|
* Dieter Adriaenssens <ruleant\_at\_users.sourceforge.net>
|
||||||
|
* Herman van Rink <rink\_at\_initfour.nl>
|
||||||
|
|
||||||
|
* Polish
|
||||||
|
|
||||||
|
* Stanisław Krukowski <stankruk\_at\_neostrada.pl>
|
||||||
|
* Marcin Kozioł <lord_dark\_at\_wp.pl>
|
||||||
|
|
||||||
|
* Portuguese
|
||||||
|
|
||||||
|
* JoaoTMDias <contacto\_at\_joaodias.me>
|
||||||
|
|
||||||
|
* Portuguese (Brazil)
|
||||||
|
|
||||||
|
* wiltave <wiltave\_at\_gmail.com>
|
||||||
|
* emerson4br <emerson4br\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Romanian
|
||||||
|
|
||||||
|
* alexukf <alex.ukf\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Russian
|
||||||
|
|
||||||
|
* Victor Volkov <hanut\_at\_php-myadmin.ru>
|
||||||
|
|
||||||
|
* Sinhala
|
||||||
|
|
||||||
|
* Madhura Jayaratne <madhura.cj\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Slovak
|
||||||
|
|
||||||
|
* Martin Lacina <martin\_at\_whistler.sk>
|
||||||
|
|
||||||
|
* Slovenian
|
||||||
|
|
||||||
|
* Domen <dbc334\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Swedish
|
||||||
|
|
||||||
|
* stefan <stefan\_at\_inkopsforum.se>
|
||||||
|
|
||||||
|
* Tamil
|
||||||
|
|
||||||
|
* ysajeepan <ysajeepan\_at\_live.com>
|
||||||
|
|
||||||
|
* Telugu
|
||||||
|
|
||||||
|
* veeven <veeven\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Thai
|
||||||
|
|
||||||
|
* kanitchet <kanichet\_at\_hotmail.com>
|
||||||
|
|
||||||
|
* Turkish
|
||||||
|
|
||||||
|
* Burak Yavuz <hitowerdigit\_at\_hotmail.com>
|
||||||
|
|
||||||
|
* Uighur
|
||||||
|
|
||||||
|
* gheni <gheni\_at\_yahoo.cn>
|
||||||
|
|
||||||
|
* Ukrainian
|
||||||
|
|
||||||
|
* typim <duke3d\_at\_ukr.net>
|
||||||
|
* oleg-ilnytskyi <ukraine.oleg\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Urdu
|
||||||
|
|
||||||
|
* Mehbooob Khan <mehboobbugti\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Simplified Chinese
|
||||||
|
|
||||||
|
* shanyan baishui <Siramizu\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Traditional Chinese
|
||||||
|
|
||||||
|
* star <star\_at\_origin.club.tw>
|
||||||
|
|
||||||
|
Documentation translators
|
||||||
|
+++++++++++++++++++++++++
|
||||||
|
|
||||||
|
Following people have contributed to translation of phpMyAdmin documentation:
|
||||||
|
|
||||||
|
* Czech
|
||||||
|
|
||||||
|
* Michal Čihař <michal\_at\_cihar.com>
|
||||||
|
|
||||||
|
* Greek
|
||||||
|
|
||||||
|
* Panagiotis Papazoglou <papaz_p\_at\_yahoo.com>
|
||||||
|
|
||||||
|
* English (United Kingdom)
|
||||||
|
|
||||||
|
* Robert Readman <robert_readman\_at\_hotmail.com>
|
||||||
|
|
||||||
|
* French
|
||||||
|
|
||||||
|
* Cédric Corazza <cedric.corazza\_at\_wanadoo.fr>
|
||||||
|
|
||||||
|
* Japanese
|
||||||
|
|
||||||
|
* Yuichiro Takahashi <yuichiro\_at\_pop07.odn.ne.jp>
|
||||||
|
|
||||||
|
* Polish
|
||||||
|
|
||||||
|
* Stanisław Krukowski <stankruk\_at\_neostrada.pl>
|
||||||
|
|
||||||
|
* Portuguese (Brazil)
|
||||||
|
|
||||||
|
* mjaning <mjaning\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Slovenian
|
||||||
|
|
||||||
|
* Domen <dbc334\_at\_gmail.com>
|
||||||
|
|
||||||
|
Original Credits of Version 2.1.0
|
||||||
|
+++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his
|
||||||
|
idea to create a web-based interface to MySQL using PHP3. Although I
|
||||||
|
have not used any of his source-code, there are some concepts I've
|
||||||
|
borrowed from him. phpMyAdmin was created because Peter told me he
|
||||||
|
wasn't going to further develop his (great) tool.
|
||||||
|
|
||||||
|
Thanks go to
|
||||||
|
|
||||||
|
* Amalesh Kempf <ak-lsml\_at\_living-source.com> who contributed the
|
||||||
|
code for the check when dropping a table or database. He also
|
||||||
|
suggested that you should be able to specify the primary key on
|
||||||
|
tbl\_create.php3. To version 1.1.1 he contributed the ldi\_\*.php3-set
|
||||||
|
(Import text-files) as well as a bug-report. Plus many smaller
|
||||||
|
improvements.
|
||||||
|
* Jan Legenhausen <jan\_at\_nrw.net>: He made many of the changes that
|
||||||
|
were introduced in 1.3.0 (including quite significant ones like the
|
||||||
|
authentication). For 1.4.1 he enhanced the table-dump feature. Plus
|
||||||
|
bug-fixes and help.
|
||||||
|
* Marc Delisle <DelislMa\_at\_CollegeSherbrooke.qc.ca> made phpMyAdmin
|
||||||
|
language-independent by outsourcing the strings to a separate file. He
|
||||||
|
also contributed the French translation.
|
||||||
|
* Alexandr Bravo <abravo\_at\_hq.admiral.ru> who contributed
|
||||||
|
tbl\_select.php3, a feature to display only some columns from a table.
|
||||||
|
* Chris Jackson <chrisj\_at\_ctel.net> added support for MySQL functions
|
||||||
|
in tbl\_change.php3. He also added the "Query by Example" feature in
|
||||||
|
2.0.
|
||||||
|
* Dave Walton <walton\_at\_nordicdms.com> added support for multiple
|
||||||
|
servers and is a regular contributor for bug-fixes.
|
||||||
|
* Gabriel Ash <ga244\_at\_is8.nyu.edu> contributed the random access
|
||||||
|
features for 2.0.6.
|
||||||
|
|
||||||
|
The following people have contributed minor changes, enhancements,
|
||||||
|
bugfixes or support for a new language:
|
||||||
|
|
||||||
|
Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas
|
||||||
|
Kleemann, Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel
|
||||||
|
Piankov, Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein,
|
||||||
|
Jannis Hermanns, G. Wieggers.
|
||||||
|
|
||||||
|
And thanks to everyone else who sent me email with suggestions, bug-
|
||||||
|
reports and or just some feedback.
|
||||||
|
|
12
sources/doc/developers.rst
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.. _developers:
|
||||||
|
|
||||||
|
Developers Information
|
||||||
|
======================
|
||||||
|
|
||||||
|
phpMyAdmin is Open Source, so you're invited to contribute to it. Many
|
||||||
|
great features have been written by other people and you too can help
|
||||||
|
to make phpMyAdmin a useful tool.
|
||||||
|
|
||||||
|
You can check out all the possibilities to contribute in the
|
||||||
|
`contribute section on our website
|
||||||
|
<http://www.phpmyadmin.net/home_page/improve.php>`_.
|
BIN
sources/doc/doctrees/config.doctree
Normal file
BIN
sources/doc/doctrees/copyright.doctree
Normal file
BIN
sources/doc/doctrees/credits.doctree
Normal file
BIN
sources/doc/doctrees/developers.doctree
Normal file
BIN
sources/doc/doctrees/environment.pickle
Normal file
BIN
sources/doc/doctrees/faq.doctree
Normal file
BIN
sources/doc/doctrees/glossary.doctree
Normal file
BIN
sources/doc/doctrees/index.doctree
Normal file
BIN
sources/doc/doctrees/intro.doctree
Normal file
BIN
sources/doc/doctrees/other.doctree
Normal file
BIN
sources/doc/doctrees/privileges.doctree
Normal file
BIN
sources/doc/doctrees/require.doctree
Normal file
BIN
sources/doc/doctrees/setup.doctree
Normal file
BIN
sources/doc/doctrees/transformations.doctree
Normal file
BIN
sources/doc/doctrees/user.doctree
Normal file
BIN
sources/doc/doctrees/vendors.doctree
Normal file
2015
sources/doc/faq.rst
Normal file
406
sources/doc/glossary.rst
Normal file
|
@ -0,0 +1,406 @@
|
||||||
|
.. _glossary:
|
||||||
|
|
||||||
|
Glossary
|
||||||
|
========
|
||||||
|
|
||||||
|
From Wikipedia, the free encyclopedia
|
||||||
|
|
||||||
|
.. glossary::
|
||||||
|
|
||||||
|
.htaccess
|
||||||
|
the default name of Apache's directory-level configuration file.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/.htaccess>
|
||||||
|
|
||||||
|
ACL
|
||||||
|
Access Contol List
|
||||||
|
|
||||||
|
Blowfish
|
||||||
|
a keyed, symmetric block cipher, designed in 1993 by Bruce Schneier.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Blowfish_(cipher)>
|
||||||
|
|
||||||
|
Browser
|
||||||
|
a software application that enables a user to display and interact with text, images, and other information typically located on a web page at a website on the World Wide Web.
|
||||||
|
|
||||||
|
.. seealso:: <http://en.wikipedia.org/wiki/Web_browser>
|
||||||
|
|
||||||
|
bzip2
|
||||||
|
a free software/open source data compression algorithm and program developed by Julian Seward.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Bzip2>
|
||||||
|
|
||||||
|
CGI
|
||||||
|
Common Gateway Interface is an important World Wide Web technology that
|
||||||
|
enables a client web browser to request data from a program executed on
|
||||||
|
the Web server.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/CGI>
|
||||||
|
|
||||||
|
Changelog
|
||||||
|
a log or record of changes made to a project.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Changelog>
|
||||||
|
|
||||||
|
Client
|
||||||
|
a computer system that accesses a (remote) service on another computer by some kind of network.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Client_(computing)>
|
||||||
|
|
||||||
|
column
|
||||||
|
a set of data values of a particular simple type, one for each row of the table.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Column_(database)>
|
||||||
|
|
||||||
|
Cookie
|
||||||
|
a packet of information sent by a server to a World Wide Web browser and then sent back by the browser each time it accesses that server.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/HTTP_cookie>
|
||||||
|
|
||||||
|
CSV
|
||||||
|
Comma- separated values
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Comma-separated_values>
|
||||||
|
|
||||||
|
DB
|
||||||
|
look at :term:`database`
|
||||||
|
|
||||||
|
database
|
||||||
|
an organized collection of data.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Database>
|
||||||
|
|
||||||
|
Engine
|
||||||
|
look at :term:`storage engines`
|
||||||
|
|
||||||
|
extension
|
||||||
|
a PHP module that extends PHP with additional functionality.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/extension>
|
||||||
|
|
||||||
|
FAQ
|
||||||
|
Frequently Asked Questions is a list of commonly asked question and there
|
||||||
|
answers.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/FAQ>
|
||||||
|
|
||||||
|
Field
|
||||||
|
one part of divided data/columns.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Field_(computer_science)>
|
||||||
|
|
||||||
|
foreign key
|
||||||
|
a column or group of columns in a database row that point to a key column
|
||||||
|
or group of columns forming a key of another database row in some
|
||||||
|
(usually different) table.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Foreign_key>
|
||||||
|
|
||||||
|
FPDF
|
||||||
|
the free :term:`PDF` library
|
||||||
|
|
||||||
|
.. seealso:: <http://www.fpdf.org/>
|
||||||
|
|
||||||
|
GD
|
||||||
|
Graphics Library by Thomas Boutell and others for dynamically manipulating images.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/GD_Graphics_Library>
|
||||||
|
|
||||||
|
GD2
|
||||||
|
look at :term:`gd`
|
||||||
|
|
||||||
|
gzip
|
||||||
|
gzip is short for GNU zip, a GNU free software file compression program.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Gzip>
|
||||||
|
|
||||||
|
host
|
||||||
|
any machine connected to a computer network, a node that has a hostname.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Host>
|
||||||
|
|
||||||
|
hostname
|
||||||
|
the unique name by which a network attached device is known on a network.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Hostname>
|
||||||
|
|
||||||
|
HTTP
|
||||||
|
HyperText Transfer Protocol is the primary method used to transfer or
|
||||||
|
convey information on the World Wide Web.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/HyperText_Transfer_Protocol>
|
||||||
|
|
||||||
|
https
|
||||||
|
a :term:`HTTP`-connection with additional security measures.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Https:_URI_scheme>
|
||||||
|
|
||||||
|
IEC
|
||||||
|
International Electrotechnical Commission
|
||||||
|
|
||||||
|
IIS
|
||||||
|
Internet Information Services is a set of Internet-based services for
|
||||||
|
servers using Microsoft Windows.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Internet_Information_Services>
|
||||||
|
|
||||||
|
Index
|
||||||
|
a feature that allows quick access to the rows in a table.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Index_(database)>
|
||||||
|
|
||||||
|
IP
|
||||||
|
Internet Protocol is a data-oriented protocol used by source and
|
||||||
|
destination hosts for communicating data across a packet-switched
|
||||||
|
internetwork.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Internet_Protocol>
|
||||||
|
|
||||||
|
IP Address
|
||||||
|
a unique number that devices use in order to identify and communicate with each other on a network utilizing the Internet Protocol standard.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/IP_Address>
|
||||||
|
|
||||||
|
IPv6
|
||||||
|
IPv6 (Internet Protocol version 6) is the latest revision of the
|
||||||
|
Internet Protocol (:term:`IP`), designed to deal with the
|
||||||
|
long-anticipated problem of its precedessor IPv4 running out of addresses.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/IPv6>
|
||||||
|
|
||||||
|
ISAPI
|
||||||
|
Internet Server Application Programming Interface is the API of Internet Information Services (IIS).
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/ISAPI>
|
||||||
|
|
||||||
|
ISP
|
||||||
|
Internet service provider is a business or organization that offers users
|
||||||
|
access to the Internet and related services.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/ISP>
|
||||||
|
|
||||||
|
ISO
|
||||||
|
International Standards Organisation
|
||||||
|
|
||||||
|
JPEG
|
||||||
|
a most commonly used standard method of lossy compression for photographic images.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/JPEG>
|
||||||
|
|
||||||
|
JPG
|
||||||
|
look at :term:`jpeg`
|
||||||
|
|
||||||
|
Key
|
||||||
|
look at :term:`index`
|
||||||
|
|
||||||
|
LATEX
|
||||||
|
a document preparation system for the TEX typesetting program.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/LaTeX>
|
||||||
|
|
||||||
|
Mac
|
||||||
|
Apple Macintosh is line of personal computers is designed, developed, manufactured, and marketed by Apple Computer.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Mac>
|
||||||
|
|
||||||
|
Mac OS X
|
||||||
|
the operating system which is included with all currently shipping Apple Macintosh computers in the consumer and professional markets.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Mac_OS_X>
|
||||||
|
|
||||||
|
MCrypt
|
||||||
|
a cryptographic library.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/MCrypt>
|
||||||
|
|
||||||
|
mcrypt
|
||||||
|
the MCrypt PHP extension.
|
||||||
|
|
||||||
|
.. seealso:: <http://php.net/mcrypt>
|
||||||
|
|
||||||
|
MIME
|
||||||
|
Multipurpose Internet Mail Extensions is
|
||||||
|
an Internet Standard for the format of e-mail.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/MIME>
|
||||||
|
|
||||||
|
module
|
||||||
|
some sort of extension for the Apache Webserver.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/module>
|
||||||
|
|
||||||
|
MySQL
|
||||||
|
a multithreaded, multi-user, SQL (Structured Query Language) Database Management System (DBMS).
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/MySQL>
|
||||||
|
|
||||||
|
mysqli
|
||||||
|
the improved MySQL client PHP extension.
|
||||||
|
|
||||||
|
.. seealso:: <http://php.net/mysqli>
|
||||||
|
|
||||||
|
mysql
|
||||||
|
the MySQL client PHP extension.
|
||||||
|
|
||||||
|
.. seealso:: <http://php.net/mysql>
|
||||||
|
|
||||||
|
OpenDocument
|
||||||
|
open standard for office documents.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/OpenDocument>
|
||||||
|
|
||||||
|
OS X
|
||||||
|
look at :term:`Mac OS X`.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/OS_X>
|
||||||
|
|
||||||
|
PDF
|
||||||
|
Portable Document Format is a file format developed by Adobe Systems for
|
||||||
|
representing two dimensional documents in a device independent and
|
||||||
|
resolution independent format.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Portable_Document_Format>
|
||||||
|
|
||||||
|
PEAR
|
||||||
|
the PHP Extension and Application Repository.
|
||||||
|
|
||||||
|
.. seealso:: <http://pear.php.net/>
|
||||||
|
|
||||||
|
PCRE
|
||||||
|
Perl Compatible Regular Expressions is the perl-compatible regular
|
||||||
|
expression functions for PHP
|
||||||
|
|
||||||
|
.. seealso:: <http://php.net/pcre>
|
||||||
|
|
||||||
|
PHP
|
||||||
|
short for "PHP: Hypertext Preprocessor", is an open-source, reflective
|
||||||
|
programming language used mainly for developing server-side applications
|
||||||
|
and dynamic web content, and more recently, a broader range of software
|
||||||
|
applications.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/PHP>
|
||||||
|
|
||||||
|
port
|
||||||
|
a connection through which data is sent and received.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Port_(computing)>
|
||||||
|
|
||||||
|
RFC
|
||||||
|
Request for Comments (RFC) documents are a series of memoranda
|
||||||
|
encompassing new research, innovations, and methodologies applicable to
|
||||||
|
Internet technologies.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Request_for_Comments>
|
||||||
|
|
||||||
|
RFC 1952
|
||||||
|
GZIP file format specification version 4.3
|
||||||
|
|
||||||
|
.. seealso:: :rfc:`1952`
|
||||||
|
|
||||||
|
Row (record, tuple)
|
||||||
|
represents a single, implicitly structured data item in a table.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Row_(database)>
|
||||||
|
|
||||||
|
Server
|
||||||
|
a computer system that provides services to other computing systems over a network.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Server_(computing)>
|
||||||
|
|
||||||
|
Storage Engines
|
||||||
|
handlers for different table types
|
||||||
|
|
||||||
|
.. seealso:: <http://dev.mysql.com/doc/en/storage-engines.html>
|
||||||
|
|
||||||
|
SOAP
|
||||||
|
Simple Object Access Protocol is a protocol specification for exchanging
|
||||||
|
structured information in the implementation of Web Services in computer
|
||||||
|
networks.
|
||||||
|
|
||||||
|
.. seealso:: <http://en.wikipedia.org/wiki/SOAP>
|
||||||
|
|
||||||
|
socket
|
||||||
|
a form of inter-process communication.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Socket#Computer_sockets>
|
||||||
|
|
||||||
|
SSL
|
||||||
|
Secure Sockets Layer is a cryptographic protocol which provides secure
|
||||||
|
communication on the Internet.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Secure_Sockets_Layer>
|
||||||
|
|
||||||
|
Stored procedure
|
||||||
|
a subroutine available to applications accessing a relational database system
|
||||||
|
|
||||||
|
.. seealso:: <http://en.wikipedia.org/wiki/Stored_procedure>
|
||||||
|
|
||||||
|
SQL
|
||||||
|
Structured Query Language
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/SQL>
|
||||||
|
|
||||||
|
table
|
||||||
|
a set of data elements (cells) that is organized, defined and stored as
|
||||||
|
horizontal rows and vertical columns where each item can be uniquely
|
||||||
|
identified by a label or key or by it?s position in relation to other
|
||||||
|
items.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Table_(database)>
|
||||||
|
|
||||||
|
tar
|
||||||
|
a type of archive file format: the Tape ARchive format.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Tar_(file_format)>
|
||||||
|
|
||||||
|
TCP
|
||||||
|
Transmission Control Protocol is one of the core protocols of the
|
||||||
|
Internet protocol suite.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/TCP>
|
||||||
|
|
||||||
|
TCPDF
|
||||||
|
Rewrite of :term:`UFPDF` with various improvements.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.tcpdf.org/>
|
||||||
|
|
||||||
|
trigger
|
||||||
|
a procedural code that is automatically executed in response to certain events on a particular table or view in a database
|
||||||
|
|
||||||
|
.. seealso:: <http://en.wikipedia.org/wiki/Database_trigger>
|
||||||
|
|
||||||
|
UFPDF
|
||||||
|
Unicode/UTF-8 extension for :term:`FPDF`
|
||||||
|
|
||||||
|
.. seealso:: <http://www.acko.net/node/56>
|
||||||
|
|
||||||
|
URL
|
||||||
|
Uniform Resource Locator is a sequence of characters, conforming to a
|
||||||
|
standardized format, that is used for referring to resources, such as
|
||||||
|
documents and images on the Internet, by their location.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/URL>
|
||||||
|
|
||||||
|
Webserver
|
||||||
|
A computer (program) that is responsible for accepting HTTP requests from clients and serving them Web pages.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Webserver>
|
||||||
|
|
||||||
|
XML
|
||||||
|
Extensible Markup Language is a W3C-recommended general- purpose markup
|
||||||
|
language for creating special-purpose markup languages, capable of
|
||||||
|
describing many different kinds of data.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/XML>
|
||||||
|
|
||||||
|
ZIP
|
||||||
|
a popular data compression and archival format.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/ZIP_(file_format)>
|
||||||
|
|
||||||
|
zlib
|
||||||
|
an open-source, cross- platform data compression library by Jean-loup Gailly and Mark Adler.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Zlib>
|
||||||
|
|
||||||
|
|
4
sources/doc/html/.buildinfo
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# Sphinx build info version 1
|
||||||
|
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||||
|
config: 63fac88aa6eec411c60843b02aaf0295
|
||||||
|
tags: fbb0d17656682115ca4d033fb2f83ba1
|
2813
sources/doc/html/_sources/config.txt
Normal file
30
sources/doc/html/_sources/copyright.txt
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
.. _copyright:
|
||||||
|
|
||||||
|
Copyright
|
||||||
|
=========
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
Copyright (C) 1998-2000 Tobias Ratschiller <tobias_at_ratschiller.com>
|
||||||
|
Copyright (C) 2001-2013 Marc Delisle <marc_at_infomarc.info>
|
||||||
|
Olivier Müller <om_at_omnis.ch>
|
||||||
|
Robin Johnson <robbat2_at_users.sourceforge.net>
|
||||||
|
Alexander M. Turek <me_at_derrabus.de>
|
||||||
|
Michal Čihař <michal_at_cihar.com>
|
||||||
|
Garvin Hicking <me_at_supergarv.de>
|
||||||
|
Michael Keck <mkkeck_at_users.sourceforge.net>
|
||||||
|
Sebastian Mendel <cybot_tm_at_users.sourceforge.net>
|
||||||
|
[check credits for more details]
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License version 2, as
|
||||||
|
published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see `http://www.gnu.org/licenses/
|
||||||
|
<http://www.gnu.org/licenses/>`_.
|
626
sources/doc/html/_sources/credits.txt
Normal file
|
@ -0,0 +1,626 @@
|
||||||
|
.. _credits:
|
||||||
|
|
||||||
|
Credits
|
||||||
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
Credits, in chronological order
|
||||||
|
+++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
* Tobias Ratschiller <tobias\_at\_ratschiller.com>
|
||||||
|
|
||||||
|
* creator of the phpmyadmin project
|
||||||
|
|
||||||
|
* maintainer from 1998 to summer 2000
|
||||||
|
|
||||||
|
* Marc Delisle <marc\_at\_infomarc.info>
|
||||||
|
|
||||||
|
* multi-language version in December 1998
|
||||||
|
|
||||||
|
* various fixes and improvements
|
||||||
|
|
||||||
|
* :term:`SQL` analyser (most of it)
|
||||||
|
|
||||||
|
* current project maintainer
|
||||||
|
|
||||||
|
* maintains content on our website
|
||||||
|
|
||||||
|
* Olivier Müller <om\_at\_omnis.ch>
|
||||||
|
|
||||||
|
* started SourceForge phpMyAdmin project in March 2001
|
||||||
|
|
||||||
|
* sync'ed different existing CVS trees with new features and bugfixes
|
||||||
|
|
||||||
|
* multi-language improvements, dynamic language selection
|
||||||
|
|
||||||
|
* many bugfixes and improvements
|
||||||
|
|
||||||
|
* Loïc Chapeaux <lolo\_at\_phpheaven.net>
|
||||||
|
|
||||||
|
* rewrote and optimized javascript, DHTML and DOM stuff
|
||||||
|
|
||||||
|
* rewrote the scripts so they fit the :term:`PEAR` coding standards and
|
||||||
|
generate XHTML1.0 and CSS2 compliant codes
|
||||||
|
|
||||||
|
* improved the language detection system
|
||||||
|
|
||||||
|
* many bugfixes and improvements
|
||||||
|
|
||||||
|
* Robin Johnson <robbat2\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* database maintenance controls
|
||||||
|
|
||||||
|
* table type code
|
||||||
|
|
||||||
|
* Host authentication :term:`IP` Allow/Deny
|
||||||
|
|
||||||
|
* DB-based configuration (Not completed)
|
||||||
|
|
||||||
|
* :term:`SQL` parser and pretty-printer
|
||||||
|
|
||||||
|
* :term:`SQL` validator
|
||||||
|
|
||||||
|
* many bugfixes and improvements
|
||||||
|
|
||||||
|
* Armel Fauveau <armel.fauveau\_at\_globalis-ms.com>
|
||||||
|
|
||||||
|
* bookmarks feature
|
||||||
|
|
||||||
|
* multiple dump feature
|
||||||
|
|
||||||
|
* gzip dump feature
|
||||||
|
|
||||||
|
* zip dump feature
|
||||||
|
|
||||||
|
* Geert Lund <glund\_at\_silversoft.dk>
|
||||||
|
|
||||||
|
* various fixes
|
||||||
|
|
||||||
|
* moderator of the phpMyAdmin former users forum at phpwizard.net
|
||||||
|
|
||||||
|
* Korakot Chaovavanich <korakot\_at\_iname.com>
|
||||||
|
|
||||||
|
* "insert as new row" feature
|
||||||
|
|
||||||
|
* Pete Kelly <webmaster\_at\_trafficg.com>
|
||||||
|
|
||||||
|
* rewrote and fix dump code
|
||||||
|
|
||||||
|
* bugfixes
|
||||||
|
|
||||||
|
* Steve Alberty <alberty\_at\_neptunlabs.de>
|
||||||
|
|
||||||
|
* rewrote dump code for PHP4
|
||||||
|
|
||||||
|
* mySQL table statistics
|
||||||
|
|
||||||
|
* bugfixes
|
||||||
|
|
||||||
|
* Benjamin Gandon <gandon\_at\_isia.cma.fr>
|
||||||
|
|
||||||
|
* main author of the version 2.1.0.1
|
||||||
|
|
||||||
|
* bugfixes
|
||||||
|
|
||||||
|
* Alexander M. Turek <me\_at\_derrabus.de>
|
||||||
|
|
||||||
|
* MySQL 4.0 / 4.1 / 5.0 compatibility
|
||||||
|
|
||||||
|
* abstract database interface (PMA\_DBI) with MySQLi support
|
||||||
|
|
||||||
|
* privileges administration
|
||||||
|
|
||||||
|
* :term:`XML` exports
|
||||||
|
|
||||||
|
* various features and fixes
|
||||||
|
|
||||||
|
* German language file updates
|
||||||
|
|
||||||
|
* Mike Beck <mike.beck\_at\_web.de>
|
||||||
|
|
||||||
|
* automatic joins in QBE
|
||||||
|
|
||||||
|
* links column in printview
|
||||||
|
|
||||||
|
* Relation view
|
||||||
|
|
||||||
|
* Michal Čihař <michal\_at\_cihar.com>
|
||||||
|
|
||||||
|
* enhanced index creation/display feature
|
||||||
|
|
||||||
|
* feature to use a different charset for HTML than for MySQL
|
||||||
|
|
||||||
|
* improvements of export feature
|
||||||
|
|
||||||
|
* various features and fixes
|
||||||
|
|
||||||
|
* Czech language file updates
|
||||||
|
|
||||||
|
* created current website for phpMyAdmin
|
||||||
|
|
||||||
|
* Christophe Gesché from the "MySQL Form Generator for PHPMyAdmin"
|
||||||
|
(http://sf.net/projects/phpmysqlformgen/)
|
||||||
|
|
||||||
|
* suggested the patch for multiple table printviews
|
||||||
|
|
||||||
|
* Garvin Hicking <me\_at\_supergarv.de>
|
||||||
|
|
||||||
|
* built the patch for vertical display of table rows
|
||||||
|
|
||||||
|
* built the Javascript based Query window + :term:`SQL` history
|
||||||
|
|
||||||
|
* Improvement of column/db comments
|
||||||
|
|
||||||
|
* (MIME)-Transformations for columns
|
||||||
|
|
||||||
|
* Use custom alias names for Databases in left frame
|
||||||
|
|
||||||
|
* hierarchical/nested table display
|
||||||
|
|
||||||
|
* :term:`PDF`-scratchboard for WYSIWYG-
|
||||||
|
distribution of :term:`PDF` relations
|
||||||
|
|
||||||
|
* new icon sets
|
||||||
|
|
||||||
|
* vertical display of column properties page
|
||||||
|
|
||||||
|
* some bugfixes, features, support, German language additions
|
||||||
|
|
||||||
|
* Yukihiro Kawada <kawada\_at\_den.fujifilm.co.jp>
|
||||||
|
|
||||||
|
* japanese kanji encoding conversion feature
|
||||||
|
|
||||||
|
* Piotr Roszatycki <d3xter\_at\_users.sourceforge.net> and Dan Wilson
|
||||||
|
|
||||||
|
* the Cookie authentication mode
|
||||||
|
|
||||||
|
* Axel Sander <n8falke\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* table relation-links feature
|
||||||
|
|
||||||
|
* Maxime Delorme <delorme.maxime\_at\_free.fr>
|
||||||
|
|
||||||
|
* :term:`PDF` schema output, thanks also to
|
||||||
|
Olivier Plathey for the "FPDF" library (see <http://www.fpdf.org/>), Steven
|
||||||
|
Wittens for the "UFPDF" library (see <http://www.acko.net/node/56>) and
|
||||||
|
Nicola Asuni for the "TCPDF" library (see <http://www.tcpdf.org/>).
|
||||||
|
|
||||||
|
* Olof Edlund <olof.edlund\_at\_upright.se>
|
||||||
|
|
||||||
|
* :term:`SQL` validator server
|
||||||
|
|
||||||
|
* Ivan R. Lanin <ivanlanin\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* phpMyAdmin logo (until June 2004)
|
||||||
|
|
||||||
|
* Mike Cochrane <mike\_at\_graftonhall.co.nz>
|
||||||
|
|
||||||
|
* blowfish library from the Horde project (withdrawn in release 4.0)
|
||||||
|
|
||||||
|
* Marcel Tschopp <ne0x\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* mysqli support
|
||||||
|
|
||||||
|
* many bugfixes and improvements
|
||||||
|
|
||||||
|
* Nicola Asuni (Tecnick.com)
|
||||||
|
|
||||||
|
* TCPDF library (`http://www.tcpdf.org <http://www.tcpdf.org>`_)
|
||||||
|
|
||||||
|
* Michael Keck <mkkeck\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* redesign for 2.6.0
|
||||||
|
|
||||||
|
* phpMyAdmin sailboat logo (June 2004)
|
||||||
|
|
||||||
|
* Mathias Landhäußer
|
||||||
|
|
||||||
|
* Representation at conferences
|
||||||
|
|
||||||
|
* Sebastian Mendel <cybot\_tm\_at\_users.sourceforge.net>
|
||||||
|
|
||||||
|
* interface improvements
|
||||||
|
|
||||||
|
* various bugfixes
|
||||||
|
|
||||||
|
* Ivan A Kirillov
|
||||||
|
|
||||||
|
* new relations Designer
|
||||||
|
|
||||||
|
* Raj Kissu Rajandran (Google Summer of Code 2008)
|
||||||
|
|
||||||
|
* BLOBstreaming support (withdrawn in release 4.0)
|
||||||
|
|
||||||
|
* Piotr Przybylski (Google Summer of Code 2008, 2010 and 2011)
|
||||||
|
|
||||||
|
* improved setup script
|
||||||
|
|
||||||
|
* user preferences
|
||||||
|
|
||||||
|
* Drizzle support
|
||||||
|
|
||||||
|
* Derek Schaefer (Google Summer of Code 2009)
|
||||||
|
|
||||||
|
* Improved the import system
|
||||||
|
|
||||||
|
* Alexander Rutkowski (Google Summer of Code 2009)
|
||||||
|
|
||||||
|
* Tracking mechanism
|
||||||
|
|
||||||
|
* Zahra Naeem (Google Summer of Code 2009)
|
||||||
|
|
||||||
|
* Synchronization feature (removed in release 4.0)
|
||||||
|
|
||||||
|
* Tomáš Srnka (Google Summer of Code 2009)
|
||||||
|
|
||||||
|
* Replication support
|
||||||
|
|
||||||
|
* Muhammad Adnan (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* Relation schema export to multiple formats
|
||||||
|
|
||||||
|
* Lori Lee (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* User interface improvements
|
||||||
|
|
||||||
|
* ENUM/SET editor
|
||||||
|
|
||||||
|
* Simplified interface for export/import
|
||||||
|
|
||||||
|
* Ninad Pundalik (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* AJAXifying the interface
|
||||||
|
|
||||||
|
* Martynas Mickevičius (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* Charts
|
||||||
|
|
||||||
|
* Barrie Leslie
|
||||||
|
|
||||||
|
* BLOBstreaming support with PBMS PHP extension (withdrawn in release
|
||||||
|
4.0)
|
||||||
|
|
||||||
|
* Ankit Gupta (Google Summer of Code 2010)
|
||||||
|
|
||||||
|
* Visual query builder
|
||||||
|
|
||||||
|
* Madhura Jayaratne (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* OpenGIS support
|
||||||
|
|
||||||
|
* Ammar Yasir (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* Zoom search
|
||||||
|
|
||||||
|
* Aris Feryanto (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* Browse-mode improvements
|
||||||
|
|
||||||
|
* Thilanka Kaushalya (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* AJAXification
|
||||||
|
|
||||||
|
* Tyron Madlener (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* Query statistics and charts for the status page
|
||||||
|
|
||||||
|
* Zarubin Stas (Google Summer of Code 2011)
|
||||||
|
|
||||||
|
* Automated testing
|
||||||
|
|
||||||
|
* Rouslan Placella (Google Summer of Code 2011 and 2012)
|
||||||
|
|
||||||
|
* Improved support for Stored Routines, Triggers and Events
|
||||||
|
|
||||||
|
* Italian translation updates
|
||||||
|
|
||||||
|
* Removal of frames, new navigation
|
||||||
|
|
||||||
|
* Dieter Adriaenssens
|
||||||
|
|
||||||
|
* Various bugfixes
|
||||||
|
|
||||||
|
* Dutch translation updates
|
||||||
|
|
||||||
|
* Alex Marin (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* New plugins and properties system
|
||||||
|
|
||||||
|
* Thilina Buddika Abeyrathna (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Atul Pratap Singh (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Chanaka Indrajith (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Yasitha Pandithawatta (Google Summer of Code 2012)
|
||||||
|
|
||||||
|
* Automated testing
|
||||||
|
|
||||||
|
* Jim Wigginton (phpseclib.sourceforge.net)
|
||||||
|
|
||||||
|
* phpseclib
|
||||||
|
|
||||||
|
* Bin Zu (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Supun Nakandala (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Refactoring
|
||||||
|
|
||||||
|
* Mohamed Ashraf (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* AJAX error reporting
|
||||||
|
|
||||||
|
* Adam Kang (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Automated testing
|
||||||
|
|
||||||
|
* Ayush Chaudhary (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Automated testing
|
||||||
|
|
||||||
|
* Kasun Chathuranga (Google Summer of Code 2013)
|
||||||
|
|
||||||
|
* Interface improvements
|
||||||
|
|
||||||
|
|
||||||
|
And also to the following people who have contributed minor changes,
|
||||||
|
enhancements, bugfixes or support for a new language since version
|
||||||
|
2.1.0:
|
||||||
|
|
||||||
|
Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita,
|
||||||
|
Péter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow, Mats
|
||||||
|
Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kläger,
|
||||||
|
Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg,
|
||||||
|
Andreas Pauley, Bernard M. Piller, Laurent Haas, "Sakamoto", Yuval
|
||||||
|
Sarna, www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun,
|
||||||
|
Peter Svec, Michael Tacelosky, Rachim Tamsjadi, Kositer Uros, Luís V.,
|
||||||
|
Martijn W. van der Lee, Algis Vainauskas, Daniel Villanueva, Vinay,
|
||||||
|
Ignacio Vazquez-Abrams, Chee Wai, Jakub Wilk, Thomas Michael
|
||||||
|
Winningham, Vilius Zigmantas, "Manuzhai".
|
||||||
|
|
||||||
|
|
||||||
|
Translators
|
||||||
|
+++++++++++
|
||||||
|
|
||||||
|
Following people have contributed to translation of phpMyAdmin:
|
||||||
|
|
||||||
|
* Arabic
|
||||||
|
|
||||||
|
* Abdullah Al-Saedi <abdullah.10\_at\_windowslive.com>
|
||||||
|
|
||||||
|
* Bulgarian
|
||||||
|
|
||||||
|
* stoyanster <stoyanster\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Catalan
|
||||||
|
|
||||||
|
* Xavier Navarro <xvnavarro\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Czech
|
||||||
|
|
||||||
|
* Michal Čihař <michal\_at\_cihar.com>
|
||||||
|
|
||||||
|
* Danish
|
||||||
|
|
||||||
|
* opensource <opensource\_at\_jth.net>
|
||||||
|
* Jørgen Thomsen <opensource\_at\_jth.net>
|
||||||
|
|
||||||
|
* German
|
||||||
|
|
||||||
|
* mrbendig <mrbendig\_at\_mrbendig.com>
|
||||||
|
* torsten.funck <torsten.funck\_at\_googlemail.com>
|
||||||
|
* Sven Strickroth <email\_at\_cs-ware.de>
|
||||||
|
* typo3 <typo3\_at\_dirk-weise.de>
|
||||||
|
* Jo Michael <me\_at\_mynetx.net>
|
||||||
|
|
||||||
|
* Greek
|
||||||
|
|
||||||
|
* Panagiotis Papazoglou <papaz_p\_at\_yahoo.com>
|
||||||
|
|
||||||
|
* English (United Kingdom)
|
||||||
|
|
||||||
|
* Robert Readman <robert_readman\_at\_hotmail.com>
|
||||||
|
|
||||||
|
* Spanish
|
||||||
|
|
||||||
|
* Matías Bellone <matiasbellone\_at\_gmail.com>
|
||||||
|
|
||||||
|
* French
|
||||||
|
|
||||||
|
* Marc Delisle <marc\_at\_infomarc.info>
|
||||||
|
|
||||||
|
* Hindi
|
||||||
|
|
||||||
|
* u4663530 <u4663530\_at\_anu.edu.au>
|
||||||
|
* rsedwardian <rsedwardian\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Hungarian
|
||||||
|
|
||||||
|
* gergo314 <gergo314\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Italian
|
||||||
|
|
||||||
|
* Rouslan Placella <rouslan\_at\_placella.com>
|
||||||
|
|
||||||
|
* Japanese
|
||||||
|
|
||||||
|
* Yuichiro <yuichiro\_at\_pop07.odn.ne.jp>
|
||||||
|
|
||||||
|
* Lithuanian
|
||||||
|
|
||||||
|
* Kęstutis <forkik\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Norwegian Bokmål
|
||||||
|
|
||||||
|
* Sven-Erik Andersen <sven.erik.andersen\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Dutch
|
||||||
|
|
||||||
|
* Dieter Adriaenssens <ruleant\_at\_users.sourceforge.net>
|
||||||
|
* Herman van Rink <rink\_at\_initfour.nl>
|
||||||
|
|
||||||
|
* Polish
|
||||||
|
|
||||||
|
* Stanisław Krukowski <stankruk\_at\_neostrada.pl>
|
||||||
|
* Marcin Kozioł <lord_dark\_at\_wp.pl>
|
||||||
|
|
||||||
|
* Portuguese
|
||||||
|
|
||||||
|
* JoaoTMDias <contacto\_at\_joaodias.me>
|
||||||
|
|
||||||
|
* Portuguese (Brazil)
|
||||||
|
|
||||||
|
* wiltave <wiltave\_at\_gmail.com>
|
||||||
|
* emerson4br <emerson4br\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Romanian
|
||||||
|
|
||||||
|
* alexukf <alex.ukf\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Russian
|
||||||
|
|
||||||
|
* Victor Volkov <hanut\_at\_php-myadmin.ru>
|
||||||
|
|
||||||
|
* Sinhala
|
||||||
|
|
||||||
|
* Madhura Jayaratne <madhura.cj\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Slovak
|
||||||
|
|
||||||
|
* Martin Lacina <martin\_at\_whistler.sk>
|
||||||
|
|
||||||
|
* Slovenian
|
||||||
|
|
||||||
|
* Domen <dbc334\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Swedish
|
||||||
|
|
||||||
|
* stefan <stefan\_at\_inkopsforum.se>
|
||||||
|
|
||||||
|
* Tamil
|
||||||
|
|
||||||
|
* ysajeepan <ysajeepan\_at\_live.com>
|
||||||
|
|
||||||
|
* Telugu
|
||||||
|
|
||||||
|
* veeven <veeven\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Thai
|
||||||
|
|
||||||
|
* kanitchet <kanichet\_at\_hotmail.com>
|
||||||
|
|
||||||
|
* Turkish
|
||||||
|
|
||||||
|
* Burak Yavuz <hitowerdigit\_at\_hotmail.com>
|
||||||
|
|
||||||
|
* Uighur
|
||||||
|
|
||||||
|
* gheni <gheni\_at\_yahoo.cn>
|
||||||
|
|
||||||
|
* Ukrainian
|
||||||
|
|
||||||
|
* typim <duke3d\_at\_ukr.net>
|
||||||
|
* oleg-ilnytskyi <ukraine.oleg\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Urdu
|
||||||
|
|
||||||
|
* Mehbooob Khan <mehboobbugti\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Simplified Chinese
|
||||||
|
|
||||||
|
* shanyan baishui <Siramizu\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Traditional Chinese
|
||||||
|
|
||||||
|
* star <star\_at\_origin.club.tw>
|
||||||
|
|
||||||
|
Documentation translators
|
||||||
|
+++++++++++++++++++++++++
|
||||||
|
|
||||||
|
Following people have contributed to translation of phpMyAdmin documentation:
|
||||||
|
|
||||||
|
* Czech
|
||||||
|
|
||||||
|
* Michal Čihař <michal\_at\_cihar.com>
|
||||||
|
|
||||||
|
* Greek
|
||||||
|
|
||||||
|
* Panagiotis Papazoglou <papaz_p\_at\_yahoo.com>
|
||||||
|
|
||||||
|
* English (United Kingdom)
|
||||||
|
|
||||||
|
* Robert Readman <robert_readman\_at\_hotmail.com>
|
||||||
|
|
||||||
|
* French
|
||||||
|
|
||||||
|
* Cédric Corazza <cedric.corazza\_at\_wanadoo.fr>
|
||||||
|
|
||||||
|
* Japanese
|
||||||
|
|
||||||
|
* Yuichiro Takahashi <yuichiro\_at\_pop07.odn.ne.jp>
|
||||||
|
|
||||||
|
* Polish
|
||||||
|
|
||||||
|
* Stanisław Krukowski <stankruk\_at\_neostrada.pl>
|
||||||
|
|
||||||
|
* Portuguese (Brazil)
|
||||||
|
|
||||||
|
* mjaning <mjaning\_at\_gmail.com>
|
||||||
|
|
||||||
|
* Slovenian
|
||||||
|
|
||||||
|
* Domen <dbc334\_at\_gmail.com>
|
||||||
|
|
||||||
|
Original Credits of Version 2.1.0
|
||||||
|
+++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his
|
||||||
|
idea to create a web-based interface to MySQL using PHP3. Although I
|
||||||
|
have not used any of his source-code, there are some concepts I've
|
||||||
|
borrowed from him. phpMyAdmin was created because Peter told me he
|
||||||
|
wasn't going to further develop his (great) tool.
|
||||||
|
|
||||||
|
Thanks go to
|
||||||
|
|
||||||
|
* Amalesh Kempf <ak-lsml\_at\_living-source.com> who contributed the
|
||||||
|
code for the check when dropping a table or database. He also
|
||||||
|
suggested that you should be able to specify the primary key on
|
||||||
|
tbl\_create.php3. To version 1.1.1 he contributed the ldi\_\*.php3-set
|
||||||
|
(Import text-files) as well as a bug-report. Plus many smaller
|
||||||
|
improvements.
|
||||||
|
* Jan Legenhausen <jan\_at\_nrw.net>: He made many of the changes that
|
||||||
|
were introduced in 1.3.0 (including quite significant ones like the
|
||||||
|
authentication). For 1.4.1 he enhanced the table-dump feature. Plus
|
||||||
|
bug-fixes and help.
|
||||||
|
* Marc Delisle <DelislMa\_at\_CollegeSherbrooke.qc.ca> made phpMyAdmin
|
||||||
|
language-independent by outsourcing the strings to a separate file. He
|
||||||
|
also contributed the French translation.
|
||||||
|
* Alexandr Bravo <abravo\_at\_hq.admiral.ru> who contributed
|
||||||
|
tbl\_select.php3, a feature to display only some columns from a table.
|
||||||
|
* Chris Jackson <chrisj\_at\_ctel.net> added support for MySQL functions
|
||||||
|
in tbl\_change.php3. He also added the "Query by Example" feature in
|
||||||
|
2.0.
|
||||||
|
* Dave Walton <walton\_at\_nordicdms.com> added support for multiple
|
||||||
|
servers and is a regular contributor for bug-fixes.
|
||||||
|
* Gabriel Ash <ga244\_at\_is8.nyu.edu> contributed the random access
|
||||||
|
features for 2.0.6.
|
||||||
|
|
||||||
|
The following people have contributed minor changes, enhancements,
|
||||||
|
bugfixes or support for a new language:
|
||||||
|
|
||||||
|
Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas
|
||||||
|
Kleemann, Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel
|
||||||
|
Piankov, Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein,
|
||||||
|
Jannis Hermanns, G. Wieggers.
|
||||||
|
|
||||||
|
And thanks to everyone else who sent me email with suggestions, bug-
|
||||||
|
reports and or just some feedback.
|
||||||
|
|
12
sources/doc/html/_sources/developers.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.. _developers:
|
||||||
|
|
||||||
|
Developers Information
|
||||||
|
======================
|
||||||
|
|
||||||
|
phpMyAdmin is Open Source, so you're invited to contribute to it. Many
|
||||||
|
great features have been written by other people and you too can help
|
||||||
|
to make phpMyAdmin a useful tool.
|
||||||
|
|
||||||
|
You can check out all the possibilities to contribute in the
|
||||||
|
`contribute section on our website
|
||||||
|
<http://www.phpmyadmin.net/home_page/improve.php>`_.
|
2015
sources/doc/html/_sources/faq.txt
Normal file
406
sources/doc/html/_sources/glossary.txt
Normal file
|
@ -0,0 +1,406 @@
|
||||||
|
.. _glossary:
|
||||||
|
|
||||||
|
Glossary
|
||||||
|
========
|
||||||
|
|
||||||
|
From Wikipedia, the free encyclopedia
|
||||||
|
|
||||||
|
.. glossary::
|
||||||
|
|
||||||
|
.htaccess
|
||||||
|
the default name of Apache's directory-level configuration file.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/.htaccess>
|
||||||
|
|
||||||
|
ACL
|
||||||
|
Access Contol List
|
||||||
|
|
||||||
|
Blowfish
|
||||||
|
a keyed, symmetric block cipher, designed in 1993 by Bruce Schneier.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Blowfish_(cipher)>
|
||||||
|
|
||||||
|
Browser
|
||||||
|
a software application that enables a user to display and interact with text, images, and other information typically located on a web page at a website on the World Wide Web.
|
||||||
|
|
||||||
|
.. seealso:: <http://en.wikipedia.org/wiki/Web_browser>
|
||||||
|
|
||||||
|
bzip2
|
||||||
|
a free software/open source data compression algorithm and program developed by Julian Seward.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Bzip2>
|
||||||
|
|
||||||
|
CGI
|
||||||
|
Common Gateway Interface is an important World Wide Web technology that
|
||||||
|
enables a client web browser to request data from a program executed on
|
||||||
|
the Web server.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/CGI>
|
||||||
|
|
||||||
|
Changelog
|
||||||
|
a log or record of changes made to a project.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Changelog>
|
||||||
|
|
||||||
|
Client
|
||||||
|
a computer system that accesses a (remote) service on another computer by some kind of network.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Client_(computing)>
|
||||||
|
|
||||||
|
column
|
||||||
|
a set of data values of a particular simple type, one for each row of the table.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Column_(database)>
|
||||||
|
|
||||||
|
Cookie
|
||||||
|
a packet of information sent by a server to a World Wide Web browser and then sent back by the browser each time it accesses that server.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/HTTP_cookie>
|
||||||
|
|
||||||
|
CSV
|
||||||
|
Comma- separated values
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Comma-separated_values>
|
||||||
|
|
||||||
|
DB
|
||||||
|
look at :term:`database`
|
||||||
|
|
||||||
|
database
|
||||||
|
an organized collection of data.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Database>
|
||||||
|
|
||||||
|
Engine
|
||||||
|
look at :term:`storage engines`
|
||||||
|
|
||||||
|
extension
|
||||||
|
a PHP module that extends PHP with additional functionality.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/extension>
|
||||||
|
|
||||||
|
FAQ
|
||||||
|
Frequently Asked Questions is a list of commonly asked question and there
|
||||||
|
answers.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/FAQ>
|
||||||
|
|
||||||
|
Field
|
||||||
|
one part of divided data/columns.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Field_(computer_science)>
|
||||||
|
|
||||||
|
foreign key
|
||||||
|
a column or group of columns in a database row that point to a key column
|
||||||
|
or group of columns forming a key of another database row in some
|
||||||
|
(usually different) table.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Foreign_key>
|
||||||
|
|
||||||
|
FPDF
|
||||||
|
the free :term:`PDF` library
|
||||||
|
|
||||||
|
.. seealso:: <http://www.fpdf.org/>
|
||||||
|
|
||||||
|
GD
|
||||||
|
Graphics Library by Thomas Boutell and others for dynamically manipulating images.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/GD_Graphics_Library>
|
||||||
|
|
||||||
|
GD2
|
||||||
|
look at :term:`gd`
|
||||||
|
|
||||||
|
gzip
|
||||||
|
gzip is short for GNU zip, a GNU free software file compression program.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Gzip>
|
||||||
|
|
||||||
|
host
|
||||||
|
any machine connected to a computer network, a node that has a hostname.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Host>
|
||||||
|
|
||||||
|
hostname
|
||||||
|
the unique name by which a network attached device is known on a network.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Hostname>
|
||||||
|
|
||||||
|
HTTP
|
||||||
|
HyperText Transfer Protocol is the primary method used to transfer or
|
||||||
|
convey information on the World Wide Web.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/HyperText_Transfer_Protocol>
|
||||||
|
|
||||||
|
https
|
||||||
|
a :term:`HTTP`-connection with additional security measures.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Https:_URI_scheme>
|
||||||
|
|
||||||
|
IEC
|
||||||
|
International Electrotechnical Commission
|
||||||
|
|
||||||
|
IIS
|
||||||
|
Internet Information Services is a set of Internet-based services for
|
||||||
|
servers using Microsoft Windows.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Internet_Information_Services>
|
||||||
|
|
||||||
|
Index
|
||||||
|
a feature that allows quick access to the rows in a table.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Index_(database)>
|
||||||
|
|
||||||
|
IP
|
||||||
|
Internet Protocol is a data-oriented protocol used by source and
|
||||||
|
destination hosts for communicating data across a packet-switched
|
||||||
|
internetwork.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Internet_Protocol>
|
||||||
|
|
||||||
|
IP Address
|
||||||
|
a unique number that devices use in order to identify and communicate with each other on a network utilizing the Internet Protocol standard.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/IP_Address>
|
||||||
|
|
||||||
|
IPv6
|
||||||
|
IPv6 (Internet Protocol version 6) is the latest revision of the
|
||||||
|
Internet Protocol (:term:`IP`), designed to deal with the
|
||||||
|
long-anticipated problem of its precedessor IPv4 running out of addresses.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/IPv6>
|
||||||
|
|
||||||
|
ISAPI
|
||||||
|
Internet Server Application Programming Interface is the API of Internet Information Services (IIS).
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/ISAPI>
|
||||||
|
|
||||||
|
ISP
|
||||||
|
Internet service provider is a business or organization that offers users
|
||||||
|
access to the Internet and related services.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/ISP>
|
||||||
|
|
||||||
|
ISO
|
||||||
|
International Standards Organisation
|
||||||
|
|
||||||
|
JPEG
|
||||||
|
a most commonly used standard method of lossy compression for photographic images.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/JPEG>
|
||||||
|
|
||||||
|
JPG
|
||||||
|
look at :term:`jpeg`
|
||||||
|
|
||||||
|
Key
|
||||||
|
look at :term:`index`
|
||||||
|
|
||||||
|
LATEX
|
||||||
|
a document preparation system for the TEX typesetting program.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/LaTeX>
|
||||||
|
|
||||||
|
Mac
|
||||||
|
Apple Macintosh is line of personal computers is designed, developed, manufactured, and marketed by Apple Computer.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Mac>
|
||||||
|
|
||||||
|
Mac OS X
|
||||||
|
the operating system which is included with all currently shipping Apple Macintosh computers in the consumer and professional markets.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Mac_OS_X>
|
||||||
|
|
||||||
|
MCrypt
|
||||||
|
a cryptographic library.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/MCrypt>
|
||||||
|
|
||||||
|
mcrypt
|
||||||
|
the MCrypt PHP extension.
|
||||||
|
|
||||||
|
.. seealso:: <http://php.net/mcrypt>
|
||||||
|
|
||||||
|
MIME
|
||||||
|
Multipurpose Internet Mail Extensions is
|
||||||
|
an Internet Standard for the format of e-mail.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/MIME>
|
||||||
|
|
||||||
|
module
|
||||||
|
some sort of extension for the Apache Webserver.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/module>
|
||||||
|
|
||||||
|
MySQL
|
||||||
|
a multithreaded, multi-user, SQL (Structured Query Language) Database Management System (DBMS).
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/MySQL>
|
||||||
|
|
||||||
|
mysqli
|
||||||
|
the improved MySQL client PHP extension.
|
||||||
|
|
||||||
|
.. seealso:: <http://php.net/mysqli>
|
||||||
|
|
||||||
|
mysql
|
||||||
|
the MySQL client PHP extension.
|
||||||
|
|
||||||
|
.. seealso:: <http://php.net/mysql>
|
||||||
|
|
||||||
|
OpenDocument
|
||||||
|
open standard for office documents.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/OpenDocument>
|
||||||
|
|
||||||
|
OS X
|
||||||
|
look at :term:`Mac OS X`.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/OS_X>
|
||||||
|
|
||||||
|
PDF
|
||||||
|
Portable Document Format is a file format developed by Adobe Systems for
|
||||||
|
representing two dimensional documents in a device independent and
|
||||||
|
resolution independent format.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Portable_Document_Format>
|
||||||
|
|
||||||
|
PEAR
|
||||||
|
the PHP Extension and Application Repository.
|
||||||
|
|
||||||
|
.. seealso:: <http://pear.php.net/>
|
||||||
|
|
||||||
|
PCRE
|
||||||
|
Perl Compatible Regular Expressions is the perl-compatible regular
|
||||||
|
expression functions for PHP
|
||||||
|
|
||||||
|
.. seealso:: <http://php.net/pcre>
|
||||||
|
|
||||||
|
PHP
|
||||||
|
short for "PHP: Hypertext Preprocessor", is an open-source, reflective
|
||||||
|
programming language used mainly for developing server-side applications
|
||||||
|
and dynamic web content, and more recently, a broader range of software
|
||||||
|
applications.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/PHP>
|
||||||
|
|
||||||
|
port
|
||||||
|
a connection through which data is sent and received.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Port_(computing)>
|
||||||
|
|
||||||
|
RFC
|
||||||
|
Request for Comments (RFC) documents are a series of memoranda
|
||||||
|
encompassing new research, innovations, and methodologies applicable to
|
||||||
|
Internet technologies.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Request_for_Comments>
|
||||||
|
|
||||||
|
RFC 1952
|
||||||
|
GZIP file format specification version 4.3
|
||||||
|
|
||||||
|
.. seealso:: :rfc:`1952`
|
||||||
|
|
||||||
|
Row (record, tuple)
|
||||||
|
represents a single, implicitly structured data item in a table.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Row_(database)>
|
||||||
|
|
||||||
|
Server
|
||||||
|
a computer system that provides services to other computing systems over a network.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Server_(computing)>
|
||||||
|
|
||||||
|
Storage Engines
|
||||||
|
handlers for different table types
|
||||||
|
|
||||||
|
.. seealso:: <http://dev.mysql.com/doc/en/storage-engines.html>
|
||||||
|
|
||||||
|
SOAP
|
||||||
|
Simple Object Access Protocol is a protocol specification for exchanging
|
||||||
|
structured information in the implementation of Web Services in computer
|
||||||
|
networks.
|
||||||
|
|
||||||
|
.. seealso:: <http://en.wikipedia.org/wiki/SOAP>
|
||||||
|
|
||||||
|
socket
|
||||||
|
a form of inter-process communication.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Socket#Computer_sockets>
|
||||||
|
|
||||||
|
SSL
|
||||||
|
Secure Sockets Layer is a cryptographic protocol which provides secure
|
||||||
|
communication on the Internet.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Secure_Sockets_Layer>
|
||||||
|
|
||||||
|
Stored procedure
|
||||||
|
a subroutine available to applications accessing a relational database system
|
||||||
|
|
||||||
|
.. seealso:: <http://en.wikipedia.org/wiki/Stored_procedure>
|
||||||
|
|
||||||
|
SQL
|
||||||
|
Structured Query Language
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/SQL>
|
||||||
|
|
||||||
|
table
|
||||||
|
a set of data elements (cells) that is organized, defined and stored as
|
||||||
|
horizontal rows and vertical columns where each item can be uniquely
|
||||||
|
identified by a label or key or by it?s position in relation to other
|
||||||
|
items.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Table_(database)>
|
||||||
|
|
||||||
|
tar
|
||||||
|
a type of archive file format: the Tape ARchive format.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Tar_(file_format)>
|
||||||
|
|
||||||
|
TCP
|
||||||
|
Transmission Control Protocol is one of the core protocols of the
|
||||||
|
Internet protocol suite.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/TCP>
|
||||||
|
|
||||||
|
TCPDF
|
||||||
|
Rewrite of :term:`UFPDF` with various improvements.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.tcpdf.org/>
|
||||||
|
|
||||||
|
trigger
|
||||||
|
a procedural code that is automatically executed in response to certain events on a particular table or view in a database
|
||||||
|
|
||||||
|
.. seealso:: <http://en.wikipedia.org/wiki/Database_trigger>
|
||||||
|
|
||||||
|
UFPDF
|
||||||
|
Unicode/UTF-8 extension for :term:`FPDF`
|
||||||
|
|
||||||
|
.. seealso:: <http://www.acko.net/node/56>
|
||||||
|
|
||||||
|
URL
|
||||||
|
Uniform Resource Locator is a sequence of characters, conforming to a
|
||||||
|
standardized format, that is used for referring to resources, such as
|
||||||
|
documents and images on the Internet, by their location.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/URL>
|
||||||
|
|
||||||
|
Webserver
|
||||||
|
A computer (program) that is responsible for accepting HTTP requests from clients and serving them Web pages.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Webserver>
|
||||||
|
|
||||||
|
XML
|
||||||
|
Extensible Markup Language is a W3C-recommended general- purpose markup
|
||||||
|
language for creating special-purpose markup languages, capable of
|
||||||
|
describing many different kinds of data.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/XML>
|
||||||
|
|
||||||
|
ZIP
|
||||||
|
a popular data compression and archival format.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/ZIP_(file_format)>
|
||||||
|
|
||||||
|
zlib
|
||||||
|
an open-source, cross- platform data compression library by Jean-loup Gailly and Mark Adler.
|
||||||
|
|
||||||
|
.. seealso:: <http://www.wikipedia.org/wiki/Zlib>
|
||||||
|
|
||||||
|
|
32
sources/doc/html/_sources/index.txt
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
.. phpMyAdmin documentation master file, created by
|
||||||
|
sphinx-quickstart on Wed Sep 26 14:04:48 2012.
|
||||||
|
You can adapt this file completely to your liking, but it should at least
|
||||||
|
contain the root `toctree` directive.
|
||||||
|
|
||||||
|
Welcome to phpMyAdmin's documentation!
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Contents:
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
intro
|
||||||
|
require
|
||||||
|
setup
|
||||||
|
config
|
||||||
|
user
|
||||||
|
faq
|
||||||
|
developers
|
||||||
|
vendors
|
||||||
|
copyright
|
||||||
|
credits
|
||||||
|
glossary
|
||||||
|
|
||||||
|
|
||||||
|
Indices and tables
|
||||||
|
==================
|
||||||
|
|
||||||
|
* :ref:`genindex`
|
||||||
|
* :ref:`search`
|
||||||
|
* :ref:`glossary`
|
68
sources/doc/html/_sources/intro.txt
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
.. _intro:
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
phpMyAdmin can manage a whole MySQL server (needs a super-user) as
|
||||||
|
well as a single database. To accomplish the latter you'll need a
|
||||||
|
properly set up MySQL user who can read/write only the desired
|
||||||
|
database. It's up to you to look up the appropriate part in the MySQL
|
||||||
|
manual.
|
||||||
|
|
||||||
|
|
||||||
|
Supported features
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Currently phpMyAdmin can:
|
||||||
|
|
||||||
|
* browse and drop databases, tables, views, columns and indexes
|
||||||
|
* display multiple results sets through stored procedures or queries
|
||||||
|
* create, copy, drop, rename and alter databases, tables, columns and
|
||||||
|
indexes
|
||||||
|
* maintenance server, databases and tables, with proposals on server
|
||||||
|
configuration
|
||||||
|
* execute, edit and bookmark any :term:`SQL`-statement, even batch-queries
|
||||||
|
* load text files into tables
|
||||||
|
* create [#f1]_ and read dumps of tables
|
||||||
|
* export [#f1]_ data to various formats: :term:`CSV`, :term:`XML`, :term:`PDF`,
|
||||||
|
:term:`ISO`/:term:`IEC` 26300 - :term:`OpenDocument` Text and Spreadsheet, Microsoft
|
||||||
|
Word 2000, and LATEX formats
|
||||||
|
* import data and :term:`MySQL` structures from :term:`OpenDocument` spreadsheets, as
|
||||||
|
well as :term:`XML`, :term:`CSV`, and :term:`SQL` files
|
||||||
|
* administer multiple servers
|
||||||
|
* manage MySQL users and privileges
|
||||||
|
* check referential integrity in MyISAM tables
|
||||||
|
* using Query-by-example (QBE), create complex queries automatically
|
||||||
|
connecting required tables
|
||||||
|
* create :term:`PDF` graphics of your
|
||||||
|
database layout
|
||||||
|
* search globally in a database or a subset of it
|
||||||
|
* transform stored data into any format using a set of predefined
|
||||||
|
functions, like displaying BLOB-data as image or download-link
|
||||||
|
* track changes on databases, tables and views
|
||||||
|
* support InnoDB tables and foreign keys see :ref:`faq3_6`
|
||||||
|
* support mysqli, the improved MySQL extension see :ref:`faq1_17`
|
||||||
|
* create, edit, call, export and drop stored procedures and functions
|
||||||
|
* create, edit, export and drop events and triggers
|
||||||
|
* communicate in `62 different languages
|
||||||
|
<http://www.phpmyadmin.net/home_page/translations.php>`_
|
||||||
|
|
||||||
|
|
||||||
|
A word about users
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Many people have difficulty understanding the concept of user
|
||||||
|
management with regards to phpMyAdmin. When a user logs in to
|
||||||
|
phpMyAdmin, that username and password are passed directly to MySQL.
|
||||||
|
phpMyAdmin does no account management on its own (other than allowing
|
||||||
|
one to manipulate the MySQL user account information); all users must
|
||||||
|
be valid MySQL users.
|
||||||
|
|
||||||
|
.. rubric:: Footnotes
|
||||||
|
|
||||||
|
.. [#f1]
|
||||||
|
|
||||||
|
phpMyAdmin can compress (:term:`Zip`, :term:`GZip` :term:`RFC 1952` or
|
||||||
|
:term:`Bzip2` formats) dumps and :term:`CSV` exports if you use PHP with
|
||||||
|
:term:`Zlib` support (``--with-zlib``) and/or :term:`Bzip2` support
|
||||||
|
(``--with-bz2``). Proper support may also need changes in :file:`php.ini`.
|
18
sources/doc/html/_sources/other.txt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
Other sources of information
|
||||||
|
============================
|
||||||
|
|
||||||
|
Printed Book
|
||||||
|
------------
|
||||||
|
|
||||||
|
The definitive guide to using phpMyAdmin is the book Mastering phpMyAdmin for
|
||||||
|
Effective MySQL Management by Marc Delisle. You can get information on that
|
||||||
|
book and other officially endorsed `books at the phpMyAdmin site`_.
|
||||||
|
|
||||||
|
.. _books at the phpMyAdmin site: http://www.phpmyadmin.net/home_page/docs.php?books
|
||||||
|
|
||||||
|
Tutorials
|
||||||
|
---------
|
||||||
|
|
||||||
|
Third party tutorials and articles are listed on our `wiki page`_.
|
||||||
|
|
||||||
|
.. _wiki page: http://wiki.phpmyadmin.net/pma/Articles
|
50
sources/doc/html/_sources/privileges.txt
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
User management
|
||||||
|
===============
|
||||||
|
|
||||||
|
User management is the process of controlling which users are allowed to
|
||||||
|
connect to the MySQL server and what permissions they have on each database.
|
||||||
|
phpMyAdmin does not handle user management, rather it passes the username and
|
||||||
|
password on to MySQL, which then determines whether a user is permitted to
|
||||||
|
perform a particular action. Within phpMyAdmin, administrators have full
|
||||||
|
control over creating users, viewing and editing privileges for existing users,
|
||||||
|
and removing users.
|
||||||
|
|
||||||
|
Within phpMyAdmin, user management is controlled via the :guilabel:`Users` link
|
||||||
|
from the main page. Users can be created, edited, and removed.
|
||||||
|
|
||||||
|
Creating a new user
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
To create a new user, click the :guilabel:`Add a new user` link near the bottom
|
||||||
|
of the :guilabel:`Users` page (you must be a "superuser", e.g., user "root").
|
||||||
|
Use the textboxes and drop-downs to configure the user to your particular
|
||||||
|
needs. You can then select whether to create a database for that user and grant
|
||||||
|
specific global privileges. Once you've created the user (by clicking Go), you
|
||||||
|
can define that user's permissions on a specific database (don't grant global
|
||||||
|
privileges in that case). In general, users do not need any global privileges
|
||||||
|
(other than USAGE), only permissions for their specific database.
|
||||||
|
|
||||||
|
Editing an existing user
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
To edit an existing user, simply click the pencil icon to the right of that
|
||||||
|
user in the :guilabel:`Users` page. You can then edit their global- and
|
||||||
|
database-specific privileges, change their password, or even copy those
|
||||||
|
privileges to a new user.
|
||||||
|
|
||||||
|
Deleting a user
|
||||||
|
---------------
|
||||||
|
|
||||||
|
From the :guilabel:`Users` page, check the checkbox for the user you wish to
|
||||||
|
remove, select whether or not to also remove any databases of the same name (if
|
||||||
|
they exist), and click Go.
|
||||||
|
|
||||||
|
Assigning privileges to user for a specific database
|
||||||
|
----------------------------------------------------
|
||||||
|
|
||||||
|
Users are assigned to databases by editing the user record (from the
|
||||||
|
:guilabel:`Users` link on the home page) not from within the :guilabel:`Users`
|
||||||
|
link under the table. If you are creating a user specifically for a given table
|
||||||
|
you will have to create the user first (with no global privileges) and then go
|
||||||
|
back and edit that user to add the table and privileges for the individual
|
||||||
|
table.
|
53
sources/doc/html/_sources/require.txt
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
.. _require:
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
Web server
|
||||||
|
----------
|
||||||
|
|
||||||
|
Since, phpMyAdmin's interface is based entirely in your browser, you'll need a
|
||||||
|
web server (such as Apache, :term:`IIS`) to install phpMyAdmin's files into.
|
||||||
|
|
||||||
|
PHP
|
||||||
|
---
|
||||||
|
|
||||||
|
* You need PHP 5.3.0 or newer, with ``session`` support, the Standard PHP Library
|
||||||
|
(SPL) extension, JSON support, and the ``mbstring`` extension.
|
||||||
|
|
||||||
|
* To support uploading of ZIP files, you need the PHP ``zip`` extension.
|
||||||
|
|
||||||
|
* You need GD2 support in PHP to display inline thumbnails of JPEGs
|
||||||
|
("image/jpeg: inline") with their original aspect ratio.
|
||||||
|
|
||||||
|
* When using the cookie authentication (the default), the `mcrypt
|
||||||
|
<http://www.php.net/mcrypt>`_ extension is strongly suggested for most
|
||||||
|
users and is **required** for 64–bit machines. Not using mcrypt will
|
||||||
|
cause phpMyAdmin to load pages significantly slower.
|
||||||
|
|
||||||
|
* To support upload progress bars, see :ref:`faq2_9`.
|
||||||
|
|
||||||
|
* To support XML and Open Document Spreadsheet importing, you need the
|
||||||
|
`libxml <http://www.php.net/libxml>`_ extension.
|
||||||
|
|
||||||
|
* Performance suggestion: install the ``ctype`` extension.
|
||||||
|
|
||||||
|
.. seealso:: :ref:`faq1_31`, :ref:`authentication_modes`
|
||||||
|
|
||||||
|
Database
|
||||||
|
--------
|
||||||
|
|
||||||
|
phpMyAdmin supports MySQL-compatible databases.
|
||||||
|
|
||||||
|
* MySQL 5.5 or newer
|
||||||
|
* MariaDB 5.5 or newer
|
||||||
|
* Drizzle
|
||||||
|
|
||||||
|
.. seealso:: :ref:`faq1_17`
|
||||||
|
|
||||||
|
Web browser
|
||||||
|
-----------
|
||||||
|
|
||||||
|
To access phpMyAdmin you need a web browser with cookies and javascript
|
||||||
|
enabled.
|
||||||
|
|
493
sources/doc/html/_sources/setup.txt
Normal file
|
@ -0,0 +1,493 @@
|
||||||
|
.. _setup:
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
phpMyAdmin does not apply any special security methods to the MySQL
|
||||||
|
database server. It is still the system administrator's job to grant
|
||||||
|
permissions on the MySQL databases properly. phpMyAdmin's :guilabel:`Users`
|
||||||
|
page can be used for this.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
:term:`Mac` users should note that if you are on a version before
|
||||||
|
:term:`Mac OS X`, StuffIt unstuffs with :term:`Mac` formats. So you'll have
|
||||||
|
to resave as in BBEdit to Unix style ALL phpMyAdmin scripts before
|
||||||
|
uploading them to your server, as PHP seems not to like :term:`Mac`-style
|
||||||
|
end of lines character ("``\r``").
|
||||||
|
|
||||||
|
Linux distributions
|
||||||
|
+++++++++++++++++++
|
||||||
|
|
||||||
|
phpMyAdmin is included in most Linux distributions. It is recommended to use
|
||||||
|
distribution packages when possible - they usually provide integration to your
|
||||||
|
distribution and you will automatically get security updates from your distribution.
|
||||||
|
|
||||||
|
|
||||||
|
Debian
|
||||||
|
------
|
||||||
|
|
||||||
|
Debian's package repositories include a phpMyAdmin package, but be aware that
|
||||||
|
the configuration file is maintained in ``/etc/phpmyadmin`` and may differ in
|
||||||
|
some ways from the official phpMyAdmin documentation.
|
||||||
|
|
||||||
|
OpenSUSE
|
||||||
|
--------
|
||||||
|
|
||||||
|
OpenSUSE already comes with phpMyAdmin package, just install packages from
|
||||||
|
the `openSUSE Build Service <http://software.opensuse.org/package/phpMyAdmin>`_.
|
||||||
|
|
||||||
|
Ubuntu
|
||||||
|
------
|
||||||
|
|
||||||
|
Ubuntu ships phpMyAdmin package, however if you want to use recent version, you
|
||||||
|
can use packages from
|
||||||
|
`PPA for Michal Čihař <https://launchpad.net/~nijel/+archive/phpmyadmin>`_.
|
||||||
|
|
||||||
|
Gentoo
|
||||||
|
------
|
||||||
|
|
||||||
|
Gentoo ships the phpMyAdmin package, both in a near stock configuration as well
|
||||||
|
as in a ``webapp-config`` configuration. Use ``emerge dev-db/phpmyadmin`` to
|
||||||
|
install.
|
||||||
|
|
||||||
|
Mandriva
|
||||||
|
--------
|
||||||
|
|
||||||
|
Mandriva ships the phpMyAdmin package in their ``contrib`` branch and can be
|
||||||
|
installed via the usual Control Center.
|
||||||
|
|
||||||
|
Fedora
|
||||||
|
------
|
||||||
|
|
||||||
|
Fedora ships the phpMyAdmin package, but be aware that the configuration file
|
||||||
|
is maintained in ``/etc/phpMyAdmin/`` and may differ in some ways from the
|
||||||
|
official phpMyAdmin documentation.
|
||||||
|
|
||||||
|
Red Hat Enterprise Linux
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Red Hat Enterprise Linux itself and thus derivatives like CentOS don't
|
||||||
|
ship phpMyAdmin, but the Fedora-driven repository
|
||||||
|
`Extra Packages for Enterprise Linux (EPEL) <http://fedoraproject.org/wiki/EPEL>`_
|
||||||
|
is doing so, if it's
|
||||||
|
`enabled <http://fedoraproject.org/wiki/EPEL/FAQ#howtouse>`_.
|
||||||
|
But be aware that the configuration file is maintained in
|
||||||
|
``/etc/phpMyAdmin/`` and may differ in some ways from the
|
||||||
|
official phpMyAdmin documentation.
|
||||||
|
|
||||||
|
|
||||||
|
Installing on Windows
|
||||||
|
+++++++++++++++++++++
|
||||||
|
|
||||||
|
The easiest way to get phpMyAdmin on Windows is using third party products
|
||||||
|
which include phpMyAdmin together with a database and web server such as
|
||||||
|
`XAMPP <http://www.apachefriends.org/en/xampp.html>`_.
|
||||||
|
|
||||||
|
You can find more of such options at `Wikipedia <https://en.wikipedia.org/wiki/List_of_AMP_packages>`_.
|
||||||
|
|
||||||
|
|
||||||
|
.. _quick_install:
|
||||||
|
|
||||||
|
Quick Install
|
||||||
|
+++++++++++++
|
||||||
|
|
||||||
|
#. Choose an appropriate distribution kit from the phpmyadmin.net
|
||||||
|
Downloads page. Some kits contain only the English messages, others
|
||||||
|
contain all languages. We'll assume you chose a kit whose name
|
||||||
|
looks like ``phpMyAdmin-x.x.x -all-languages.tar.gz``.
|
||||||
|
#. Untar or unzip the distribution (be sure to unzip the subdirectories):
|
||||||
|
``tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz`` in your
|
||||||
|
webserver's document root. If you don't have direct access to your
|
||||||
|
document root, put the files in a directory on your local machine,
|
||||||
|
and, after step 4, transfer the directory on your web server using,
|
||||||
|
for example, ftp.
|
||||||
|
#. Ensure that all the scripts have the appropriate owner (if PHP is
|
||||||
|
running in safe mode, having some scripts with an owner different from
|
||||||
|
the owner of other scripts will be a problem). See :ref:`faq4_2` and
|
||||||
|
:ref:`faq1_26` for suggestions.
|
||||||
|
#. Now you must configure your installation. There are two methods that
|
||||||
|
can be used. Traditionally, users have hand-edited a copy of
|
||||||
|
:file:`config.inc.php`, but now a wizard-style setup script is provided
|
||||||
|
for those who prefer a graphical installation. Creating a
|
||||||
|
:file:`config.inc.php` is still a quick way to get started and needed for
|
||||||
|
some advanced features.
|
||||||
|
|
||||||
|
|
||||||
|
Manually creating the file
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
To manually create the file, simply use your text editor to create the
|
||||||
|
file :file:`config.inc.php` (you can copy :file:`config.sample.inc.php` to get
|
||||||
|
minimal configuration file) in the main (top-level) phpMyAdmin
|
||||||
|
directory (the one that contains :file:`index.php`). phpMyAdmin first
|
||||||
|
loads :file:`libraries/config.default.php` and then overrides those values
|
||||||
|
with anything found in :file:`config.inc.php`. If the default value is
|
||||||
|
okay for a particular setting, there is no need to include it in
|
||||||
|
:file:`config.inc.php`. You'll need a few directives to get going, a
|
||||||
|
simple configuration may look like this:
|
||||||
|
|
||||||
|
.. code-block:: xml+php
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; // use here a value of your choice
|
||||||
|
|
||||||
|
$i=0;
|
||||||
|
$i++;
|
||||||
|
$cfg['Servers'][$i]['auth_type'] = 'cookie';
|
||||||
|
?>
|
||||||
|
|
||||||
|
Or, if you prefer to not be prompted every time you log in:
|
||||||
|
|
||||||
|
.. code-block:: xml+php
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$i=0;
|
||||||
|
$i++;
|
||||||
|
$cfg['Servers'][$i]['user'] = 'root';
|
||||||
|
$cfg['Servers'][$i]['password'] = 'cbb74bc'; // use here your password
|
||||||
|
$cfg['Servers'][$i]['auth_type'] = 'config';
|
||||||
|
?>
|
||||||
|
|
||||||
|
For a full explanation of possible configuration values, see the
|
||||||
|
:ref:`config` of this document.
|
||||||
|
|
||||||
|
.. index:: Setup script
|
||||||
|
|
||||||
|
.. _setup_script:
|
||||||
|
|
||||||
|
Using Setup script
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Instead of manually editing :file:`config.inc.php`, you can use the `Setup
|
||||||
|
Script <setup/>`_. First you must manually create a folder ``config``
|
||||||
|
in the phpMyAdmin directory. This is a security measure. On a
|
||||||
|
Linux/Unix system you can use the following commands:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
|
||||||
|
cd phpMyAdmin
|
||||||
|
mkdir config # create directory for saving
|
||||||
|
chmod o+rw config # give it world writable permissions
|
||||||
|
|
||||||
|
And to edit an existing configuration, copy it over first:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
|
||||||
|
cp config.inc.php config/ # copy current configuration for editing
|
||||||
|
chmod o+w config/config.inc.php # give it world writable permissions
|
||||||
|
|
||||||
|
On other platforms, simply create the folder and ensure that your web
|
||||||
|
server has read and write access to it. :ref:`faq1_26` can help with
|
||||||
|
this.
|
||||||
|
|
||||||
|
Next, open ``setup/`` in your browser. If you have an existing configuration,
|
||||||
|
use the ``Load`` button to bring its content inside the setup panel.
|
||||||
|
Note that **changes are not saved to disk until explicitly choose ``Save``**
|
||||||
|
from the *Configuration* area of the screen. Normally the script saves the new
|
||||||
|
:file:`config.inc.php` to the ``config/`` directory, but if the webserver does
|
||||||
|
not have the proper permissions you may see the error "Cannot load or
|
||||||
|
save configuration." Ensure that the ``config/`` directory exists and
|
||||||
|
has the proper permissions - or use the ``Download`` link to save the
|
||||||
|
config file locally and upload it (via FTP or some similar means) to the
|
||||||
|
proper location.
|
||||||
|
|
||||||
|
Once the file has been saved, it must be moved out of the ``config/``
|
||||||
|
directory and the permissions must be reset, again as a security
|
||||||
|
measure:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
|
||||||
|
mv config/config.inc.php . # move file to current directory
|
||||||
|
chmod o-rw config.inc.php # remove world read and write permissions
|
||||||
|
rm -rf config # remove not needed directory
|
||||||
|
|
||||||
|
Now the file is ready to be used. You can choose to review or edit the
|
||||||
|
file with your favorite editor, if you prefer to set some advanced
|
||||||
|
options which the setup script does not provide.
|
||||||
|
|
||||||
|
#. If you are using the ``auth_type`` "config", it is suggested that you
|
||||||
|
protect the phpMyAdmin installation directory because using config
|
||||||
|
does not require a user to enter a password to access the phpMyAdmin
|
||||||
|
installation. Use of an alternate authentication method is
|
||||||
|
recommended, for example with HTTP–AUTH in a :term:`.htaccess` file or switch to using
|
||||||
|
``auth_type`` cookie or http. See the :ref:`faqmultiuser`
|
||||||
|
for additional information, especially :ref:`faq4_4`.
|
||||||
|
#. Open the `main phpMyAdmin directory <index.php>`_ in your browser.
|
||||||
|
phpMyAdmin should now display a welcome screen and your databases, or
|
||||||
|
a login dialog if using :term:`HTTP` or
|
||||||
|
cookie authentication mode.
|
||||||
|
#. You should deny access to the ``./libraries`` and ``./setup/lib``
|
||||||
|
subfolders in your webserver configuration. For Apache you can use
|
||||||
|
supplied :term:`.htaccess` file in that folder, for other webservers, you should
|
||||||
|
configure this yourself. Such configuration prevents from possible
|
||||||
|
path exposure and cross side scripting vulnerabilities that might
|
||||||
|
happen to be found in that code.
|
||||||
|
#. It is generally good idea to protect public phpMyAdmin installation
|
||||||
|
against access by robots as they usually can not do anything good
|
||||||
|
there. You can do this using ``robots.txt`` file in root of your
|
||||||
|
webserver or limit access by web server configuration, see
|
||||||
|
:ref:`faq1_42`.
|
||||||
|
|
||||||
|
.. index::
|
||||||
|
single: Configuration storage
|
||||||
|
single: phpMyAdmin configuration storage
|
||||||
|
single: pmadb
|
||||||
|
|
||||||
|
.. _linked-tables:
|
||||||
|
|
||||||
|
phpMyAdmin configuration storage
|
||||||
|
++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
For a whole set of new features (bookmarks, comments, :term:`SQL`-history,
|
||||||
|
tracking mechanism, :term:`PDF`-generation, column contents transformation,
|
||||||
|
etc.) you need to create a set of special tables. Those tables can be located
|
||||||
|
in your own database, or in a central database for a multi-user installation
|
||||||
|
(this database would then be accessed by the controluser, so no other user
|
||||||
|
should have rights to it).
|
||||||
|
|
||||||
|
Please look at your ``./examples/`` directory, where you should find a
|
||||||
|
file called *create\_tables.sql*. (If you are using a Windows server,
|
||||||
|
pay special attention to :ref:`faq1_23`).
|
||||||
|
|
||||||
|
If you already had this infrastructure and upgraded to MySQL 4.1.2 or
|
||||||
|
newer, please use :file:`examples/upgrade_tables_mysql_4_1_2+.sql`
|
||||||
|
and then create new tables by importing
|
||||||
|
:file:`examples/create_tables.sql`.
|
||||||
|
|
||||||
|
You can use your phpMyAdmin to create the tables for you. Please be
|
||||||
|
aware that you may need special (administrator) privileges to create
|
||||||
|
the database and tables, and that the script may need some tuning,
|
||||||
|
depending on the database name.
|
||||||
|
|
||||||
|
After having imported the :file:`examples/create_tables.sql` file, you
|
||||||
|
should specify the table names in your :file:`config.inc.php` file. The
|
||||||
|
directives used for that can be found in the :ref:`config`. You will also need to
|
||||||
|
have a controluser with the proper rights to those tables (see section
|
||||||
|
:ref:`authentication_modes` below).
|
||||||
|
|
||||||
|
.. _upgrading:
|
||||||
|
|
||||||
|
Upgrading from an older version
|
||||||
|
+++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
Simply copy :file:`config.inc.php` from your previous installation into
|
||||||
|
the newly unpacked one. Configuration files from old versions may
|
||||||
|
require some tweaking as some options have been changed or removed.
|
||||||
|
For compatibility with PHP 6, remove a
|
||||||
|
``set_magic_quotes_runtime(0);`` statement that you might find near
|
||||||
|
the end of your configuration file.
|
||||||
|
|
||||||
|
You should **not** copy :file:`libraries/config.default.php` over
|
||||||
|
:file:`config.inc.php` because the default configuration file is version-
|
||||||
|
specific.
|
||||||
|
|
||||||
|
If you have upgraded your MySQL server from a version previous to 4.1.2 to
|
||||||
|
version 5.x or newer and if you use the phpMyAdmin configuration storage, you
|
||||||
|
should run the :term:`SQL` script found in
|
||||||
|
:file:`examples/upgrade_tables_mysql_4_1_2+.sql`.
|
||||||
|
|
||||||
|
.. index:: Authentication mode
|
||||||
|
|
||||||
|
.. _authentication_modes:
|
||||||
|
|
||||||
|
Using authentication modes
|
||||||
|
++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
:term:`HTTP` and cookie authentication modes are recommended in a **multi-user
|
||||||
|
environment** where you want to give users access to their own database and
|
||||||
|
don't want them to play around with others. Nevertheless be aware that MS
|
||||||
|
Internet Explorer seems to be really buggy about cookies, at least till version
|
||||||
|
6. Even in a **single-user environment**, you might prefer to use :term:`HTTP`
|
||||||
|
or cookie mode so that your user/password pair are not in clear in the
|
||||||
|
configuration file.
|
||||||
|
|
||||||
|
:term:`HTTP` and cookie authentication
|
||||||
|
modes are more secure: the MySQL login information does not need to be
|
||||||
|
set in the phpMyAdmin configuration file (except possibly for the
|
||||||
|
:config:option:`$cfg['Servers'][$i]['controluser']`).
|
||||||
|
However, keep in mind that the password travels in plain text, unless
|
||||||
|
you are using the HTTPS protocol. In cookie mode, the password is
|
||||||
|
stored, encrypted with the blowfish algorithm, in a temporary cookie.
|
||||||
|
|
||||||
|
.. note:
|
||||||
|
|
||||||
|
This section is only applicable if your MySQL server is running
|
||||||
|
with ``--skip-show-database``.
|
||||||
|
|
||||||
|
For ':term:`HTTP`' and 'cookie' modes, phpMyAdmin needs a controluser that has
|
||||||
|
**only** the ``SELECT`` privilege on the *`mysql`.`user` (all columns except
|
||||||
|
`Password`)*, *`mysql`.`db` (all columns)*, *`mysql`.`host` (all columns)* and
|
||||||
|
*`mysql`.`tables\_priv` (all columns except `Grantor` and `Timestamp`)* tables.
|
||||||
|
You must specify the details for the controluser in the :file:`config.inc.php`
|
||||||
|
file under the :config:option:`$cfg['Servers'][$i]['controluser']` and
|
||||||
|
:config:option:`$cfg['Servers'][$i]['controlpass']` settings. The following
|
||||||
|
example assumes you want to use ``pma`` as the controluser and ``pmapass`` as
|
||||||
|
the controlpass, but **this is only an example: use something else in your
|
||||||
|
file!** Input these statements from the phpMyAdmin :term:`SQL` Query window or
|
||||||
|
mysql command–line client. Of course you have to replace ``localhost`` with the
|
||||||
|
webserver's host if it's not the same as the MySQL server's one.
|
||||||
|
|
||||||
|
.. code-block:: mysql
|
||||||
|
|
||||||
|
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
|
||||||
|
GRANT SELECT (
|
||||||
|
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
|
||||||
|
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
|
||||||
|
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
|
||||||
|
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
|
||||||
|
Execute_priv, Repl_slave_priv, Repl_client_priv
|
||||||
|
) ON mysql.user TO 'pma'@'localhost';
|
||||||
|
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
|
||||||
|
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
|
||||||
|
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
|
||||||
|
ON mysql.tables_priv TO 'pma'@'localhost';
|
||||||
|
|
||||||
|
If you want to use the many new relation and bookmark features:
|
||||||
|
|
||||||
|
.. code-block:: mysql
|
||||||
|
|
||||||
|
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
|
||||||
|
|
||||||
|
(this of course requires that your :ref:`linked-tables` be set up).
|
||||||
|
|
||||||
|
Then each of the *true* users should be granted a set of privileges
|
||||||
|
on a set of particular databases. Normally you shouldn't give global
|
||||||
|
privileges to an ordinary user, unless you understand the impact of those
|
||||||
|
privileges (for example, you are creating a superuser).
|
||||||
|
For example, to grant the user *real_user* with all privileges on
|
||||||
|
the database *user_base*:
|
||||||
|
|
||||||
|
.. code-block:: mysql
|
||||||
|
|
||||||
|
GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';
|
||||||
|
|
||||||
|
|
||||||
|
What the user may now do is controlled entirely by the MySQL user management
|
||||||
|
system. With HTTP or cookie authentication mode, you don't need to fill the
|
||||||
|
user/password fields inside the :config:option:`$cfg['Servers']`.
|
||||||
|
|
||||||
|
.. index:: pair: HTTP; Authentication mode
|
||||||
|
|
||||||
|
HTTP authentication mode
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
* Uses :term:`HTTP` Basic authentication
|
||||||
|
method and allows you to log in as any valid MySQL user.
|
||||||
|
* Is supported with most PHP configurations. For :term:`IIS` (:term:`ISAPI`)
|
||||||
|
support using :term:`CGI` PHP see :ref:`faq1_32`, for using with Apache
|
||||||
|
:term:`CGI` see :ref:`faq1_35`.
|
||||||
|
* See also :ref:`faq4_4` about not using the :term:`.htaccess` mechanism along with
|
||||||
|
':term:`HTTP`' authentication mode.
|
||||||
|
|
||||||
|
.. index:: pair: Cookie; Authentication mode
|
||||||
|
|
||||||
|
.. _cookie:
|
||||||
|
|
||||||
|
Cookie authentication mode
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
* You can use this method as a replacement for the :term:`HTTP` authentication
|
||||||
|
(for example, if you're running :term:`IIS`).
|
||||||
|
* Obviously, the user must enable cookies in the browser, but this is
|
||||||
|
now a requirement for all authentication modes.
|
||||||
|
* With this mode, the user can truly log out of phpMyAdmin and log in
|
||||||
|
back with the same username.
|
||||||
|
* If you want to log in to arbitrary server see :config:option:`$cfg['AllowArbitraryServer']` directive.
|
||||||
|
* As mentioned in the :ref:`require` section, having the ``mcrypt`` extension will
|
||||||
|
speed up access considerably, but is not required.
|
||||||
|
|
||||||
|
.. index:: pair: Signon; Authentication mode
|
||||||
|
|
||||||
|
Signon authentication mode
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
* This mode is a convenient way of using credentials from another
|
||||||
|
application to authenticate to phpMyAdmin.
|
||||||
|
* The other application has to store login information into session
|
||||||
|
data.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:config:option:`$cfg['Servers'][$i]['auth_type']`,
|
||||||
|
:config:option:`$cfg['Servers'][$i]['SignonSession']`,
|
||||||
|
:config:option:`$cfg['Servers'][$i]['SignonScript']`,
|
||||||
|
:config:option:`$cfg['Servers'][$i]['SignonURL']`
|
||||||
|
|
||||||
|
|
||||||
|
.. index:: pair: Config; Authentication mode
|
||||||
|
|
||||||
|
Config authentication mode
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
* This mode is the less secure one because it requires you to fill the
|
||||||
|
:config:option:`$cfg['Servers'][$i]['user']` and
|
||||||
|
:config:option:`$cfg['Servers'][$i]['password']`
|
||||||
|
fields (and as a result, anyone who can read your :file:`config.inc.php`
|
||||||
|
can discover your username and password). But you don't need to setup
|
||||||
|
a "controluser" here: using the :config:option:`$cfg['Servers'][$i]['only_db']` might be enough.
|
||||||
|
* In the :ref:`faqmultiuser` section, there is an entry explaining how
|
||||||
|
to protect your configuration file.
|
||||||
|
* For additional security in this mode, you may wish to consider the
|
||||||
|
Host authentication :config:option:`$cfg['Servers'][$i]['AllowDeny']['order']`
|
||||||
|
and :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` configuration directives.
|
||||||
|
* Unlike cookie and http, does not require a user to log in when first
|
||||||
|
loading the phpMyAdmin site. This is by design but could allow any
|
||||||
|
user to access your installation. Use of some restriction method is
|
||||||
|
suggested, perhaps a :term:`.htaccess` file with the HTTP-AUTH directive or disallowing
|
||||||
|
incoming HTTP requests at one’s router or firewall will suffice (both
|
||||||
|
of which are beyond the scope of this manual but easily searchable
|
||||||
|
with Google).
|
||||||
|
|
||||||
|
.. index:: pair: Swekey; Authentication mode
|
||||||
|
|
||||||
|
.. _swekey:
|
||||||
|
|
||||||
|
Swekey authentication mode
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
The Swekey is a low cost authentication USB key that can be used in
|
||||||
|
web applications. When Swekey authentication is activated, phpMyAdmin
|
||||||
|
requires the users's Swekey to be plugged before entering the login
|
||||||
|
page (currently supported for cookie authentication mode only). Swekey
|
||||||
|
Authentication is disabled by default. To enable it, add the following
|
||||||
|
line to :file:`config.inc.php`:
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
$cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey.conf';
|
||||||
|
|
||||||
|
You then have to create the ``swekey.conf`` file that will associate
|
||||||
|
each user with their Swekey Id. It is important to place this file
|
||||||
|
outside of your web server's document root (in the example, it is
|
||||||
|
located in ``/etc``). A self documented sample file is provided in the
|
||||||
|
``examples`` directory. Feel free to use it with your own users'
|
||||||
|
information. If you want to purchase a Swekey please visit
|
||||||
|
`http://phpmyadmin.net/auth\_key <http://phpmyadmin.net/auth_key>`_
|
||||||
|
since this link provides funding for phpMyAdmin.
|
||||||
|
|
||||||
|
.. seealso:: :config:option:`$cfg['Servers'][$i]['auth_swekey_config']`
|
||||||
|
|
||||||
|
|
||||||
|
Securing your phpMyAdmin installation
|
||||||
|
+++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
The phpMyAdmin team tries hardly to make the application secure, however there
|
||||||
|
are always ways to make your installation more secure:
|
||||||
|
|
||||||
|
* remove ``setup`` directory from phpMyAdmin, you will probably not
|
||||||
|
use it after initial setup
|
||||||
|
* properly choose authentication method - :ref:`cookie`
|
||||||
|
is probably the best choice for shared hosting
|
||||||
|
* in case you don't want all MySQL users to be able to access
|
||||||
|
phpMyAdmin, you can use :config:option:`$cfg['Servers'][$i]['AllowDeny']['rules']` to limit them
|
||||||
|
* consider hiding phpMyAdmin behind authentication proxy, so that
|
||||||
|
MySQL credentials are not all users need to login
|
||||||
|
* if you are afraid of automated attacks, enabling Captcha by
|
||||||
|
:config:option:`$cfg['CaptchaLoginPublicKey']` and
|
||||||
|
:config:option:`$cfg['CaptchaLoginPrivateKey']` might be an option.
|
138
sources/doc/html/_sources/transformations.txt
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
.. _transformations:
|
||||||
|
|
||||||
|
Transformations
|
||||||
|
===============
|
||||||
|
|
||||||
|
.. _transformationsintro:
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
++++++++++++
|
||||||
|
|
||||||
|
To enable transformations, you have to setup the ``column_info``
|
||||||
|
table and the proper directives. Please see the :ref:`config` on how to do so.
|
||||||
|
|
||||||
|
You can apply different transformations to the contents of each
|
||||||
|
column. The transformation will take the content of each column and
|
||||||
|
transform it with certain rules defined in the selected
|
||||||
|
transformation.
|
||||||
|
|
||||||
|
Say you have a column 'filename' which contains a filename. Normally
|
||||||
|
you would see in phpMyAdmin only this filename. Using transformations
|
||||||
|
you can transform that filename into a HTML link, so you can click
|
||||||
|
inside of the phpMyAdmin structure on the column's link and will see
|
||||||
|
the file displayed in a new browser window. Using transformation
|
||||||
|
options you can also specify strings to append/prepend to a string or
|
||||||
|
the format you want the output stored in.
|
||||||
|
|
||||||
|
For a general overview of all available transformations and their
|
||||||
|
options, you can consult your *<www.your-host.com>/<your-install-
|
||||||
|
dir>/transformation\_overview.php* installation.
|
||||||
|
|
||||||
|
For a tutorial on how to effectively use transformations, see our
|
||||||
|
`Link section <http://www.phpmyadmin.net/home_page/docs.php>`_ on the
|
||||||
|
official phpMyAdmin homepage.
|
||||||
|
|
||||||
|
.. _transformationshowto:
|
||||||
|
|
||||||
|
Usage
|
||||||
|
+++++
|
||||||
|
|
||||||
|
Go to your *tbl\_structure.php* page (i.e. reached through clicking on
|
||||||
|
the 'Structure' link for a table). There click on "Change" (or change
|
||||||
|
icon) and there you will see three new fields at the end of the line.
|
||||||
|
They are called 'MIME-type', 'Browser transformation' and
|
||||||
|
'Transformation options'.
|
||||||
|
|
||||||
|
* The field 'MIME-type' is a drop-down field. Select the MIME-type that
|
||||||
|
corresponds to the column's contents. Please note that transformations
|
||||||
|
are inactive as long as no MIME-type is selected.
|
||||||
|
* The field 'Browser transformation' is a drop-down field. You can
|
||||||
|
choose from a hopefully growing amount of pre-defined transformations.
|
||||||
|
See below for information on how to build your own transformation.
|
||||||
|
There are global transformations and mimetype-bound transformations.
|
||||||
|
Global transformations can be used for any mimetype. They will take
|
||||||
|
the mimetype, if necessary, into regard. Mimetype-bound
|
||||||
|
transformations usually only operate on a certain mimetype. There are
|
||||||
|
transformations which operate on the main mimetype (like 'image'),
|
||||||
|
which will most likely take the subtype into regard, and those who
|
||||||
|
only operate on a specific subtype (like 'image/jpeg'). You can use
|
||||||
|
transformations on mimetypes for which the function was not defined
|
||||||
|
for. There is no security check for you selected the right
|
||||||
|
transformation, so take care of what the output will be like.
|
||||||
|
* The field 'Transformation options' is a free-type textfield. You have
|
||||||
|
to enter transform-function specific options here. Usually the
|
||||||
|
transforms can operate with default options, but it is generally a
|
||||||
|
good idea to look up the overview to see which options are necessary.
|
||||||
|
Much like the ENUM/SET-Fields, you have to split up several options
|
||||||
|
using the format 'a','b','c',...(NOTE THE MISSING BLANKS). This is
|
||||||
|
because internally the options will be parsed as an array, leaving the
|
||||||
|
first value the first element in the array, and so forth. If you want
|
||||||
|
to specify a MIME character set you can define it in the
|
||||||
|
transformation\_options. You have to put that outside of the pre-
|
||||||
|
defined options of the specific mime-transform, as the last value of
|
||||||
|
the set. Use the format "'; charset=XXX'". If you use a transform, for
|
||||||
|
which you can specify 2 options and you want to append a character
|
||||||
|
set, enter "'first parameter','second parameter','charset=us-ascii'".
|
||||||
|
You can, however use the defaults for the parameters: "'','','charset
|
||||||
|
=us-ascii'".
|
||||||
|
|
||||||
|
.. _transformationsfiles:
|
||||||
|
|
||||||
|
File structure
|
||||||
|
++++++++++++++
|
||||||
|
|
||||||
|
All specific transformations for mimetypes are defined through class
|
||||||
|
files in the directory 'libraries/plugins/transformations/'. Each of
|
||||||
|
them extends a certain transformation abstract class declared in
|
||||||
|
libraries/plugins/transformations/abstract.
|
||||||
|
|
||||||
|
They are stored in files to ease up customization and easy adding of
|
||||||
|
new transformations.
|
||||||
|
|
||||||
|
Because the user cannot enter own mimetypes, it is kept sure that
|
||||||
|
transformations always work. It makes no sense to apply a
|
||||||
|
transformation to a mimetype the transform-function doesn't know to
|
||||||
|
handle.
|
||||||
|
|
||||||
|
There is a file called '*transformations.lib.php*' that provides some
|
||||||
|
basic functions which can be included by any other transform function.
|
||||||
|
|
||||||
|
The file name convention is ``[Mimetype]_[Subtype]_[Transformation
|
||||||
|
Name].class.php``, while the abtract class that it extends has the
|
||||||
|
name ``[Transformation Name]TransformationsPlugin``. All of the
|
||||||
|
methods that have to be implemented by a transformations plug-in are:
|
||||||
|
|
||||||
|
#. getMIMEType() and getMIMESubtype() in the main class;
|
||||||
|
#. getName(), getInfo() and applyTransformation() in the abstract class
|
||||||
|
it extends.
|
||||||
|
|
||||||
|
The getMIMEType(), getMIMESubtype() and getName() methods return the
|
||||||
|
name of the MIME type, MIME Subtype and transformation accordingly.
|
||||||
|
getInfo() returns the transformation's description and possible
|
||||||
|
options it may receive and applyTransformation() is the method that
|
||||||
|
does the actual work of the transformation plug-in.
|
||||||
|
|
||||||
|
Please see the libraries/plugins/transformations/TEMPLATE and
|
||||||
|
libraries/plugins/transformations/TEMPLATE\_ABSTRACT files for adding
|
||||||
|
your own transformation plug-in. You can also generate a new
|
||||||
|
transformation plug-in (with or without the abstract transformation
|
||||||
|
class), by using
|
||||||
|
:file:`libraries/plugins/transformations/generator_plugin.sh` or
|
||||||
|
:file:`libraries/plugins/transformations/generator_main_class.sh`.
|
||||||
|
|
||||||
|
The applyTransformation() method always gets passed three variables:
|
||||||
|
|
||||||
|
#. **$buffer** - Contains the text inside of the column. This is the
|
||||||
|
text, you want to transform.
|
||||||
|
#. **$options** - Contains any user-passed options to a transform
|
||||||
|
function as an array.
|
||||||
|
#. **$meta** - Contains an object with information about your column. The
|
||||||
|
data is drawn from the output of the `mysql\_fetch\_field()
|
||||||
|
<http://www.php.net/mysql_fetch_field>`_ function. This means, all
|
||||||
|
object properties described on the `manual page
|
||||||
|
<http://www.php.net/mysql_fetch_field>`_ are available in this
|
||||||
|
variable and can be used to transform a column accordingly to
|
||||||
|
unsigned/zerofill/not\_null/... properties. The $meta->mimetype
|
||||||
|
variable contains the original MIME-type of the column (i.e.
|
||||||
|
'text/plain', 'image/jpeg' etc.)
|
||||||
|
|
9
sources/doc/html/_sources/user.txt
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
User Guide
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
transformations
|
||||||
|
privileges
|
||||||
|
other
|
34
sources/doc/html/_sources/vendors.txt
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
Distributing and packaging phpMyAdmin
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
This document is intended to give advices to people who want to
|
||||||
|
redistribute phpMyAdmin inside other software package such as Linux
|
||||||
|
distribution or some all in one package including web server and MySQL
|
||||||
|
server.
|
||||||
|
|
||||||
|
Generally you can customize some basic aspects (paths to some files and
|
||||||
|
behavior) in :file:`libraries/vendor_config.php`.
|
||||||
|
|
||||||
|
For example if you want setup script to generate config file in var, change
|
||||||
|
``SETUP_CONFIG_FILE`` to :file:`/var/lib/phpmyadmin/config.inc.php` and you
|
||||||
|
will also probably want to skip directory writable check, so set
|
||||||
|
``SETUP_DIR_WRITABLE`` to false.
|
||||||
|
|
||||||
|
External libraries
|
||||||
|
------------------
|
||||||
|
|
||||||
|
phpMyAdmin includes several external libraries, you might want to
|
||||||
|
replace them with system ones if they are available, but please note
|
||||||
|
that you should test whether version you provide is compatible with the
|
||||||
|
one we ship.
|
||||||
|
|
||||||
|
Currently known list of external libraries:
|
||||||
|
|
||||||
|
js/jquery
|
||||||
|
jQuery js framework and various jQuery based libraries.
|
||||||
|
|
||||||
|
libraries/php-gettext
|
||||||
|
php-gettext library
|
||||||
|
libraries/tcpdf
|
||||||
|
tcpdf library, stripped down of not needed files
|
||||||
|
|
BIN
sources/doc/html/_static/ajax-loader.gif
Normal file
After Width: | Height: | Size: 673 B |
540
sources/doc/html/_static/basic.css
Normal file
|
@ -0,0 +1,540 @@
|
||||||
|
/*
|
||||||
|
* basic.css
|
||||||
|
* ~~~~~~~~~
|
||||||
|
*
|
||||||
|
* Sphinx stylesheet -- basic theme.
|
||||||
|
*
|
||||||
|
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||||
|
* :license: BSD, see LICENSE for details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* -- main layout ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.clearer {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- relbar ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.related {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related h3 {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 0 0 10px;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related li {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related li.right {
|
||||||
|
float: right;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- sidebar --------------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.sphinxsidebarwrapper {
|
||||||
|
padding: 10px 5px 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar {
|
||||||
|
float: left;
|
||||||
|
width: 230px;
|
||||||
|
margin-left: -100%;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar ul ul,
|
||||||
|
div.sphinxsidebar ul.want-points {
|
||||||
|
margin-left: 20px;
|
||||||
|
list-style: square;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar ul ul {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar form {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar input {
|
||||||
|
border: 1px solid #98dbcc;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar #searchbox input[type="text"] {
|
||||||
|
width: 170px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- search page ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
ul.search {
|
||||||
|
margin: 10px 0 0 20px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.search li {
|
||||||
|
padding: 5px 0 5px 20px;
|
||||||
|
background-image: url(file.png);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 0 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.search li a {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.search li div.context {
|
||||||
|
color: #888;
|
||||||
|
margin: 2px 0 0 30px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.keywordmatches li.goodmatch a {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- index page ------------------------------------------------------------ */
|
||||||
|
|
||||||
|
table.contentstable {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.contentstable p.biglink {
|
||||||
|
line-height: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.biglink {
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.linkdescr {
|
||||||
|
font-style: italic;
|
||||||
|
padding-top: 5px;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- general index --------------------------------------------------------- */
|
||||||
|
|
||||||
|
table.indextable {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.indextable td {
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.indextable dl, table.indextable dd {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.indextable tr.pcap {
|
||||||
|
height: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.indextable tr.cap {
|
||||||
|
margin-top: 10px;
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.toggler {
|
||||||
|
margin-right: 3px;
|
||||||
|
margin-top: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.modindex-jumpbox {
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
margin: 1em 0 1em 0;
|
||||||
|
padding: 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.genindex-jumpbox {
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
margin: 1em 0 1em 0;
|
||||||
|
padding: 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- general body styles --------------------------------------------------- */
|
||||||
|
|
||||||
|
a.headerlink {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1:hover > a.headerlink,
|
||||||
|
h2:hover > a.headerlink,
|
||||||
|
h3:hover > a.headerlink,
|
||||||
|
h4:hover > a.headerlink,
|
||||||
|
h5:hover > a.headerlink,
|
||||||
|
h6:hover > a.headerlink,
|
||||||
|
dt:hover > a.headerlink {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body p.caption {
|
||||||
|
text-align: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body td {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-list ul {
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.rubric {
|
||||||
|
margin-top: 30px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.align-left, .figure.align-left, object.align-left {
|
||||||
|
clear: left;
|
||||||
|
float: left;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.align-right, .figure.align-right, object.align-right {
|
||||||
|
clear: right;
|
||||||
|
float: right;
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.align-center, .figure.align-center, object.align-center {
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.align-left {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.align-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.align-right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- sidebars -------------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.sidebar {
|
||||||
|
margin: 0 0 0.5em 1em;
|
||||||
|
border: 1px solid #ddb;
|
||||||
|
padding: 7px 7px 0 7px;
|
||||||
|
background-color: #ffe;
|
||||||
|
width: 40%;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.sidebar-title {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- topics ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.topic {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
padding: 7px 7px 0 7px;
|
||||||
|
margin: 10px 0 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.topic-title {
|
||||||
|
font-size: 1.1em;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- admonitions ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.admonition {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition dt {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition dl {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.admonition-title {
|
||||||
|
margin: 0px 10px 5px 0px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body p.centered {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- tables ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
table.docutils {
|
||||||
|
border: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.docutils td, table.docutils th {
|
||||||
|
padding: 1px 8px 1px 5px;
|
||||||
|
border-top: 0;
|
||||||
|
border-left: 0;
|
||||||
|
border-right: 0;
|
||||||
|
border-bottom: 1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.field-list td, table.field-list th {
|
||||||
|
border: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.footnote td, table.footnote th {
|
||||||
|
border: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.citation {
|
||||||
|
border-left: solid 1px gray;
|
||||||
|
margin-left: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.citation td {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- other body styles ----------------------------------------------------- */
|
||||||
|
|
||||||
|
ol.arabic {
|
||||||
|
list-style: decimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol.loweralpha {
|
||||||
|
list-style: lower-alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol.upperalpha {
|
||||||
|
list-style: upper-alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol.lowerroman {
|
||||||
|
list-style: lower-roman;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol.upperroman {
|
||||||
|
list-style: upper-roman;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd p {
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd ul, dd table {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd {
|
||||||
|
margin-top: 3px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt:target, .highlighted {
|
||||||
|
background-color: #fbe54e;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl.glossary dt {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-list ul {
|
||||||
|
margin: 0;
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-list p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.refcount {
|
||||||
|
color: #060;
|
||||||
|
}
|
||||||
|
|
||||||
|
.optional {
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.versionmodified {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.system-message {
|
||||||
|
background-color: #fda;
|
||||||
|
padding: 5px;
|
||||||
|
border: 3px solid red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnote:target {
|
||||||
|
background-color: #ffa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-block {
|
||||||
|
display: block;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-block .line-block {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilabel, .menuselection {
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accelerator {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.classifier {
|
||||||
|
font-style: oblique;
|
||||||
|
}
|
||||||
|
|
||||||
|
abbr, acronym {
|
||||||
|
border-bottom: dotted 1px;
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- code displays --------------------------------------------------------- */
|
||||||
|
|
||||||
|
pre {
|
||||||
|
overflow: auto;
|
||||||
|
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||||
|
}
|
||||||
|
|
||||||
|
td.linenos pre {
|
||||||
|
padding: 5px 0px;
|
||||||
|
border: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.highlighttable {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.highlighttable td {
|
||||||
|
padding: 0 0.5em 0 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
tt.descname {
|
||||||
|
background-color: transparent;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
tt.descclassname {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
tt.xref, a tt {
|
||||||
|
background-color: transparent;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewcode-link {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewcode-back {
|
||||||
|
float: right;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.viewcode-block:target {
|
||||||
|
margin: -1px -10px;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- math display ---------------------------------------------------------- */
|
||||||
|
|
||||||
|
img.math {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body div.math p {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.eqno {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- printout stylesheet --------------------------------------------------- */
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
div.document,
|
||||||
|
div.documentwrapper,
|
||||||
|
div.bodywrapper {
|
||||||
|
margin: 0 !important;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar,
|
||||||
|
div.related,
|
||||||
|
div.footer,
|
||||||
|
#top-link {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
BIN
sources/doc/html/_static/comment-bright.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
sources/doc/html/_static/comment-close.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
sources/doc/html/_static/comment.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
256
sources/doc/html/_static/default.css
Normal file
|
@ -0,0 +1,256 @@
|
||||||
|
/*
|
||||||
|
* default.css_t
|
||||||
|
* ~~~~~~~~~~~~~
|
||||||
|
*
|
||||||
|
* Sphinx stylesheet -- default theme.
|
||||||
|
*
|
||||||
|
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||||
|
* :license: BSD, see LICENSE for details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import url("basic.css");
|
||||||
|
|
||||||
|
/* -- page layout ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 100%;
|
||||||
|
background-color: #11303d;
|
||||||
|
color: #000;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.document {
|
||||||
|
background-color: #1c4e63;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.documentwrapper {
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.bodywrapper {
|
||||||
|
margin: 0 0 0 230px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
padding: 0 20px 30px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer {
|
||||||
|
color: #ffffff;
|
||||||
|
width: 100%;
|
||||||
|
padding: 9px 0 9px 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer a {
|
||||||
|
color: #ffffff;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related {
|
||||||
|
background-color: #133f52;
|
||||||
|
line-height: 30px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar {
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h3 {
|
||||||
|
font-family: 'Trebuchet MS', sans-serif;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 1.4em;
|
||||||
|
font-weight: normal;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h3 a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h4 {
|
||||||
|
font-family: 'Trebuchet MS', sans-serif;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 1.3em;
|
||||||
|
font-weight: normal;
|
||||||
|
margin: 5px 0 0 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar p {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar p.topless {
|
||||||
|
margin: 5px 10px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar ul {
|
||||||
|
margin: 10px;
|
||||||
|
padding: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar a {
|
||||||
|
color: #98dbcc;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar input {
|
||||||
|
border: 1px solid #98dbcc;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -- hyperlink styles ------------------------------------------------------ */
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #355f7c;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #355f7c;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -- body styles ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.body h1,
|
||||||
|
div.body h2,
|
||||||
|
div.body h3,
|
||||||
|
div.body h4,
|
||||||
|
div.body h5,
|
||||||
|
div.body h6 {
|
||||||
|
font-family: 'Trebuchet MS', sans-serif;
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #20435c;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
margin: 20px -20px 10px -20px;
|
||||||
|
padding: 3px 0 3px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body h1 { margin-top: 0; font-size: 200%; }
|
||||||
|
div.body h2 { font-size: 160%; }
|
||||||
|
div.body h3 { font-size: 140%; }
|
||||||
|
div.body h4 { font-size: 120%; }
|
||||||
|
div.body h5 { font-size: 110%; }
|
||||||
|
div.body h6 { font-size: 100%; }
|
||||||
|
|
||||||
|
a.headerlink {
|
||||||
|
color: #c60f0f;
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding: 0 4px 0 4px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.headerlink:hover {
|
||||||
|
background-color: #c60f0f;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body p, div.body dd, div.body li {
|
||||||
|
text-align: justify;
|
||||||
|
line-height: 130%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition p.admonition-title + p {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition p {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition pre {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition ul, div.admonition ol {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.note {
|
||||||
|
background-color: #eee;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.seealso {
|
||||||
|
background-color: #ffc;
|
||||||
|
border: 1px solid #ff6;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.topic {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.warning {
|
||||||
|
background-color: #ffe4e4;
|
||||||
|
border: 1px solid #f66;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.admonition-title {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.admonition-title:after {
|
||||||
|
content: ":";
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding: 5px;
|
||||||
|
background-color: #eeffcc;
|
||||||
|
color: #333333;
|
||||||
|
line-height: 120%;
|
||||||
|
border: 1px solid #ac9;
|
||||||
|
border-left: none;
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
tt {
|
||||||
|
background-color: #ecf0f3;
|
||||||
|
padding: 0 1px 0 1px;
|
||||||
|
font-size: 0.95em;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
background-color: #ede;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning tt {
|
||||||
|
background: #efc2c2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note tt {
|
||||||
|
background: #d6d6d6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewcode-back {
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.viewcode-block:target {
|
||||||
|
background-color: #f4debf;
|
||||||
|
border-top: 1px solid #ac9;
|
||||||
|
border-bottom: 1px solid #ac9;
|
||||||
|
}
|
247
sources/doc/html/_static/doctools.js
Normal file
|
@ -0,0 +1,247 @@
|
||||||
|
/*
|
||||||
|
* doctools.js
|
||||||
|
* ~~~~~~~~~~~
|
||||||
|
*
|
||||||
|
* Sphinx JavaScript utilities for all documentation.
|
||||||
|
*
|
||||||
|
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||||
|
* :license: BSD, see LICENSE for details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* select a different prefix for underscore
|
||||||
|
*/
|
||||||
|
$u = _.noConflict();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* make the code below compatible with browsers without
|
||||||
|
* an installed firebug like debugger
|
||||||
|
if (!window.console || !console.firebug) {
|
||||||
|
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
|
||||||
|
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
|
||||||
|
"profile", "profileEnd"];
|
||||||
|
window.console = {};
|
||||||
|
for (var i = 0; i < names.length; ++i)
|
||||||
|
window.console[names[i]] = function() {};
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* small helper function to urldecode strings
|
||||||
|
*/
|
||||||
|
jQuery.urldecode = function(x) {
|
||||||
|
return decodeURIComponent(x).replace(/\+/g, ' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* small helper function to urlencode strings
|
||||||
|
*/
|
||||||
|
jQuery.urlencode = encodeURIComponent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function returns the parsed url parameters of the
|
||||||
|
* current request. Multiple values per key are supported,
|
||||||
|
* it will always return arrays of strings for the value parts.
|
||||||
|
*/
|
||||||
|
jQuery.getQueryParameters = function(s) {
|
||||||
|
if (typeof s == 'undefined')
|
||||||
|
s = document.location.search;
|
||||||
|
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
||||||
|
var result = {};
|
||||||
|
for (var i = 0; i < parts.length; i++) {
|
||||||
|
var tmp = parts[i].split('=', 2);
|
||||||
|
var key = jQuery.urldecode(tmp[0]);
|
||||||
|
var value = jQuery.urldecode(tmp[1]);
|
||||||
|
if (key in result)
|
||||||
|
result[key].push(value);
|
||||||
|
else
|
||||||
|
result[key] = [value];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* small function to check if an array contains
|
||||||
|
* a given item.
|
||||||
|
*/
|
||||||
|
jQuery.contains = function(arr, item) {
|
||||||
|
for (var i = 0; i < arr.length; i++) {
|
||||||
|
if (arr[i] == item)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* highlight a given string on a jquery object by wrapping it in
|
||||||
|
* span elements with the given class name.
|
||||||
|
*/
|
||||||
|
jQuery.fn.highlightText = function(text, className) {
|
||||||
|
function highlight(node) {
|
||||||
|
if (node.nodeType == 3) {
|
||||||
|
var val = node.nodeValue;
|
||||||
|
var pos = val.toLowerCase().indexOf(text);
|
||||||
|
if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
|
||||||
|
var span = document.createElement("span");
|
||||||
|
span.className = className;
|
||||||
|
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||||
|
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
||||||
|
document.createTextNode(val.substr(pos + text.length)),
|
||||||
|
node.nextSibling));
|
||||||
|
node.nodeValue = val.substr(0, pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!jQuery(node).is("button, select, textarea")) {
|
||||||
|
jQuery.each(node.childNodes, function() {
|
||||||
|
highlight(this);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this.each(function() {
|
||||||
|
highlight(this);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Small JavaScript module for the documentation.
|
||||||
|
*/
|
||||||
|
var Documentation = {
|
||||||
|
|
||||||
|
init : function() {
|
||||||
|
this.fixFirefoxAnchorBug();
|
||||||
|
this.highlightSearchWords();
|
||||||
|
this.initIndexTable();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* i18n support
|
||||||
|
*/
|
||||||
|
TRANSLATIONS : {},
|
||||||
|
PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
|
||||||
|
LOCALE : 'unknown',
|
||||||
|
|
||||||
|
// gettext and ngettext don't access this so that the functions
|
||||||
|
// can safely bound to a different name (_ = Documentation.gettext)
|
||||||
|
gettext : function(string) {
|
||||||
|
var translated = Documentation.TRANSLATIONS[string];
|
||||||
|
if (typeof translated == 'undefined')
|
||||||
|
return string;
|
||||||
|
return (typeof translated == 'string') ? translated : translated[0];
|
||||||
|
},
|
||||||
|
|
||||||
|
ngettext : function(singular, plural, n) {
|
||||||
|
var translated = Documentation.TRANSLATIONS[singular];
|
||||||
|
if (typeof translated == 'undefined')
|
||||||
|
return (n == 1) ? singular : plural;
|
||||||
|
return translated[Documentation.PLURALEXPR(n)];
|
||||||
|
},
|
||||||
|
|
||||||
|
addTranslations : function(catalog) {
|
||||||
|
for (var key in catalog.messages)
|
||||||
|
this.TRANSLATIONS[key] = catalog.messages[key];
|
||||||
|
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
|
||||||
|
this.LOCALE = catalog.locale;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add context elements like header anchor links
|
||||||
|
*/
|
||||||
|
addContextElements : function() {
|
||||||
|
$('div[id] > :header:first').each(function() {
|
||||||
|
$('<a class="headerlink">\u00B6</a>').
|
||||||
|
attr('href', '#' + this.id).
|
||||||
|
attr('title', _('Permalink to this headline')).
|
||||||
|
appendTo(this);
|
||||||
|
});
|
||||||
|
$('dt[id]').each(function() {
|
||||||
|
$('<a class="headerlink">\u00B6</a>').
|
||||||
|
attr('href', '#' + this.id).
|
||||||
|
attr('title', _('Permalink to this definition')).
|
||||||
|
appendTo(this);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* workaround a firefox stupidity
|
||||||
|
*/
|
||||||
|
fixFirefoxAnchorBug : function() {
|
||||||
|
if (document.location.hash && $.browser.mozilla)
|
||||||
|
window.setTimeout(function() {
|
||||||
|
document.location.href += '';
|
||||||
|
}, 10);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* highlight the search words provided in the url in the text
|
||||||
|
*/
|
||||||
|
highlightSearchWords : function() {
|
||||||
|
var params = $.getQueryParameters();
|
||||||
|
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
||||||
|
if (terms.length) {
|
||||||
|
var body = $('div.body');
|
||||||
|
window.setTimeout(function() {
|
||||||
|
$.each(terms, function() {
|
||||||
|
body.highlightText(this.toLowerCase(), 'highlighted');
|
||||||
|
});
|
||||||
|
}, 10);
|
||||||
|
$('<p class="highlight-link"><a href="javascript:Documentation.' +
|
||||||
|
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
|
||||||
|
.appendTo($('#searchbox'));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* init the domain index toggle buttons
|
||||||
|
*/
|
||||||
|
initIndexTable : function() {
|
||||||
|
var togglers = $('img.toggler').click(function() {
|
||||||
|
var src = $(this).attr('src');
|
||||||
|
var idnum = $(this).attr('id').substr(7);
|
||||||
|
$('tr.cg-' + idnum).toggle();
|
||||||
|
if (src.substr(-9) == 'minus.png')
|
||||||
|
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
||||||
|
else
|
||||||
|
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
||||||
|
}).css('display', '');
|
||||||
|
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
|
||||||
|
togglers.click();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* helper function to hide the search marks again
|
||||||
|
*/
|
||||||
|
hideSearchWords : function() {
|
||||||
|
$('#searchbox .highlight-link').fadeOut(300);
|
||||||
|
$('span.highlighted').removeClass('highlighted');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* make the url absolute
|
||||||
|
*/
|
||||||
|
makeURL : function(relativeURL) {
|
||||||
|
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the current relative url
|
||||||
|
*/
|
||||||
|
getCurrentURL : function() {
|
||||||
|
var path = document.location.pathname;
|
||||||
|
var parts = path.split(/\//);
|
||||||
|
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
|
||||||
|
if (this == '..')
|
||||||
|
parts.pop();
|
||||||
|
});
|
||||||
|
var url = parts.join('/');
|
||||||
|
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// quick alias for translations
|
||||||
|
_ = Documentation.gettext;
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
Documentation.init();
|
||||||
|
});
|
BIN
sources/doc/html/_static/down-pressed.png
Normal file
After Width: | Height: | Size: 368 B |
BIN
sources/doc/html/_static/down.png
Normal file
After Width: | Height: | Size: 363 B |
BIN
sources/doc/html/_static/file.png
Normal file
After Width: | Height: | Size: 392 B |
154
sources/doc/html/_static/jquery.js
vendored
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
/*!
|
||||||
|
* jQuery JavaScript Library v1.4.2
|
||||||
|
* http://jquery.com/
|
||||||
|
*
|
||||||
|
* Copyright 2010, John Resig
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* Includes Sizzle.js
|
||||||
|
* http://sizzlejs.com/
|
||||||
|
* Copyright 2010, The Dojo Foundation
|
||||||
|
* Released under the MIT, BSD, and GPL Licenses.
|
||||||
|
*
|
||||||
|
* Date: Sat Feb 13 22:33:48 2010 -0500
|
||||||
|
*/
|
||||||
|
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
|
||||||
|
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
|
||||||
|
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
|
||||||
|
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
|
||||||
|
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
|
||||||
|
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
|
||||||
|
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
|
||||||
|
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
|
||||||
|
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
|
||||||
|
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
|
||||||
|
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
|
||||||
|
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
|
||||||
|
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
|
||||||
|
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
|
||||||
|
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
|
||||||
|
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
|
||||||
|
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
|
||||||
|
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
|
||||||
|
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
|
||||||
|
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
|
||||||
|
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
|
||||||
|
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
|
||||||
|
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
|
||||||
|
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
|
||||||
|
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
|
||||||
|
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
|
||||||
|
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
|
||||||
|
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
|
||||||
|
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
|
||||||
|
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
|
||||||
|
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
|
||||||
|
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
|
||||||
|
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
|
||||||
|
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
|
||||||
|
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
|
||||||
|
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
|
||||||
|
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
|
||||||
|
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
|
||||||
|
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
|
||||||
|
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
|
||||||
|
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
|
||||||
|
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
|
||||||
|
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
|
||||||
|
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
|
||||||
|
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
|
||||||
|
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
|
||||||
|
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
|
||||||
|
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
|
||||||
|
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
|
||||||
|
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
|
||||||
|
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
|
||||||
|
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
|
||||||
|
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
|
||||||
|
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
|
||||||
|
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
||||||
|
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
|
||||||
|
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
|
||||||
|
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
|
||||||
|
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
|
||||||
|
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
|
||||||
|
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
|
||||||
|
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
|
||||||
|
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
|
||||||
|
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
|
||||||
|
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
|
||||||
|
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
|
||||||
|
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
|
||||||
|
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
|
||||||
|
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
|
||||||
|
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
|
||||||
|
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
|
||||||
|
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
|
||||||
|
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
|
||||||
|
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
|
||||||
|
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
|
||||||
|
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
|
||||||
|
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
|
||||||
|
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
|
||||||
|
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
|
||||||
|
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
|
||||||
|
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
|
||||||
|
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
|
||||||
|
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
|
||||||
|
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
|
||||||
|
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
|
||||||
|
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
|
||||||
|
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
|
||||||
|
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
|
||||||
|
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
|
||||||
|
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
|
||||||
|
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
|
||||||
|
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
|
||||||
|
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
|
||||||
|
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
|
||||||
|
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
|
||||||
|
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
|
||||||
|
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
|
||||||
|
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
|
||||||
|
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
|
||||||
|
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
|
||||||
|
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
|
||||||
|
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
|
||||||
|
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
|
||||||
|
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
|
||||||
|
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
|
||||||
|
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
|
||||||
|
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
|
||||||
|
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
|
||||||
|
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
|
||||||
|
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
|
||||||
|
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
|
||||||
|
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
|
||||||
|
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
|
||||||
|
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
|
||||||
|
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
|
||||||
|
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
|
||||||
|
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
|
||||||
|
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
|
||||||
|
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
|
||||||
|
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
|
||||||
|
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
|
||||||
|
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
|
||||||
|
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
|
||||||
|
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
|
||||||
|
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
|
||||||
|
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
|
||||||
|
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
|
||||||
|
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
|
||||||
|
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
|
||||||
|
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
|
||||||
|
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
|
||||||
|
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
|
||||||
|
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
|
||||||
|
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
|
||||||
|
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
|
||||||
|
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
|
||||||
|
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
|
||||||
|
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
|
||||||
|
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
|
BIN
sources/doc/html/_static/minus.png
Normal file
After Width: | Height: | Size: 199 B |
BIN
sources/doc/html/_static/plus.png
Normal file
After Width: | Height: | Size: 199 B |
62
sources/doc/html/_static/pygments.css
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
.highlight .hll { background-color: #ffffcc }
|
||||||
|
.highlight { background: #eeffcc; }
|
||||||
|
.highlight .c { color: #408090; font-style: italic } /* Comment */
|
||||||
|
.highlight .err { border: 1px solid #FF0000 } /* Error */
|
||||||
|
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
|
||||||
|
.highlight .o { color: #666666 } /* Operator */
|
||||||
|
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
|
||||||
|
.highlight .cp { color: #007020 } /* Comment.Preproc */
|
||||||
|
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
|
||||||
|
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
|
||||||
|
.highlight .gd { color: #A00000 } /* Generic.Deleted */
|
||||||
|
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||||
|
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
||||||
|
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||||
|
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
||||||
|
.highlight .go { color: #303030 } /* Generic.Output */
|
||||||
|
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
|
||||||
|
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||||
|
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||||
|
.highlight .gt { color: #0040D0 } /* Generic.Traceback */
|
||||||
|
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
|
||||||
|
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
|
||||||
|
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
|
||||||
|
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
|
||||||
|
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
|
||||||
|
.highlight .kt { color: #902000 } /* Keyword.Type */
|
||||||
|
.highlight .m { color: #208050 } /* Literal.Number */
|
||||||
|
.highlight .s { color: #4070a0 } /* Literal.String */
|
||||||
|
.highlight .na { color: #4070a0 } /* Name.Attribute */
|
||||||
|
.highlight .nb { color: #007020 } /* Name.Builtin */
|
||||||
|
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
|
||||||
|
.highlight .no { color: #60add5 } /* Name.Constant */
|
||||||
|
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
|
||||||
|
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
|
||||||
|
.highlight .ne { color: #007020 } /* Name.Exception */
|
||||||
|
.highlight .nf { color: #06287e } /* Name.Function */
|
||||||
|
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
|
||||||
|
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
|
||||||
|
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
|
||||||
|
.highlight .nv { color: #bb60d5 } /* Name.Variable */
|
||||||
|
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
|
||||||
|
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||||
|
.highlight .mf { color: #208050 } /* Literal.Number.Float */
|
||||||
|
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
|
||||||
|
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
|
||||||
|
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
|
||||||
|
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
|
||||||
|
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
|
||||||
|
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
|
||||||
|
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
|
||||||
|
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
|
||||||
|
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
|
||||||
|
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
|
||||||
|
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
|
||||||
|
.highlight .sr { color: #235388 } /* Literal.String.Regex */
|
||||||
|
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
|
||||||
|
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
|
||||||
|
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
|
||||||
|
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
|
||||||
|
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
|
||||||
|
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
|
||||||
|
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
|
560
sources/doc/html/_static/searchtools.js
Normal file
|
@ -0,0 +1,560 @@
|
||||||
|
/*
|
||||||
|
* searchtools.js_t
|
||||||
|
* ~~~~~~~~~~~~~~~~
|
||||||
|
*
|
||||||
|
* Sphinx JavaScript utilties for the full-text search.
|
||||||
|
*
|
||||||
|
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||||
|
* :license: BSD, see LICENSE for details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* helper function to return a node containing the
|
||||||
|
* search summary for a given text. keywords is a list
|
||||||
|
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||||
|
* words. the first one is used to find the occurance, the
|
||||||
|
* latter for highlighting it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
|
||||||
|
var textLower = text.toLowerCase();
|
||||||
|
var start = 0;
|
||||||
|
$.each(keywords, function() {
|
||||||
|
var i = textLower.indexOf(this.toLowerCase());
|
||||||
|
if (i > -1)
|
||||||
|
start = i;
|
||||||
|
});
|
||||||
|
start = Math.max(start - 120, 0);
|
||||||
|
var excerpt = ((start > 0) ? '...' : '') +
|
||||||
|
$.trim(text.substr(start, 240)) +
|
||||||
|
((start + 240 - text.length) ? '...' : '');
|
||||||
|
var rv = $('<div class="context"></div>').text(excerpt);
|
||||||
|
$.each(hlwords, function() {
|
||||||
|
rv = rv.highlightText(this, 'highlighted');
|
||||||
|
});
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Porter Stemmer
|
||||||
|
*/
|
||||||
|
var Stemmer = function() {
|
||||||
|
|
||||||
|
var step2list = {
|
||||||
|
ational: 'ate',
|
||||||
|
tional: 'tion',
|
||||||
|
enci: 'ence',
|
||||||
|
anci: 'ance',
|
||||||
|
izer: 'ize',
|
||||||
|
bli: 'ble',
|
||||||
|
alli: 'al',
|
||||||
|
entli: 'ent',
|
||||||
|
eli: 'e',
|
||||||
|
ousli: 'ous',
|
||||||
|
ization: 'ize',
|
||||||
|
ation: 'ate',
|
||||||
|
ator: 'ate',
|
||||||
|
alism: 'al',
|
||||||
|
iveness: 'ive',
|
||||||
|
fulness: 'ful',
|
||||||
|
ousness: 'ous',
|
||||||
|
aliti: 'al',
|
||||||
|
iviti: 'ive',
|
||||||
|
biliti: 'ble',
|
||||||
|
logi: 'log'
|
||||||
|
};
|
||||||
|
|
||||||
|
var step3list = {
|
||||||
|
icate: 'ic',
|
||||||
|
ative: '',
|
||||||
|
alize: 'al',
|
||||||
|
iciti: 'ic',
|
||||||
|
ical: 'ic',
|
||||||
|
ful: '',
|
||||||
|
ness: ''
|
||||||
|
};
|
||||||
|
|
||||||
|
var c = "[^aeiou]"; // consonant
|
||||||
|
var v = "[aeiouy]"; // vowel
|
||||||
|
var C = c + "[^aeiouy]*"; // consonant sequence
|
||||||
|
var V = v + "[aeiou]*"; // vowel sequence
|
||||||
|
|
||||||
|
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
|
||||||
|
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
|
||||||
|
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
|
||||||
|
var s_v = "^(" + C + ")?" + v; // vowel in stem
|
||||||
|
|
||||||
|
this.stemWord = function (w) {
|
||||||
|
var stem;
|
||||||
|
var suffix;
|
||||||
|
var firstch;
|
||||||
|
var origword = w;
|
||||||
|
|
||||||
|
if (w.length < 3)
|
||||||
|
return w;
|
||||||
|
|
||||||
|
var re;
|
||||||
|
var re2;
|
||||||
|
var re3;
|
||||||
|
var re4;
|
||||||
|
|
||||||
|
firstch = w.substr(0,1);
|
||||||
|
if (firstch == "y")
|
||||||
|
w = firstch.toUpperCase() + w.substr(1);
|
||||||
|
|
||||||
|
// Step 1a
|
||||||
|
re = /^(.+?)(ss|i)es$/;
|
||||||
|
re2 = /^(.+?)([^s])s$/;
|
||||||
|
|
||||||
|
if (re.test(w))
|
||||||
|
w = w.replace(re,"$1$2");
|
||||||
|
else if (re2.test(w))
|
||||||
|
w = w.replace(re2,"$1$2");
|
||||||
|
|
||||||
|
// Step 1b
|
||||||
|
re = /^(.+?)eed$/;
|
||||||
|
re2 = /^(.+?)(ed|ing)$/;
|
||||||
|
if (re.test(w)) {
|
||||||
|
var fp = re.exec(w);
|
||||||
|
re = new RegExp(mgr0);
|
||||||
|
if (re.test(fp[1])) {
|
||||||
|
re = /.$/;
|
||||||
|
w = w.replace(re,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (re2.test(w)) {
|
||||||
|
var fp = re2.exec(w);
|
||||||
|
stem = fp[1];
|
||||||
|
re2 = new RegExp(s_v);
|
||||||
|
if (re2.test(stem)) {
|
||||||
|
w = stem;
|
||||||
|
re2 = /(at|bl|iz)$/;
|
||||||
|
re3 = new RegExp("([^aeiouylsz])\\1$");
|
||||||
|
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||||
|
if (re2.test(w))
|
||||||
|
w = w + "e";
|
||||||
|
else if (re3.test(w)) {
|
||||||
|
re = /.$/;
|
||||||
|
w = w.replace(re,"");
|
||||||
|
}
|
||||||
|
else if (re4.test(w))
|
||||||
|
w = w + "e";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 1c
|
||||||
|
re = /^(.+?)y$/;
|
||||||
|
if (re.test(w)) {
|
||||||
|
var fp = re.exec(w);
|
||||||
|
stem = fp[1];
|
||||||
|
re = new RegExp(s_v);
|
||||||
|
if (re.test(stem))
|
||||||
|
w = stem + "i";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 2
|
||||||
|
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
|
||||||
|
if (re.test(w)) {
|
||||||
|
var fp = re.exec(w);
|
||||||
|
stem = fp[1];
|
||||||
|
suffix = fp[2];
|
||||||
|
re = new RegExp(mgr0);
|
||||||
|
if (re.test(stem))
|
||||||
|
w = stem + step2list[suffix];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 3
|
||||||
|
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
|
||||||
|
if (re.test(w)) {
|
||||||
|
var fp = re.exec(w);
|
||||||
|
stem = fp[1];
|
||||||
|
suffix = fp[2];
|
||||||
|
re = new RegExp(mgr0);
|
||||||
|
if (re.test(stem))
|
||||||
|
w = stem + step3list[suffix];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 4
|
||||||
|
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
|
||||||
|
re2 = /^(.+?)(s|t)(ion)$/;
|
||||||
|
if (re.test(w)) {
|
||||||
|
var fp = re.exec(w);
|
||||||
|
stem = fp[1];
|
||||||
|
re = new RegExp(mgr1);
|
||||||
|
if (re.test(stem))
|
||||||
|
w = stem;
|
||||||
|
}
|
||||||
|
else if (re2.test(w)) {
|
||||||
|
var fp = re2.exec(w);
|
||||||
|
stem = fp[1] + fp[2];
|
||||||
|
re2 = new RegExp(mgr1);
|
||||||
|
if (re2.test(stem))
|
||||||
|
w = stem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 5
|
||||||
|
re = /^(.+?)e$/;
|
||||||
|
if (re.test(w)) {
|
||||||
|
var fp = re.exec(w);
|
||||||
|
stem = fp[1];
|
||||||
|
re = new RegExp(mgr1);
|
||||||
|
re2 = new RegExp(meq1);
|
||||||
|
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||||
|
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
|
||||||
|
w = stem;
|
||||||
|
}
|
||||||
|
re = /ll$/;
|
||||||
|
re2 = new RegExp(mgr1);
|
||||||
|
if (re.test(w) && re2.test(w)) {
|
||||||
|
re = /.$/;
|
||||||
|
w = w.replace(re,"");
|
||||||
|
}
|
||||||
|
|
||||||
|
// and turn initial Y back to y
|
||||||
|
if (firstch == "y")
|
||||||
|
w = firstch.toLowerCase() + w.substr(1);
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search Module
|
||||||
|
*/
|
||||||
|
var Search = {
|
||||||
|
|
||||||
|
_index : null,
|
||||||
|
_queued_query : null,
|
||||||
|
_pulse_status : -1,
|
||||||
|
|
||||||
|
init : function() {
|
||||||
|
var params = $.getQueryParameters();
|
||||||
|
if (params.q) {
|
||||||
|
var query = params.q[0];
|
||||||
|
$('input[name="q"]')[0].value = query;
|
||||||
|
this.performSearch(query);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
loadIndex : function(url) {
|
||||||
|
$.ajax({type: "GET", url: url, data: null, success: null,
|
||||||
|
dataType: "script", cache: true});
|
||||||
|
},
|
||||||
|
|
||||||
|
setIndex : function(index) {
|
||||||
|
var q;
|
||||||
|
this._index = index;
|
||||||
|
if ((q = this._queued_query) !== null) {
|
||||||
|
this._queued_query = null;
|
||||||
|
Search.query(q);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
hasIndex : function() {
|
||||||
|
return this._index !== null;
|
||||||
|
},
|
||||||
|
|
||||||
|
deferQuery : function(query) {
|
||||||
|
this._queued_query = query;
|
||||||
|
},
|
||||||
|
|
||||||
|
stopPulse : function() {
|
||||||
|
this._pulse_status = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
startPulse : function() {
|
||||||
|
if (this._pulse_status >= 0)
|
||||||
|
return;
|
||||||
|
function pulse() {
|
||||||
|
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||||
|
var dotString = '';
|
||||||
|
for (var i = 0; i < Search._pulse_status; i++)
|
||||||
|
dotString += '.';
|
||||||
|
Search.dots.text(dotString);
|
||||||
|
if (Search._pulse_status > -1)
|
||||||
|
window.setTimeout(pulse, 500);
|
||||||
|
};
|
||||||
|
pulse();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* perform a search for something
|
||||||
|
*/
|
||||||
|
performSearch : function(query) {
|
||||||
|
// create the required interface elements
|
||||||
|
this.out = $('#search-results');
|
||||||
|
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
|
||||||
|
this.dots = $('<span></span>').appendTo(this.title);
|
||||||
|
this.status = $('<p style="display: none"></p>').appendTo(this.out);
|
||||||
|
this.output = $('<ul class="search"/>').appendTo(this.out);
|
||||||
|
|
||||||
|
$('#search-progress').text(_('Preparing search...'));
|
||||||
|
this.startPulse();
|
||||||
|
|
||||||
|
// index already loaded, the browser was quick!
|
||||||
|
if (this.hasIndex())
|
||||||
|
this.query(query);
|
||||||
|
else
|
||||||
|
this.deferQuery(query);
|
||||||
|
},
|
||||||
|
|
||||||
|
query : function(query) {
|
||||||
|
var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
|
||||||
|
|
||||||
|
// Stem the searchterms and add them to the correct list
|
||||||
|
var stemmer = new Stemmer();
|
||||||
|
var searchterms = [];
|
||||||
|
var excluded = [];
|
||||||
|
var hlterms = [];
|
||||||
|
var tmp = query.split(/\s+/);
|
||||||
|
var objectterms = [];
|
||||||
|
for (var i = 0; i < tmp.length; i++) {
|
||||||
|
if (tmp[i] != "") {
|
||||||
|
objectterms.push(tmp[i].toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
||||||
|
tmp[i] == "") {
|
||||||
|
// skip this "word"
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// stem the word
|
||||||
|
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
||||||
|
// select the correct list
|
||||||
|
if (word[0] == '-') {
|
||||||
|
var toAppend = excluded;
|
||||||
|
word = word.substr(1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var toAppend = searchterms;
|
||||||
|
hlterms.push(tmp[i].toLowerCase());
|
||||||
|
}
|
||||||
|
// only add if not already in the list
|
||||||
|
if (!$.contains(toAppend, word))
|
||||||
|
toAppend.push(word);
|
||||||
|
};
|
||||||
|
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||||
|
|
||||||
|
// console.debug('SEARCH: searching for:');
|
||||||
|
// console.info('required: ', searchterms);
|
||||||
|
// console.info('excluded: ', excluded);
|
||||||
|
|
||||||
|
// prepare search
|
||||||
|
var filenames = this._index.filenames;
|
||||||
|
var titles = this._index.titles;
|
||||||
|
var terms = this._index.terms;
|
||||||
|
var fileMap = {};
|
||||||
|
var files = null;
|
||||||
|
// different result priorities
|
||||||
|
var importantResults = [];
|
||||||
|
var objectResults = [];
|
||||||
|
var regularResults = [];
|
||||||
|
var unimportantResults = [];
|
||||||
|
$('#search-progress').empty();
|
||||||
|
|
||||||
|
// lookup as object
|
||||||
|
for (var i = 0; i < objectterms.length; i++) {
|
||||||
|
var others = [].concat(objectterms.slice(0,i),
|
||||||
|
objectterms.slice(i+1, objectterms.length))
|
||||||
|
var results = this.performObjectSearch(objectterms[i], others);
|
||||||
|
// Assume first word is most likely to be the object,
|
||||||
|
// other words more likely to be in description.
|
||||||
|
// Therefore put matches for earlier words first.
|
||||||
|
// (Results are eventually used in reverse order).
|
||||||
|
objectResults = results[0].concat(objectResults);
|
||||||
|
importantResults = results[1].concat(importantResults);
|
||||||
|
unimportantResults = results[2].concat(unimportantResults);
|
||||||
|
}
|
||||||
|
|
||||||
|
// perform the search on the required terms
|
||||||
|
for (var i = 0; i < searchterms.length; i++) {
|
||||||
|
var word = searchterms[i];
|
||||||
|
// no match but word was a required one
|
||||||
|
if ((files = terms[word]) == null)
|
||||||
|
break;
|
||||||
|
if (files.length == undefined) {
|
||||||
|
files = [files];
|
||||||
|
}
|
||||||
|
// create the mapping
|
||||||
|
for (var j = 0; j < files.length; j++) {
|
||||||
|
var file = files[j];
|
||||||
|
if (file in fileMap)
|
||||||
|
fileMap[file].push(word);
|
||||||
|
else
|
||||||
|
fileMap[file] = [word];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now check if the files don't contain excluded terms
|
||||||
|
for (var file in fileMap) {
|
||||||
|
var valid = true;
|
||||||
|
|
||||||
|
// check if all requirements are matched
|
||||||
|
if (fileMap[file].length != searchterms.length)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// ensure that none of the excluded terms is in the
|
||||||
|
// search result.
|
||||||
|
for (var i = 0; i < excluded.length; i++) {
|
||||||
|
if (terms[excluded[i]] == file ||
|
||||||
|
$.contains(terms[excluded[i]] || [], file)) {
|
||||||
|
valid = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we have still a valid result we can add it
|
||||||
|
// to the result list
|
||||||
|
if (valid)
|
||||||
|
regularResults.push([filenames[file], titles[file], '', null]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete unused variables in order to not waste
|
||||||
|
// memory until list is retrieved completely
|
||||||
|
delete filenames, titles, terms;
|
||||||
|
|
||||||
|
// now sort the regular results descending by title
|
||||||
|
regularResults.sort(function(a, b) {
|
||||||
|
var left = a[1].toLowerCase();
|
||||||
|
var right = b[1].toLowerCase();
|
||||||
|
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
// combine all results
|
||||||
|
var results = unimportantResults.concat(regularResults)
|
||||||
|
.concat(objectResults).concat(importantResults);
|
||||||
|
|
||||||
|
// print the results
|
||||||
|
var resultCount = results.length;
|
||||||
|
function displayNextItem() {
|
||||||
|
// results left, load the summary and display it
|
||||||
|
if (results.length) {
|
||||||
|
var item = results.pop();
|
||||||
|
var listItem = $('<li style="display:none"></li>');
|
||||||
|
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
|
||||||
|
// dirhtml builder
|
||||||
|
var dirname = item[0] + '/';
|
||||||
|
if (dirname.match(/\/index\/$/)) {
|
||||||
|
dirname = dirname.substring(0, dirname.length-6);
|
||||||
|
} else if (dirname == 'index/') {
|
||||||
|
dirname = '';
|
||||||
|
}
|
||||||
|
listItem.append($('<a/>').attr('href',
|
||||||
|
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
|
||||||
|
highlightstring + item[2]).html(item[1]));
|
||||||
|
} else {
|
||||||
|
// normal html builders
|
||||||
|
listItem.append($('<a/>').attr('href',
|
||||||
|
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
|
||||||
|
highlightstring + item[2]).html(item[1]));
|
||||||
|
}
|
||||||
|
if (item[3]) {
|
||||||
|
listItem.append($('<span> (' + item[3] + ')</span>'));
|
||||||
|
Search.output.append(listItem);
|
||||||
|
listItem.slideDown(5, function() {
|
||||||
|
displayNextItem();
|
||||||
|
});
|
||||||
|
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||||
|
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
|
||||||
|
item[0] + '.txt', function(data) {
|
||||||
|
if (data != '') {
|
||||||
|
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
|
||||||
|
Search.output.append(listItem);
|
||||||
|
}
|
||||||
|
listItem.slideDown(5, function() {
|
||||||
|
displayNextItem();
|
||||||
|
});
|
||||||
|
}, "text");
|
||||||
|
} else {
|
||||||
|
// no source available, just display title
|
||||||
|
Search.output.append(listItem);
|
||||||
|
listItem.slideDown(5, function() {
|
||||||
|
displayNextItem();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// search finished, update title and status message
|
||||||
|
else {
|
||||||
|
Search.stopPulse();
|
||||||
|
Search.title.text(_('Search Results'));
|
||||||
|
if (!resultCount)
|
||||||
|
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
|
||||||
|
else
|
||||||
|
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
|
||||||
|
Search.status.fadeIn(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
displayNextItem();
|
||||||
|
},
|
||||||
|
|
||||||
|
performObjectSearch : function(object, otherterms) {
|
||||||
|
var filenames = this._index.filenames;
|
||||||
|
var objects = this._index.objects;
|
||||||
|
var objnames = this._index.objnames;
|
||||||
|
var titles = this._index.titles;
|
||||||
|
|
||||||
|
var importantResults = [];
|
||||||
|
var objectResults = [];
|
||||||
|
var unimportantResults = [];
|
||||||
|
|
||||||
|
for (var prefix in objects) {
|
||||||
|
for (var name in objects[prefix]) {
|
||||||
|
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||||
|
if (fullname.toLowerCase().indexOf(object) > -1) {
|
||||||
|
var match = objects[prefix][name];
|
||||||
|
var objname = objnames[match[1]][2];
|
||||||
|
var title = titles[match[0]];
|
||||||
|
// If more than one term searched for, we require other words to be
|
||||||
|
// found in the name/title/description
|
||||||
|
if (otherterms.length > 0) {
|
||||||
|
var haystack = (prefix + ' ' + name + ' ' +
|
||||||
|
objname + ' ' + title).toLowerCase();
|
||||||
|
var allfound = true;
|
||||||
|
for (var i = 0; i < otherterms.length; i++) {
|
||||||
|
if (haystack.indexOf(otherterms[i]) == -1) {
|
||||||
|
allfound = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!allfound) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var descr = objname + _(', in ') + title;
|
||||||
|
anchor = match[3];
|
||||||
|
if (anchor == '')
|
||||||
|
anchor = fullname;
|
||||||
|
else if (anchor == '-')
|
||||||
|
anchor = objnames[match[1]][1] + '-' + fullname;
|
||||||
|
result = [filenames[match[0]], fullname, '#'+anchor, descr];
|
||||||
|
switch (match[2]) {
|
||||||
|
case 1: objectResults.push(result); break;
|
||||||
|
case 0: importantResults.push(result); break;
|
||||||
|
case 2: unimportantResults.push(result); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// sort results descending
|
||||||
|
objectResults.sort(function(a, b) {
|
||||||
|
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
importantResults.sort(function(a, b) {
|
||||||
|
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
unimportantResults.sort(function(a, b) {
|
||||||
|
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
return [importantResults, objectResults, unimportantResults]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
Search.init();
|
||||||
|
});
|
151
sources/doc/html/_static/sidebar.js
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
/*
|
||||||
|
* sidebar.js
|
||||||
|
* ~~~~~~~~~~
|
||||||
|
*
|
||||||
|
* This script makes the Sphinx sidebar collapsible.
|
||||||
|
*
|
||||||
|
* .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
|
||||||
|
* in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
|
||||||
|
* used to collapse and expand the sidebar.
|
||||||
|
*
|
||||||
|
* When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
|
||||||
|
* and the width of the sidebar and the margin-left of the document
|
||||||
|
* are decreased. When the sidebar is expanded the opposite happens.
|
||||||
|
* This script saves a per-browser/per-session cookie used to
|
||||||
|
* remember the position of the sidebar among the pages.
|
||||||
|
* Once the browser is closed the cookie is deleted and the position
|
||||||
|
* reset to the default (expanded).
|
||||||
|
*
|
||||||
|
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||||
|
* :license: BSD, see LICENSE for details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
// global elements used by the functions.
|
||||||
|
// the 'sidebarbutton' element is defined as global after its
|
||||||
|
// creation, in the add_sidebar_button function
|
||||||
|
var bodywrapper = $('.bodywrapper');
|
||||||
|
var sidebar = $('.sphinxsidebar');
|
||||||
|
var sidebarwrapper = $('.sphinxsidebarwrapper');
|
||||||
|
|
||||||
|
// for some reason, the document has no sidebar; do not run into errors
|
||||||
|
if (!sidebar.length) return;
|
||||||
|
|
||||||
|
// original margin-left of the bodywrapper and width of the sidebar
|
||||||
|
// with the sidebar expanded
|
||||||
|
var bw_margin_expanded = bodywrapper.css('margin-left');
|
||||||
|
var ssb_width_expanded = sidebar.width();
|
||||||
|
|
||||||
|
// margin-left of the bodywrapper and width of the sidebar
|
||||||
|
// with the sidebar collapsed
|
||||||
|
var bw_margin_collapsed = '.8em';
|
||||||
|
var ssb_width_collapsed = '.8em';
|
||||||
|
|
||||||
|
// colors used by the current theme
|
||||||
|
var dark_color = $('.related').css('background-color');
|
||||||
|
var light_color = $('.document').css('background-color');
|
||||||
|
|
||||||
|
function sidebar_is_collapsed() {
|
||||||
|
return sidebarwrapper.is(':not(:visible)');
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggle_sidebar() {
|
||||||
|
if (sidebar_is_collapsed())
|
||||||
|
expand_sidebar();
|
||||||
|
else
|
||||||
|
collapse_sidebar();
|
||||||
|
}
|
||||||
|
|
||||||
|
function collapse_sidebar() {
|
||||||
|
sidebarwrapper.hide();
|
||||||
|
sidebar.css('width', ssb_width_collapsed);
|
||||||
|
bodywrapper.css('margin-left', bw_margin_collapsed);
|
||||||
|
sidebarbutton.css({
|
||||||
|
'margin-left': '0',
|
||||||
|
'height': bodywrapper.height()
|
||||||
|
});
|
||||||
|
sidebarbutton.find('span').text('»');
|
||||||
|
sidebarbutton.attr('title', _('Expand sidebar'));
|
||||||
|
document.cookie = 'sidebar=collapsed';
|
||||||
|
}
|
||||||
|
|
||||||
|
function expand_sidebar() {
|
||||||
|
bodywrapper.css('margin-left', bw_margin_expanded);
|
||||||
|
sidebar.css('width', ssb_width_expanded);
|
||||||
|
sidebarwrapper.show();
|
||||||
|
sidebarbutton.css({
|
||||||
|
'margin-left': ssb_width_expanded-12,
|
||||||
|
'height': bodywrapper.height()
|
||||||
|
});
|
||||||
|
sidebarbutton.find('span').text('«');
|
||||||
|
sidebarbutton.attr('title', _('Collapse sidebar'));
|
||||||
|
document.cookie = 'sidebar=expanded';
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_sidebar_button() {
|
||||||
|
sidebarwrapper.css({
|
||||||
|
'float': 'left',
|
||||||
|
'margin-right': '0',
|
||||||
|
'width': ssb_width_expanded - 28
|
||||||
|
});
|
||||||
|
// create the button
|
||||||
|
sidebar.append(
|
||||||
|
'<div id="sidebarbutton"><span>«</span></div>'
|
||||||
|
);
|
||||||
|
var sidebarbutton = $('#sidebarbutton');
|
||||||
|
light_color = sidebarbutton.css('background-color');
|
||||||
|
// find the height of the viewport to center the '<<' in the page
|
||||||
|
var viewport_height;
|
||||||
|
if (window.innerHeight)
|
||||||
|
viewport_height = window.innerHeight;
|
||||||
|
else
|
||||||
|
viewport_height = $(window).height();
|
||||||
|
sidebarbutton.find('span').css({
|
||||||
|
'display': 'block',
|
||||||
|
'margin-top': (viewport_height - sidebar.position().top - 20) / 2
|
||||||
|
});
|
||||||
|
|
||||||
|
sidebarbutton.click(toggle_sidebar);
|
||||||
|
sidebarbutton.attr('title', _('Collapse sidebar'));
|
||||||
|
sidebarbutton.css({
|
||||||
|
'color': '#FFFFFF',
|
||||||
|
'border-left': '1px solid ' + dark_color,
|
||||||
|
'font-size': '1.2em',
|
||||||
|
'cursor': 'pointer',
|
||||||
|
'height': bodywrapper.height(),
|
||||||
|
'padding-top': '1px',
|
||||||
|
'margin-left': ssb_width_expanded - 12
|
||||||
|
});
|
||||||
|
|
||||||
|
sidebarbutton.hover(
|
||||||
|
function () {
|
||||||
|
$(this).css('background-color', dark_color);
|
||||||
|
},
|
||||||
|
function () {
|
||||||
|
$(this).css('background-color', light_color);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_position_from_cookie() {
|
||||||
|
if (!document.cookie)
|
||||||
|
return;
|
||||||
|
var items = document.cookie.split(';');
|
||||||
|
for(var k=0; k<items.length; k++) {
|
||||||
|
var key_val = items[k].split('=');
|
||||||
|
var key = key_val[0];
|
||||||
|
if (key == 'sidebar') {
|
||||||
|
var value = key_val[1];
|
||||||
|
if ((value == 'collapsed') && (!sidebar_is_collapsed()))
|
||||||
|
collapse_sidebar();
|
||||||
|
else if ((value == 'expanded') && (sidebar_is_collapsed()))
|
||||||
|
expand_sidebar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
add_sidebar_button();
|
||||||
|
var sidebarbutton = $('#sidebarbutton');
|
||||||
|
set_position_from_cookie();
|
||||||
|
});
|
23
sources/doc/html/_static/underscore.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
// Underscore.js 0.5.5
|
||||||
|
// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
|
||||||
|
// Underscore is freely distributable under the terms of the MIT license.
|
||||||
|
// Portions of Underscore are inspired by or borrowed from Prototype.js,
|
||||||
|
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
||||||
|
// For all details and documentation:
|
||||||
|
// http://documentcloud.github.com/underscore/
|
||||||
|
(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
|
||||||
|
a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
|
||||||
|
var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
|
||||||
|
d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
|
||||||
|
function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
|
||||||
|
function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
|
||||||
|
0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
|
||||||
|
e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
|
||||||
|
a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
|
||||||
|
return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
|
||||||
|
var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
|
||||||
|
if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
|
||||||
|
0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
|
||||||
|
a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
|
||||||
|
" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
|
||||||
|
o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
|
BIN
sources/doc/html/_static/up-pressed.png
Normal file
After Width: | Height: | Size: 372 B |
BIN
sources/doc/html/_static/up.png
Normal file
After Width: | Height: | Size: 363 B |
808
sources/doc/html/_static/websupport.js
Normal file
|
@ -0,0 +1,808 @@
|
||||||
|
/*
|
||||||
|
* websupport.js
|
||||||
|
* ~~~~~~~~~~~~~
|
||||||
|
*
|
||||||
|
* sphinx.websupport utilties for all documentation.
|
||||||
|
*
|
||||||
|
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||||
|
* :license: BSD, see LICENSE for details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
$.fn.autogrow = function() {
|
||||||
|
return this.each(function() {
|
||||||
|
var textarea = this;
|
||||||
|
|
||||||
|
$.fn.autogrow.resize(textarea);
|
||||||
|
|
||||||
|
$(textarea)
|
||||||
|
.focus(function() {
|
||||||
|
textarea.interval = setInterval(function() {
|
||||||
|
$.fn.autogrow.resize(textarea);
|
||||||
|
}, 500);
|
||||||
|
})
|
||||||
|
.blur(function() {
|
||||||
|
clearInterval(textarea.interval);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.autogrow.resize = function(textarea) {
|
||||||
|
var lineHeight = parseInt($(textarea).css('line-height'), 10);
|
||||||
|
var lines = textarea.value.split('\n');
|
||||||
|
var columns = textarea.cols;
|
||||||
|
var lineCount = 0;
|
||||||
|
$.each(lines, function() {
|
||||||
|
lineCount += Math.ceil(this.length / columns) || 1;
|
||||||
|
});
|
||||||
|
var height = lineHeight * (lineCount + 1);
|
||||||
|
$(textarea).css('height', height);
|
||||||
|
};
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
var comp, by;
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
initEvents();
|
||||||
|
initComparator();
|
||||||
|
}
|
||||||
|
|
||||||
|
function initEvents() {
|
||||||
|
$('a.comment-close').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
hide($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.vote').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
handleVote($(this));
|
||||||
|
});
|
||||||
|
$('a.reply').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
openReply($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.close-reply').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
closeReply($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.sort-option').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
handleReSort($(this));
|
||||||
|
});
|
||||||
|
$('a.show-proposal').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
showProposal($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.hide-proposal').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
hideProposal($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.show-propose-change').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
showProposeChange($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.hide-propose-change').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
hideProposeChange($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.accept-comment').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
acceptComment($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.delete-comment').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
deleteComment($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
$('a.comment-markup').live("click", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
toggleCommentMarkupBox($(this).attr('id').substring(2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set comp, which is a comparator function used for sorting and
|
||||||
|
* inserting comments into the list.
|
||||||
|
*/
|
||||||
|
function setComparator() {
|
||||||
|
// If the first three letters are "asc", sort in ascending order
|
||||||
|
// and remove the prefix.
|
||||||
|
if (by.substring(0,3) == 'asc') {
|
||||||
|
var i = by.substring(3);
|
||||||
|
comp = function(a, b) { return a[i] - b[i]; };
|
||||||
|
} else {
|
||||||
|
// Otherwise sort in descending order.
|
||||||
|
comp = function(a, b) { return b[by] - a[by]; };
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset link styles and format the selected sort option.
|
||||||
|
$('a.sel').attr('href', '#').removeClass('sel');
|
||||||
|
$('a.by' + by).removeAttr('href').addClass('sel');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a comp function. If the user has preferences stored in
|
||||||
|
* the sortBy cookie, use those, otherwise use the default.
|
||||||
|
*/
|
||||||
|
function initComparator() {
|
||||||
|
by = 'rating'; // Default to sort by rating.
|
||||||
|
// If the sortBy cookie is set, use that instead.
|
||||||
|
if (document.cookie.length > 0) {
|
||||||
|
var start = document.cookie.indexOf('sortBy=');
|
||||||
|
if (start != -1) {
|
||||||
|
start = start + 7;
|
||||||
|
var end = document.cookie.indexOf(";", start);
|
||||||
|
if (end == -1) {
|
||||||
|
end = document.cookie.length;
|
||||||
|
by = unescape(document.cookie.substring(start, end));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setComparator();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show a comment div.
|
||||||
|
*/
|
||||||
|
function show(id) {
|
||||||
|
$('#ao' + id).hide();
|
||||||
|
$('#ah' + id).show();
|
||||||
|
var context = $.extend({id: id}, opts);
|
||||||
|
var popup = $(renderTemplate(popupTemplate, context)).hide();
|
||||||
|
popup.find('textarea[name="proposal"]').hide();
|
||||||
|
popup.find('a.by' + by).addClass('sel');
|
||||||
|
var form = popup.find('#cf' + id);
|
||||||
|
form.submit(function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
addComment(form);
|
||||||
|
});
|
||||||
|
$('#s' + id).after(popup);
|
||||||
|
popup.slideDown('fast', function() {
|
||||||
|
getComments(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide a comment div.
|
||||||
|
*/
|
||||||
|
function hide(id) {
|
||||||
|
$('#ah' + id).hide();
|
||||||
|
$('#ao' + id).show();
|
||||||
|
var div = $('#sc' + id);
|
||||||
|
div.slideUp('fast', function() {
|
||||||
|
div.remove();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform an ajax request to get comments for a node
|
||||||
|
* and insert the comments into the comments tree.
|
||||||
|
*/
|
||||||
|
function getComments(id) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: opts.getCommentsURL,
|
||||||
|
data: {node: id},
|
||||||
|
success: function(data, textStatus, request) {
|
||||||
|
var ul = $('#cl' + id);
|
||||||
|
var speed = 100;
|
||||||
|
$('#cf' + id)
|
||||||
|
.find('textarea[name="proposal"]')
|
||||||
|
.data('source', data.source);
|
||||||
|
|
||||||
|
if (data.comments.length === 0) {
|
||||||
|
ul.html('<li>No comments yet.</li>');
|
||||||
|
ul.data('empty', true);
|
||||||
|
} else {
|
||||||
|
// If there are comments, sort them and put them in the list.
|
||||||
|
var comments = sortComments(data.comments);
|
||||||
|
speed = data.comments.length * 100;
|
||||||
|
appendComments(comments, ul);
|
||||||
|
ul.data('empty', false);
|
||||||
|
}
|
||||||
|
$('#cn' + id).slideUp(speed + 200);
|
||||||
|
ul.slideDown(speed);
|
||||||
|
},
|
||||||
|
error: function(request, textStatus, error) {
|
||||||
|
showError('Oops, there was a problem retrieving the comments.');
|
||||||
|
},
|
||||||
|
dataType: 'json'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a comment via ajax and insert the comment into the comment tree.
|
||||||
|
*/
|
||||||
|
function addComment(form) {
|
||||||
|
var node_id = form.find('input[name="node"]').val();
|
||||||
|
var parent_id = form.find('input[name="parent"]').val();
|
||||||
|
var text = form.find('textarea[name="comment"]').val();
|
||||||
|
var proposal = form.find('textarea[name="proposal"]').val();
|
||||||
|
|
||||||
|
if (text == '') {
|
||||||
|
showError('Please enter a comment.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disable the form that is being submitted.
|
||||||
|
form.find('textarea,input').attr('disabled', 'disabled');
|
||||||
|
|
||||||
|
// Send the comment to the server.
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: opts.addCommentURL,
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
node: node_id,
|
||||||
|
parent: parent_id,
|
||||||
|
text: text,
|
||||||
|
proposal: proposal
|
||||||
|
},
|
||||||
|
success: function(data, textStatus, error) {
|
||||||
|
// Reset the form.
|
||||||
|
if (node_id) {
|
||||||
|
hideProposeChange(node_id);
|
||||||
|
}
|
||||||
|
form.find('textarea')
|
||||||
|
.val('')
|
||||||
|
.add(form.find('input'))
|
||||||
|
.removeAttr('disabled');
|
||||||
|
var ul = $('#cl' + (node_id || parent_id));
|
||||||
|
if (ul.data('empty')) {
|
||||||
|
$(ul).empty();
|
||||||
|
ul.data('empty', false);
|
||||||
|
}
|
||||||
|
insertComment(data.comment);
|
||||||
|
var ao = $('#ao' + node_id);
|
||||||
|
ao.find('img').attr({'src': opts.commentBrightImage});
|
||||||
|
if (node_id) {
|
||||||
|
// if this was a "root" comment, remove the commenting box
|
||||||
|
// (the user can get it back by reopening the comment popup)
|
||||||
|
$('#ca' + node_id).slideUp();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(request, textStatus, error) {
|
||||||
|
form.find('textarea,input').removeAttr('disabled');
|
||||||
|
showError('Oops, there was a problem adding the comment.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively append comments to the main comment list and children
|
||||||
|
* lists, creating the comment tree.
|
||||||
|
*/
|
||||||
|
function appendComments(comments, ul) {
|
||||||
|
$.each(comments, function() {
|
||||||
|
var div = createCommentDiv(this);
|
||||||
|
ul.append($(document.createElement('li')).html(div));
|
||||||
|
appendComments(this.children, div.find('ul.comment-children'));
|
||||||
|
// To avoid stagnating data, don't store the comments children in data.
|
||||||
|
this.children = null;
|
||||||
|
div.data('comment', this);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* After adding a new comment, it must be inserted in the correct
|
||||||
|
* location in the comment tree.
|
||||||
|
*/
|
||||||
|
function insertComment(comment) {
|
||||||
|
var div = createCommentDiv(comment);
|
||||||
|
|
||||||
|
// To avoid stagnating data, don't store the comments children in data.
|
||||||
|
comment.children = null;
|
||||||
|
div.data('comment', comment);
|
||||||
|
|
||||||
|
var ul = $('#cl' + (comment.node || comment.parent));
|
||||||
|
var siblings = getChildren(ul);
|
||||||
|
|
||||||
|
var li = $(document.createElement('li'));
|
||||||
|
li.hide();
|
||||||
|
|
||||||
|
// Determine where in the parents children list to insert this comment.
|
||||||
|
for(i=0; i < siblings.length; i++) {
|
||||||
|
if (comp(comment, siblings[i]) <= 0) {
|
||||||
|
$('#cd' + siblings[i].id)
|
||||||
|
.parent()
|
||||||
|
.before(li.html(div));
|
||||||
|
li.slideDown('fast');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we get here, this comment rates lower than all the others,
|
||||||
|
// or it is the only comment in the list.
|
||||||
|
ul.append(li.html(div));
|
||||||
|
li.slideDown('fast');
|
||||||
|
}
|
||||||
|
|
||||||
|
function acceptComment(id) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: opts.acceptCommentURL,
|
||||||
|
data: {id: id},
|
||||||
|
success: function(data, textStatus, request) {
|
||||||
|
$('#cm' + id).fadeOut('fast');
|
||||||
|
$('#cd' + id).removeClass('moderate');
|
||||||
|
},
|
||||||
|
error: function(request, textStatus, error) {
|
||||||
|
showError('Oops, there was a problem accepting the comment.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteComment(id) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: opts.deleteCommentURL,
|
||||||
|
data: {id: id},
|
||||||
|
success: function(data, textStatus, request) {
|
||||||
|
var div = $('#cd' + id);
|
||||||
|
if (data == 'delete') {
|
||||||
|
// Moderator mode: remove the comment and all children immediately
|
||||||
|
div.slideUp('fast', function() {
|
||||||
|
div.remove();
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// User mode: only mark the comment as deleted
|
||||||
|
div
|
||||||
|
.find('span.user-id:first')
|
||||||
|
.text('[deleted]').end()
|
||||||
|
.find('div.comment-text:first')
|
||||||
|
.text('[deleted]').end()
|
||||||
|
.find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
|
||||||
|
', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
|
||||||
|
.remove();
|
||||||
|
var comment = div.data('comment');
|
||||||
|
comment.username = '[deleted]';
|
||||||
|
comment.text = '[deleted]';
|
||||||
|
div.data('comment', comment);
|
||||||
|
},
|
||||||
|
error: function(request, textStatus, error) {
|
||||||
|
showError('Oops, there was a problem deleting the comment.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function showProposal(id) {
|
||||||
|
$('#sp' + id).hide();
|
||||||
|
$('#hp' + id).show();
|
||||||
|
$('#pr' + id).slideDown('fast');
|
||||||
|
}
|
||||||
|
|
||||||
|
function hideProposal(id) {
|
||||||
|
$('#hp' + id).hide();
|
||||||
|
$('#sp' + id).show();
|
||||||
|
$('#pr' + id).slideUp('fast');
|
||||||
|
}
|
||||||
|
|
||||||
|
function showProposeChange(id) {
|
||||||
|
$('#pc' + id).hide();
|
||||||
|
$('#hc' + id).show();
|
||||||
|
var textarea = $('#pt' + id);
|
||||||
|
textarea.val(textarea.data('source'));
|
||||||
|
$.fn.autogrow.resize(textarea[0]);
|
||||||
|
textarea.slideDown('fast');
|
||||||
|
}
|
||||||
|
|
||||||
|
function hideProposeChange(id) {
|
||||||
|
$('#hc' + id).hide();
|
||||||
|
$('#pc' + id).show();
|
||||||
|
var textarea = $('#pt' + id);
|
||||||
|
textarea.val('').removeAttr('disabled');
|
||||||
|
textarea.slideUp('fast');
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleCommentMarkupBox(id) {
|
||||||
|
$('#mb' + id).toggle();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Handle when the user clicks on a sort by link. */
|
||||||
|
function handleReSort(link) {
|
||||||
|
var classes = link.attr('class').split(/\s+/);
|
||||||
|
for (var i=0; i<classes.length; i++) {
|
||||||
|
if (classes[i] != 'sort-option') {
|
||||||
|
by = classes[i].substring(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setComparator();
|
||||||
|
// Save/update the sortBy cookie.
|
||||||
|
var expiration = new Date();
|
||||||
|
expiration.setDate(expiration.getDate() + 365);
|
||||||
|
document.cookie= 'sortBy=' + escape(by) +
|
||||||
|
';expires=' + expiration.toUTCString();
|
||||||
|
$('ul.comment-ul').each(function(index, ul) {
|
||||||
|
var comments = getChildren($(ul), true);
|
||||||
|
comments = sortComments(comments);
|
||||||
|
appendComments(comments, $(ul).empty());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to process a vote when a user clicks an arrow.
|
||||||
|
*/
|
||||||
|
function handleVote(link) {
|
||||||
|
if (!opts.voting) {
|
||||||
|
showError("You'll need to login to vote.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var id = link.attr('id');
|
||||||
|
if (!id) {
|
||||||
|
// Didn't click on one of the voting arrows.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// If it is an unvote, the new vote value is 0,
|
||||||
|
// Otherwise it's 1 for an upvote, or -1 for a downvote.
|
||||||
|
var value = 0;
|
||||||
|
if (id.charAt(1) != 'u') {
|
||||||
|
value = id.charAt(0) == 'u' ? 1 : -1;
|
||||||
|
}
|
||||||
|
// The data to be sent to the server.
|
||||||
|
var d = {
|
||||||
|
comment_id: id.substring(2),
|
||||||
|
value: value
|
||||||
|
};
|
||||||
|
|
||||||
|
// Swap the vote and unvote links.
|
||||||
|
link.hide();
|
||||||
|
$('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
|
||||||
|
.show();
|
||||||
|
|
||||||
|
// The div the comment is displayed in.
|
||||||
|
var div = $('div#cd' + d.comment_id);
|
||||||
|
var data = div.data('comment');
|
||||||
|
|
||||||
|
// If this is not an unvote, and the other vote arrow has
|
||||||
|
// already been pressed, unpress it.
|
||||||
|
if ((d.value !== 0) && (data.vote === d.value * -1)) {
|
||||||
|
$('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
|
||||||
|
$('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the comments rating in the local data.
|
||||||
|
data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
|
||||||
|
data.vote = d.value;
|
||||||
|
div.data('comment', data);
|
||||||
|
|
||||||
|
// Change the rating text.
|
||||||
|
div.find('.rating:first')
|
||||||
|
.text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
|
||||||
|
|
||||||
|
// Send the vote information to the server.
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: opts.processVoteURL,
|
||||||
|
data: d,
|
||||||
|
error: function(request, textStatus, error) {
|
||||||
|
showError('Oops, there was a problem casting that vote.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open a reply form used to reply to an existing comment.
|
||||||
|
*/
|
||||||
|
function openReply(id) {
|
||||||
|
// Swap out the reply link for the hide link
|
||||||
|
$('#rl' + id).hide();
|
||||||
|
$('#cr' + id).show();
|
||||||
|
|
||||||
|
// Add the reply li to the children ul.
|
||||||
|
var div = $(renderTemplate(replyTemplate, {id: id})).hide();
|
||||||
|
$('#cl' + id)
|
||||||
|
.prepend(div)
|
||||||
|
// Setup the submit handler for the reply form.
|
||||||
|
.find('#rf' + id)
|
||||||
|
.submit(function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
addComment($('#rf' + id));
|
||||||
|
closeReply(id);
|
||||||
|
})
|
||||||
|
.find('input[type=button]')
|
||||||
|
.click(function() {
|
||||||
|
closeReply(id);
|
||||||
|
});
|
||||||
|
div.slideDown('fast', function() {
|
||||||
|
$('#rf' + id).find('textarea').focus();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the reply form opened with openReply.
|
||||||
|
*/
|
||||||
|
function closeReply(id) {
|
||||||
|
// Remove the reply div from the DOM.
|
||||||
|
$('#rd' + id).slideUp('fast', function() {
|
||||||
|
$(this).remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Swap out the hide link for the reply link
|
||||||
|
$('#cr' + id).hide();
|
||||||
|
$('#rl' + id).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively sort a tree of comments using the comp comparator.
|
||||||
|
*/
|
||||||
|
function sortComments(comments) {
|
||||||
|
comments.sort(comp);
|
||||||
|
$.each(comments, function() {
|
||||||
|
this.children = sortComments(this.children);
|
||||||
|
});
|
||||||
|
return comments;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the children comments from a ul. If recursive is true,
|
||||||
|
* recursively include childrens' children.
|
||||||
|
*/
|
||||||
|
function getChildren(ul, recursive) {
|
||||||
|
var children = [];
|
||||||
|
ul.children().children("[id^='cd']")
|
||||||
|
.each(function() {
|
||||||
|
var comment = $(this).data('comment');
|
||||||
|
if (recursive)
|
||||||
|
comment.children = getChildren($(this).find('#cl' + comment.id), true);
|
||||||
|
children.push(comment);
|
||||||
|
});
|
||||||
|
return children;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Create a div to display a comment in. */
|
||||||
|
function createCommentDiv(comment) {
|
||||||
|
if (!comment.displayed && !opts.moderator) {
|
||||||
|
return $('<div class="moderate">Thank you! Your comment will show up '
|
||||||
|
+ 'once it is has been approved by a moderator.</div>');
|
||||||
|
}
|
||||||
|
// Prettify the comment rating.
|
||||||
|
comment.pretty_rating = comment.rating + ' point' +
|
||||||
|
(comment.rating == 1 ? '' : 's');
|
||||||
|
// Make a class (for displaying not yet moderated comments differently)
|
||||||
|
comment.css_class = comment.displayed ? '' : ' moderate';
|
||||||
|
// Create a div for this comment.
|
||||||
|
var context = $.extend({}, opts, comment);
|
||||||
|
var div = $(renderTemplate(commentTemplate, context));
|
||||||
|
|
||||||
|
// If the user has voted on this comment, highlight the correct arrow.
|
||||||
|
if (comment.vote) {
|
||||||
|
var direction = (comment.vote == 1) ? 'u' : 'd';
|
||||||
|
div.find('#' + direction + 'v' + comment.id).hide();
|
||||||
|
div.find('#' + direction + 'u' + comment.id).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.moderator || comment.text != '[deleted]') {
|
||||||
|
div.find('a.reply').show();
|
||||||
|
if (comment.proposal_diff)
|
||||||
|
div.find('#sp' + comment.id).show();
|
||||||
|
if (opts.moderator && !comment.displayed)
|
||||||
|
div.find('#cm' + comment.id).show();
|
||||||
|
if (opts.moderator || (opts.username == comment.username))
|
||||||
|
div.find('#dc' + comment.id).show();
|
||||||
|
}
|
||||||
|
return div;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple template renderer. Placeholders such as <%id%> are replaced
|
||||||
|
* by context['id'] with items being escaped. Placeholders such as <#id#>
|
||||||
|
* are not escaped.
|
||||||
|
*/
|
||||||
|
function renderTemplate(template, context) {
|
||||||
|
var esc = $(document.createElement('div'));
|
||||||
|
|
||||||
|
function handle(ph, escape) {
|
||||||
|
var cur = context;
|
||||||
|
$.each(ph.split('.'), function() {
|
||||||
|
cur = cur[this];
|
||||||
|
});
|
||||||
|
return escape ? esc.text(cur || "").html() : cur;
|
||||||
|
}
|
||||||
|
|
||||||
|
return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
|
||||||
|
return handle(arguments[2], arguments[1] == '%' ? true : false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Flash an error message briefly. */
|
||||||
|
function showError(message) {
|
||||||
|
$(document.createElement('div')).attr({'class': 'popup-error'})
|
||||||
|
.append($(document.createElement('div'))
|
||||||
|
.attr({'class': 'error-message'}).text(message))
|
||||||
|
.appendTo('body')
|
||||||
|
.fadeIn("slow")
|
||||||
|
.delay(2000)
|
||||||
|
.fadeOut("slow");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Add a link the user uses to open the comments popup. */
|
||||||
|
$.fn.comment = function() {
|
||||||
|
return this.each(function() {
|
||||||
|
var id = $(this).attr('id').substring(1);
|
||||||
|
var count = COMMENT_METADATA[id];
|
||||||
|
var title = count + ' comment' + (count == 1 ? '' : 's');
|
||||||
|
var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
|
||||||
|
var addcls = count == 0 ? ' nocomment' : '';
|
||||||
|
$(this)
|
||||||
|
.append(
|
||||||
|
$(document.createElement('a')).attr({
|
||||||
|
href: '#',
|
||||||
|
'class': 'sphinx-comment-open' + addcls,
|
||||||
|
id: 'ao' + id
|
||||||
|
})
|
||||||
|
.append($(document.createElement('img')).attr({
|
||||||
|
src: image,
|
||||||
|
alt: 'comment',
|
||||||
|
title: title
|
||||||
|
}))
|
||||||
|
.click(function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
show($(this).attr('id').substring(2));
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.append(
|
||||||
|
$(document.createElement('a')).attr({
|
||||||
|
href: '#',
|
||||||
|
'class': 'sphinx-comment-close hidden',
|
||||||
|
id: 'ah' + id
|
||||||
|
})
|
||||||
|
.append($(document.createElement('img')).attr({
|
||||||
|
src: opts.closeCommentImage,
|
||||||
|
alt: 'close',
|
||||||
|
title: 'close'
|
||||||
|
}))
|
||||||
|
.click(function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
hide($(this).attr('id').substring(2));
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var opts = {
|
||||||
|
processVoteURL: '/_process_vote',
|
||||||
|
addCommentURL: '/_add_comment',
|
||||||
|
getCommentsURL: '/_get_comments',
|
||||||
|
acceptCommentURL: '/_accept_comment',
|
||||||
|
deleteCommentURL: '/_delete_comment',
|
||||||
|
commentImage: '/static/_static/comment.png',
|
||||||
|
closeCommentImage: '/static/_static/comment-close.png',
|
||||||
|
loadingImage: '/static/_static/ajax-loader.gif',
|
||||||
|
commentBrightImage: '/static/_static/comment-bright.png',
|
||||||
|
upArrow: '/static/_static/up.png',
|
||||||
|
downArrow: '/static/_static/down.png',
|
||||||
|
upArrowPressed: '/static/_static/up-pressed.png',
|
||||||
|
downArrowPressed: '/static/_static/down-pressed.png',
|
||||||
|
voting: false,
|
||||||
|
moderator: false
|
||||||
|
};
|
||||||
|
|
||||||
|
if (typeof COMMENT_OPTIONS != "undefined") {
|
||||||
|
opts = jQuery.extend(opts, COMMENT_OPTIONS);
|
||||||
|
}
|
||||||
|
|
||||||
|
var popupTemplate = '\
|
||||||
|
<div class="sphinx-comments" id="sc<%id%>">\
|
||||||
|
<p class="sort-options">\
|
||||||
|
Sort by:\
|
||||||
|
<a href="#" class="sort-option byrating">best rated</a>\
|
||||||
|
<a href="#" class="sort-option byascage">newest</a>\
|
||||||
|
<a href="#" class="sort-option byage">oldest</a>\
|
||||||
|
</p>\
|
||||||
|
<div class="comment-header">Comments</div>\
|
||||||
|
<div class="comment-loading" id="cn<%id%>">\
|
||||||
|
loading comments... <img src="<%loadingImage%>" alt="" /></div>\
|
||||||
|
<ul id="cl<%id%>" class="comment-ul"></ul>\
|
||||||
|
<div id="ca<%id%>">\
|
||||||
|
<p class="add-a-comment">Add a comment\
|
||||||
|
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
|
||||||
|
<div class="comment-markup-box" id="mb<%id%>">\
|
||||||
|
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
|
||||||
|
<tt>``code``</tt>, \
|
||||||
|
code blocks: <tt>::</tt> and an indented block after blank line</div>\
|
||||||
|
<form method="post" id="cf<%id%>" class="comment-form" action="">\
|
||||||
|
<textarea name="comment" cols="80"></textarea>\
|
||||||
|
<p class="propose-button">\
|
||||||
|
<a href="#" id="pc<%id%>" class="show-propose-change">\
|
||||||
|
Propose a change ▹\
|
||||||
|
</a>\
|
||||||
|
<a href="#" id="hc<%id%>" class="hide-propose-change">\
|
||||||
|
Propose a change ▿\
|
||||||
|
</a>\
|
||||||
|
</p>\
|
||||||
|
<textarea name="proposal" id="pt<%id%>" cols="80"\
|
||||||
|
spellcheck="false"></textarea>\
|
||||||
|
<input type="submit" value="Add comment" />\
|
||||||
|
<input type="hidden" name="node" value="<%id%>" />\
|
||||||
|
<input type="hidden" name="parent" value="" />\
|
||||||
|
</form>\
|
||||||
|
</div>\
|
||||||
|
</div>';
|
||||||
|
|
||||||
|
var commentTemplate = '\
|
||||||
|
<div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
|
||||||
|
<div class="vote">\
|
||||||
|
<div class="arrow">\
|
||||||
|
<a href="#" id="uv<%id%>" class="vote" title="vote up">\
|
||||||
|
<img src="<%upArrow%>" />\
|
||||||
|
</a>\
|
||||||
|
<a href="#" id="uu<%id%>" class="un vote" title="vote up">\
|
||||||
|
<img src="<%upArrowPressed%>" />\
|
||||||
|
</a>\
|
||||||
|
</div>\
|
||||||
|
<div class="arrow">\
|
||||||
|
<a href="#" id="dv<%id%>" class="vote" title="vote down">\
|
||||||
|
<img src="<%downArrow%>" id="da<%id%>" />\
|
||||||
|
</a>\
|
||||||
|
<a href="#" id="du<%id%>" class="un vote" title="vote down">\
|
||||||
|
<img src="<%downArrowPressed%>" />\
|
||||||
|
</a>\
|
||||||
|
</div>\
|
||||||
|
</div>\
|
||||||
|
<div class="comment-content">\
|
||||||
|
<p class="tagline comment">\
|
||||||
|
<span class="user-id"><%username%></span>\
|
||||||
|
<span class="rating"><%pretty_rating%></span>\
|
||||||
|
<span class="delta"><%time.delta%></span>\
|
||||||
|
</p>\
|
||||||
|
<div class="comment-text comment"><#text#></div>\
|
||||||
|
<p class="comment-opts comment">\
|
||||||
|
<a href="#" class="reply hidden" id="rl<%id%>">reply ▹</a>\
|
||||||
|
<a href="#" class="close-reply" id="cr<%id%>">reply ▿</a>\
|
||||||
|
<a href="#" id="sp<%id%>" class="show-proposal">proposal ▹</a>\
|
||||||
|
<a href="#" id="hp<%id%>" class="hide-proposal">proposal ▿</a>\
|
||||||
|
<a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
|
||||||
|
<span id="cm<%id%>" class="moderation hidden">\
|
||||||
|
<a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
|
||||||
|
</span>\
|
||||||
|
</p>\
|
||||||
|
<pre class="proposal" id="pr<%id%>">\
|
||||||
|
<#proposal_diff#>\
|
||||||
|
</pre>\
|
||||||
|
<ul class="comment-children" id="cl<%id%>"></ul>\
|
||||||
|
</div>\
|
||||||
|
<div class="clearleft"></div>\
|
||||||
|
</div>\
|
||||||
|
</div>';
|
||||||
|
|
||||||
|
var replyTemplate = '\
|
||||||
|
<li>\
|
||||||
|
<div class="reply-div" id="rd<%id%>">\
|
||||||
|
<form id="rf<%id%>">\
|
||||||
|
<textarea name="comment" cols="80"></textarea>\
|
||||||
|
<input type="submit" value="Add reply" />\
|
||||||
|
<input type="button" value="Cancel" />\
|
||||||
|
<input type="hidden" name="parent" value="<%id%>" />\
|
||||||
|
<input type="hidden" name="node" value="" />\
|
||||||
|
</form>\
|
||||||
|
</div>\
|
||||||
|
</li>';
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
init();
|
||||||
|
});
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
// add comment anchors for all paragraphs that are commentable
|
||||||
|
$('.sphinx-has-comment').comment();
|
||||||
|
|
||||||
|
// highlight search words in search results
|
||||||
|
$("div.context").each(function() {
|
||||||
|
var params = $.getQueryParameters();
|
||||||
|
var terms = (params.q) ? params.q[0].split(/\s+/) : [];
|
||||||
|
var result = $(this);
|
||||||
|
$.each(terms, function() {
|
||||||
|
result.highlightText(this.toLowerCase(), 'highlighted');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// directly open comment window if requested
|
||||||
|
var anchor = document.location.hash;
|
||||||
|
if (anchor.substring(0, 9) == '#comment-') {
|
||||||
|
$('#ao' + anchor.substring(9)).click();
|
||||||
|
document.location.hash = '#s' + anchor.substring(9);
|
||||||
|
}
|
||||||
|
});
|
5015
sources/doc/html/config.html
Normal file
134
sources/doc/html/copyright.html
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Copyright — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="#" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<link rel="next" title="Credits" href="credits.html" />
|
||||||
|
<link rel="prev" title="Distributing and packaging phpMyAdmin" href="vendors.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="credits.html" title="Credits"
|
||||||
|
accesskey="N">next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="vendors.html" title="Distributing and packaging phpMyAdmin"
|
||||||
|
accesskey="P">previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="copyright">
|
||||||
|
<span id="id1"></span><h1>Copyright<a class="headerlink" href="#copyright" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<div class="highlight-none"><div class="highlight"><pre>Copyright (C) 1998-2000 Tobias Ratschiller <tobias_at_ratschiller.com>
|
||||||
|
Copyright (C) 2001-2013 Marc Delisle <marc_at_infomarc.info>
|
||||||
|
Olivier Müller <om_at_omnis.ch>
|
||||||
|
Robin Johnson <robbat2_at_users.sourceforge.net>
|
||||||
|
Alexander M. Turek <me_at_derrabus.de>
|
||||||
|
Michal Čihař <michal_at_cihar.com>
|
||||||
|
Garvin Hicking <me_at_supergarv.de>
|
||||||
|
Michael Keck <mkkeck_at_users.sourceforge.net>
|
||||||
|
Sebastian Mendel <cybot_tm_at_users.sourceforge.net>
|
||||||
|
[check credits for more details]
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License version 2, as
|
||||||
|
published by the Free Software Foundation.</p>
|
||||||
|
<p>This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.</p>
|
||||||
|
<p>You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <a class="reference external" href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h4>Previous topic</h4>
|
||||||
|
<p class="topless"><a href="vendors.html"
|
||||||
|
title="previous chapter">Distributing and packaging phpMyAdmin</a></p>
|
||||||
|
<h4>Next topic</h4>
|
||||||
|
<p class="topless"><a href="credits.html"
|
||||||
|
title="next chapter">Credits</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/copyright.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="credits.html" title="Credits"
|
||||||
|
>next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="vendors.html" title="Distributing and packaging phpMyAdmin"
|
||||||
|
>previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="#">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
684
sources/doc/html/credits.html
Normal file
|
@ -0,0 +1,684 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Credits — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<link rel="next" title="Glossary" href="glossary.html" />
|
||||||
|
<link rel="prev" title="Copyright" href="copyright.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="glossary.html" title="Glossary"
|
||||||
|
accesskey="N">next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="copyright.html" title="Copyright"
|
||||||
|
accesskey="P">previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="credits">
|
||||||
|
<span id="id1"></span><h1>Credits<a class="headerlink" href="#credits" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<div class="section" id="credits-in-chronological-order">
|
||||||
|
<h2>Credits, in chronological order<a class="headerlink" href="#credits-in-chronological-order" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Tobias Ratschiller <tobias_at_ratschiller.com><ul>
|
||||||
|
<li>creator of the phpmyadmin project</li>
|
||||||
|
<li>maintainer from 1998 to summer 2000</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Marc Delisle <marc_at_infomarc.info><ul>
|
||||||
|
<li>multi-language version in December 1998</li>
|
||||||
|
<li>various fixes and improvements</li>
|
||||||
|
<li><a class="reference internal" href="glossary.html#term-sql"><em class="xref std std-term">SQL</em></a> analyser (most of it)</li>
|
||||||
|
<li>current project maintainer</li>
|
||||||
|
<li>maintains content on our website</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Olivier Müller <om_at_omnis.ch><ul>
|
||||||
|
<li>started SourceForge phpMyAdmin project in March 2001</li>
|
||||||
|
<li>sync’ed different existing CVS trees with new features and bugfixes</li>
|
||||||
|
<li>multi-language improvements, dynamic language selection</li>
|
||||||
|
<li>many bugfixes and improvements</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Loïc Chapeaux <lolo_at_phpheaven.net><ul>
|
||||||
|
<li>rewrote and optimized javascript, DHTML and DOM stuff</li>
|
||||||
|
<li>rewrote the scripts so they fit the <a class="reference internal" href="glossary.html#term-pear"><em class="xref std std-term">PEAR</em></a> coding standards and
|
||||||
|
generate XHTML1.0 and CSS2 compliant codes</li>
|
||||||
|
<li>improved the language detection system</li>
|
||||||
|
<li>many bugfixes and improvements</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Robin Johnson <robbat2_at_users.sourceforge.net><ul>
|
||||||
|
<li>database maintenance controls</li>
|
||||||
|
<li>table type code</li>
|
||||||
|
<li>Host authentication <a class="reference internal" href="glossary.html#term-ip"><em class="xref std std-term">IP</em></a> Allow/Deny</li>
|
||||||
|
<li>DB-based configuration (Not completed)</li>
|
||||||
|
<li><a class="reference internal" href="glossary.html#term-sql"><em class="xref std std-term">SQL</em></a> parser and pretty-printer</li>
|
||||||
|
<li><a class="reference internal" href="glossary.html#term-sql"><em class="xref std std-term">SQL</em></a> validator</li>
|
||||||
|
<li>many bugfixes and improvements</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Armel Fauveau <armel.fauveau_at_globalis-ms.com><ul>
|
||||||
|
<li>bookmarks feature</li>
|
||||||
|
<li>multiple dump feature</li>
|
||||||
|
<li>gzip dump feature</li>
|
||||||
|
<li>zip dump feature</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Geert Lund <glund_at_silversoft.dk><ul>
|
||||||
|
<li>various fixes</li>
|
||||||
|
<li>moderator of the phpMyAdmin former users forum at phpwizard.net</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Korakot Chaovavanich <korakot_at_iname.com><ul>
|
||||||
|
<li>“insert as new row” feature</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Pete Kelly <webmaster_at_trafficg.com><ul>
|
||||||
|
<li>rewrote and fix dump code</li>
|
||||||
|
<li>bugfixes</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Steve Alberty <alberty_at_neptunlabs.de><ul>
|
||||||
|
<li>rewrote dump code for PHP4</li>
|
||||||
|
<li>mySQL table statistics</li>
|
||||||
|
<li>bugfixes</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Benjamin Gandon <gandon_at_isia.cma.fr><ul>
|
||||||
|
<li>main author of the version 2.1.0.1</li>
|
||||||
|
<li>bugfixes</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Alexander M. Turek <me_at_derrabus.de><ul>
|
||||||
|
<li>MySQL 4.0 / 4.1 / 5.0 compatibility</li>
|
||||||
|
<li>abstract database interface (PMA_DBI) with MySQLi support</li>
|
||||||
|
<li>privileges administration</li>
|
||||||
|
<li><a class="reference internal" href="glossary.html#term-xml"><em class="xref std std-term">XML</em></a> exports</li>
|
||||||
|
<li>various features and fixes</li>
|
||||||
|
<li>German language file updates</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Mike Beck <mike.beck_at_web.de><ul>
|
||||||
|
<li>automatic joins in QBE</li>
|
||||||
|
<li>links column in printview</li>
|
||||||
|
<li>Relation view</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Michal Čihař <michal_at_cihar.com><ul>
|
||||||
|
<li>enhanced index creation/display feature</li>
|
||||||
|
<li>feature to use a different charset for HTML than for MySQL</li>
|
||||||
|
<li>improvements of export feature</li>
|
||||||
|
<li>various features and fixes</li>
|
||||||
|
<li>Czech language file updates</li>
|
||||||
|
<li>created current website for phpMyAdmin</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Christophe Gesché from the “MySQL Form Generator for PHPMyAdmin”
|
||||||
|
(<a class="reference external" href="http://sf.net/projects/phpmysqlformgen/">http://sf.net/projects/phpmysqlformgen/</a>)<ul>
|
||||||
|
<li>suggested the patch for multiple table printviews</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Garvin Hicking <me_at_supergarv.de><ul>
|
||||||
|
<li>built the patch for vertical display of table rows</li>
|
||||||
|
<li>built the Javascript based Query window + <a class="reference internal" href="glossary.html#term-sql"><em class="xref std std-term">SQL</em></a> history</li>
|
||||||
|
<li>Improvement of column/db comments</li>
|
||||||
|
<li>(MIME)-Transformations for columns</li>
|
||||||
|
<li>Use custom alias names for Databases in left frame</li>
|
||||||
|
<li>hierarchical/nested table display</li>
|
||||||
|
<li><a class="reference internal" href="glossary.html#term-pdf"><em class="xref std std-term">PDF</em></a>-scratchboard for WYSIWYG-
|
||||||
|
distribution of <a class="reference internal" href="glossary.html#term-pdf"><em class="xref std std-term">PDF</em></a> relations</li>
|
||||||
|
<li>new icon sets</li>
|
||||||
|
<li>vertical display of column properties page</li>
|
||||||
|
<li>some bugfixes, features, support, German language additions</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Yukihiro Kawada <kawada_at_den.fujifilm.co.jp><ul>
|
||||||
|
<li>japanese kanji encoding conversion feature</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Piotr Roszatycki <d3xter_at_users.sourceforge.net> and Dan Wilson<ul>
|
||||||
|
<li>the Cookie authentication mode</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Axel Sander <n8falke_at_users.sourceforge.net><ul>
|
||||||
|
<li>table relation-links feature</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Maxime Delorme <delorme.maxime_at_free.fr><ul>
|
||||||
|
<li><a class="reference internal" href="glossary.html#term-pdf"><em class="xref std std-term">PDF</em></a> schema output, thanks also to
|
||||||
|
Olivier Plathey for the “FPDF” library (see <<a class="reference external" href="http://www.fpdf.org/">http://www.fpdf.org/</a>>), Steven
|
||||||
|
Wittens for the “UFPDF” library (see <<a class="reference external" href="http://www.acko.net/node/56">http://www.acko.net/node/56</a>>) and
|
||||||
|
Nicola Asuni for the “TCPDF” library (see <<a class="reference external" href="http://www.tcpdf.org/">http://www.tcpdf.org/</a>>).</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Olof Edlund <olof.edlund_at_upright.se><ul>
|
||||||
|
<li><a class="reference internal" href="glossary.html#term-sql"><em class="xref std std-term">SQL</em></a> validator server</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Ivan R. Lanin <ivanlanin_at_users.sourceforge.net><ul>
|
||||||
|
<li>phpMyAdmin logo (until June 2004)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Mike Cochrane <mike_at_graftonhall.co.nz><ul>
|
||||||
|
<li>blowfish library from the Horde project (withdrawn in release 4.0)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Marcel Tschopp <ne0x_at_users.sourceforge.net><ul>
|
||||||
|
<li>mysqli support</li>
|
||||||
|
<li>many bugfixes and improvements</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Nicola Asuni (Tecnick.com)<ul>
|
||||||
|
<li>TCPDF library (<a class="reference external" href="http://www.tcpdf.org">http://www.tcpdf.org</a>)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Michael Keck <mkkeck_at_users.sourceforge.net><ul>
|
||||||
|
<li>redesign for 2.6.0</li>
|
||||||
|
<li>phpMyAdmin sailboat logo (June 2004)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Mathias Landhäußer<ul>
|
||||||
|
<li>Representation at conferences</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Sebastian Mendel <cybot_tm_at_users.sourceforge.net><ul>
|
||||||
|
<li>interface improvements</li>
|
||||||
|
<li>various bugfixes</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Ivan A Kirillov<ul>
|
||||||
|
<li>new relations Designer</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Raj Kissu Rajandran (Google Summer of Code 2008)<ul>
|
||||||
|
<li>BLOBstreaming support (withdrawn in release 4.0)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Piotr Przybylski (Google Summer of Code 2008, 2010 and 2011)<ul>
|
||||||
|
<li>improved setup script</li>
|
||||||
|
<li>user preferences</li>
|
||||||
|
<li>Drizzle support</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Derek Schaefer (Google Summer of Code 2009)<ul>
|
||||||
|
<li>Improved the import system</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Alexander Rutkowski (Google Summer of Code 2009)<ul>
|
||||||
|
<li>Tracking mechanism</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Zahra Naeem (Google Summer of Code 2009)<ul>
|
||||||
|
<li>Synchronization feature (removed in release 4.0)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Tomáš Srnka (Google Summer of Code 2009)<ul>
|
||||||
|
<li>Replication support</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Muhammad Adnan (Google Summer of Code 2010)<ul>
|
||||||
|
<li>Relation schema export to multiple formats</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Lori Lee (Google Summer of Code 2010)<ul>
|
||||||
|
<li>User interface improvements</li>
|
||||||
|
<li>ENUM/SET editor</li>
|
||||||
|
<li>Simplified interface for export/import</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Ninad Pundalik (Google Summer of Code 2010)<ul>
|
||||||
|
<li>AJAXifying the interface</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Martynas Mickevičius (Google Summer of Code 2010)<ul>
|
||||||
|
<li>Charts</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Barrie Leslie<ul>
|
||||||
|
<li>BLOBstreaming support with PBMS PHP extension (withdrawn in release
|
||||||
|
4.0)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Ankit Gupta (Google Summer of Code 2010)<ul>
|
||||||
|
<li>Visual query builder</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Madhura Jayaratne (Google Summer of Code 2011)<ul>
|
||||||
|
<li>OpenGIS support</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Ammar Yasir (Google Summer of Code 2011)<ul>
|
||||||
|
<li>Zoom search</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Aris Feryanto (Google Summer of Code 2011)<ul>
|
||||||
|
<li>Browse-mode improvements</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Thilanka Kaushalya (Google Summer of Code 2011)<ul>
|
||||||
|
<li>AJAXification</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Tyron Madlener (Google Summer of Code 2011)<ul>
|
||||||
|
<li>Query statistics and charts for the status page</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Zarubin Stas (Google Summer of Code 2011)<ul>
|
||||||
|
<li>Automated testing</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Rouslan Placella (Google Summer of Code 2011 and 2012)<ul>
|
||||||
|
<li>Improved support for Stored Routines, Triggers and Events</li>
|
||||||
|
<li>Italian translation updates</li>
|
||||||
|
<li>Removal of frames, new navigation</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Dieter Adriaenssens<ul>
|
||||||
|
<li>Various bugfixes</li>
|
||||||
|
<li>Dutch translation updates</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Alex Marin (Google Summer of Code 2012)<ul>
|
||||||
|
<li>New plugins and properties system</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Thilina Buddika Abeyrathna (Google Summer of Code 2012)<ul>
|
||||||
|
<li>Refactoring</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Atul Pratap Singh (Google Summer of Code 2012)<ul>
|
||||||
|
<li>Refactoring</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Chanaka Indrajith (Google Summer of Code 2012)<ul>
|
||||||
|
<li>Refactoring</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Yasitha Pandithawatta (Google Summer of Code 2012)<ul>
|
||||||
|
<li>Automated testing</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Jim Wigginton (phpseclib.sourceforge.net)<ul>
|
||||||
|
<li>phpseclib</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Bin Zu (Google Summer of Code 2013)<ul>
|
||||||
|
<li>Refactoring</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Supun Nakandala (Google Summer of Code 2013)<ul>
|
||||||
|
<li>Refactoring</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Mohamed Ashraf (Google Summer of Code 2013)<ul>
|
||||||
|
<li>AJAX error reporting</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Adam Kang (Google Summer of Code 2013)<ul>
|
||||||
|
<li>Automated testing</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Ayush Chaudhary (Google Summer of Code 2013)<ul>
|
||||||
|
<li>Automated testing</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Kasun Chathuranga (Google Summer of Code 2013)<ul>
|
||||||
|
<li>Interface improvements</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>And also to the following people who have contributed minor changes,
|
||||||
|
enhancements, bugfixes or support for a new language since version
|
||||||
|
2.1.0:</p>
|
||||||
|
<p>Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita,
|
||||||
|
Péter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow, Mats
|
||||||
|
Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kläger,
|
||||||
|
Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg,
|
||||||
|
Andreas Pauley, Bernard M. Piller, Laurent Haas, “Sakamoto”, Yuval
|
||||||
|
Sarna, www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun,
|
||||||
|
Peter Svec, Michael Tacelosky, Rachim Tamsjadi, Kositer Uros, Luís V.,
|
||||||
|
Martijn W. van der Lee, Algis Vainauskas, Daniel Villanueva, Vinay,
|
||||||
|
Ignacio Vazquez-Abrams, Chee Wai, Jakub Wilk, Thomas Michael
|
||||||
|
Winningham, Vilius Zigmantas, “Manuzhai”.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="translators">
|
||||||
|
<h2>Translators<a class="headerlink" href="#translators" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>Following people have contributed to translation of phpMyAdmin:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Arabic<ul>
|
||||||
|
<li>Abdullah Al-Saedi <abdullah.10_at_windowslive.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Bulgarian<ul>
|
||||||
|
<li>stoyanster <stoyanster_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Catalan<ul>
|
||||||
|
<li>Xavier Navarro <xvnavarro_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Czech<ul>
|
||||||
|
<li>Michal Čihař <michal_at_cihar.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Danish<ul>
|
||||||
|
<li>opensource <opensource_at_jth.net></li>
|
||||||
|
<li>Jørgen Thomsen <opensource_at_jth.net></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>German<ul>
|
||||||
|
<li>mrbendig <mrbendig_at_mrbendig.com></li>
|
||||||
|
<li>torsten.funck <torsten.funck_at_googlemail.com></li>
|
||||||
|
<li>Sven Strickroth <email_at_cs-ware.de></li>
|
||||||
|
<li>typo3 <typo3_at_dirk-weise.de></li>
|
||||||
|
<li>Jo Michael <me_at_mynetx.net></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Greek<ul>
|
||||||
|
<li>Panagiotis Papazoglou <papaz_p_at_yahoo.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>English (United Kingdom)<ul>
|
||||||
|
<li>Robert Readman <robert_readman_at_hotmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Spanish<ul>
|
||||||
|
<li>Matías Bellone <matiasbellone_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>French<ul>
|
||||||
|
<li>Marc Delisle <marc_at_infomarc.info></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Hindi<ul>
|
||||||
|
<li>u4663530 <u4663530_at_anu.edu.au></li>
|
||||||
|
<li>rsedwardian <rsedwardian_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Hungarian<ul>
|
||||||
|
<li>gergo314 <gergo314_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Italian<ul>
|
||||||
|
<li>Rouslan Placella <rouslan_at_placella.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Japanese<ul>
|
||||||
|
<li>Yuichiro <yuichiro_at_pop07.odn.ne.jp></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Lithuanian<ul>
|
||||||
|
<li>Kęstutis <forkik_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Norwegian Bokmål<ul>
|
||||||
|
<li>Sven-Erik Andersen <sven.erik.andersen_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Dutch<ul>
|
||||||
|
<li>Dieter Adriaenssens <ruleant_at_users.sourceforge.net></li>
|
||||||
|
<li>Herman van Rink <rink_at_initfour.nl></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Polish<ul>
|
||||||
|
<li>Stanisław Krukowski <stankruk_at_neostrada.pl></li>
|
||||||
|
<li>Marcin Kozioł <lord_dark_at_wp.pl></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Portuguese<ul>
|
||||||
|
<li>JoaoTMDias <contacto_at_joaodias.me></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Portuguese (Brazil)<ul>
|
||||||
|
<li>wiltave <wiltave_at_gmail.com></li>
|
||||||
|
<li>emerson4br <emerson4br_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Romanian<ul>
|
||||||
|
<li>alexukf <alex.ukf_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Russian<ul>
|
||||||
|
<li>Victor Volkov <hanut_at_php-myadmin.ru></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Sinhala<ul>
|
||||||
|
<li>Madhura Jayaratne <madhura.cj_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Slovak<ul>
|
||||||
|
<li>Martin Lacina <martin_at_whistler.sk></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Slovenian<ul>
|
||||||
|
<li>Domen <dbc334_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Swedish<ul>
|
||||||
|
<li>stefan <stefan_at_inkopsforum.se></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Tamil<ul>
|
||||||
|
<li>ysajeepan <ysajeepan_at_live.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Telugu<ul>
|
||||||
|
<li>veeven <veeven_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Thai<ul>
|
||||||
|
<li>kanitchet <kanichet_at_hotmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Turkish<ul>
|
||||||
|
<li>Burak Yavuz <hitowerdigit_at_hotmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Uighur<ul>
|
||||||
|
<li>gheni <gheni_at_yahoo.cn></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Ukrainian<ul>
|
||||||
|
<li>typim <duke3d_at_ukr.net></li>
|
||||||
|
<li>oleg-ilnytskyi <ukraine.oleg_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Urdu<ul>
|
||||||
|
<li>Mehbooob Khan <mehboobbugti_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Simplified Chinese<ul>
|
||||||
|
<li>shanyan baishui <Siramizu_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Traditional Chinese<ul>
|
||||||
|
<li>star <star_at_origin.club.tw></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="documentation-translators">
|
||||||
|
<h2>Documentation translators<a class="headerlink" href="#documentation-translators" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>Following people have contributed to translation of phpMyAdmin documentation:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Czech<ul>
|
||||||
|
<li>Michal Čihař <michal_at_cihar.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Greek<ul>
|
||||||
|
<li>Panagiotis Papazoglou <papaz_p_at_yahoo.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>English (United Kingdom)<ul>
|
||||||
|
<li>Robert Readman <robert_readman_at_hotmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>French<ul>
|
||||||
|
<li>Cédric Corazza <cedric.corazza_at_wanadoo.fr></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Japanese<ul>
|
||||||
|
<li>Yuichiro Takahashi <yuichiro_at_pop07.odn.ne.jp></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Polish<ul>
|
||||||
|
<li>Stanisław Krukowski <stankruk_at_neostrada.pl></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Portuguese (Brazil)<ul>
|
||||||
|
<li>mjaning <mjaning_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Slovenian<ul>
|
||||||
|
<li>Domen <dbc334_at_gmail.com></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="original-credits-of-version-2-1-0">
|
||||||
|
<h2>Original Credits of Version 2.1.0<a class="headerlink" href="#original-credits-of-version-2-1-0" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>This work is based on Peter Kuppelwieser’s MySQL-Webadmin. It was his
|
||||||
|
idea to create a web-based interface to MySQL using PHP3. Although I
|
||||||
|
have not used any of his source-code, there are some concepts I’ve
|
||||||
|
borrowed from him. phpMyAdmin was created because Peter told me he
|
||||||
|
wasn’t going to further develop his (great) tool.</p>
|
||||||
|
<p>Thanks go to</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Amalesh Kempf <ak-lsml_at_living-source.com> who contributed the
|
||||||
|
code for the check when dropping a table or database. He also
|
||||||
|
suggested that you should be able to specify the primary key on
|
||||||
|
tbl_create.php3. To version 1.1.1 he contributed the ldi_*.php3-set
|
||||||
|
(Import text-files) as well as a bug-report. Plus many smaller
|
||||||
|
improvements.</li>
|
||||||
|
<li>Jan Legenhausen <jan_at_nrw.net>: He made many of the changes that
|
||||||
|
were introduced in 1.3.0 (including quite significant ones like the
|
||||||
|
authentication). For 1.4.1 he enhanced the table-dump feature. Plus
|
||||||
|
bug-fixes and help.</li>
|
||||||
|
<li>Marc Delisle <DelislMa_at_CollegeSherbrooke.qc.ca> made phpMyAdmin
|
||||||
|
language-independent by outsourcing the strings to a separate file. He
|
||||||
|
also contributed the French translation.</li>
|
||||||
|
<li>Alexandr Bravo <abravo_at_hq.admiral.ru> who contributed
|
||||||
|
tbl_select.php3, a feature to display only some columns from a table.</li>
|
||||||
|
<li>Chris Jackson <chrisj_at_ctel.net> added support for MySQL functions
|
||||||
|
in tbl_change.php3. He also added the “Query by Example” feature in
|
||||||
|
2.0.</li>
|
||||||
|
<li>Dave Walton <walton_at_nordicdms.com> added support for multiple
|
||||||
|
servers and is a regular contributor for bug-fixes.</li>
|
||||||
|
<li>Gabriel Ash <ga244_at_is8.nyu.edu> contributed the random access
|
||||||
|
features for 2.0.6.</li>
|
||||||
|
</ul>
|
||||||
|
<p>The following people have contributed minor changes, enhancements,
|
||||||
|
bugfixes or support for a new language:</p>
|
||||||
|
<p>Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas
|
||||||
|
Kleemann, Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel
|
||||||
|
Piankov, Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein,
|
||||||
|
Jannis Hermanns, G. Wieggers.</p>
|
||||||
|
<p>And thanks to everyone else who sent me email with suggestions, bug-
|
||||||
|
reports and or just some feedback.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><a class="reference internal" href="#">Credits</a><ul>
|
||||||
|
<li><a class="reference internal" href="#credits-in-chronological-order">Credits, in chronological order</a></li>
|
||||||
|
<li><a class="reference internal" href="#translators">Translators</a></li>
|
||||||
|
<li><a class="reference internal" href="#documentation-translators">Documentation translators</a></li>
|
||||||
|
<li><a class="reference internal" href="#original-credits-of-version-2-1-0">Original Credits of Version 2.1.0</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>Previous topic</h4>
|
||||||
|
<p class="topless"><a href="copyright.html"
|
||||||
|
title="previous chapter">Copyright</a></p>
|
||||||
|
<h4>Next topic</h4>
|
||||||
|
<p class="topless"><a href="glossary.html"
|
||||||
|
title="next chapter">Glossary</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/credits.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="glossary.html" title="Glossary"
|
||||||
|
>next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="copyright.html" title="Copyright"
|
||||||
|
>previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
118
sources/doc/html/developers.html
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Developers Information — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<link rel="next" title="Distributing and packaging phpMyAdmin" href="vendors.html" />
|
||||||
|
<link rel="prev" title="FAQ - Frequently Asked Questions" href="faq.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="vendors.html" title="Distributing and packaging phpMyAdmin"
|
||||||
|
accesskey="N">next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="faq.html" title="FAQ - Frequently Asked Questions"
|
||||||
|
accesskey="P">previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="developers-information">
|
||||||
|
<span id="developers"></span><h1>Developers Information<a class="headerlink" href="#developers-information" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<p>phpMyAdmin is Open Source, so you’re invited to contribute to it. Many
|
||||||
|
great features have been written by other people and you too can help
|
||||||
|
to make phpMyAdmin a useful tool.</p>
|
||||||
|
<p>You can check out all the possibilities to contribute in the
|
||||||
|
<a class="reference external" href="http://www.phpmyadmin.net/home_page/improve.php">contribute section on our website</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h4>Previous topic</h4>
|
||||||
|
<p class="topless"><a href="faq.html"
|
||||||
|
title="previous chapter">FAQ - Frequently Asked Questions</a></p>
|
||||||
|
<h4>Next topic</h4>
|
||||||
|
<p class="topless"><a href="vendors.html"
|
||||||
|
title="next chapter">Distributing and packaging phpMyAdmin</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/developers.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="vendors.html" title="Distributing and packaging phpMyAdmin"
|
||||||
|
>next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="faq.html" title="FAQ - Frequently Asked Questions"
|
||||||
|
>previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
1791
sources/doc/html/faq.html
Normal file
3847
sources/doc/html/genindex.html
Normal file
627
sources/doc/html/glossary.html
Normal file
|
@ -0,0 +1,627 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Glossary — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<link rel="prev" title="Credits" href="credits.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="credits.html" title="Credits"
|
||||||
|
accesskey="P">previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="glossary">
|
||||||
|
<span id="id1"></span><h1>Glossary<a class="headerlink" href="#glossary" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<p>From Wikipedia, the free encyclopedia</p>
|
||||||
|
<dl class="glossary docutils">
|
||||||
|
<dt id="term-htaccess">.htaccess</dt>
|
||||||
|
<dd><p class="first">the default name of Apache’s directory-level configuration file.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/.htaccess">http://www.wikipedia.org/wiki/.htaccess</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-acl">ACL</dt>
|
||||||
|
<dd>Access Contol List</dd>
|
||||||
|
<dt id="term-blowfish">Blowfish</dt>
|
||||||
|
<dd><p class="first">a keyed, symmetric block cipher, designed in 1993 by Bruce Schneier.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Blowfish_(cipher)">http://www.wikipedia.org/wiki/Blowfish_(cipher)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-browser">Browser</dt>
|
||||||
|
<dd><p class="first">a software application that enables a user to display and interact with text, images, and other information typically located on a web page at a website on the World Wide Web.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://en.wikipedia.org/wiki/Web_browser">http://en.wikipedia.org/wiki/Web_browser</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-bzip2">bzip2</dt>
|
||||||
|
<dd><p class="first">a free software/open source data compression algorithm and program developed by Julian Seward.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Bzip2">http://www.wikipedia.org/wiki/Bzip2</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-cgi">CGI</dt>
|
||||||
|
<dd><p class="first">Common Gateway Interface is an important World Wide Web technology that
|
||||||
|
enables a client web browser to request data from a program executed on
|
||||||
|
the Web server.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/CGI">http://www.wikipedia.org/wiki/CGI</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-changelog">Changelog</dt>
|
||||||
|
<dd><p class="first">a log or record of changes made to a project.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Changelog">http://www.wikipedia.org/wiki/Changelog</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-client">Client</dt>
|
||||||
|
<dd><p class="first">a computer system that accesses a (remote) service on another computer by some kind of network.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Client_(computing)">http://www.wikipedia.org/wiki/Client_(computing)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-column">column</dt>
|
||||||
|
<dd><p class="first">a set of data values of a particular simple type, one for each row of the table.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Column_(database)">http://www.wikipedia.org/wiki/Column_(database)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-cookie">Cookie</dt>
|
||||||
|
<dd><p class="first">a packet of information sent by a server to a World Wide Web browser and then sent back by the browser each time it accesses that server.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/HTTP_cookie">http://www.wikipedia.org/wiki/HTTP_cookie</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-csv">CSV</dt>
|
||||||
|
<dd><p class="first">Comma- separated values</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Comma-separated_values">http://www.wikipedia.org/wiki/Comma-separated_values</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-db">DB</dt>
|
||||||
|
<dd>look at <a class="reference internal" href="#term-database"><em class="xref std std-term">database</em></a></dd>
|
||||||
|
<dt id="term-database">database</dt>
|
||||||
|
<dd><p class="first">an organized collection of data.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Database">http://www.wikipedia.org/wiki/Database</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-engine">Engine</dt>
|
||||||
|
<dd>look at <a class="reference internal" href="#term-storage-engines"><em class="xref std std-term">storage engines</em></a></dd>
|
||||||
|
<dt id="term-extension">extension</dt>
|
||||||
|
<dd><p class="first">a PHP module that extends PHP with additional functionality.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/extension">http://www.wikipedia.org/wiki/extension</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-faq">FAQ</dt>
|
||||||
|
<dd><p class="first">Frequently Asked Questions is a list of commonly asked question and there
|
||||||
|
answers.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/FAQ">http://www.wikipedia.org/wiki/FAQ</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-field">Field</dt>
|
||||||
|
<dd><p class="first">one part of divided data/columns.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Field_(computer_science)">http://www.wikipedia.org/wiki/Field_(computer_science)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-foreign-key">foreign key</dt>
|
||||||
|
<dd><p class="first">a column or group of columns in a database row that point to a key column
|
||||||
|
or group of columns forming a key of another database row in some
|
||||||
|
(usually different) table.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Foreign_key">http://www.wikipedia.org/wiki/Foreign_key</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-fpdf">FPDF</dt>
|
||||||
|
<dd><p class="first">the free <a class="reference internal" href="#term-pdf"><em class="xref std std-term">PDF</em></a> library</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.fpdf.org/">http://www.fpdf.org/</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-gd">GD</dt>
|
||||||
|
<dd><p class="first">Graphics Library by Thomas Boutell and others for dynamically manipulating images.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/GD_Graphics_Library">http://www.wikipedia.org/wiki/GD_Graphics_Library</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-gd2">GD2</dt>
|
||||||
|
<dd>look at <a class="reference internal" href="#term-gd"><em class="xref std std-term">gd</em></a></dd>
|
||||||
|
<dt id="term-gzip">gzip</dt>
|
||||||
|
<dd><p class="first">gzip is short for GNU zip, a GNU free software file compression program.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Gzip">http://www.wikipedia.org/wiki/Gzip</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-host">host</dt>
|
||||||
|
<dd><p class="first">any machine connected to a computer network, a node that has a hostname.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Host">http://www.wikipedia.org/wiki/Host</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-hostname">hostname</dt>
|
||||||
|
<dd><p class="first">the unique name by which a network attached device is known on a network.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Hostname">http://www.wikipedia.org/wiki/Hostname</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-http">HTTP</dt>
|
||||||
|
<dd><p class="first">HyperText Transfer Protocol is the primary method used to transfer or
|
||||||
|
convey information on the World Wide Web.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/HyperText_Transfer_Protocol">http://www.wikipedia.org/wiki/HyperText_Transfer_Protocol</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-https">https</dt>
|
||||||
|
<dd><p class="first">a <a class="reference internal" href="#term-http"><em class="xref std std-term">HTTP</em></a>-connection with additional security measures.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Https:_URI_scheme">http://www.wikipedia.org/wiki/Https:_URI_scheme</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-iec">IEC</dt>
|
||||||
|
<dd>International Electrotechnical Commission</dd>
|
||||||
|
<dt id="term-iis">IIS</dt>
|
||||||
|
<dd><p class="first">Internet Information Services is a set of Internet-based services for
|
||||||
|
servers using Microsoft Windows.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Internet_Information_Services">http://www.wikipedia.org/wiki/Internet_Information_Services</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-index">Index</dt>
|
||||||
|
<dd><p class="first">a feature that allows quick access to the rows in a table.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Index_(database)">http://www.wikipedia.org/wiki/Index_(database)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-ip">IP</dt>
|
||||||
|
<dd><p class="first">Internet Protocol is a data-oriented protocol used by source and
|
||||||
|
destination hosts for communicating data across a packet-switched
|
||||||
|
internetwork.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Internet_Protocol">http://www.wikipedia.org/wiki/Internet_Protocol</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-ip-address">IP Address</dt>
|
||||||
|
<dd><p class="first">a unique number that devices use in order to identify and communicate with each other on a network utilizing the Internet Protocol standard.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/IP_Address">http://www.wikipedia.org/wiki/IP_Address</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-ipv6">IPv6</dt>
|
||||||
|
<dd><p class="first">IPv6 (Internet Protocol version 6) is the latest revision of the
|
||||||
|
Internet Protocol (<a class="reference internal" href="#term-ip"><em class="xref std std-term">IP</em></a>), designed to deal with the
|
||||||
|
long-anticipated problem of its precedessor IPv4 running out of addresses.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/IPv6">http://www.wikipedia.org/wiki/IPv6</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-isapi">ISAPI</dt>
|
||||||
|
<dd><p class="first">Internet Server Application Programming Interface is the API of Internet Information Services (IIS).</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/ISAPI">http://www.wikipedia.org/wiki/ISAPI</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-isp">ISP</dt>
|
||||||
|
<dd><p class="first">Internet service provider is a business or organization that offers users
|
||||||
|
access to the Internet and related services.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/ISP">http://www.wikipedia.org/wiki/ISP</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-iso">ISO</dt>
|
||||||
|
<dd>International Standards Organisation</dd>
|
||||||
|
<dt id="term-jpeg">JPEG</dt>
|
||||||
|
<dd><p class="first">a most commonly used standard method of lossy compression for photographic images.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/JPEG">http://www.wikipedia.org/wiki/JPEG</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-jpg">JPG</dt>
|
||||||
|
<dd>look at <a class="reference internal" href="#term-jpeg"><em class="xref std std-term">jpeg</em></a></dd>
|
||||||
|
<dt id="term-key">Key</dt>
|
||||||
|
<dd>look at <a class="reference internal" href="#term-index"><em class="xref std std-term">index</em></a></dd>
|
||||||
|
<dt id="term-latex">LATEX</dt>
|
||||||
|
<dd><p class="first">a document preparation system for the TEX typesetting program.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/LaTeX">http://www.wikipedia.org/wiki/LaTeX</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-mac">Mac</dt>
|
||||||
|
<dd><p class="first">Apple Macintosh is line of personal computers is designed, developed, manufactured, and marketed by Apple Computer.</p>
|
||||||
|
<p class="last">. seealso:: <<a class="reference external" href="http://www.wikipedia.org/wiki/Mac">http://www.wikipedia.org/wiki/Mac</a>></p>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-mac-os-x">Mac OS X</dt>
|
||||||
|
<dd><p class="first">the operating system which is included with all currently shipping Apple Macintosh computers in the consumer and professional markets.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Mac_OS_X">http://www.wikipedia.org/wiki/Mac_OS_X</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-mcrypt">MCrypt</dt>
|
||||||
|
<dd><p class="first">a cryptographic library.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/MCrypt">http://www.wikipedia.org/wiki/MCrypt</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-42">mcrypt</dt>
|
||||||
|
<dd><p class="first">the MCrypt PHP extension.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://php.net/mcrypt">http://php.net/mcrypt</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-mime">MIME</dt>
|
||||||
|
<dd><p class="first">Multipurpose Internet Mail Extensions is
|
||||||
|
an Internet Standard for the format of e-mail.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/MIME">http://www.wikipedia.org/wiki/MIME</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-module">module</dt>
|
||||||
|
<dd><p class="first">some sort of extension for the Apache Webserver.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/module">http://www.wikipedia.org/wiki/module</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-mysql">MySQL</dt>
|
||||||
|
<dd><p class="first">a multithreaded, multi-user, SQL (Structured Query Language) Database Management System (DBMS).</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/MySQL">http://www.wikipedia.org/wiki/MySQL</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-mysqli">mysqli</dt>
|
||||||
|
<dd><p class="first">the improved MySQL client PHP extension.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://php.net/mysqli">http://php.net/mysqli</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-47">mysql</dt>
|
||||||
|
<dd><p class="first">the MySQL client PHP extension.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://php.net/mysql">http://php.net/mysql</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-opendocument">OpenDocument</dt>
|
||||||
|
<dd><p class="first">open standard for office documents.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/OpenDocument">http://www.wikipedia.org/wiki/OpenDocument</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-os-x">OS X</dt>
|
||||||
|
<dd><p class="first">look at <a class="reference internal" href="#term-mac-os-x"><em class="xref std std-term">Mac OS X</em></a>.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/OS_X">http://www.wikipedia.org/wiki/OS_X</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-pdf">PDF</dt>
|
||||||
|
<dd><p class="first">Portable Document Format is a file format developed by Adobe Systems for
|
||||||
|
representing two dimensional documents in a device independent and
|
||||||
|
resolution independent format.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Portable_Document_Format">http://www.wikipedia.org/wiki/Portable_Document_Format</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-pear">PEAR</dt>
|
||||||
|
<dd><p class="first">the PHP Extension and Application Repository.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://pear.php.net/">http://pear.php.net/</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-pcre">PCRE</dt>
|
||||||
|
<dd><p class="first">Perl Compatible Regular Expressions is the perl-compatible regular
|
||||||
|
expression functions for PHP</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://php.net/pcre">http://php.net/pcre</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-php">PHP</dt>
|
||||||
|
<dd><p class="first">short for “PHP: Hypertext Preprocessor”, is an open-source, reflective
|
||||||
|
programming language used mainly for developing server-side applications
|
||||||
|
and dynamic web content, and more recently, a broader range of software
|
||||||
|
applications.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/PHP">http://www.wikipedia.org/wiki/PHP</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-port">port</dt>
|
||||||
|
<dd><p class="first">a connection through which data is sent and received.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Port_(computing)">http://www.wikipedia.org/wiki/Port_(computing)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-rfc">RFC</dt>
|
||||||
|
<dd><p class="first">Request for Comments (RFC) documents are a series of memoranda
|
||||||
|
encompassing new research, innovations, and methodologies applicable to
|
||||||
|
Internet technologies.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Request_for_Comments">http://www.wikipedia.org/wiki/Request_for_Comments</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-rfc-1952">RFC 1952</dt>
|
||||||
|
<dd><p class="first">GZIP file format specification version 4.3</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><span class="target" id="index-0"></span><a class="rfc reference external" href="http://tools.ietf.org/html/rfc1952.html"><strong>RFC 1952</strong></a></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-row-record-tuple">Row (record, tuple)</dt>
|
||||||
|
<dd><p class="first">represents a single, implicitly structured data item in a table.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Row_(database)">http://www.wikipedia.org/wiki/Row_(database)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-server">Server</dt>
|
||||||
|
<dd><p class="first">a computer system that provides services to other computing systems over a network.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Server_(computing)">http://www.wikipedia.org/wiki/Server_(computing)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-storage-engines">Storage Engines</dt>
|
||||||
|
<dd><p class="first">handlers for different table types</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://dev.mysql.com/doc/en/storage-engines.html">http://dev.mysql.com/doc/en/storage-engines.html</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-soap">SOAP</dt>
|
||||||
|
<dd><p class="first">Simple Object Access Protocol is a protocol specification for exchanging
|
||||||
|
structured information in the implementation of Web Services in computer
|
||||||
|
networks.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://en.wikipedia.org/wiki/SOAP">http://en.wikipedia.org/wiki/SOAP</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-socket">socket</dt>
|
||||||
|
<dd><p class="first">a form of inter-process communication.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Socket#Computer_sockets">http://www.wikipedia.org/wiki/Socket#Computer_sockets</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-ssl">SSL</dt>
|
||||||
|
<dd><p class="first">Secure Sockets Layer is a cryptographic protocol which provides secure
|
||||||
|
communication on the Internet.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Secure_Sockets_Layer">http://www.wikipedia.org/wiki/Secure_Sockets_Layer</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-stored-procedure">Stored procedure</dt>
|
||||||
|
<dd><p class="first">a subroutine available to applications accessing a relational database system</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://en.wikipedia.org/wiki/Stored_procedure">http://en.wikipedia.org/wiki/Stored_procedure</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-sql">SQL</dt>
|
||||||
|
<dd><p class="first">Structured Query Language</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/SQL">http://www.wikipedia.org/wiki/SQL</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-table">table</dt>
|
||||||
|
<dd><p class="first">a set of data elements (cells) that is organized, defined and stored as
|
||||||
|
horizontal rows and vertical columns where each item can be uniquely
|
||||||
|
identified by a label or key or by it?s position in relation to other
|
||||||
|
items.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Table_(database)">http://www.wikipedia.org/wiki/Table_(database)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-tar">tar</dt>
|
||||||
|
<dd><p class="first">a type of archive file format: the Tape ARchive format.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Tar_(file_format)">http://www.wikipedia.org/wiki/Tar_(file_format)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-tcp">TCP</dt>
|
||||||
|
<dd><p class="first">Transmission Control Protocol is one of the core protocols of the
|
||||||
|
Internet protocol suite.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/TCP">http://www.wikipedia.org/wiki/TCP</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-tcpdf">TCPDF</dt>
|
||||||
|
<dd><p class="first">Rewrite of <a class="reference internal" href="#term-ufpdf"><em class="xref std std-term">UFPDF</em></a> with various improvements.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.tcpdf.org/">http://www.tcpdf.org/</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-trigger">trigger</dt>
|
||||||
|
<dd><p class="first">a procedural code that is automatically executed in response to certain events on a particular table or view in a database</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://en.wikipedia.org/wiki/Database_trigger">http://en.wikipedia.org/wiki/Database_trigger</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-ufpdf">UFPDF</dt>
|
||||||
|
<dd><p class="first">Unicode/UTF-8 extension for <a class="reference internal" href="#term-fpdf"><em class="xref std std-term">FPDF</em></a></p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.acko.net/node/56">http://www.acko.net/node/56</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-url">URL</dt>
|
||||||
|
<dd><p class="first">Uniform Resource Locator is a sequence of characters, conforming to a
|
||||||
|
standardized format, that is used for referring to resources, such as
|
||||||
|
documents and images on the Internet, by their location.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/URL">http://www.wikipedia.org/wiki/URL</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-webserver">Webserver</dt>
|
||||||
|
<dd><p class="first">A computer (program) that is responsible for accepting HTTP requests from clients and serving them Web pages.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Webserver">http://www.wikipedia.org/wiki/Webserver</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-xml">XML</dt>
|
||||||
|
<dd><p class="first">Extensible Markup Language is a W3C-recommended general- purpose markup
|
||||||
|
language for creating special-purpose markup languages, capable of
|
||||||
|
describing many different kinds of data.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/XML">http://www.wikipedia.org/wiki/XML</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-zip">ZIP</dt>
|
||||||
|
<dd><p class="first">a popular data compression and archival format.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/ZIP_(file_format)">http://www.wikipedia.org/wiki/ZIP_(file_format)</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt id="term-zlib">zlib</dt>
|
||||||
|
<dd><p class="first">an open-source, cross- platform data compression library by Jean-loup Gailly and Mark Adler.</p>
|
||||||
|
<div class="admonition-see-also last admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><<a class="reference external" href="http://www.wikipedia.org/wiki/Zlib">http://www.wikipedia.org/wiki/Zlib</a>></p>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h4>Previous topic</h4>
|
||||||
|
<p class="topless"><a href="credits.html"
|
||||||
|
title="previous chapter">Credits</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/glossary.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="credits.html" title="Credits"
|
||||||
|
>previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
207
sources/doc/html/index.html
Normal file
|
@ -0,0 +1,207 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Welcome to phpMyAdmin’s documentation! — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="#" />
|
||||||
|
<link rel="next" title="Introduction" href="intro.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="intro.html" title="Introduction"
|
||||||
|
accesskey="N">next</a> |</li>
|
||||||
|
<li><a href="#">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="welcome-to-phpmyadmin-s-documentation">
|
||||||
|
<h1>Welcome to phpMyAdmin’s documentation!<a class="headerlink" href="#welcome-to-phpmyadmin-s-documentation" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<p>Contents:</p>
|
||||||
|
<div class="toctree-wrapper compound">
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a><ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="intro.html#supported-features">Supported features</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="intro.html#a-word-about-users">A word about users</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="require.html">Requirements</a><ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="require.html#web-server">Web server</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="require.html#php">PHP</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="require.html#database">Database</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="require.html#web-browser">Web browser</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="setup.html">Installation</a><ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="setup.html#linux-distributions">Linux distributions</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="setup.html#installing-on-windows">Installing on Windows</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="setup.html#quick-install">Quick Install</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="setup.html#phpmyadmin-configuration-storage">phpMyAdmin configuration storage</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="setup.html#upgrading-from-an-older-version">Upgrading from an older version</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="setup.html#using-authentication-modes">Using authentication modes</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="setup.html#securing-your-phpmyadmin-installation">Securing your phpMyAdmin installation</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a><ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#basic-settings">Basic settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#server-connection-settings">Server connection settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#generic-settings">Generic settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#cookie-authentication-options">Cookie authentication options</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#navigation-panel-setup">Navigation panel setup</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#main-panel">Main panel</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#database-structure">Database structure</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#browse-mode">Browse mode</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#editing-mode">Editing mode</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#export-and-import-settings">Export and import settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#tabs-display-settings">Tabs display settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#pdf-options">PDF Options</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#languages">Languages</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#web-server-settings">Web server settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#theme-settings">Theme settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#design-customization">Design customization</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#text-fields">Text fields</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#sql-query-box-settings">SQL query box settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#web-server-upload-save-import-directories">Web server upload/save/import directories</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#various-display-setting">Various display setting</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#page-titles">Page titles</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#theme-manager-settings">Theme manager settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#default-queries">Default queries</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#sql-validator-settings">SQL validator settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#mysql-settings">MySQL settings</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="config.html#developer">Developer</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="user.html">User Guide</a><ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="transformations.html">Transformations</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="privileges.html">User management</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="other.html">Other sources of information</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ - Frequently Asked Questions</a><ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#server">Server</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#configuration">Configuration</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#known-limitations">Known limitations</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#isps-multi-user-installations">ISPs, multi-user installations</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#browsers-or-client-os">Browsers or client OS</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#using-phpmyadmin">Using phpMyAdmin</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#phpmyadmin-project">phpMyAdmin project</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#security">Security</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="faq.html#synchronization">Synchronization</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="developers.html">Developers Information</a></li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="vendors.html">Distributing and packaging phpMyAdmin</a><ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="vendors.html#external-libraries">External libraries</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright</a></li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a><ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="credits.html#credits-in-chronological-order">Credits, in chronological order</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="credits.html#translators">Translators</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="credits.html#documentation-translators">Documentation translators</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="credits.html#original-credits-of-version-2-1-0">Original Credits of Version 2.1.0</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="glossary.html">Glossary</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="indices-and-tables">
|
||||||
|
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
|
||||||
|
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
|
||||||
|
<li><a class="reference internal" href="glossary.html#glossary"><em>Glossary</em></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h3><a href="#">Table Of Contents</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><a class="reference internal" href="#">Welcome to phpMyAdmin’s documentation!</a><ul>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>Next topic</h4>
|
||||||
|
<p class="topless"><a href="intro.html"
|
||||||
|
title="next chapter">Introduction</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/index.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="intro.html" title="Introduction"
|
||||||
|
>next</a> |</li>
|
||||||
|
<li><a href="#">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
182
sources/doc/html/intro.html
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Introduction — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<link rel="next" title="Requirements" href="require.html" />
|
||||||
|
<link rel="prev" title="Welcome to phpMyAdmin’s documentation!" href="index.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="require.html" title="Requirements"
|
||||||
|
accesskey="N">next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="index.html" title="Welcome to phpMyAdmin’s documentation!"
|
||||||
|
accesskey="P">previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="introduction">
|
||||||
|
<span id="intro"></span><h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<p>phpMyAdmin can manage a whole MySQL server (needs a super-user) as
|
||||||
|
well as a single database. To accomplish the latter you’ll need a
|
||||||
|
properly set up MySQL user who can read/write only the desired
|
||||||
|
database. It’s up to you to look up the appropriate part in the MySQL
|
||||||
|
manual.</p>
|
||||||
|
<div class="section" id="supported-features">
|
||||||
|
<h2>Supported features<a class="headerlink" href="#supported-features" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>Currently phpMyAdmin can:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>browse and drop databases, tables, views, columns and indexes</li>
|
||||||
|
<li>display multiple results sets through stored procedures or queries</li>
|
||||||
|
<li>create, copy, drop, rename and alter databases, tables, columns and
|
||||||
|
indexes</li>
|
||||||
|
<li>maintenance server, databases and tables, with proposals on server
|
||||||
|
configuration</li>
|
||||||
|
<li>execute, edit and bookmark any <a class="reference internal" href="glossary.html#term-sql"><em class="xref std std-term">SQL</em></a>-statement, even batch-queries</li>
|
||||||
|
<li>load text files into tables</li>
|
||||||
|
<li>create <a class="footnote-reference" href="#f1" id="id1">[1]</a> and read dumps of tables</li>
|
||||||
|
<li>export <a class="footnote-reference" href="#f1" id="id2">[1]</a> data to various formats: <a class="reference internal" href="glossary.html#term-csv"><em class="xref std std-term">CSV</em></a>, <a class="reference internal" href="glossary.html#term-xml"><em class="xref std std-term">XML</em></a>, <a class="reference internal" href="glossary.html#term-pdf"><em class="xref std std-term">PDF</em></a>,
|
||||||
|
<a class="reference internal" href="glossary.html#term-iso"><em class="xref std std-term">ISO</em></a>/<a class="reference internal" href="glossary.html#term-iec"><em class="xref std std-term">IEC</em></a> 26300 - <a class="reference internal" href="glossary.html#term-opendocument"><em class="xref std std-term">OpenDocument</em></a> Text and Spreadsheet, Microsoft
|
||||||
|
Word 2000, and LATEX formats</li>
|
||||||
|
<li>import data and <a class="reference internal" href="glossary.html#term-47"><em class="xref std std-term">MySQL</em></a> structures from <a class="reference internal" href="glossary.html#term-opendocument"><em class="xref std std-term">OpenDocument</em></a> spreadsheets, as
|
||||||
|
well as <a class="reference internal" href="glossary.html#term-xml"><em class="xref std std-term">XML</em></a>, <a class="reference internal" href="glossary.html#term-csv"><em class="xref std std-term">CSV</em></a>, and <a class="reference internal" href="glossary.html#term-sql"><em class="xref std std-term">SQL</em></a> files</li>
|
||||||
|
<li>administer multiple servers</li>
|
||||||
|
<li>manage MySQL users and privileges</li>
|
||||||
|
<li>check referential integrity in MyISAM tables</li>
|
||||||
|
<li>using Query-by-example (QBE), create complex queries automatically
|
||||||
|
connecting required tables</li>
|
||||||
|
<li>create <a class="reference internal" href="glossary.html#term-pdf"><em class="xref std std-term">PDF</em></a> graphics of your
|
||||||
|
database layout</li>
|
||||||
|
<li>search globally in a database or a subset of it</li>
|
||||||
|
<li>transform stored data into any format using a set of predefined
|
||||||
|
functions, like displaying BLOB-data as image or download-link</li>
|
||||||
|
<li>track changes on databases, tables and views</li>
|
||||||
|
<li>support InnoDB tables and foreign keys see <a class="reference internal" href="faq.html#faq3-6"><em>3.6 What is currently not supported in phpMyAdmin about InnoDB?</em></a></li>
|
||||||
|
<li>support mysqli, the improved MySQL extension see <a class="reference internal" href="faq.html#faq1-17"><em>1.17 Which MySQL versions does phpMyAdmin support?</em></a></li>
|
||||||
|
<li>create, edit, call, export and drop stored procedures and functions</li>
|
||||||
|
<li>create, edit, export and drop events and triggers</li>
|
||||||
|
<li>communicate in <a class="reference external" href="http://www.phpmyadmin.net/home_page/translations.php">62 different languages</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="a-word-about-users">
|
||||||
|
<h2>A word about users<a class="headerlink" href="#a-word-about-users" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>Many people have difficulty understanding the concept of user
|
||||||
|
management with regards to phpMyAdmin. When a user logs in to
|
||||||
|
phpMyAdmin, that username and password are passed directly to MySQL.
|
||||||
|
phpMyAdmin does no account management on its own (other than allowing
|
||||||
|
one to manipulate the MySQL user account information); all users must
|
||||||
|
be valid MySQL users.</p>
|
||||||
|
<p class="rubric">Footnotes</p>
|
||||||
|
<table class="docutils footnote" frame="void" id="f1" rules="none">
|
||||||
|
<colgroup><col class="label" /><col /></colgroup>
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr><td class="label">[1]</td><td><em>(<a class="fn-backref" href="#id1">1</a>, <a class="fn-backref" href="#id2">2</a>)</em> phpMyAdmin can compress (<a class="reference internal" href="glossary.html#term-zip"><em class="xref std std-term">Zip</em></a>, <a class="reference internal" href="glossary.html#term-gzip"><em class="xref std std-term">GZip</em></a> <a class="reference internal" href="glossary.html#term-rfc-1952"><em class="xref std std-term">RFC 1952</em></a> or
|
||||||
|
<a class="reference internal" href="glossary.html#term-bzip2"><em class="xref std std-term">Bzip2</em></a> formats) dumps and <a class="reference internal" href="glossary.html#term-csv"><em class="xref std std-term">CSV</em></a> exports if you use PHP with
|
||||||
|
<a class="reference internal" href="glossary.html#term-zlib"><em class="xref std std-term">Zlib</em></a> support (<tt class="docutils literal"><span class="pre">--with-zlib</span></tt>) and/or <a class="reference internal" href="glossary.html#term-bzip2"><em class="xref std std-term">Bzip2</em></a> support
|
||||||
|
(<tt class="docutils literal"><span class="pre">--with-bz2</span></tt>). Proper support may also need changes in <tt class="file docutils literal"><span class="pre">php.ini</span></tt>.</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><a class="reference internal" href="#">Introduction</a><ul>
|
||||||
|
<li><a class="reference internal" href="#supported-features">Supported features</a></li>
|
||||||
|
<li><a class="reference internal" href="#a-word-about-users">A word about users</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>Previous topic</h4>
|
||||||
|
<p class="topless"><a href="index.html"
|
||||||
|
title="previous chapter">Welcome to phpMyAdmin’s documentation!</a></p>
|
||||||
|
<h4>Next topic</h4>
|
||||||
|
<p class="topless"><a href="require.html"
|
||||||
|
title="next chapter">Requirements</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/intro.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="require.html" title="Requirements"
|
||||||
|
>next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="index.html" title="Welcome to phpMyAdmin’s documentation!"
|
||||||
|
>previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
sources/doc/html/objects.inv
Normal file
135
sources/doc/html/other.html
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Other sources of information — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<link rel="up" title="User Guide" href="user.html" />
|
||||||
|
<link rel="next" title="FAQ - Frequently Asked Questions" href="faq.html" />
|
||||||
|
<link rel="prev" title="User management" href="privileges.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="faq.html" title="FAQ - Frequently Asked Questions"
|
||||||
|
accesskey="N">next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="privileges.html" title="User management"
|
||||||
|
accesskey="P">previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
<li><a href="user.html" accesskey="U">User Guide</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="other-sources-of-information">
|
||||||
|
<h1>Other sources of information<a class="headerlink" href="#other-sources-of-information" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<div class="section" id="printed-book">
|
||||||
|
<h2>Printed Book<a class="headerlink" href="#printed-book" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>The definitive guide to using phpMyAdmin is the book Mastering phpMyAdmin for
|
||||||
|
Effective MySQL Management by Marc Delisle. You can get information on that
|
||||||
|
book and other officially endorsed <a class="reference external" href="http://www.phpmyadmin.net/home_page/docs.php?books">books at the phpMyAdmin site</a>.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="tutorials">
|
||||||
|
<h2>Tutorials<a class="headerlink" href="#tutorials" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>Third party tutorials and articles are listed on our <a class="reference external" href="http://wiki.phpmyadmin.net/pma/Articles">wiki page</a>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><a class="reference internal" href="#">Other sources of information</a><ul>
|
||||||
|
<li><a class="reference internal" href="#printed-book">Printed Book</a></li>
|
||||||
|
<li><a class="reference internal" href="#tutorials">Tutorials</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>Previous topic</h4>
|
||||||
|
<p class="topless"><a href="privileges.html"
|
||||||
|
title="previous chapter">User management</a></p>
|
||||||
|
<h4>Next topic</h4>
|
||||||
|
<p class="topless"><a href="faq.html"
|
||||||
|
title="next chapter">FAQ - Frequently Asked Questions</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/other.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="faq.html" title="FAQ - Frequently Asked Questions"
|
||||||
|
>next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="privileges.html" title="User management"
|
||||||
|
>previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
<li><a href="user.html" >User Guide</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
169
sources/doc/html/privileges.html
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>User management — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<link rel="up" title="User Guide" href="user.html" />
|
||||||
|
<link rel="next" title="Other sources of information" href="other.html" />
|
||||||
|
<link rel="prev" title="Transformations" href="transformations.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="other.html" title="Other sources of information"
|
||||||
|
accesskey="N">next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="transformations.html" title="Transformations"
|
||||||
|
accesskey="P">previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
<li><a href="user.html" accesskey="U">User Guide</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="user-management">
|
||||||
|
<h1>User management<a class="headerlink" href="#user-management" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<p>User management is the process of controlling which users are allowed to
|
||||||
|
connect to the MySQL server and what permissions they have on each database.
|
||||||
|
phpMyAdmin does not handle user management, rather it passes the username and
|
||||||
|
password on to MySQL, which then determines whether a user is permitted to
|
||||||
|
perform a particular action. Within phpMyAdmin, administrators have full
|
||||||
|
control over creating users, viewing and editing privileges for existing users,
|
||||||
|
and removing users.</p>
|
||||||
|
<p>Within phpMyAdmin, user management is controlled via the <em class="guilabel">Users</em> link
|
||||||
|
from the main page. Users can be created, edited, and removed.</p>
|
||||||
|
<div class="section" id="creating-a-new-user">
|
||||||
|
<h2>Creating a new user<a class="headerlink" href="#creating-a-new-user" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>To create a new user, click the <em class="guilabel">Add a new user</em> link near the bottom
|
||||||
|
of the <em class="guilabel">Users</em> page (you must be a “superuser”, e.g., user “root”).
|
||||||
|
Use the textboxes and drop-downs to configure the user to your particular
|
||||||
|
needs. You can then select whether to create a database for that user and grant
|
||||||
|
specific global privileges. Once you’ve created the user (by clicking Go), you
|
||||||
|
can define that user’s permissions on a specific database (don’t grant global
|
||||||
|
privileges in that case). In general, users do not need any global privileges
|
||||||
|
(other than USAGE), only permissions for their specific database.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="editing-an-existing-user">
|
||||||
|
<h2>Editing an existing user<a class="headerlink" href="#editing-an-existing-user" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>To edit an existing user, simply click the pencil icon to the right of that
|
||||||
|
user in the <em class="guilabel">Users</em> page. You can then edit their global- and
|
||||||
|
database-specific privileges, change their password, or even copy those
|
||||||
|
privileges to a new user.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="deleting-a-user">
|
||||||
|
<h2>Deleting a user<a class="headerlink" href="#deleting-a-user" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>From the <em class="guilabel">Users</em> page, check the checkbox for the user you wish to
|
||||||
|
remove, select whether or not to also remove any databases of the same name (if
|
||||||
|
they exist), and click Go.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="assigning-privileges-to-user-for-a-specific-database">
|
||||||
|
<h2>Assigning privileges to user for a specific database<a class="headerlink" href="#assigning-privileges-to-user-for-a-specific-database" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>Users are assigned to databases by editing the user record (from the
|
||||||
|
<em class="guilabel">Users</em> link on the home page) not from within the <em class="guilabel">Users</em>
|
||||||
|
link under the table. If you are creating a user specifically for a given table
|
||||||
|
you will have to create the user first (with no global privileges) and then go
|
||||||
|
back and edit that user to add the table and privileges for the individual
|
||||||
|
table.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><a class="reference internal" href="#">User management</a><ul>
|
||||||
|
<li><a class="reference internal" href="#creating-a-new-user">Creating a new user</a></li>
|
||||||
|
<li><a class="reference internal" href="#editing-an-existing-user">Editing an existing user</a></li>
|
||||||
|
<li><a class="reference internal" href="#deleting-a-user">Deleting a user</a></li>
|
||||||
|
<li><a class="reference internal" href="#assigning-privileges-to-user-for-a-specific-database">Assigning privileges to user for a specific database</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>Previous topic</h4>
|
||||||
|
<p class="topless"><a href="transformations.html"
|
||||||
|
title="previous chapter">Transformations</a></p>
|
||||||
|
<h4>Next topic</h4>
|
||||||
|
<p class="topless"><a href="other.html"
|
||||||
|
title="next chapter">Other sources of information</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/privileges.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="other.html" title="Other sources of information"
|
||||||
|
>next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="transformations.html" title="Transformations"
|
||||||
|
>previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
<li><a href="user.html" >User Guide</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
168
sources/doc/html/require.html
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Requirements — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<link rel="next" title="Installation" href="setup.html" />
|
||||||
|
<link rel="prev" title="Introduction" href="intro.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="setup.html" title="Installation"
|
||||||
|
accesskey="N">next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="intro.html" title="Introduction"
|
||||||
|
accesskey="P">previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<div class="section" id="requirements">
|
||||||
|
<span id="require"></span><h1>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h1>
|
||||||
|
<div class="section" id="web-server">
|
||||||
|
<h2>Web server<a class="headerlink" href="#web-server" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>Since, phpMyAdmin’s interface is based entirely in your browser, you’ll need a
|
||||||
|
web server (such as Apache, <a class="reference internal" href="glossary.html#term-iis"><em class="xref std std-term">IIS</em></a>) to install phpMyAdmin’s files into.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="php">
|
||||||
|
<h2>PHP<a class="headerlink" href="#php" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>You need PHP 5.3.0 or newer, with <tt class="docutils literal"><span class="pre">session</span></tt> support, the Standard PHP Library
|
||||||
|
(SPL) extension, JSON support, and the <tt class="docutils literal"><span class="pre">mbstring</span></tt> extension.</li>
|
||||||
|
<li>To support uploading of ZIP files, you need the PHP <tt class="docutils literal"><span class="pre">zip</span></tt> extension.</li>
|
||||||
|
<li>You need GD2 support in PHP to display inline thumbnails of JPEGs
|
||||||
|
(“image/jpeg: inline”) with their original aspect ratio.</li>
|
||||||
|
<li>When using the cookie authentication (the default), the <a class="reference external" href="http://www.php.net/mcrypt">mcrypt</a> extension is strongly suggested for most
|
||||||
|
users and is <strong>required</strong> for 64–bit machines. Not using mcrypt will
|
||||||
|
cause phpMyAdmin to load pages significantly slower.</li>
|
||||||
|
<li>To support upload progress bars, see <a class="reference internal" href="faq.html#faq2-9"><em>2.9 Seeing an upload progress bar</em></a>.</li>
|
||||||
|
<li>To support XML and Open Document Spreadsheet importing, you need the
|
||||||
|
<a class="reference external" href="http://www.php.net/libxml">libxml</a> extension.</li>
|
||||||
|
<li>Performance suggestion: install the <tt class="docutils literal"><span class="pre">ctype</span></tt> extension.</li>
|
||||||
|
</ul>
|
||||||
|
<div class="admonition-see-also admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><a class="reference internal" href="faq.html#faq1-31"><em>1.31 Does phpMyAdmin support PHP 5?</em></a>, <a class="reference internal" href="setup.html#authentication-modes"><em>Using authentication modes</em></a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="database">
|
||||||
|
<h2>Database<a class="headerlink" href="#database" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>phpMyAdmin supports MySQL-compatible databases.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>MySQL 5.5 or newer</li>
|
||||||
|
<li>MariaDB 5.5 or newer</li>
|
||||||
|
<li>Drizzle</li>
|
||||||
|
</ul>
|
||||||
|
<div class="admonition-see-also admonition seealso">
|
||||||
|
<p class="first admonition-title">See also</p>
|
||||||
|
<p class="last"><a class="reference internal" href="faq.html#faq1-17"><em>1.17 Which MySQL versions does phpMyAdmin support?</em></a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="web-browser">
|
||||||
|
<h2>Web browser<a class="headerlink" href="#web-browser" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<p>To access phpMyAdmin you need a web browser with cookies and javascript
|
||||||
|
enabled.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><a class="reference internal" href="#">Requirements</a><ul>
|
||||||
|
<li><a class="reference internal" href="#web-server">Web server</a></li>
|
||||||
|
<li><a class="reference internal" href="#php">PHP</a></li>
|
||||||
|
<li><a class="reference internal" href="#database">Database</a></li>
|
||||||
|
<li><a class="reference internal" href="#web-browser">Web browser</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>Previous topic</h4>
|
||||||
|
<p class="topless"><a href="intro.html"
|
||||||
|
title="previous chapter">Introduction</a></p>
|
||||||
|
<h4>Next topic</h4>
|
||||||
|
<p class="topless"><a href="setup.html"
|
||||||
|
title="next chapter">Installation</a></p>
|
||||||
|
<h3>This Page</h3>
|
||||||
|
<ul class="this-page-menu">
|
||||||
|
<li><a href="_sources/require.txt"
|
||||||
|
rel="nofollow">Show Source</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>Quick search</h3>
|
||||||
|
<form class="search" action="search.html" method="get">
|
||||||
|
<input type="text" name="q" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
<p class="searchtip" style="font-size: 90%">
|
||||||
|
Enter search terms or a module, class or function name.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="setup.html" title="Installation"
|
||||||
|
>next</a> |</li>
|
||||||
|
<li class="right" >
|
||||||
|
<a href="intro.html" title="Introduction"
|
||||||
|
>previous</a> |</li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
100
sources/doc/html/search.html
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<title>Search — phpMyAdmin 4.1.4 documentation</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var DOCUMENTATION_OPTIONS = {
|
||||||
|
URL_ROOT: '',
|
||||||
|
VERSION: '4.1.4',
|
||||||
|
COLLAPSE_INDEX: false,
|
||||||
|
FILE_SUFFIX: '.html',
|
||||||
|
HAS_SOURCE: true
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
|
<script type="text/javascript" src="_static/searchtools.js"></script>
|
||||||
|
<link rel="copyright" title="Copyright" href="copyright.html" />
|
||||||
|
<link rel="top" title="phpMyAdmin 4.1.4 documentation" href="index.html" />
|
||||||
|
<script type="text/javascript">
|
||||||
|
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
accesskey="I">index</a></li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
<h1 id="search-documentation">Search</h1>
|
||||||
|
<div id="fallback" class="admonition warning">
|
||||||
|
<script type="text/javascript">$('#fallback').hide();</script>
|
||||||
|
<p>
|
||||||
|
Please activate JavaScript to enable the search
|
||||||
|
functionality.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<p>
|
||||||
|
From here you can search these documents. Enter your search
|
||||||
|
words into the box below and click "search". Note that the search
|
||||||
|
function will automatically search for all of the words. Pages
|
||||||
|
containing fewer words won't appear in the result list.
|
||||||
|
</p>
|
||||||
|
<form action="" method="get">
|
||||||
|
<input type="text" name="q" value="" />
|
||||||
|
<input type="submit" value="search" />
|
||||||
|
<span id="search-progress" style="padding-left: 10px"></span>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div id="search-results">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="related">
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="right" style="margin-right: 10px">
|
||||||
|
<a href="genindex.html" title="General Index"
|
||||||
|
>index</a></li>
|
||||||
|
<li><a href="index.html">phpMyAdmin 4.1.4 documentation</a> »</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
© <a href="copyright.html">Copyright</a> 2012 - 2013, The phpMyAdmin devel team.
|
||||||
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|