From 1a1fa660bdf7ce7bcdbfe5309a24d38faf95667f Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Thu, 19 Apr 2012 12:29:47 -0400 Subject: [PATCH] Added class reference --- docs/classes.svg | 401 + docs/classes/Add_DB.html | 81 + docs/classes/Connection_Sidebar.html | 312 + docs/classes/DB_Info_Widget.html | 307 + docs/classes/DB_PDO.html | 654 ++ docs/classes/DB_Reg.html | 143 + docs/classes/DB_SQL.html | 260 + docs/classes/DB_Table_Data.html | 100 + docs/classes/DB_Util.html | 200 + docs/classes/DB_tabs.html | 278 + docs/classes/Data_Grid.html | 170 + docs/classes/Edit_DB.html | 88 + docs/classes/Firebird.html | 800 ++ docs/classes/Firebird_Result.html | 486 ++ docs/classes/Firebird_SQL.html | 288 + docs/classes/Firebird_Util.html | 203 + docs/classes/Main.html | 136 + docs/classes/MySQL.html | 840 ++ docs/classes/MySQL_SQL.html | 272 + docs/classes/MySQL_Util.html | 199 + docs/classes/ODBC.html | 842 ++ docs/classes/ODBC_SQL.html | 272 + docs/classes/ODBC_Util.html | 194 + docs/classes/PgSQL_Util.html | 199 + docs/classes/Query_Builder.html | 1074 +++ docs/classes/SQLite.html | 857 ++ docs/classes/SQLite_SQL.html | 272 + docs/classes/SQLite_Util.html | 199 + docs/classes/SSH.html | 139 + docs/classes/Settings.html | 235 + docs/classes/pgSQL.html | 842 ++ docs/classes/pgSQL_SQL.html | 288 + docs/css/bootstrap-responsive.css | 567 ++ docs/css/bootstrap-responsive.min.css | 3 + docs/css/bootstrap.css | 3365 ++++++++ docs/css/bootstrap.min.css | 610 ++ docs/css/jquery.iviewer.css | 91 + docs/css/prettify.css | 1 + docs/css/template.css | 500 ++ docs/deprecated.html | 68 + docs/errors.html | 104 + docs/graph_class.html | 65 + docs/img/apple-touch-icon-114x114.png | Bin 0 -> 28338 bytes docs/img/apple-touch-icon-72x72.png | Bin 0 -> 12751 bytes docs/img/apple-touch-icon.png | Bin 0 -> 8358 bytes docs/img/favicon.ico | Bin 0 -> 1150 bytes docs/img/glyphicons-halflings-white.png | Bin 0 -> 4352 bytes docs/img/glyphicons-halflings.png | Bin 0 -> 4352 bytes docs/img/icons/arrow_down.png | Bin 0 -> 606 bytes docs/img/icons/arrow_right.png | Bin 0 -> 628 bytes docs/img/icons/class.png | Bin 0 -> 395 bytes docs/img/icons/constant.png | Bin 0 -> 496 bytes docs/img/icons/favicon.ico | Bin 0 -> 1150 bytes docs/img/icons/file-php.png | Bin 0 -> 4017 bytes docs/img/icons/file.gif | Bin 0 -> 110 bytes docs/img/icons/folder.gif | Bin 0 -> 106 bytes docs/img/icons/function.png | Bin 0 -> 338 bytes docs/img/icons/icon-folder-open-big.png | Bin 0 -> 232 bytes docs/img/icons/icon-th-big.png | Bin 0 -> 106 bytes docs/img/icons/icon_template.svg | 93 + docs/img/icons/interface.png | Bin 0 -> 281 bytes docs/img/icons/method.png | Bin 0 -> 377 bytes docs/img/icons/ok.png | Bin 0 -> 3685 bytes docs/img/icons/property.png | Bin 0 -> 360 bytes docs/img/icons/search.gif | Bin 0 -> 152 bytes docs/img/icons/variable.png | Bin 0 -> 829 bytes docs/img/icons/view_source.png | Bin 0 -> 603 bytes docs/img/icons/visibility_private.png | Bin 0 -> 3433 bytes docs/img/icons/visibility_protected.png | Bin 0 -> 764 bytes docs/img/icons/visibility_public.png | Bin 0 -> 3451 bytes docs/img/iviewer/grab.cur | Bin 0 -> 1150 bytes docs/img/iviewer/hand.cur | Bin 0 -> 1150 bytes docs/img/iviewer/iviewer.rotate_left.png | Bin 0 -> 1493 bytes docs/img/iviewer/iviewer.rotate_right.png | Bin 0 -> 1482 bytes docs/img/iviewer/iviewer.zoom_fit.png | Bin 0 -> 1252 bytes docs/img/iviewer/iviewer.zoom_fit2.gif | Bin 0 -> 95 bytes docs/img/iviewer/iviewer.zoom_in.png | Bin 0 -> 1420 bytes docs/img/iviewer/iviewer.zoom_in2.gif | Bin 0 -> 90 bytes docs/img/iviewer/iviewer.zoom_out.png | Bin 0 -> 1416 bytes docs/img/iviewer/iviewer.zoom_out2.gif | Bin 0 -> 69 bytes docs/img/iviewer/iviewer.zoom_zero.png | Bin 0 -> 1091 bytes docs/img/iviewer/iviewer.zoom_zero2.gif | Bin 0 -> 98 bytes docs/img/loader.gif | Bin 0 -> 4726 bytes docs/index.html | 79 + docs/js/SVGPan.js | 232 + docs/js/bootstrap.js | 1722 ++++ docs/js/bootstrap.min.js | 1 + docs/js/jquery-1.4.2.min.js | 154 + docs/js/jquery-1.7.1.min.js | 9270 +++++++++++++++++++++ docs/js/jquery-ui-1.8.2.custom.min.js | 1012 +++ docs/js/jquery.cookie.js | 104 + docs/js/jquery.iviewer.js | 1045 +++ docs/js/jquery.iviewer.min.js | 42 + docs/js/jquery.mousewheel.min.js | 13 + docs/js/jquery.panzoom.js | 467 ++ docs/js/jquery.splitter.js | 228 + docs/js/jquery.tools.min.js | 115 + docs/js/jquery.treeview.js | 256 + docs/js/menu.js | 31 + docs/js/prettify/lang-apollo.js | 2 + docs/js/prettify/lang-clj.js | 18 + docs/js/prettify/lang-css.js | 2 + docs/js/prettify/lang-go.js | 1 + docs/js/prettify/lang-hs.js | 2 + docs/js/prettify/lang-lisp.js | 3 + docs/js/prettify/lang-lua.js | 2 + docs/js/prettify/lang-ml.js | 2 + docs/js/prettify/lang-n.js | 4 + docs/js/prettify/lang-proto.js | 1 + docs/js/prettify/lang-scala.js | 2 + docs/js/prettify/lang-sql.js | 2 + docs/js/prettify/lang-tex.js | 1 + docs/js/prettify/lang-vb.js | 2 + docs/js/prettify/lang-vhdl.js | 3 + docs/js/prettify/lang-wiki.js | 2 + docs/js/prettify/lang-xq.js | 3 + docs/js/prettify/lang-yaml.js | 2 + docs/js/prettify/prettify.min.js | 28 + docs/js/sidebar.js | 45 + docs/js/template.js | 185 + docs/markers.html | 70 + docs/namespaces/default.html | 476 ++ docs/packages/.html | 68 + docs/packages/Default.html | 534 ++ docs/structure.xml | 6445 ++++++++++++++ index.php | 13 +- phpdoc.dist.xml | 20 + sys/common/ssh.php | 60 - sys/db | 2 +- sys/widgets/connection_sidebar.php | 29 +- sys/widgets/data_grid.php | 3 + sys/widgets/db_info_widget.php | 108 +- sys/widgets/db_tabs.php | 14 +- sys/windows/add_db.php | 3 + sys/windows/db_table_data.php | 9 + sys/windows/main.php | 10 +- 136 files changed, 39947 insertions(+), 98 deletions(-) create mode 100644 docs/classes.svg create mode 100644 docs/classes/Add_DB.html create mode 100644 docs/classes/Connection_Sidebar.html create mode 100644 docs/classes/DB_Info_Widget.html create mode 100644 docs/classes/DB_PDO.html create mode 100644 docs/classes/DB_Reg.html create mode 100644 docs/classes/DB_SQL.html create mode 100644 docs/classes/DB_Table_Data.html create mode 100644 docs/classes/DB_Util.html create mode 100644 docs/classes/DB_tabs.html create mode 100644 docs/classes/Data_Grid.html create mode 100644 docs/classes/Edit_DB.html create mode 100644 docs/classes/Firebird.html create mode 100644 docs/classes/Firebird_Result.html create mode 100644 docs/classes/Firebird_SQL.html create mode 100644 docs/classes/Firebird_Util.html create mode 100644 docs/classes/Main.html create mode 100644 docs/classes/MySQL.html create mode 100644 docs/classes/MySQL_SQL.html create mode 100644 docs/classes/MySQL_Util.html create mode 100644 docs/classes/ODBC.html create mode 100644 docs/classes/ODBC_SQL.html create mode 100644 docs/classes/ODBC_Util.html create mode 100644 docs/classes/PgSQL_Util.html create mode 100644 docs/classes/Query_Builder.html create mode 100644 docs/classes/SQLite.html create mode 100644 docs/classes/SQLite_SQL.html create mode 100644 docs/classes/SQLite_Util.html create mode 100644 docs/classes/SSH.html create mode 100644 docs/classes/Settings.html create mode 100644 docs/classes/pgSQL.html create mode 100644 docs/classes/pgSQL_SQL.html create mode 100644 docs/css/bootstrap-responsive.css create mode 100644 docs/css/bootstrap-responsive.min.css create mode 100644 docs/css/bootstrap.css create mode 100644 docs/css/bootstrap.min.css create mode 100644 docs/css/jquery.iviewer.css create mode 100644 docs/css/prettify.css create mode 100644 docs/css/template.css create mode 100644 docs/deprecated.html create mode 100644 docs/errors.html create mode 100644 docs/graph_class.html create mode 100644 docs/img/apple-touch-icon-114x114.png create mode 100644 docs/img/apple-touch-icon-72x72.png create mode 100644 docs/img/apple-touch-icon.png create mode 100644 docs/img/favicon.ico create mode 100644 docs/img/glyphicons-halflings-white.png create mode 100644 docs/img/glyphicons-halflings.png create mode 100644 docs/img/icons/arrow_down.png create mode 100644 docs/img/icons/arrow_right.png create mode 100644 docs/img/icons/class.png create mode 100644 docs/img/icons/constant.png create mode 100644 docs/img/icons/favicon.ico create mode 100644 docs/img/icons/file-php.png create mode 100644 docs/img/icons/file.gif create mode 100644 docs/img/icons/folder.gif create mode 100644 docs/img/icons/function.png create mode 100644 docs/img/icons/icon-folder-open-big.png create mode 100644 docs/img/icons/icon-th-big.png create mode 100644 docs/img/icons/icon_template.svg create mode 100644 docs/img/icons/interface.png create mode 100644 docs/img/icons/method.png create mode 100644 docs/img/icons/ok.png create mode 100644 docs/img/icons/property.png create mode 100644 docs/img/icons/search.gif create mode 100644 docs/img/icons/variable.png create mode 100644 docs/img/icons/view_source.png create mode 100644 docs/img/icons/visibility_private.png create mode 100644 docs/img/icons/visibility_protected.png create mode 100644 docs/img/icons/visibility_public.png create mode 100644 docs/img/iviewer/grab.cur create mode 100644 docs/img/iviewer/hand.cur create mode 100644 docs/img/iviewer/iviewer.rotate_left.png create mode 100644 docs/img/iviewer/iviewer.rotate_right.png create mode 100644 docs/img/iviewer/iviewer.zoom_fit.png create mode 100644 docs/img/iviewer/iviewer.zoom_fit2.gif create mode 100644 docs/img/iviewer/iviewer.zoom_in.png create mode 100644 docs/img/iviewer/iviewer.zoom_in2.gif create mode 100644 docs/img/iviewer/iviewer.zoom_out.png create mode 100644 docs/img/iviewer/iviewer.zoom_out2.gif create mode 100644 docs/img/iviewer/iviewer.zoom_zero.png create mode 100644 docs/img/iviewer/iviewer.zoom_zero2.gif create mode 100644 docs/img/loader.gif create mode 100644 docs/index.html create mode 100644 docs/js/SVGPan.js create mode 100644 docs/js/bootstrap.js create mode 100644 docs/js/bootstrap.min.js create mode 100644 docs/js/jquery-1.4.2.min.js create mode 100644 docs/js/jquery-1.7.1.min.js create mode 100644 docs/js/jquery-ui-1.8.2.custom.min.js create mode 100644 docs/js/jquery.cookie.js create mode 100644 docs/js/jquery.iviewer.js create mode 100644 docs/js/jquery.iviewer.min.js create mode 100644 docs/js/jquery.mousewheel.min.js create mode 100644 docs/js/jquery.panzoom.js create mode 100644 docs/js/jquery.splitter.js create mode 100644 docs/js/jquery.tools.min.js create mode 100644 docs/js/jquery.treeview.js create mode 100644 docs/js/menu.js create mode 100644 docs/js/prettify/lang-apollo.js create mode 100644 docs/js/prettify/lang-clj.js create mode 100644 docs/js/prettify/lang-css.js create mode 100644 docs/js/prettify/lang-go.js create mode 100644 docs/js/prettify/lang-hs.js create mode 100644 docs/js/prettify/lang-lisp.js create mode 100644 docs/js/prettify/lang-lua.js create mode 100644 docs/js/prettify/lang-ml.js create mode 100644 docs/js/prettify/lang-n.js create mode 100644 docs/js/prettify/lang-proto.js create mode 100644 docs/js/prettify/lang-scala.js create mode 100644 docs/js/prettify/lang-sql.js create mode 100644 docs/js/prettify/lang-tex.js create mode 100644 docs/js/prettify/lang-vb.js create mode 100644 docs/js/prettify/lang-vhdl.js create mode 100644 docs/js/prettify/lang-wiki.js create mode 100644 docs/js/prettify/lang-xq.js create mode 100644 docs/js/prettify/lang-yaml.js create mode 100644 docs/js/prettify/prettify.min.js create mode 100644 docs/js/sidebar.js create mode 100644 docs/js/template.js create mode 100644 docs/markers.html create mode 100644 docs/namespaces/default.html create mode 100644 docs/packages/.html create mode 100644 docs/packages/Default.html create mode 100644 docs/structure.xml create mode 100644 phpdoc.dist.xml delete mode 100644 sys/common/ssh.php diff --git a/docs/classes.svg b/docs/classes.svg new file mode 100644 index 0000000..dbca735 --- /dev/null +++ b/docs/classes.svg @@ -0,0 +1,401 @@ + + + + + + +G + +cluster_default + + + + + + + + + + +\\DB_Reg + + +DB_Reg + + + +\\Settings + + +Settings + + + +\\DB_SQL + + +«abstract» +DB_SQL + + + +\\DB_PDO + + +«abstract» +DB_PDO + + + +\\PDO + +\PDO + + +\\DB_PDO->\\PDO + + + + +\\Query_Builder + + +Query_Builder + + + +\\DB_Util + + +«abstract» +DB_Util + + + +\\pgSQL_SQL + + +pgSQL_SQL + + + +\\pgSQL_SQL->\\DB_SQL + + + + +\\PgSQL_Util + + +PgSQL_Util + + + +\\PgSQL_Util->\\DB_Util + + + + +\\pgSQL + + +pgSQL + + + +\\pgSQL->\\DB_PDO + + + + +\\ODBC_Util + + +ODBC_Util + + + +\\ODBC_Util->\\DB_Util + + + + +\\ODBC_SQL + + +ODBC_SQL + + + +\\ODBC_SQL->\\DB_SQL + + + + +\\ODBC + + +ODBC + + + +\\ODBC->\\DB_PDO + + + + +\\MySQL_Util + + +MySQL_Util + + + +\\MySQL_Util->\\DB_Util + + + + +\\MySQL + + +MySQL + + + +\\MySQL->\\DB_PDO + + + + +\\MySQL_SQL + + +MySQL_SQL + + + +\\MySQL_SQL->\\DB_SQL + + + + +\\SQLite_Util + + +SQLite_Util + + + +\\SQLite_Util->\\DB_Util + + + + +\\SQLite + + +SQLite + + + +\\SQLite->\\DB_PDO + + + + +\\SQLite_SQL + + +SQLite_SQL + + + +\\SQLite_SQL->\\DB_SQL + + + + +\\Firebird_SQL + + +Firebird_SQL + + + +\\Firebird_SQL->\\DB_SQL + + + + +\\Firebird_Result + + +Firebird_Result + + + +\\PDOStatement + +\PDOStatement + + +\\Firebird_Result->\\PDOStatement + + + + +\\Firebird + + +Firebird + + + +\\Firebird->\\DB_PDO + + + + +\\Firebird_Util + + +Firebird_Util + + + +\\Firebird_Util->\\DB_Util + + + + +\\Connection_Sidebar + + +Connection_Sidebar + + + +\\GtkVBox + +\GtkVBox + + +\\Connection_Sidebar->\\GtkVBox + + + + +\\Data_Grid + + +Data_Grid + + + +\\GtkTreeView + +\GtkTreeView + + +\\Data_Grid->\\GtkTreeView + + + + +\\DB_tabs + + +DB_tabs + + + +\\GTKNotebook + +\GTKNotebook + + +\\DB_tabs->\\GTKNotebook + + + + +\\DB_Info_Widget + + +DB_Info_Widget + + + +\\GtkTable + +\GtkTable + + +\\DB_Info_Widget->\\GtkTable + + + + +\\Add_DB + + +Add_DB + + + +\\GtkWindow + +\GtkWindow + + +\\Add_DB->\\GtkWindow + + + + +\\Edit_DB + + +Edit_DB + + + +\\Edit_DB->\\GtkWindow + + + + +\\DB_Table_Data + + +DB_Table_Data + + + +\\GTKWindow + +\GTKWindow + + +\\DB_Table_Data->\\GTKWindow + + + + +\\Main + + +Main + + + +\\Main->\\GtkWindow + + + + + diff --git a/docs/classes/Add_DB.html b/docs/classes/Add_DB.html new file mode 100644 index 0000000..798b549 --- /dev/null +++ b/docs/classes/Add_DB.html @@ -0,0 +1,81 @@ + + + + + +OpenSQLManager » \Add_DB + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

Window controlling addition of database connections

+
+

+

+ Methods

+
+

Create the window

+
__construct() 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Connection_Sidebar.html b/docs/classes/Connection_Sidebar.html new file mode 100644 index 0000000..4c5ed64 --- /dev/null +++ b/docs/classes/Connection_Sidebar.html @@ -0,0 +1,312 @@ + + + + + +OpenSQLManager » \Connection_Sidebar + + + + + + + + + + +
+ +
+ +
+
+

Widget managing saved database connections

+
+

+

+ Methods

+
+

Constructor method

+
__construct() 
+
+

+
+
+

Creates and displays a context menu for the selected connection

+
conn_popup_menu(array $all) : void
+
+
+

+

Parameters

+
+

$all

+array +
+
+
+
+

Create connection to a database

+
db_connect() : void
+
+

+
+
+

Disconnect from a database

+
db_disconnect() : void
+
+

+
+
+

Update the connection information for an existing connection

+
edit_connection() : void
+
+

+
+
+

Return the current instance of the class

+
get_instance() : \Connection_Sidebar
+
+
+

+

Returns

+ +
+
+
+

Returns window for creating a new database connection

+
new_conn() : \Add_DB
+
+
+

+

Returns

+
+\Add_DBobject
+
+
+
+

Event for mouse clicks on connection sidebar

+
on_button(\GtkTreeView $view, $event) : void
+
+
+

+

Parameters

+
+

$view

+\GtkTreeView +
+
+

$event

+ +
+
+
+
+

Recreate sidebar widget to update connections

+
refresh() : void
+
+

+
+
+

Remove a connection from the connection manager

+
remove_connection() : void
+
+

+
+
+

Sets the icon for the current db type

+
set_icon(\GtkTreeView $col, \GtkCellRenderer $cell, \GtkTreeModel $model, \GtkTreeIter $iter) : void
+
+
+

+

Parameters

+
+

$col

+\GtkTreeView

Column $col

+
+
+

$cell

+\GtkCellRenderer +
+
+

$model

+\GtkTreeModel +
+
+

$iter

+\GtkTreeIter +
+
+
+
+

Sets the label of the current db connection

+
set_label(\GtkTreeViewColumn $col, \GtkCellRenderer $cell, \GtkTreeModel $model, \GtkTreeIter $iter) : void
+
+
+

+

Parameters

+
+

$col

+\GtkTreeViewColumn +
+
+

$cell

+\GtkCellRenderer +
+
+

$model

+\GtkTreeModel +
+
+

$iter

+\GtkTreeIter +
+
+
+
+

Sets the status icon of the current db connection

+
set_status_icon(\GtkTreeViewColumn $col, \GtkCellRenderer $cell, \GtkTreeModel $model, \GtkTreeIter $iter) : void
+
+
+

+

Parameters

+
+

$col

+\GtkTreeViewColumn +
+
+

$cell

+\GtkCellRenderer +
+
+

$model

+\GtkTreeModel +
+
+

$iter

+\GtkTreeIter +
+
+
+
+

Change tabs based on db connection selected

+
switch_tab(\GtkTreeView $view) : void
+
+
+

+

Parameters

+
+

$view

+\GtkTreeView +
+
+
+
+

Renders the connection sidebar widget

+
_render() : void
+
+

+
+

+ Properties

+ 
+

Reference to popup menu

+
$menu 
+
+

+
+ 
+

Reference to Settings instance

+
$settings 
+
+

+
+ 
+

Treeview for displaying connections

+
$treeview 
+
+

+
+ 
+

Name of current db connection

+
$conn_name 
+
+

+
+ 
+

Singleton instance

+
$instance 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/DB_Info_Widget.html b/docs/classes/DB_Info_Widget.html new file mode 100644 index 0000000..e5ecdb8 --- /dev/null +++ b/docs/classes/DB_Info_Widget.html @@ -0,0 +1,307 @@ + + + + + +OpenSQLManager » \DB_Info_Widget + + + + + + + + + + +
+ +
+ +
+
+

Widget for adding / editing database connections

+
+

+

+ Methods

+
+

No params = add, params = edit

+
__construct(object $db) 
+
+
+

+

Parameters

+
+

$db

+object +
+
+
+
+

Set defaults for new database type

+
change_db() : void
+
+

+
+
+

Adds the database to the settings file

+
db_add() : void
+
+

+
+
+

Edit an existing database connection

+
db_edit() : void
+
+

+
+
+

Checks what database drivers are available

+
get_available_dbs() : array
+
+
+

+

Returns

+
array
+
+
+
+

Like change_db function, but save current values

+
set_db() : void
+
+

+
+
+

Test a db connection, and display a popup with the result of the test

+
test_conn() : void
+
+

+
+
+

Simple helper function for adding a row to the GtkTable

+
_add_row(string $label, string $vname, int $y1, int $y2) : void
+
+
+

+

Parameters

+
+

$label

+string +
+
+

$vname

+string +
+
+

$y1

+int

&$y1

+
+
+

$y2

+int

&$y2

+
+
+
+
+

Table layout

+
_layout() : void
+
+

+
+

+ Properties

+ 
+

Connection name

+
$conn 
+
+

+
+ 
+

Connection database name

+
$conn_db 
+
+

+
+ 
+

Connection database file

+
$db_file 
+
+

+
+ 
+

Connection database type

+
$dbtype 
+
+

+
+ 
+

Connection database host

+
$host 
+
+

+
+ 
+

Labels

+
$lblconn 
+
+

+
+ 
+

Labels

+
$lblconn_db 
+
+

+
+ 
+

Labels

+
$lbldatabase 
+
+

+
+ 
+

Labels

+
$lbldb_file 
+
+

+
+ 
+

Labels

+
$lbldbtype 
+
+

+
+ 
+

Labels

+
$lblhost 
+
+

+
+ 
+

Labels

+
$lblpass 
+
+

+
+ 
+

Labels

+
$lblport 
+
+

+
+ 
+

Labels

+
$lbluser 
+
+

+
+ 
+

Reference to last connection name

+
$old_conn 
+
+

+
+ 
+

Connection password

+
$pass 
+
+

+
+ 
+

Connection port

+
$port 
+
+

+
+ 
+

Connection user name

+
$user 
+
+

+
+ 
+

Alias to Settings::get_instance

+
$settings : \Settings
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/DB_PDO.html b/docs/classes/DB_PDO.html new file mode 100644 index 0000000..d0aac79 --- /dev/null +++ b/docs/classes/DB_PDO.html @@ -0,0 +1,654 @@ + + + + + +OpenSQLManager » \DB_PDO + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

Base Database class

+
+

Extends PDO to simplify cross-database issues

+

+ Methods

+
+

PDO constructor wrapper

+
__construct(string $dsn, string $username, string $password, array $driver_options) 
+
+
+

+

Parameters

+
+

$dsn

+string +
+
+

$username

+string +
+
+

$password

+string +
+
+

$driver_options

+array +
+
+
+
+

__sleep() +

+
__sleep() 
+
+
+

+ + + +
inherited_fromPDO::__sleep()
+
+
+
+

__wakeup() +

+
__wakeup() 
+
+
+

+ + + +
inherited_fromPDO::__wakeup()
+
+
+
+

Returns number of rows affected by an INSERT, UPDATE, DELETE type query

+
affected_rows(\PDOStatement $statement) : int
+
+
+

+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
int
+
+
+
+

beginTransaction() +

+
beginTransaction() 
+
+
+

+ + + +
inherited_fromPDO::beginTransaction()
+
+
+
+

commit() +

+
commit() 
+
+
+

+ + + +
inherited_fromPDO::commit()
+
+
+
+

Deletes all the rows from a table. Does the same as the truncate +method if the database does not support 'TRUNCATE';

+
empty_table(string $table) : mixed
+
+
+

+

Parameters

+
+

$table

+string +
+

Returns

+
mixed
+
+
+
+

errorCode() +

+
errorCode() 
+
+
+

+ + + +
inherited_fromPDO::errorCode()
+
+
+
+

errorInfo() +

+
errorInfo() 
+
+
+

+ + + +
inherited_fromPDO::errorInfo()
+
+
+
+

exec() +

+
exec() 
+
+
+

+ + + +
inherited_fromPDO::exec()
+
+
+
+

getAttribute() +

+
getAttribute() 
+
+
+

+ + + +
inherited_fromPDO::getAttribute()
+
+
+
+

getAvailableDrivers() +

+
getAvailableDrivers() 
+
+
+

+ + + +
inherited_fromPDO::getAvailableDrivers()
+
+
+
+

Return list of dbs for the current connection, if possible

+
get_dbs() : array
+
+
+

+

Returns

+
array
+
+
+
+

Return list of function for the current database

+
get_functions() : array
+
+
+

+

Returns

+
array
+
+
+
+

Return the last error for the current database connection

+
get_last_error() : string
+
+
+

+

Returns

+
string
+
+
+
+

Return list of stored procedures for the current database

+
get_procedures() : array
+
+
+

+

Returns

+
array
+
+
+
+

Retreives the data from a select query

+
get_query_data(\PDOStatement $statement) : array
+
+
+

+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
array
+
+
+
+

Return schemas for databases that list them

+
get_schemas() : array
+
+
+

+

Returns

+
array
+
+
+
+

Return list of sequences for the current database, if they exist

+
get_sequences() : array
+
+
+

+

Returns

+
array
+
+
+
+

Retreives an array of non-user-created tables for +the connection/database

+
get_system_tables() : array
+
+
+

+

Returns

+
array
+
+
+
+

Return list of tables for the current database

+
get_tables() : array
+
+
+

+

Returns

+
array
+
+
+
+

Return list of triggers for the current database

+
get_triggers() : array
+
+
+

+

Returns

+
array
+
+
+
+

Return list of views for the current database

+
get_views() : array
+
+
+

+

Returns

+
array
+
+
+
+

inTransaction() +

+
inTransaction() 
+
+
+

+ + + +
inherited_fromPDO::inTransaction()
+
+
+
+

lastInsertId() +

+
lastInsertId() 
+
+
+

+ + + +
inherited_fromPDO::lastInsertId()
+
+
+
+

Return the number of rows for the last SELECT query

+
num_rows() : int
+
+
+

+

Returns

+
int
+
+
+
+

prepare() +

+
prepare() 
+
+
+

+ + + +
inherited_fromPDO::prepare()
+
+
+
+

Create and execute a prepared statement with the provided parameters

+
prepare_execute(string $sql, array $params) : \PDOStatement
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$params

+array +
+

Returns

+ +
+
+
+

Simplifies prepared statements for database queries

+
prepare_query(string $sql, array $data) : mixed
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$data

+array +
+

Returns

+
+mixedPDOStatement / FALSE
+
+
+
+

query() +

+
query() 
+
+
+

+ + + +
inherited_fromPDO::query()
+
+
+
+

quote() +

+
quote() 
+
+
+

+ + + +
inherited_fromPDO::quote()
+
+
+
+

Surrounds the string with the databases identifier escape characters

+
quote_ident(mixed $ident) : string
+
+
+

+

Parameters

+
+

$ident

+mixed +
+

Returns

+
string
+
+
+
+

rollBack() +

+
rollBack() 
+
+
+

+ + + +
inherited_fromPDO::rollBack()
+
+
+
+

setAttribute() +

+
setAttribute() 
+
+
+

+ + + +
inherited_fromPDO::setAttribute()
+
+
+
+

Connect to a different database

+
switch_db(string $name) : void
+
+
+

+

Parameters

+
+

$name

+string +
+
+
+
+

Empty the passed table

+
truncate(string $table) : void
+
+
+

+

Parameters

+
+

$table

+string +
+
+
+
+

Method to simplify retreiving db results for meta-data queries

+
driver_query(string $sql, bool $filtered_index) : mixed
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$filtered_index

+bool +
+

Returns

+
mixed
+
+
+

+ Properties

+ 
+

Reference to sql sub class

+
$sql 
+
+

+
+ 
+

Reference to util sub class

+
$util 
+
+

+
+ 
+

Character to escape identifiers

+
$escape_char 
+
+

+
+ 
+

Reference to the last executed query

+
$statement 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/DB_Reg.html b/docs/classes/DB_Reg.html new file mode 100644 index 0000000..772ca58 --- /dev/null +++ b/docs/classes/DB_Reg.html @@ -0,0 +1,143 @@ + + + + + +OpenSQLManager » \DB_Reg + + + + + + + + + + +
+ +
+ +
+
+

Connection registry

+
+

Decouples the Settings class from the query builder +and organizes database connections

+

+ Methods

+
+

Return exiting connections

+
get_connections() : array
+
+
+

+

Returns

+
array
+
+
+
+

Registry access method

+
get_db(string $key) : object
+
+
+

+

Parameters

+
+

$key

+string +
+

Returns

+
object
+
+
+
+

Remove a database connection

+
remove_db(string $key) : void
+
+
+

+

Parameters

+
+

$key

+string +
+
+
+
+

Private constructor

+
__construct(string $key) 
+
+
+

+

Parameters

+
+

$key

+string +
+
+
+

+ Properties

+ 
+

Static array of connections

+
$instance 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/DB_SQL.html b/docs/classes/DB_SQL.html new file mode 100644 index 0000000..f89014b --- /dev/null +++ b/docs/classes/DB_SQL.html @@ -0,0 +1,260 @@ + + + + + +OpenSQLManager » \DB_SQL + + + + + + + + + + +
+ +
+ +
+
+

Abstract parent for database manipulation subclasses

+
+

+

+ Methods

+
+

Get the 'average' keyword

+
avg() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list other databases

+
db_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Get the 'distinct' keyword

+
distinct() : string
+
+
+

+

Returns

+
string
+
+
+
+

Return sql to list functions

+
function_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Get database specific sql for limit clause

+
limit(string $sql, int $limit, int $offset) : string
+
+
+

+ + + +
abstract
+

Parameters

+
+

$sql

+string +
+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
string
+
+
+
+

Get the max keyword sql

+
max() : string
+
+
+

+

Returns

+
string
+
+
+
+

Get the min keyword sql

+
min() : string
+
+
+

+

Returns

+
string
+
+
+
+

Return sql to list stored procedures

+
procedure_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Get the sql for random ordering

+
random() : string
+
+
+

+ + + +
abstract
+

Returns

+
string
+
+
+
+

Return sql to list sequences

+
sequence_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Get the 'sum' keyword

+
sum() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list system tables

+
system_table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list tables

+
table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list triggers

+
trigger_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list views

+
view_list() : string
+
+
+

+

Returns

+
string
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/DB_Table_Data.html b/docs/classes/DB_Table_Data.html new file mode 100644 index 0000000..efb1edd --- /dev/null +++ b/docs/classes/DB_Table_Data.html @@ -0,0 +1,100 @@ + + + + + +OpenSQLManager » \DB_Table_Data + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

Popup window to display database table data

+
+

+

+ Methods

+
+

Create and populate the window

+
__construct(array $data) : void
+
+
+

+

Parameters

+
+

$data

+array +
+
+
+

+ Properties

+ 
+

Reference to the scrolled window

+
$win 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/DB_Util.html b/docs/classes/DB_Util.html new file mode 100644 index 0000000..4e6eca7 --- /dev/null +++ b/docs/classes/DB_Util.html @@ -0,0 +1,200 @@ + + + + + +OpenSQLManager » \DB_Util + + + + + + + + + + +
+ +
+ +
+
+

Abstract class defining database / table creation methods

+
+

+

+ Methods

+
+

Enable calling driver methods

+
__call(string $method, array $args) 
+
+
+

+

Parameters

+
+

$method

+string +
+
+

$args

+array +
+
+
+
+

Save a reference to the connection object for later use

+
__construct(object $conn) 
+
+
+

+

Parameters

+
+

$conn

+object

&$conn

+
+
+
+
+

Return an SQL file with the database data as insert statements

+
backup_data() : string
+
+
+

+ + + +
abstract
+

Returns

+
string
+
+
+
+

Return an SQL file with the database table structure

+
backup_structure() : string
+
+
+

+ + + +
abstract
+

Returns

+
string
+
+
+
+

Get database-specific sql to create a new table

+
create_table(string $name, array $columns, array $constraints, array $indexes) : string
+
+
+

+ + + +
abstract
+

Parameters

+
+

$name

+string +
+
+

$columns

+array +
+
+

$constraints

+array +
+
+

$indexes

+array +
+

Returns

+
string
+
+
+
+

Get database-specific sql to drop a table

+
delete_table(string $name) : string
+
+
+

+ + + +
abstract
+

Parameters

+
+

$name

+string +
+

Returns

+
string
+
+
+

+ Properties

+ 
+

Reference to the current connection object

+
$conn 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/DB_tabs.html b/docs/classes/DB_tabs.html new file mode 100644 index 0000000..5743c97 --- /dev/null +++ b/docs/classes/DB_tabs.html @@ -0,0 +1,278 @@ + + + + + +OpenSQLManager » \DB_tabs + + + + + + + + + + +
+ +
+ +
+
+

Tabbed Container for database properties

+
+

+

+ Methods

+
+

Create the object

+
__construct() 
+
+

+
+
+

Add a new tab with the provided label

+
add_tab(string $label, \GObject $widget) : void
+
+
+

+

Parameters

+
+

$label

+string +
+
+

$widget

+\GObject +
+
+
+
+

Create tabs for database aspects

+
get_db_tabs(\Query_Builder $conn) : void
+
+
+

+

Parameters

+
+

$conn

+\Query_Builder +
+
+
+
+

Return the db tabs object if it exists, or create and return

+
get_instance() : \DB_tabs
+
+
+

+

Returns

+ +
+
+
+

Remove current tabs

+
reset(string $conn_name) : void
+
+
+

+

Parameters

+
+

$conn_name

+string +
+
+
+
+

Create popup window with table data

+
show_table_data(\GTKTreeView $view, array $path, \GtkTreeviewColumn $col, \Query_Builder $conn) : void
+
+
+

+

Parameters

+
+

$view

+\GTKTreeView +
+
+

$path

+array +
+
+

$col

+\GtkTreeviewColumn +
+
+

$conn

+\Query_Builder +
+
+
+
+

Add a multidimensional array to a tab

+
_add_row_tab(object $conn, string $tab_name, string $method) : void
+
+
+

+

Parameters

+
+

$conn

+object +
+
+

$tab_name

+string +
+
+

$method

+string +
+
+
+
+

Simplify adding tabs to the Notebook object

+
_add_tab(object $conn, string $tab_name, string $col_name, string $method, array $events) : void
+
+
+

+

Parameters

+
+

$conn

+object +
+
+

$tab_name

+string +
+
+

$col_name

+string +
+
+

$method

+string +
+
+

$events

+array +
+
+
+
+

Returns cached database data for the tab and connection specified

+
_get_db_info(string $conn_name, string $tab_name) : mixed
+
+
+

+

Parameters

+
+

$conn_name

+string +
+
+

$tab_name

+string +
+

Returns

+
mixed
+
+
+
+

Sets cached database data for the tab and connection specified

+
_set_db_info(string $conn_name, string $tab_name, mixed $data) 
+
+
+

+

Parameters

+
+

$conn_name

+string +
+
+

$tab_name

+string +
+
+

$data

+mixed +
+
+
+

+ Properties

+ 
+

Db Data cache

+
$data 
+
+

+
+ 
+

Current Tab Widget object

+
$instance : \DB_Tabs
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Data_Grid.html b/docs/classes/Data_Grid.html new file mode 100644 index 0000000..b32233b --- /dev/null +++ b/docs/classes/Data_Grid.html @@ -0,0 +1,170 @@ + + + + + +OpenSQLManager » \Data_Grid + + + + + + + + + + +
+ +
+ +
+
+

Class to simplify dealing with GtkTreeView

+
+

+

+ Methods

+
+

Create the object

+
__construct(object $model) 
+
+
+

+

Parameters

+
+

$model

+object +
+
+
+
+

Adds a column of data to the model

+
add_data_col(\GtkTreeViewColumn $col, \GtkCellRenderer $cell, \GtkTreeModel $model, \GtkTreeIter $iter, int $i) : void
+
+
+

+

Parameters

+
+

$col

+\GtkTreeViewColumn +
+
+

$cell

+\GtkCellRenderer +
+
+

$model

+\GtkTreeModel +
+
+

$iter

+\GtkTreeIter +
+
+

$i

+int +
+
+
+
+

Get the value of the model for the current selection

+
get(int $pos) : mixed
+
+
+

+

Parameters

+
+

$pos

+int

pos

+

Returns

+
mixed
+
+
+
+

Create a datagrid from the provided data array

+
render_data(array $data, array $events) : void
+
+
+

+

Parameters

+
+

$data

+array +
+
+

$events

+array +
+
+
+
+

Clear datagrid

+
reset() : void
+
+

+
+

+ Properties

+ 
+

GtkTreeStore object

+
$model 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Edit_DB.html b/docs/classes/Edit_DB.html new file mode 100644 index 0000000..ba93a97 --- /dev/null +++ b/docs/classes/Edit_DB.html @@ -0,0 +1,88 @@ + + + + + +OpenSQLManager » \Edit_DB + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

Window controlling modifications of database connections

+
+

+

+ Methods

+
+

Connection editing window

+
__construct(object $db_params) 
+
+
+

+

Parameters

+
+

$db_params

+object +
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Firebird.html b/docs/classes/Firebird.html new file mode 100644 index 0000000..507a5e5 --- /dev/null +++ b/docs/classes/Firebird.html @@ -0,0 +1,800 @@ + + + + + +OpenSQLManager » \Firebird + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

Firebird Database class

+
+

PDO-firebird isn't stable, so this is a wrapper of the fbird_ public functions.

+

+ Methods

+
+

Open the link to the database

+
__construct(string $dbpath, string $user, string $pass) 
+
+
+

+

Parameters

+
+

$dbpath

+string +
+
+

$user

+string +
+
+

$pass

+string +
+
+
+
+

__sleep() +

+
__sleep() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__sleep()
inherited_from\DB_PDO::__sleep()
+
+
+
+

__wakeup() +

+
__wakeup() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__wakeup()
inherited_from\DB_PDO::__wakeup()
+
+
+
+

Returns number of rows affected by an INSERT, UPDATE, DELETE type query

+
affected_rows(\PDOStatement $statement) : int
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::affected_rows()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
int
+
+
+
+

Start a database transaction

+
beginTransaction() : bool
+
+
+

+

Returns

+
bool
+
+
+
+

Commit a database transaction

+
commit() : bool
+
+
+

+

Returns

+
bool
+
+
+
+

Deletes all the rows from a table. Does the same as the truncate +method if the database does not support 'TRUNCATE';

+
empty_table(string $table) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::empty_table()
+

Parameters

+
+

$table

+string +
+

Returns

+
mixed
+
+
+
+

Method to emulate PDO->errorCode

+
errorCode() : array
+
+
+

+

Returns

+
array
+
+
+
+

Method to emulate PDO->errorInfo / PDOStatement->errorInfo

+
errorInfo() : array
+
+
+

+

Returns

+
array
+
+
+
+

exec() +

+
exec() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::exec()
inherited_from\DB_PDO::exec()
+
+
+
+

getAttribute() +

+
getAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAttribute()
inherited_from\DB_PDO::getAttribute()
+
+
+
+

getAvailableDrivers() +

+
getAvailableDrivers() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAvailableDrivers()
inherited_from\DB_PDO::getAvailableDrivers()
+
+
+
+

Return list of dbs for the current connection, if possible

+
get_dbs() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_dbs()
+

Returns

+
array
+
+
+
+

Return list of function for the current database

+
get_functions() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_functions()
+

Returns

+
array
+
+
+
+

Return the last error for the current database connection

+
get_last_error() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_last_error()
+

Returns

+
string
+
+
+
+

Return list of stored procedures for the current database

+
get_procedures() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_procedures()
+

Returns

+
array
+
+
+
+

Retreives the data from a select query

+
get_query_data(\PDOStatement $statement) : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_query_data()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
array
+
+
+
+

Return schemas for databases that list them

+
get_schemas() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_schemas()
+

Returns

+
array
+
+
+
+

Return list of sequences for the current database, if they exist

+
get_sequences() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_sequences()
+

Returns

+
array
+
+
+
+

Retreives an array of non-user-created tables for +the connection/database

+
get_system_tables() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_system_tables()
+

Returns

+
array
+
+
+
+

Return list of tables for the current database

+
get_tables() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_tables()
+

Returns

+
array
+
+
+
+

Return list of triggers for the current database

+
get_triggers() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_triggers()
+

Returns

+
array
+
+
+
+

Return list of views for the current database

+
get_views() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_views()
+

Returns

+
array
+
+
+
+

inTransaction() +

+
inTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::inTransaction()
inherited_from\DB_PDO::inTransaction()
+
+
+
+

lastInsertId() +

+
lastInsertId() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::lastInsertId()
inherited_from\DB_PDO::lastInsertId()
+
+
+
+

Return the number of rows returned for a SELECT query

+
num_rows() : int
+
+
+

+

Returns

+
int
+
+
+
+

Emulate PDO prepare

+
prepare(string $query, array $options) : \Firebird
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$query

+string +
+
+

$options

+array +
+

Returns

+ +
+
+
+

Prepare and execute a query

+
prepare_execute(string $sql, array $args) : resource
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$args

+array +
+

Returns

+
resource
+
+
+
+

Bind a prepared query with arguments for executing

+
prepare_query(string $sql, array $params) : FALSE
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$params

+array +
+

Returns

+
FALSE
+
+
+
+

Wrapper public function to better match PDO

+
query(string $sql) : \Firebird
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$sql

+string +
+

Returns

+ +
+
+
+

Method to emulate PDO->quote

+
quote(string $str, int $param_type) : string
+
+
+

+

Parameters

+
+

$str

+string +
+
+

$param_type

+int +
+

Returns

+
string
+
+
+
+

Surrounds the string with the databases identifier escape characters

+
quote_ident(mixed $ident) : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::quote_ident()
+

Parameters

+
+

$ident

+mixed +
+

Returns

+
string
+
+
+
+

Rollback a transaction

+
rollBack() : bool
+
+
+

+

Returns

+
bool
+
+
+
+

setAttribute() +

+
setAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::setAttribute()
inherited_from\DB_PDO::setAttribute()
+
+
+
+

Doesn't apply to Firebird

+
switch_db(string $name) : FALSE
+
+
+

+

Parameters

+
+

$name

+string +
+

Returns

+
FALSE
+
+
+
+

Empty a database table

+
truncate(string $table) : void
+
+
+

+

Parameters

+
+

$table

+string +
+
+
+
+

Method to simplify retreiving db results for meta-data queries

+
driver_query(string $sql, bool $filtered_index) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::driver_query()
+

Parameters

+
+

$sql

+string +
+
+

$filtered_index

+bool +
+

Returns

+
mixed
+
+
+

+ Properties

+ 
+

Reference to sql sub class

+
$sql 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$sql
+
+
+ 
+

Reference to util sub class

+
$util 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$util
+
+
+ 
+

Reference to the connection resource

+
$conn 
+
+

+
+ 
+

Character to escape identifiers

+
$escape_char 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$escape_char
+
+
+ 
+

Reference to the last query executed

+
$statement 
+
+

+
+  + 
+

Reference to the current transaction

+
$trans 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Firebird_Result.html b/docs/classes/Firebird_Result.html new file mode 100644 index 0000000..7028920 --- /dev/null +++ b/docs/classes/Firebird_Result.html @@ -0,0 +1,486 @@ + + + + + +OpenSQLManager » \Firebird_Result + + + + + + + + + + +
+ +
+ +
+
+

Firebird result class to emulate PDOStatement Class - only implements +data-fetching methods

+
+

+

+ Methods

+
+

Create the object by passing the resource for +the query

+
__construct(resource $link) 
+
+
+

+

Parameters

+
+

$link

+resource +
+
+
+
+

__sleep() +

+
__sleep() 
+
+
+

+ + + +
inherited_fromPDOStatement::__sleep()
+
+
+
+

__wakeup() +

+
__wakeup() 
+
+
+

+ + + +
inherited_fromPDOStatement::__wakeup()
+
+
+
+

Invalidate method for data consistency

+
bindColumn(mixed $column, mixed $param, int $type, mixed $maxlen, array $driverdata) : FALSE
+
+
+

+

Parameters

+
+

$column

+mixed +
+
+

$param

+mixed

&$param

+
+
+

$type

+int +
+
+

$maxlen

+mixed +
+
+

$driverdata

+array +
+

Returns

+
FALSE
+
+
+
+

Invalidate method for data consistency

+
bindParam(mixed $parameter, mixed $variable, int $data_type, mixed $maxlen, array $driverdata) : FALSE
+
+
+

+

Parameters

+
+

$parameter

+mixed +
+
+

$variable

+mixed

&$variable

+
+
+

$data_type

+int +
+
+

$maxlen

+mixed +
+
+

$driverdata

+array +
+

Returns

+
FALSE
+
+
+
+

Invalidate method for data consistency

+
bindValue(mixed $parameter, mixed $variable, int $data_type) : FALSE
+
+
+

+

Parameters

+
+

$parameter

+mixed +
+
+

$variable

+mixed

&$variable

+
+
+

$data_type

+int +
+

Returns

+
FALSE
+
+
+
+

closeCursor() +

+
closeCursor() 
+
+
+

+ + + +
inherited_fromPDOStatement::closeCursor()
+
+
+
+

columnCount() +

+
columnCount() 
+
+
+

+ + + +
inherited_fromPDOStatement::columnCount()
+
+
+
+

debugDumpParams() +

+
debugDumpParams() 
+
+
+

+ + + +
inherited_fromPDOStatement::debugDumpParams()
+
+
+
+

Method to emulate PDOStatement->errorCode

+
errorCode() : string
+
+
+

+

Returns

+
string
+
+
+
+

Method to emulate PDO->errorInfo / PDOStatement->errorInfo

+
errorInfo() : array
+
+
+

+

Returns

+
array
+
+
+
+

Run a prepared statement query

+
execute(array $args) : bool
+
+
+

+

Parameters

+
+

$args

+array +
+

Returns

+
bool
+
+
+
+

Emulate PDO fetch public function

+
fetch(int $fetch_style, mixed $statement, mixed $offset) : mixed
+
+
+

+

Parameters

+
+

$fetch_style

+int +
+
+

$statement

+mixed +
+
+

$offset

+mixed +
+

Returns

+
mixed
+
+
+
+

Emulate PDO fetchAll public function

+
fetchAll(int $fetch_style, mixed $statement, mixed $ctor_args) : mixed
+
+
+

+

Parameters

+
+

$fetch_style

+int +
+
+

$statement

+mixed +
+
+

$ctor_args

+mixed +
+

Returns

+
mixed
+
+
+
+

Emulate PDOStatement::fetchColumn

+
fetchColumn(int $column_num) : mixed
+
+
+

+

Parameters

+
+

$column_num

+int +
+

Returns

+
mixed
+
+
+
+

Emulate PDOStatement::fetchObject, but only for the default use

+
fetchObject(string $class_name, array $ctor_args) : mixed
+
+
+

+

Parameters

+
+

$class_name

+string +
+
+

$ctor_args

+array +
+

Returns

+
mixed
+
+
+
+

getAttribute() +

+
getAttribute() 
+
+
+

+ + + +
inherited_fromPDOStatement::getAttribute()
+
+
+
+

getColumnMeta() +

+
getColumnMeta() 
+
+
+

+ + + +
inherited_fromPDOStatement::getColumnMeta()
+
+
+
+

nextRowset() +

+
nextRowset() 
+
+
+

+ + + +
inherited_fromPDOStatement::nextRowset()
+
+
+
+

Return the number of rows for the select query

+
num_rows() : int
+
+
+

+

Returns

+
int
+
+
+
+

Return the number of rows affected by the previous query

+
rowCount() : int
+
+
+

+

Returns

+
int
+
+
+
+

setAttribute() +

+
setAttribute() 
+
+
+

+ + + +
inherited_fromPDOStatement::setAttribute()
+
+
+
+

setFetchMode() +

+
setFetchMode() 
+
+
+

+ + + +
inherited_fromPDOStatement::setFetchMode()
+
+
+

+ Properties

+ 
+

Reference to fbird resource

+
$statement 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Firebird_SQL.html b/docs/classes/Firebird_SQL.html new file mode 100644 index 0000000..d2b591e --- /dev/null +++ b/docs/classes/Firebird_SQL.html @@ -0,0 +1,288 @@ + + + + + +OpenSQLManager » \Firebird_SQL + + + + + + + + + + +
+ +
+ +
+
+

Firebird Specific SQL

+
+

+

+ Methods

+
+

Get the 'average' keyword

+
avg() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::avg()
+

Returns

+
string
+
+
+
+

Return sql to list columns of the specified table

+
column_list(string $table) : string
+
+
+

+

Parameters

+
+

$table

+string +
+

Returns

+
string
+
+
+
+

Returns sql to list other databases

+
db_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Get the 'distinct' keyword

+
distinct() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::distinct()
+

Returns

+
string
+
+
+
+

Return sql to list functions

+
function_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Limit clause

+
limit(string $sql, int $limit, int $offset) : string
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
string
+
+
+
+

Get the max keyword sql

+
max() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::max()
+

Returns

+
string
+
+
+
+

Get the min keyword sql

+
min() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::min()
+

Returns

+
string
+
+
+
+

Return sql to list stored procedures

+
procedure_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Random ordering keyword

+
random() : string
+
+
+

+

Returns

+
string
+
+
+
+

Return sql to list sequences

+
sequence_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Get the 'sum' keyword

+
sum() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::sum()
+

Returns

+
string
+
+
+
+

Returns sql to list system tables

+
system_table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list tables

+
table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list triggers

+
trigger_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list views

+
view_list() : string
+
+
+

+

Returns

+
string
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Firebird_Util.html b/docs/classes/Firebird_Util.html new file mode 100644 index 0000000..6fda29a --- /dev/null +++ b/docs/classes/Firebird_Util.html @@ -0,0 +1,203 @@ + + + + + +OpenSQLManager » \Firebird_Util + + + + + + + + + + +
+ +
+ +
+
+

Firebird-specific backup, import and creation methods

+
+

+

+ Methods

+
+

Enable calling driver methods

+
__call(string $method, array $args) 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::__call()
+

Parameters

+
+

$method

+string +
+
+

$args

+array +
+
+
+
+

Save a reference to the current connection object

+
__construct(object $conn) : void
+
+
+

+

Parameters

+
+

$conn

+object

&$conn

+
+
+
+
+

Create an SQL backup file for the current database's data

+
backup_data(array $exclude, bool $system_tables) : string
+
+
+

+

Parameters

+
+

$exclude

+array +
+
+

$system_tables

+bool +
+

Returns

+
string
+
+
+
+

Create an SQL backup file for the current database's structure

+
backup_structure() : string
+
+
+

+

Returns

+
string
+
+
+
+

Convienience public function to generate sql for creating a db table

+
create_table(string $name, array $fields, array $constraints, array $indexes) : string
+
+
+

+

Parameters

+
+

$name

+string +
+
+

$fields

+array +
+
+

$constraints

+array +
+
+

$indexes

+array +
+

Returns

+
string
+
+
+
+

Drop the selected table

+
delete_table(string $name) : string
+
+
+

+

Parameters

+
+

$name

+string +
+

Returns

+
string
+
+
+

+ Properties

+ 
+

Reference to the current connection object

+
$conn 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::$$conn
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Main.html b/docs/classes/Main.html new file mode 100644 index 0000000..bc52227 --- /dev/null +++ b/docs/classes/Main.html @@ -0,0 +1,136 @@ + + + + + +OpenSQLManager » \Main + + + + + + + + + + +
+ +
+ +
+
+

Main Window Class

+
+

Creates and displays the main interface window

+

+ Methods

+
+

Create and display the main window on startup

+
__construct() 
+
+

+
+
+

Some cleanup for when the main window is closed

+
__destruct() : void
+
+

+
+
+

Exits the GTK loop

+
quit() : void
+
+

+
+
+

Create the menu for the program

+
_create_menu() : \GtkMenuBar
+
+
+

+

Returns

+
\GtkMenuBar
+
+
+
+

Layout the main interface +Create menus, hboxes, vboxs and other widgets

+
_main_layout() : void
+
+

+
+

+ Properties

+ 
+

Reference to connection sidebar instance

+
$connection_sidebar 
+
+

+
+ 
+

Reference to settings instance

+
$settings 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/MySQL.html b/docs/classes/MySQL.html new file mode 100644 index 0000000..c62b7c2 --- /dev/null +++ b/docs/classes/MySQL.html @@ -0,0 +1,840 @@ + + + + + +OpenSQLManager » \MySQL + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

MySQL specific class

+
+

Extends PDO to simplify cross-database issues

+ + + +
extendsDB_PDO
+

+ Methods

+
+

Connect to MySQL Database

+
__construct(string $dsn, string $username, string $password, array $options) 
+
+
+

+

Parameters

+
+

$dsn

+string +
+
+

$username

+string +
+
+

$password

+string +
+
+

$options

+array +
+
+
+
+

__sleep() +

+
__sleep() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__sleep()
inherited_from\DB_PDO::__sleep()
+
+
+
+

__wakeup() +

+
__wakeup() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__wakeup()
inherited_from\DB_PDO::__wakeup()
+
+
+
+

Returns number of rows affected by an INSERT, UPDATE, DELETE type query

+
affected_rows(\PDOStatement $statement) : int
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::affected_rows()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
int
+
+
+
+

beginTransaction() +

+
beginTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::beginTransaction()
inherited_from\DB_PDO::beginTransaction()
+
+
+
+

commit() +

+
commit() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::commit()
inherited_from\DB_PDO::commit()
+
+
+
+

Deletes all the rows from a table. Does the same as the truncate +method if the database does not support 'TRUNCATE';

+
empty_table(string $table) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::empty_table()
+

Parameters

+
+

$table

+string +
+

Returns

+
mixed
+
+
+
+

errorCode() +

+
errorCode() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::errorCode()
inherited_from\DB_PDO::errorCode()
+
+
+
+

errorInfo() +

+
errorInfo() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::errorInfo()
inherited_from\DB_PDO::errorInfo()
+
+
+
+

exec() +

+
exec() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::exec()
inherited_from\DB_PDO::exec()
+
+
+
+

getAttribute() +

+
getAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAttribute()
inherited_from\DB_PDO::getAttribute()
+
+
+
+

getAvailableDrivers() +

+
getAvailableDrivers() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAvailableDrivers()
inherited_from\DB_PDO::getAvailableDrivers()
+
+
+
+

Return list of dbs for the current connection, if possible

+
get_dbs() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_dbs()
+

Returns

+
array
+
+
+
+

Return list of function for the current database

+
get_functions() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_functions()
+

Returns

+
array
+
+
+
+

Return the last error for the current database connection

+
get_last_error() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_last_error()
+

Returns

+
string
+
+
+
+

Return list of stored procedures for the current database

+
get_procedures() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_procedures()
+

Returns

+
array
+
+
+
+

Retreives the data from a select query

+
get_query_data(\PDOStatement $statement) : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_query_data()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
array
+
+
+
+

Return schemas for databases that list them

+
get_schemas() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_schemas()
+

Returns

+
array
+
+
+
+

Return list of sequences for the current database, if they exist

+
get_sequences() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_sequences()
+

Returns

+
array
+
+
+
+

Retreives an array of non-user-created tables for +the connection/database

+
get_system_tables() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_system_tables()
+

Returns

+
array
+
+
+
+

Return list of tables for the current database

+
get_tables() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_tables()
+

Returns

+
array
+
+
+
+

Return list of triggers for the current database

+
get_triggers() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_triggers()
+

Returns

+
array
+
+
+
+

Return list of views for the current database

+
get_views() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_views()
+

Returns

+
array
+
+
+
+

inTransaction() +

+
inTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::inTransaction()
inherited_from\DB_PDO::inTransaction()
+
+
+
+

lastInsertId() +

+
lastInsertId() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::lastInsertId()
inherited_from\DB_PDO::lastInsertId()
+
+
+
+

Return the number of rows returned for a SELECT query

+
num_rows() : int
+
+
+

+

Returns

+
int
+
+
+
+

prepare() +

+
prepare() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::prepare()
inherited_from\DB_PDO::prepare()
+
+
+
+

Create and execute a prepared statement with the provided parameters

+
prepare_execute(string $sql, array $params) : \PDOStatement
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::prepare_execute()
+

Parameters

+
+

$sql

+string +
+
+

$params

+array +
+

Returns

+ +
+
+
+

Simplifies prepared statements for database queries

+
prepare_query(string $sql, array $data) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::prepare_query()
+

Parameters

+
+

$sql

+string +
+
+

$data

+array +
+

Returns

+
+mixedPDOStatement / FALSE
+
+
+
+

query() +

+
query() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::query()
inherited_from\DB_PDO::query()
+
+
+
+

quote() +

+
quote() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::quote()
inherited_from\DB_PDO::quote()
+
+
+
+

Surrounds the string with the databases identifier escape characters

+
quote_ident(mixed $ident) : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::quote_ident()
+

Parameters

+
+

$ident

+mixed +
+

Returns

+
string
+
+
+
+

rollBack() +

+
rollBack() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::rollBack()
inherited_from\DB_PDO::rollBack()
+
+
+
+

setAttribute() +

+
setAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::setAttribute()
inherited_from\DB_PDO::setAttribute()
+
+
+
+

Connect to a different database

+
switch_db(string $name) : void
+
+
+

+

Parameters

+
+

$name

+string +
+
+
+
+

Empty a table

+
truncate(string $table) : void
+
+
+

+

Parameters

+
+

$table

+string +
+
+
+
+

Method to simplify retreiving db results for meta-data queries

+
driver_query(string $sql, bool $filtered_index) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::driver_query()
+

Parameters

+
+

$sql

+string +
+
+

$filtered_index

+bool +
+

Returns

+
mixed
+
+
+

+ Properties

+ 
+

Reference to sql sub class

+
$sql 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$sql
+
+
+ 
+

Reference to util sub class

+
$util 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$util
+
+
+ 
+

Set the backtick as the MySQL escape character

+
$escape_char 
+
+

+
+ 
+

Reference to the last executed query

+
$statement 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$statement
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/MySQL_SQL.html b/docs/classes/MySQL_SQL.html new file mode 100644 index 0000000..f489870 --- /dev/null +++ b/docs/classes/MySQL_SQL.html @@ -0,0 +1,272 @@ + + + + + +OpenSQLManager » \MySQL_SQL + + + + + + + + + + +
+ +
+ +
+
+

MySQL specifc SQL

+
+

+

+ Methods

+
+

Get the 'average' keyword

+
avg() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::avg()
+

Returns

+
string
+
+
+
+

Returns sql to list other databases

+
db_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Get the 'distinct' keyword

+
distinct() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::distinct()
+

Returns

+
string
+
+
+
+

Return sql to list functions

+
function_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Limit clause

+
limit(string $sql, int $limit, int $offset) : string
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
string
+
+
+
+

Get the max keyword sql

+
max() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::max()
+

Returns

+
string
+
+
+
+

Get the min keyword sql

+
min() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::min()
+

Returns

+
string
+
+
+
+

Return sql to list stored procedures

+
procedure_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Random ordering keyword

+
random() : string
+
+
+

+

Returns

+
string
+
+
+
+

Return sql to list sequences

+
sequence_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Get the 'sum' keyword

+
sum() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::sum()
+

Returns

+
string
+
+
+
+

Overridden in MySQL class

+
system_table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list tables

+
table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list triggers

+
trigger_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list views

+
view_list() : string
+
+
+

+

Returns

+
string
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/MySQL_Util.html b/docs/classes/MySQL_Util.html new file mode 100644 index 0000000..c4850cf --- /dev/null +++ b/docs/classes/MySQL_Util.html @@ -0,0 +1,199 @@ + + + + + +OpenSQLManager » \MySQL_Util + + + + + + + + + + +
+ +
+ +
+
+

MySQL-specific backup, import and creation methods

+
+

+

+ Methods

+
+

Enable calling driver methods

+
__call(string $method, array $args) 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::__call()
+

Parameters

+
+

$method

+string +
+
+

$args

+array +
+
+
+
+

Save a reference to the current connection object

+
__construct(object $conn) : void
+
+
+

+

Parameters

+
+

$conn

+object

&$conn

+
+
+
+
+

Create an SQL backup file for the current database's data

+
backup_data(array $exclude) : string
+
+
+

+

Parameters

+
+

$exclude

+array +
+

Returns

+
string
+
+
+
+

Create an SQL backup file for the current database's structure

+
backup_structure() : string
+
+
+

+

Returns

+
string
+
+
+
+

Convienience public function for creating a new MySQL table

+
create_table(string $name, array $columns, array $constraints, array $indexes) : string
+
+
+

+

Parameters

+
+

$name

+string +
+
+

$columns

+array +
+
+

$constraints

+array +
+
+

$indexes

+array +
+

Returns

+
string
+
+
+
+

Convience public function for droping a MySQL table

+
delete_table(string $name) : string
+
+
+

+

Parameters

+
+

$name

+string +
+

Returns

+
string
+
+
+

+ Properties

+ 
+

Reference to the current connection object

+
$conn 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::$$conn
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/ODBC.html b/docs/classes/ODBC.html new file mode 100644 index 0000000..a0fc4ce --- /dev/null +++ b/docs/classes/ODBC.html @@ -0,0 +1,842 @@ + + + + + +OpenSQLManager » \ODBC + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

ODBC Database Driver

+
+

For general database access for databases not specified by the main drivers

+ + + +
extendsDB_PDO
+

+ Methods

+
+

Use ODBC to connect to a database

+
__construct(string $dsn, string $username, string $password, array $options) 
+
+
+

+

Parameters

+
+

$dsn

+string +
+
+

$username

+string +
+
+

$password

+string +
+
+

$options

+array +
+
+
+
+

__sleep() +

+
__sleep() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__sleep()
inherited_from\DB_PDO::__sleep()
+
+
+
+

__wakeup() +

+
__wakeup() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__wakeup()
inherited_from\DB_PDO::__wakeup()
+
+
+
+

Returns number of rows affected by an INSERT, UPDATE, DELETE type query

+
affected_rows(\PDOStatement $statement) : int
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::affected_rows()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
int
+
+
+
+

beginTransaction() +

+
beginTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::beginTransaction()
inherited_from\DB_PDO::beginTransaction()
+
+
+
+

commit() +

+
commit() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::commit()
inherited_from\DB_PDO::commit()
+
+
+
+

Deletes all the rows from a table. Does the same as the truncate +method if the database does not support 'TRUNCATE';

+
empty_table(string $table) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::empty_table()
+

Parameters

+
+

$table

+string +
+

Returns

+
mixed
+
+
+
+

errorCode() +

+
errorCode() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::errorCode()
inherited_from\DB_PDO::errorCode()
+
+
+
+

errorInfo() +

+
errorInfo() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::errorInfo()
inherited_from\DB_PDO::errorInfo()
+
+
+
+

exec() +

+
exec() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::exec()
inherited_from\DB_PDO::exec()
+
+
+
+

getAttribute() +

+
getAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAttribute()
inherited_from\DB_PDO::getAttribute()
+
+
+
+

getAvailableDrivers() +

+
getAvailableDrivers() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAvailableDrivers()
inherited_from\DB_PDO::getAvailableDrivers()
+
+
+
+

Return list of dbs for the current connection, if possible

+
get_dbs() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_dbs()
+

Returns

+
array
+
+
+
+

Return list of function for the current database

+
get_functions() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_functions()
+

Returns

+
array
+
+
+
+

Return the last error for the current database connection

+
get_last_error() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_last_error()
+

Returns

+
string
+
+
+
+

Return list of stored procedures for the current database

+
get_procedures() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_procedures()
+

Returns

+
array
+
+
+
+

Retreives the data from a select query

+
get_query_data(\PDOStatement $statement) : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_query_data()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
array
+
+
+
+

Return schemas for databases that list them

+
get_schemas() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_schemas()
+

Returns

+
array
+
+
+
+

Return list of sequences for the current database, if they exist

+
get_sequences() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_sequences()
+

Returns

+
array
+
+
+
+

Retreives an array of non-user-created tables for +the connection/database

+
get_system_tables() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_system_tables()
+

Returns

+
array
+
+
+
+

Return list of tables for the current database

+
get_tables() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_tables()
+

Returns

+
array
+
+
+
+

Return list of triggers for the current database

+
get_triggers() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_triggers()
+

Returns

+
array
+
+
+
+

Return list of views for the current database

+
get_views() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_views()
+

Returns

+
array
+
+
+
+

inTransaction() +

+
inTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::inTransaction()
inherited_from\DB_PDO::inTransaction()
+
+
+
+

lastInsertId() +

+
lastInsertId() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::lastInsertId()
inherited_from\DB_PDO::lastInsertId()
+
+
+
+

Return the number of rows returned for a SELECT query

+
num_rows() : int
+
+
+

+

Returns

+
int
+
+
+
+

prepare() +

+
prepare() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::prepare()
inherited_from\DB_PDO::prepare()
+
+
+
+

Create and execute a prepared statement with the provided parameters

+
prepare_execute(string $sql, array $params) : \PDOStatement
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::prepare_execute()
+

Parameters

+
+

$sql

+string +
+
+

$params

+array +
+

Returns

+ +
+
+
+

Simplifies prepared statements for database queries

+
prepare_query(string $sql, array $data) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::prepare_query()
+

Parameters

+
+

$sql

+string +
+
+

$data

+array +
+

Returns

+
+mixedPDOStatement / FALSE
+
+
+
+

query() +

+
query() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::query()
inherited_from\DB_PDO::query()
+
+
+
+

quote() +

+
quote() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::quote()
inherited_from\DB_PDO::quote()
+
+
+
+

Surrounds the string with the databases identifier escape characters

+
quote_ident(mixed $ident) : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::quote_ident()
+

Parameters

+
+

$ident

+mixed +
+

Returns

+
string
+
+
+
+

rollBack() +

+
rollBack() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::rollBack()
inherited_from\DB_PDO::rollBack()
+
+
+
+

setAttribute() +

+
setAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::setAttribute()
inherited_from\DB_PDO::setAttribute()
+
+
+
+

Doesn't apply to ODBC

+
switch_db(string $name) : bool
+
+
+

+

Parameters

+
+

$name

+string +
+

Returns

+
bool
+
+
+
+

Empty the current database

+
truncate(string $table) : void
+
+
+

+

Parameters

+
+

$table

+string +
+
+
+
+

Method to simplify retreiving db results for meta-data queries

+
driver_query(string $sql, bool $filtered_index) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::driver_query()
+

Parameters

+
+

$sql

+string +
+
+

$filtered_index

+bool +
+

Returns

+
mixed
+
+
+

+ Properties

+ 
+

Reference to sql sub class

+
$sql 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$sql
+
+
+ 
+

Reference to util sub class

+
$util 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$util
+
+
+ 
+

Don't define the escape char - or define it in sub-drivers in a refactor

+
$escape_char 
+
+

+
+ 
+

Reference to the last executed query

+
$statement 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$statement
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/ODBC_SQL.html b/docs/classes/ODBC_SQL.html new file mode 100644 index 0000000..64331bf --- /dev/null +++ b/docs/classes/ODBC_SQL.html @@ -0,0 +1,272 @@ + + + + + +OpenSQLManager » \ODBC_SQL + + + + + + + + + + +
+ +
+ +
+
+

ODBC SQL Class

+
+

+

+ Methods

+
+

Get the 'average' keyword

+
avg() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::avg()
+

Returns

+
string
+
+
+
+

Returns sql to list other databases

+
db_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Get the 'distinct' keyword

+
distinct() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::distinct()
+

Returns

+
string
+
+
+
+

Return sql to list functions

+
function_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Limit clause

+
limit(string $sql, int $limit, int $offset) : string
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
string
+
+
+
+

Get the max keyword sql

+
max() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::max()
+

Returns

+
string
+
+
+
+

Get the min keyword sql

+
min() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::min()
+

Returns

+
string
+
+
+
+

Return sql to list stored procedures

+
procedure_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Random ordering keyword

+
random() : string
+
+
+

+

Returns

+
string
+
+
+
+

Return sql to list sequences

+
sequence_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Get the 'sum' keyword

+
sum() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::sum()
+

Returns

+
string
+
+
+
+

Returns sql to list system tables

+
system_table_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Returns sql to list tables

+
table_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Returns sql to list triggers

+
trigger_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Returns sql to list views

+
view_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/ODBC_Util.html b/docs/classes/ODBC_Util.html new file mode 100644 index 0000000..c48270f --- /dev/null +++ b/docs/classes/ODBC_Util.html @@ -0,0 +1,194 @@ + + + + + +OpenSQLManager » \ODBC_Util + + + + + + + + + + +
+ +
+ +
+
+

ODBC-specific backup, import and creation methods

+
+

+

+ Methods

+
+

Enable calling driver methods

+
__call(string $method, array $args) 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::__call()
+

Parameters

+
+

$method

+string +
+
+

$args

+array +
+
+
+
+

Save a reference to the current connection object

+
__construct(object $conn) : void
+
+
+

+

Parameters

+
+

$conn

+object

&$conn

+
+
+
+
+

Create an SQL backup file for the current database's data

+
backup_data() : string
+
+
+

+

Returns

+
string
+
+
+
+

Create an SQL backup file for the current database's structure

+
backup_structure() : string
+
+
+

+

Returns

+
string
+
+
+
+

Database-specific method to create a new table

+
create_table(string $name, array $columns, array $constraints, array $indexes) : string
+
+
+

+

Parameters

+
+

$name

+string +
+
+

$columns

+array +
+
+

$constraints

+array +
+
+

$indexes

+array +
+

Returns

+
string
+
+
+
+

Remove a table from the database

+
delete_table(string $name) : string
+
+
+

+

Parameters

+
+

$name

+string +
+

Returns

+
string
+
+
+

+ Properties

+ 
+

Reference to the current connection object

+
$conn 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::$$conn
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/PgSQL_Util.html b/docs/classes/PgSQL_Util.html new file mode 100644 index 0000000..ba5829a --- /dev/null +++ b/docs/classes/PgSQL_Util.html @@ -0,0 +1,199 @@ + + + + + +OpenSQLManager » \PgSQL_Util + + + + + + + + + + +
+ +
+ +
+
+

Posgres-specific backup, import and creation methods

+
+

+

+ Methods

+
+

Enable calling driver methods

+
__call(string $method, array $args) 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::__call()
+

Parameters

+
+

$method

+string +
+
+

$args

+array +
+
+
+
+

Save a reference to the current connection object

+
__construct(object $conn) : void
+
+
+

+

Parameters

+
+

$conn

+object

&$conn

+
+
+
+
+

Create an SQL backup file for the current database's data

+
backup_data(array $exclude) : string
+
+
+

+

Parameters

+
+

$exclude

+array +
+

Returns

+
string
+
+
+
+

Create an SQL backup file for the current database's structure

+
backup_structure() : string
+
+
+

+

Returns

+
string
+
+
+
+

Database-specific method to create a new table

+
create_table(string $name, array $columns, array $constraints, array $indexes) : string
+
+
+

+

Parameters

+
+

$name

+string +
+
+

$columns

+array +
+
+

$constraints

+array +
+
+

$indexes

+array +
+

Returns

+
string
+
+
+
+

Database-specific SQL for dropping a table

+
delete_table(string $name) : string
+
+
+

+

Parameters

+
+

$name

+string +
+

Returns

+
string
+
+
+

+ Properties

+ 
+

Reference to the current connection object

+
$conn 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::$$conn
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Query_Builder.html b/docs/classes/Query_Builder.html new file mode 100644 index 0000000..e0a2a28 --- /dev/null +++ b/docs/classes/Query_Builder.html @@ -0,0 +1,1074 @@ + + + + + +OpenSQLManager » \Query_Builder + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

Convienience class for creating sql queries - also the class that +instantiates the specific db driver

+
+

+

+ Methods

+
+

Calls a function further down the inheritence chain

+
__call(string $name, array $params) : mixed
+
+
+

+

Parameters

+
+

$name

+string +
+
+

$params

+array +
+

Returns

+
mixed
+
+
+
+

Constructor

+
__construct(object $params) 
+
+
+

+

Parameters

+
+

$params

+object
    +
  • the connection parametere
  • +
+
+
+
+
+

Retreive the number of rows in the selected table

+
count_all(string $table) : int
+
+
+

+

Parameters

+
+

$table

+string +
+

Returns

+
int
+
+
+
+

Retrieve the number of results for the generated query - used +in place of the get() method

+
count_all_results(string $table) : int
+
+
+

+

Parameters

+
+

$table

+string +
+

Returns

+
int
+
+
+
+

Deletes data from a table

+
delete(string $table, mixed $where) : mixed
+
+
+

+

Parameters

+
+

$table

+string +
+
+

$where

+mixed +
+

Returns

+
mixed
+
+
+
+

Adds the 'distinct' keyword to a query

+
distinct() : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Returns

+ +
+
+
+

Specify the database table to select from

+
from(string $dbname) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$dbname

+string +
+

Returns

+ +
+
+
+

Select and retrieve all records from the current table, and/or +execute current compiled query

+
get($table, int $limit, int $offset) : object
+
+
+

+

Parameters

+
+

$table

+ +
+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
object
+
+
+
+

Convience method for get() with a where clause

+
get_where(string $table, array $where, int $limit, int $offset) : object
+
+
+

+

Parameters

+
+

$table

+string +
+
+

$where

+array +
+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
object
+
+
+
+

Group the results by the selected field(s)

+
group_by(mixed $field) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+mixed +
+

Returns

+ +
+
+
+

Ends a query group

+
group_end() : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Returns

+ +
+
+
+

Adds a paren to the current query for query grouping

+
group_start() : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Returns

+ +
+
+
+

Generates a 'Having' clause

+
having(mixed $key, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$key

+mixed +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

Creates an insert clause, and executes it

+
insert(string $table, mixed $data) : mixed
+
+
+

+

Parameters

+
+

$table

+string +
+
+

$data

+mixed +
+

Returns

+
mixed
+
+
+
+

Creates a join phrase in a compiled query

+
join(string $table, string $condition, string $type) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$table

+string +
+
+

$condition

+string +
+
+

$type

+string +
+

Returns

+ +
+
+ +
+

Set a limit on the current sql statement

+
limit(int $limit, int $offset) : string
+
+
+

+

Parameters

+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
string
+
+
+
+

Generates a NOT LIKE clause

+
not_like(string $field, mixed $val, string $pos) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$val

+mixed +
+
+

$pos

+string +
+

Returns

+ +
+
+
+

Adds a paren to the current query for query grouping, +prefixed with 'OR'

+
or_group_start() : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Returns

+ +
+
+
+

Generates a 'Having' clause prefixed with 'OR'

+
or_having(mixed $key, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$key

+mixed +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

Generates an OR Like clause

+
or_like(string $field, mixed $val, string $pos) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$val

+mixed +
+
+

$pos

+string +
+

Returns

+ +
+
+
+

Adds a paren to the current query for query grouping, +prefixed with 'OR NOT'

+
or_not_group_start() : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Returns

+ +
+
+
+

Generates a OR NOT LIKE clause

+
or_not_like(string $field, mixed $val, string $pos) : \$this;
+
+
+

+

Parameters

+
+

$field

+string +
+
+

$val

+mixed +
+
+

$pos

+string +
+

Returns

+
\$this;
+
+
+
+

Where clause prefixed with "OR"

+
or_where(string $field, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

Where in statement prefixed with "or"

+
or_where_in(string $field, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

OR WHERE NOT IN (FOO) clause

+
or_where_not_in(string $field, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

Order the results by the selected field(s)

+
order_by(string $field, string $type) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$type

+string +
+

Returns

+ +
+
+
+

Specifies rows to select in a query

+
select(string $fields) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$fields

+string +
+

Returns

+ +
+
+
+

Selects the average value of a field from a query

+
select_avg(string $field, string $as) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$as

+string +
+

Returns

+ +
+
+
+

Selects the maximum value of a field from a query

+
select_max(string $field, string $as) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$as

+string +
+

Returns

+ +
+
+
+

Selects the minimum value of a field from a query

+
select_min(string $field, string $as) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$as

+string +
+

Returns

+ +
+
+
+

Selects the sum of a field from a query

+
select_sum(string $field, string $as) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$as

+string +
+

Returns

+ +
+
+
+

Sets values for inserts / updates / deletes

+
set(mixed $key, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$key

+mixed +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

Creates an update clause, and executes it

+
update(string $table, mixed $data) : mixed
+
+
+

+

Parameters

+
+

$table

+string +
+
+

$data

+mixed +
+

Returns

+
mixed
+
+
+
+

Specify condition(s) in the where clause of a query +Note: this function works with key / value, or a +passed array with key / value pairs

+
where(mixed $key, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$key

+mixed +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

Where clause with 'IN' statement

+
where_in(mixed $field, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+mixed +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

WHERE NOT IN (FOO) clause

+
where_not_in(string $field, mixed $val) : \Query_Builder
+
+
+

+ + + +
fluentThis method is part of a fluent interface and will return the same instance
+

Parameters

+
+

$field

+string +
+
+

$val

+mixed +
+

Returns

+ +
+
+
+

String together the sql statements for sending to the db

+
_compile(string $type, string $table) : \$string
+
+
+

+

Parameters

+
+

$type

+string +
+
+

$table

+string +
+

Returns

+
\$string
+
+
+
+

Clear out the class variables, so the next query can be run

+
_reset() 
+
+

+
+
+

Do all the repeditive stuff for where/having type methods

+
_where(mixed $key, mixed $val) : array
+
+
+

+

Parameters

+
+

$key

+mixed +
+
+

$val

+mixed +
+

Returns

+
array
+
+
+

+ Properties

+ 
+

Convenience property for connection management

+
$conn_name 
+
+

+
+ 
+

Compiled 'from' clause

+
$from_string 
+
+

+
+ 
+

Key/val pairs for group by clause

+
$group_array 
+
+

+
+ 
+

Group by clause

+
$group_string 
+
+

+
+ 
+

Map for having clause

+
$having_map 
+
+

+
+ 
+

Value for limit string

+
$limit 
+
+

+
+ 
+

Value for offset in limit string

+
$offset 
+
+

+
+ 
+

Key/val pairs for order by clause

+
$order_array 
+
+

+
+ 
+

Order by clause

+
$order_string 
+
+

+
+ 
+

Query component order mapping +for complex select queries

+
$query_map 
+
+

Format:

+ +

array( + 'type' => 'where', + 'conjunction' => ' AND ', + 'string' => 'k=?' +)

+
+ 
+

Compiled 'select' clause

+
$select_string 
+
+

+
+ 
+

key/val pairs for insert/update statement

+
$set_array 
+
+

+
+ 
+

Keys for insert/update statement

+
$set_array_keys 
+
+

+
+ 
+

Compiled arguments for insert / update

+
$set_string 
+
+

+
+ 
+

Alias to $this->db->sql

+
$sql 
+
+

+
+ 
+

Values to apply to prepared statements

+
$values 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/SQLite.html b/docs/classes/SQLite.html new file mode 100644 index 0000000..0e3838a --- /dev/null +++ b/docs/classes/SQLite.html @@ -0,0 +1,857 @@ + + + + + +OpenSQLManager » \SQLite + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

SQLite specific class

+
+

Extends PDO to simplify cross-database issues

+ + + +
extendsDB_PDO
+

+ Methods

+
+

Open SQLite Database

+
__construct(string $dsn, string $user, string $pass) 
+
+
+

+

Parameters

+
+

$dsn

+string +
+
+

$user

+string +
+
+

$pass

+string +
+
+
+
+

__sleep() +

+
__sleep() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__sleep()
inherited_from\DB_PDO::__sleep()
+
+
+
+

__wakeup() +

+
__wakeup() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__wakeup()
inherited_from\DB_PDO::__wakeup()
+
+
+
+

Returns number of rows affected by an INSERT, UPDATE, DELETE type query

+
affected_rows(\PDOStatement $statement) : int
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::affected_rows()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
int
+
+
+
+

beginTransaction() +

+
beginTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::beginTransaction()
inherited_from\DB_PDO::beginTransaction()
+
+
+
+

commit() +

+
commit() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::commit()
inherited_from\DB_PDO::commit()
+
+
+
+

Deletes all the rows from a table. Does the same as the truncate +method if the database does not support 'TRUNCATE';

+
empty_table(string $table) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::empty_table()
+

Parameters

+
+

$table

+string +
+

Returns

+
mixed
+
+
+
+

errorCode() +

+
errorCode() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::errorCode()
inherited_from\DB_PDO::errorCode()
+
+
+
+

errorInfo() +

+
errorInfo() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::errorInfo()
inherited_from\DB_PDO::errorInfo()
+
+
+
+

exec() +

+
exec() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::exec()
inherited_from\DB_PDO::exec()
+
+
+
+

getAttribute() +

+
getAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAttribute()
inherited_from\DB_PDO::getAttribute()
+
+
+
+

getAvailableDrivers() +

+
getAvailableDrivers() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAvailableDrivers()
inherited_from\DB_PDO::getAvailableDrivers()
+
+
+
+

Return list of dbs for the current connection, if possible

+
get_dbs() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_dbs()
+

Returns

+
array
+
+
+
+

Return list of function for the current database

+
get_functions() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_functions()
+

Returns

+
array
+
+
+
+

Return the last error for the current database connection

+
get_last_error() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_last_error()
+

Returns

+
string
+
+
+
+

Return list of stored procedures for the current database

+
get_procedures() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_procedures()
+

Returns

+
array
+
+
+
+

Retreives the data from a select query

+
get_query_data(\PDOStatement $statement) : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_query_data()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
array
+
+
+
+

Return schemas for databases that list them

+
get_schemas() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_schemas()
+

Returns

+
array
+
+
+
+

Return list of sequences for the current database, if they exist

+
get_sequences() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_sequences()
+

Returns

+
array
+
+
+
+

List system tables for the current database

+
get_system_tables() : array
+
+
+

+

Returns

+
array
+
+
+
+

List tables for the current database

+
get_tables() : mixed
+
+
+

+

Returns

+
mixed
+
+
+
+

Return list of triggers for the current database

+
get_triggers() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_triggers()
+

Returns

+
array
+
+
+
+

Return list of views for the current database

+
get_views() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_views()
+

Returns

+
array
+
+
+
+

inTransaction() +

+
inTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::inTransaction()
inherited_from\DB_PDO::inTransaction()
+
+
+
+

lastInsertId() +

+
lastInsertId() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::lastInsertId()
inherited_from\DB_PDO::lastInsertId()
+
+
+
+

Load a database for the current connection

+
load_database(string $db, string $name) 
+
+
+

+

Parameters

+
+

$db

+string +
+
+

$name

+string +
+
+
+
+

Return the number of rows returned for a SELECT query

+
num_rows() : int
+
+
+

+

Returns

+
int
+
+
+
+

prepare() +

+
prepare() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::prepare()
inherited_from\DB_PDO::prepare()
+
+
+
+

Create and execute a prepared statement with the provided parameters

+
prepare_execute(string $sql, array $params) : \PDOStatement
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::prepare_execute()
+

Parameters

+
+

$sql

+string +
+
+

$params

+array +
+

Returns

+ +
+
+
+

Simplifies prepared statements for database queries

+
prepare_query(string $sql, array $data) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::prepare_query()
+

Parameters

+
+

$sql

+string +
+
+

$data

+array +
+

Returns

+
+mixedPDOStatement / FALSE
+
+
+
+

query() +

+
query() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::query()
inherited_from\DB_PDO::query()
+
+
+
+

quote() +

+
quote() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::quote()
inherited_from\DB_PDO::quote()
+
+
+
+

Surrounds the string with the databases identifier escape characters

+
quote_ident(mixed $ident) : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::quote_ident()
+

Parameters

+
+

$ident

+mixed +
+

Returns

+
string
+
+
+
+

rollBack() +

+
rollBack() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::rollBack()
inherited_from\DB_PDO::rollBack()
+
+
+
+

setAttribute() +

+
setAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::setAttribute()
inherited_from\DB_PDO::setAttribute()
+
+
+
+

Doesn't apply to sqlite

+
switch_db(string $name) : void
+
+
+

+

Parameters

+
+

$name

+string +
+
+
+
+

Empty a table

+
truncate(string $table) : void
+
+
+

+

Parameters

+
+

$table

+string +
+
+
+
+

Unload a database from the current connection

+
unload_database(string $name) 
+
+
+

+

Parameters

+
+

$name

+string +
+
+
+
+

Method to simplify retreiving db results for meta-data queries

+
driver_query(string $sql, bool $filtered_index) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::driver_query()
+

Parameters

+
+

$sql

+string +
+
+

$filtered_index

+bool +
+

Returns

+
mixed
+
+
+

+ Properties

+ 
+

Reference to sql sub class

+
$sql 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$sql
+
+
+ 
+

Reference to util sub class

+
$util 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$util
+
+
+ 
+

Character to escape identifiers

+
$escape_char 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$escape_char
+
+
+ 
+

Reference to the last executed sql query

+
$statement 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/SQLite_SQL.html b/docs/classes/SQLite_SQL.html new file mode 100644 index 0000000..cdd947c --- /dev/null +++ b/docs/classes/SQLite_SQL.html @@ -0,0 +1,272 @@ + + + + + +OpenSQLManager » \SQLite_SQL + + + + + + + + + + +
+ +
+ +
+
+

SQLite Specific SQL

+
+

+

+ Methods

+
+

Get the 'average' keyword

+
avg() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::avg()
+

Returns

+
string
+
+
+
+

Returns sql to list other databases

+
db_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Get the 'distinct' keyword

+
distinct() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::distinct()
+

Returns

+
string
+
+
+
+

Return sql to list functions

+
function_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Limit clause

+
limit(string $sql, int $limit, int $offset) : string
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
string
+
+
+
+

Get the max keyword sql

+
max() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::max()
+

Returns

+
string
+
+
+
+

Get the min keyword sql

+
min() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::min()
+

Returns

+
string
+
+
+
+

Return sql to list stored procedures

+
procedure_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Random ordering keyword

+
random() : string
+
+
+

+

Returns

+
string
+
+
+
+

Return sql to list sequences

+
sequence_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Get the 'sum' keyword

+
sum() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::sum()
+

Returns

+
string
+
+
+
+

Overridden in SQLite class

+
system_table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list tables

+
table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list triggers

+
trigger_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Returns sql to list views

+
view_list() : string
+
+
+

+

Returns

+
string
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/SQLite_Util.html b/docs/classes/SQLite_Util.html new file mode 100644 index 0000000..1ea7796 --- /dev/null +++ b/docs/classes/SQLite_Util.html @@ -0,0 +1,199 @@ + + + + + +OpenSQLManager » \SQLite_Util + + + + + + + + + + +
+ +
+ +
+
+

SQLite-specific backup, import and creation methods

+
+

+

+ Methods

+
+

Enable calling driver methods

+
__call(string $method, array $args) 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::__call()
+

Parameters

+
+

$method

+string +
+
+

$args

+array +
+
+
+
+

Save a reference to the current connection object

+
__construct(object $conn) : void
+
+
+

+

Parameters

+
+

$conn

+object

&$conn

+
+
+
+
+

Create an SQL backup file for the current database's data

+
backup_data(array $excluded) : string
+
+
+

+

Parameters

+
+

$excluded

+array +
+

Returns

+
string
+
+
+
+

Create an SQL backup file for the current database's structure

+
backup_structure() : string
+
+
+

+

Returns

+
string
+
+
+
+

Convenience public function to create a new table

+
create_table(string $name, array $columns, array $constraints, array $indexes) : string
+
+
+

+

Parameters

+
+

$name

+string

//Name of the table

+
+
+

$columns

+array

//columns as straight array and/or column => type pairs

+
+
+

$constraints

+array

// column => constraint pairs

+
+
+

$indexes

+array

// column => index pairs

+
+

Returns

+
string
+
+
+
+

SQL to drop the specified table

+
delete_table(string $name) : string
+
+
+

+

Parameters

+
+

$name

+string +
+

Returns

+
string
+
+
+

+ Properties

+ 
+

Reference to the current connection object

+
$conn 
+
Inherited
+
+

+ + + +
inherited_from\DB_Util::$$conn
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/SSH.html b/docs/classes/SSH.html new file mode 100644 index 0000000..3c2cad5 --- /dev/null +++ b/docs/classes/SSH.html @@ -0,0 +1,139 @@ + + + + + +OpenSQLManager » \SSH + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

Class to create ssh tunnels to connect to protected database servers

+
+

+

+ Methods

+
+

Constructor

+
__construct(string $host, int $port) 
+
+
+

+

Parameters

+
+

$host

+string +
+
+

$port

+int +
+
+
+
+

Create a tunnel using the current ssh connection

+
tunnel(string $host, int $port, string $auth_type, array $auth_params) : \stream
+
+
+

+

Parameters

+
+

$host

+string +
+
+

$port

+int +
+
+

$auth_type

+string +
+
+

$auth_params

+array +
+

Returns

+
\stream
+
+
+

+ Properties

+ 
+

$stream

+
$stream 
+
+

+
+ 
+

$session

+
$session 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/Settings.html b/docs/classes/Settings.html new file mode 100644 index 0000000..e099ef6 --- /dev/null +++ b/docs/classes/Settings.html @@ -0,0 +1,235 @@ + + + + + +OpenSQLManager » \Settings + + + + + + + + + + +
+ +
+ +
+
+

Class for manipulating datbase connections, and miscellaneous settings

+
+

Use JSON for compatibility

+

+ Methods

+
+

Output the settings on destruct

+
__destruct() 
+
+

+
+
+

Magic method to simplify isset checking for config options

+
__get(string $key) : mixed
+
+
+

+

Parameters

+
+

$key

+string +
+

Returns

+
mixed
+
+
+
+

Magic method to simplify setting config options

+
__set(string $key, $val) 
+
+
+

+

Parameters

+
+

$key

+string +
+
+

$val

+

mixed

+
+
+
+

Add a database connection

+
add_db(string $name, array $params) 
+
+
+

+

Parameters

+
+

$name

+string +
+
+

$params

+array +
+
+
+
+

Edit a database connection

+
edit_db(string $name, array $params) 
+
+
+

+

Parameters

+
+

$name

+string +
+
+

$params

+array +
+
+
+
+

Retreive a specific database connection

+
get_db(string $name) : object
+
+
+

+

Parameters

+
+

$name

+string +
+

Returns

+
object
+
+
+
+

Retreive all db connections

+
get_dbs() : array
+
+
+

+

Returns

+
array
+
+
+
+

Static method to retreive current instance +of the singleton

+
get_instance() : \Settings
+
+
+

+

Returns

+ +
+
+
+

Remove a database connection

+
remove_db(string $name) 
+
+
+

+

Parameters

+
+

$name

+string +
+
+
+
+

Load the settings file - private so it can't be loaded +directly - the settings should be safe!

+
__construct() 
+
+

+
+

+ Properties

+ 
+

Settings object represented by the currently loaded JSON file

+
$current 
+
+

+
+ 
+

Singleton instance

+
$instance 
+
+

+
+
+
+
+
+
+
+ + diff --git a/docs/classes/pgSQL.html b/docs/classes/pgSQL.html new file mode 100644 index 0000000..0fb5d9f --- /dev/null +++ b/docs/classes/pgSQL.html @@ -0,0 +1,842 @@ + + + + + +OpenSQLManager » \pgSQL + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+

PostgreSQL specifc class

+
+

Extends PDO to simplify cross-database issues

+ + + +
extendsDB_PDO
+

+ Methods

+
+

Connect to a PosgreSQL database

+
__construct(string $dsn, string $username, string $password, array $options) 
+
+
+

+

Parameters

+
+

$dsn

+string +
+
+

$username

+string +
+
+

$password

+string +
+
+

$options

+array +
+
+
+
+

__sleep() +

+
__sleep() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__sleep()
inherited_from\DB_PDO::__sleep()
+
+
+
+

__wakeup() +

+
__wakeup() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::__wakeup()
inherited_from\DB_PDO::__wakeup()
+
+
+
+

Returns number of rows affected by an INSERT, UPDATE, DELETE type query

+
affected_rows(\PDOStatement $statement) : int
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::affected_rows()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
int
+
+
+
+

beginTransaction() +

+
beginTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::beginTransaction()
inherited_from\DB_PDO::beginTransaction()
+
+
+
+

commit() +

+
commit() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::commit()
inherited_from\DB_PDO::commit()
+
+
+
+

Deletes all the rows from a table. Does the same as the truncate +method if the database does not support 'TRUNCATE';

+
empty_table(string $table) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::empty_table()
+

Parameters

+
+

$table

+string +
+

Returns

+
mixed
+
+
+
+

errorCode() +

+
errorCode() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::errorCode()
inherited_from\DB_PDO::errorCode()
+
+
+
+

errorInfo() +

+
errorInfo() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::errorInfo()
inherited_from\DB_PDO::errorInfo()
+
+
+
+

exec() +

+
exec() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::exec()
inherited_from\DB_PDO::exec()
+
+
+
+

getAttribute() +

+
getAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAttribute()
inherited_from\DB_PDO::getAttribute()
+
+
+
+

getAvailableDrivers() +

+
getAvailableDrivers() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::getAvailableDrivers()
inherited_from\DB_PDO::getAvailableDrivers()
+
+
+
+

Return list of dbs for the current connection, if possible

+
get_dbs() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_dbs()
+

Returns

+
array
+
+
+
+

Return list of function for the current database

+
get_functions() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_functions()
+

Returns

+
array
+
+
+
+

Return the last error for the current database connection

+
get_last_error() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_last_error()
+

Returns

+
string
+
+
+
+

Return list of stored procedures for the current database

+
get_procedures() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_procedures()
+

Returns

+
array
+
+
+
+

Retreives the data from a select query

+
get_query_data(\PDOStatement $statement) : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_query_data()
+

Parameters

+
+

$statement

+\PDOStatement +
+

Returns

+
array
+
+
+
+

Get a list of schemas for the current connection

+
get_schemas() : array
+
+
+

+

Returns

+
array
+
+
+
+

Return list of sequences for the current database, if they exist

+
get_sequences() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_sequences()
+

Returns

+
array
+
+
+
+

Retreives an array of non-user-created tables for +the connection/database

+
get_system_tables() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_system_tables()
+

Returns

+
array
+
+
+
+

Return list of tables for the current database

+
get_tables() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_tables()
+

Returns

+
array
+
+
+
+

Return list of triggers for the current database

+
get_triggers() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_triggers()
+

Returns

+
array
+
+
+
+

Return list of views for the current database

+
get_views() : array
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::get_views()
+

Returns

+
array
+
+
+
+

inTransaction() +

+
inTransaction() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::inTransaction()
inherited_from\DB_PDO::inTransaction()
+
+
+
+

lastInsertId() +

+
lastInsertId() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::lastInsertId()
inherited_from\DB_PDO::lastInsertId()
+
+
+
+

Return the number of rows returned for a SELECT query

+
num_rows() : int
+
+
+

+

Returns

+
int
+
+
+
+

prepare() +

+
prepare() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::prepare()
inherited_from\DB_PDO::prepare()
+
+
+
+

Create and execute a prepared statement with the provided parameters

+
prepare_execute(string $sql, array $params) : \PDOStatement
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::prepare_execute()
+

Parameters

+
+

$sql

+string +
+
+

$params

+array +
+

Returns

+ +
+
+
+

Simplifies prepared statements for database queries

+
prepare_query(string $sql, array $data) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::prepare_query()
+

Parameters

+
+

$sql

+string +
+
+

$data

+array +
+

Returns

+
+mixedPDOStatement / FALSE
+
+
+
+

query() +

+
query() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::query()
inherited_from\DB_PDO::query()
+
+
+
+

quote() +

+
quote() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::quote()
inherited_from\DB_PDO::quote()
+
+
+
+

Surrounds the string with the databases identifier escape characters

+
quote_ident(mixed $ident) : string
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::quote_ident()
+

Parameters

+
+

$ident

+mixed +
+

Returns

+
string
+
+
+
+

rollBack() +

+
rollBack() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::rollBack()
inherited_from\DB_PDO::rollBack()
+
+
+
+

setAttribute() +

+
setAttribute() 
+
Inherited
+
+

+ + + + + + + + + +
inherited_fromPDO::setAttribute()
inherited_from\DB_PDO::setAttribute()
+
+
+
+

Connect to a different database

+
switch_db(string $name) : void
+
+
+

+

Parameters

+
+

$name

+string +
+
+
+
+

Empty a table

+
truncate(string $table) : void
+
+
+

+

Parameters

+
+

$table

+string +
+
+
+
+

Method to simplify retreiving db results for meta-data queries

+
driver_query(string $sql, bool $filtered_index) : mixed
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::driver_query()
+

Parameters

+
+

$sql

+string +
+
+

$filtered_index

+bool +
+

Returns

+
mixed
+
+
+

+ Properties

+ 
+

Reference to sql sub class

+
$sql 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$sql
+
+
+ 
+

Reference to util sub class

+
$util 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$util
+
+
+ 
+

Character to escape identifiers

+
$escape_char 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$escape_char
+
+
+ 
+

Reference to the last executed query

+
$statement 
+
Inherited
+
+

+ + + +
inherited_from\DB_PDO::$$statement
+
+
+
+
+
+
+
+
+ + diff --git a/docs/classes/pgSQL_SQL.html b/docs/classes/pgSQL_SQL.html new file mode 100644 index 0000000..d8e3a1a --- /dev/null +++ b/docs/classes/pgSQL_SQL.html @@ -0,0 +1,288 @@ + + + + + +OpenSQLManager » \pgSQL_SQL + + + + + + + + + + +
+ +
+ +
+
+

PostgreSQL specifc SQL

+
+

+

+ Methods

+
+

Get the 'average' keyword

+
avg() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::avg()
+

Returns

+
string
+
+
+
+

Return sql to list columns of the specified table

+
column_list(string $table) : string
+
+
+

+

Parameters

+
+

$table

+string +
+

Returns

+
string
+
+
+
+

Returns sql to list other databases

+
db_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Get the 'distinct' keyword

+
distinct() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::distinct()
+

Returns

+
string
+
+
+
+

Return sql to list functions

+
function_list() : FALSE
+
+
+

+

Returns

+
FALSE
+
+
+
+

Limit clause

+
limit(string $sql, int $limit, int $offset) : string
+
+
+

+

Parameters

+
+

$sql

+string +
+
+

$limit

+int +
+
+

$offset

+int +
+

Returns

+
string
+
+
+
+

Get the max keyword sql

+
max() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::max()
+

Returns

+
string
+
+
+
+

Get the min keyword sql

+
min() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::min()
+

Returns

+
string
+
+
+
+

Return sql to list stored procedures

+
procedure_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Random ordering keyword

+
random() : string
+
+
+

+

Returns

+
string
+
+
+
+

Return sql to list sequences

+
sequence_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Get the 'sum' keyword

+
sum() : string
+
Inherited
+
+

+ + + +
inherited_from\DB_SQL::sum()
+

Returns

+
string
+
+
+
+

Returns sql to list system tables

+
system_table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list tables

+
table_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list triggers

+
trigger_list() : string
+
+
+

+

Returns

+
string
+
+
+
+

Returns sql to list views

+
view_list() : string
+
+
+

+

Returns

+
string
+
+
+
+
+
+
+
+
+ + diff --git a/docs/css/bootstrap-responsive.css b/docs/css/bootstrap-responsive.css new file mode 100644 index 0000000..4b032cd --- /dev/null +++ b/docs/css/bootstrap-responsive.css @@ -0,0 +1,567 @@ +/*! + * Bootstrap Responsive v2.0.0 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +.hidden { + display: none; + visibility: hidden; +} +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 18px; + } + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + height: 28px; + /* Make inputs at least the height of their button counterpart */ + + /* Makes inputs behave like true block-level elements */ + + -webkit-box-sizing: border-box; + /* Older Webkit */ + + -moz-box-sizing: border-box; + /* Older FF */ + + -ms-box-sizing: border-box; + /* IE8 */ + + box-sizing: border-box; + /* CSS3 spec*/ + + } + .input-prepend input[class*="span"], .input-append input[class*="span"] { + width: auto; + } + input[type="checkbox"], input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-group > label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-left: 10px; + padding-right: 10px; + } + .modal { + position: absolute; + top: 10px; + left: 10px; + right: 10px; + width: auto; + margin: 0; + } + .modal.fade.in { + top: auto; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} +@media (max-width: 768px) { + .container { + width: auto; + padding: 0 20px; + } + .row-fluid { + width: 100%; + } + .row { + margin-left: 0; + } + .row > [class*="span"], .row-fluid > [class*="span"] { + float: none; + display: block; + width: auto; + margin: 0; + } +} +@media (min-width: 768px) and (max-width: 980px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, .row:after { + display: table; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + margin-left: 20px; + } + .span1 { + width: 42px; + } + .span2 { + width: 104px; + } + .span3 { + width: 166px; + } + .span4 { + width: 228px; + } + .span5 { + width: 290px; + } + .span6 { + width: 352px; + } + .span7 { + width: 414px; + } + .span8 { + width: 476px; + } + .span9 { + width: 538px; + } + .span10 { + width: 600px; + } + .span11 { + width: 662px; + } + .span12, .container { + width: 724px; + } + .offset1 { + margin-left: 82px; + } + .offset2 { + margin-left: 144px; + } + .offset3 { + margin-left: 206px; + } + .offset4 { + margin-left: 268px; + } + .offset5 { + margin-left: 330px; + } + .offset6 { + margin-left: 392px; + } + .offset7 { + margin-left: 454px; + } + .offset8 { + margin-left: 516px; + } + .offset9 { + margin-left: 578px; + } + .offset10 { + margin-left: 640px; + } + .offset11 { + margin-left: 702px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid > [class*="span"] { + float: left; + margin-left: 2.762430939%; + } + .row-fluid > [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span1 { + width: 5.801104972%; + } + .row-fluid .span2 { + width: 14.364640883%; + } + .row-fluid .span3 { + width: 22.928176794%; + } + .row-fluid .span4 { + width: 31.491712705%; + } + .row-fluid .span5 { + width: 40.055248616%; + } + .row-fluid .span6 { + width: 48.618784527%; + } + .row-fluid .span7 { + width: 57.182320438000005%; + } + .row-fluid .span8 { + width: 65.74585634900001%; + } + .row-fluid .span9 { + width: 74.30939226%; + } + .row-fluid .span10 { + width: 82.87292817100001%; + } + .row-fluid .span11 { + width: 91.436464082%; + } + .row-fluid .span12 { + width: 99.999999993%; + } + input.span1, textarea.span1, .uneditable-input.span1 { + width: 32px; + } + input.span2, textarea.span2, .uneditable-input.span2 { + width: 94px; + } + input.span3, textarea.span3, .uneditable-input.span3 { + width: 156px; + } + input.span4, textarea.span4, .uneditable-input.span4 { + width: 218px; + } + input.span5, textarea.span5, .uneditable-input.span5 { + width: 280px; + } + input.span6, textarea.span6, .uneditable-input.span6 { + width: 342px; + } + input.span7, textarea.span7, .uneditable-input.span7 { + width: 404px; + } + input.span8, textarea.span8, .uneditable-input.span8 { + width: 466px; + } + input.span9, textarea.span9, .uneditable-input.span9 { + width: 528px; + } + input.span10, textarea.span10, .uneditable-input.span10 { + width: 590px; + } + input.span11, textarea.span11, .uneditable-input.span11 { + width: 652px; + } + input.span12, textarea.span12, .uneditable-input.span12 { + width: 714px; + } +} +@media (max-width: 980px) { + body { + padding-top: 0; + } + .navbar-fixed-top { + position: static; + margin-bottom: 18px; + } + .navbar-fixed-top .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-left: 10px; + padding-right: 10px; + margin: 0 0 0 -5px; + } + .navbar .nav-collapse { + clear: left; + } + .navbar .nav { + float: none; + margin: 0 0 9px; + } + .navbar .nav > li { + float: none; + } + .navbar .nav > li > a { + margin-bottom: 2px; + } + .navbar .nav > .divider-vertical { + display: none; + } + .navbar .nav > li > a, .navbar .dropdown-menu a { + padding: 6px 15px; + font-weight: bold; + color: #999999; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .navbar .dropdown-menu li + li a { + margin-bottom: 2px; + } + .navbar .nav > li > a:hover, .navbar .dropdown-menu a:hover { + background-color: #222222; + } + .navbar .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: block; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .navbar .dropdown-menu:before, .navbar .dropdown-menu:after { + display: none; + } + .navbar .dropdown-menu .divider { + display: none; + } + .navbar-form, .navbar-search { + float: none; + padding: 9px 15px; + margin: 9px 0; + border-top: 1px solid #222222; + border-bottom: 1px solid #222222; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar .nav.pull-right { + float: none; + margin-left: 0; + } + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } + .btn-navbar { + display: block; + } + .nav-collapse { + overflow: hidden; + height: 0; + } +} +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + } +} +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, .row:after { + display: table; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + margin-left: 30px; + } + .span1 { + width: 70px; + } + .span2 { + width: 170px; + } + .span3 { + width: 270px; + } + .span4 { + width: 370px; + } + .span5 { + width: 470px; + } + .span6 { + width: 570px; + } + .span7 { + width: 670px; + } + .span8 { + width: 770px; + } + .span9 { + width: 870px; + } + .span10 { + width: 970px; + } + .span11 { + width: 1070px; + } + .span12, .container { + width: 1170px; + } + .offset1 { + margin-left: 130px; + } + .offset2 { + margin-left: 230px; + } + .offset3 { + margin-left: 330px; + } + .offset4 { + margin-left: 430px; + } + .offset5 { + margin-left: 530px; + } + .offset6 { + margin-left: 630px; + } + .offset7 { + margin-left: 730px; + } + .offset8 { + margin-left: 830px; + } + .offset9 { + margin-left: 930px; + } + .offset10 { + margin-left: 1030px; + } + .offset11 { + margin-left: 1130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid > [class*="span"] { + float: left; + margin-left: 2.564102564%; + } + .row-fluid > [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span1 { + width: 5.982905983%; + } + .row-fluid .span2 { + width: 14.529914530000001%; + } + .row-fluid .span3 { + width: 23.076923077%; + } + .row-fluid .span4 { + width: 31.623931624%; + } + .row-fluid .span5 { + width: 40.170940171000005%; + } + .row-fluid .span6 { + width: 48.717948718%; + } + .row-fluid .span7 { + width: 57.264957265%; + } + .row-fluid .span8 { + width: 65.81196581200001%; + } + .row-fluid .span9 { + width: 74.358974359%; + } + .row-fluid .span10 { + width: 82.905982906%; + } + .row-fluid .span11 { + width: 91.45299145300001%; + } + .row-fluid .span12 { + width: 100%; + } + input.span1, textarea.span1, .uneditable-input.span1 { + width: 60px; + } + input.span2, textarea.span2, .uneditable-input.span2 { + width: 160px; + } + input.span3, textarea.span3, .uneditable-input.span3 { + width: 260px; + } + input.span4, textarea.span4, .uneditable-input.span4 { + width: 360px; + } + input.span5, textarea.span5, .uneditable-input.span5 { + width: 460px; + } + input.span6, textarea.span6, .uneditable-input.span6 { + width: 560px; + } + input.span7, textarea.span7, .uneditable-input.span7 { + width: 660px; + } + input.span8, textarea.span8, .uneditable-input.span8 { + width: 760px; + } + input.span9, textarea.span9, .uneditable-input.span9 { + width: 860px; + } + input.span10, textarea.span10, .uneditable-input.span10 { + width: 960px; + } + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1060px; + } + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1160px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } +} diff --git a/docs/css/bootstrap-responsive.min.css b/docs/css/bootstrap-responsive.min.css new file mode 100644 index 0000000..bc3f2ab --- /dev/null +++ b/docs/css/bootstrap-responsive.min.css @@ -0,0 +1,3 @@ + +.hidden{display:none;visibility:hidden;} +@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:768px){.container{width:auto;padding:0 20px;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;}}@media (min-width:768px) and (max-width:980px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .span1{width:42px;} .span2{width:104px;} .span3{width:166px;} .span4{width:228px;} .span5{width:290px;} .span6{width:352px;} .span7{width:414px;} .span8{width:476px;} .span9{width:538px;} .span10{width:600px;} .span11{width:662px;} .span12,.container{width:724px;} .offset1{margin-left:82px;} .offset2{margin-left:144px;} .offset3{margin-left:206px;} .offset4{margin-left:268px;} .offset5{margin-left:330px;} .offset6{margin-left:392px;} .offset7{margin-left:454px;} .offset8{margin-left:516px;} .offset9{margin-left:578px;} .offset10{margin-left:640px;} .offset11{margin-left:702px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.801104972%;} .row-fluid .span2{width:14.364640883%;} .row-fluid .span3{width:22.928176794%;} .row-fluid .span4{width:31.491712705%;} .row-fluid .span5{width:40.055248616%;} .row-fluid .span6{width:48.618784527%;} .row-fluid .span7{width:57.182320438000005%;} .row-fluid .span8{width:65.74585634900001%;} .row-fluid .span9{width:74.30939226%;} .row-fluid .span10{width:82.87292817100001%;} .row-fluid .span11{width:91.436464082%;} .row-fluid .span12{width:99.999999993%;} input.span1,textarea.span1,.uneditable-input.span1{width:32px;} input.span2,textarea.span2,.uneditable-input.span2{width:94px;} input.span3,textarea.span3,.uneditable-input.span3{width:156px;} input.span4,textarea.span4,.uneditable-input.span4{width:218px;} input.span5,textarea.span5,.uneditable-input.span5{width:280px;} input.span6,textarea.span6,.uneditable-input.span6{width:342px;} input.span7,textarea.span7,.uneditable-input.span7{width:404px;} input.span8,textarea.span8,.uneditable-input.span8{width:466px;} input.span9,textarea.span9,.uneditable-input.span9{width:528px;} input.span10,textarea.span10,.uneditable-input.span10{width:590px;} input.span11,textarea.span11,.uneditable-input.span11{width:652px;} input.span12,textarea.span12,.uneditable-input.span12{width:714px;}}@media (max-width:980px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .span1{width:70px;} .span2{width:170px;} .span3{width:270px;} .span4{width:370px;} .span5{width:470px;} .span6{width:570px;} .span7{width:670px;} .span8{width:770px;} .span9{width:870px;} .span10{width:970px;} .span11{width:1070px;} .span12,.container{width:1170px;} .offset1{margin-left:130px;} .offset2{margin-left:230px;} .offset3{margin-left:330px;} .offset4{margin-left:430px;} .offset5{margin-left:530px;} .offset6{margin-left:630px;} .offset7{margin-left:730px;} .offset8{margin-left:830px;} .offset9{margin-left:930px;} .offset10{margin-left:1030px;} .offset11{margin-left:1130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.982905983%;} .row-fluid .span2{width:14.529914530000001%;} .row-fluid .span3{width:23.076923077%;} .row-fluid .span4{width:31.623931624%;} .row-fluid .span5{width:40.170940171000005%;} .row-fluid .span6{width:48.717948718%;} .row-fluid .span7{width:57.264957265%;} .row-fluid .span8{width:65.81196581200001%;} .row-fluid .span9{width:74.358974359%;} .row-fluid .span10{width:82.905982906%;} .row-fluid .span11{width:91.45299145300001%;} .row-fluid .span12{width:100%;} input.span1,textarea.span1,.uneditable-input.span1{width:60px;} input.span2,textarea.span2,.uneditable-input.span2{width:160px;} input.span3,textarea.span3,.uneditable-input.span3{width:260px;} input.span4,textarea.span4,.uneditable-input.span4{width:360px;} input.span5,textarea.span5,.uneditable-input.span5{width:460px;} input.span6,textarea.span6,.uneditable-input.span6{width:560px;} input.span7,textarea.span7,.uneditable-input.span7{width:660px;} input.span8,textarea.span8,.uneditable-input.span8{width:760px;} input.span9,textarea.span9,.uneditable-input.span9{width:860px;} input.span10,textarea.span10,.uneditable-input.span10{width:960px;} input.span11,textarea.span11,.uneditable-input.span11{width:1060px;} input.span12,textarea.span12,.uneditable-input.span12{width:1160px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}} diff --git a/docs/css/bootstrap.css b/docs/css/bootstrap.css new file mode 100644 index 0000000..a90e319 --- /dev/null +++ b/docs/css/bootstrap.css @@ -0,0 +1,3365 @@ +/*! + * Bootstrap v2.0.0 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, a:active { + outline: 0; +} +sub, sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + max-width: 100%; + height: auto; + border: 0; + -ms-interpolation-mode: bicubic; +} +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} +button, input { + *overflow: visible; + line-height: normal; +} +button::-moz-focus-inner, input::-moz-focus-inner { + padding: 0; + border: 0; +} +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover { + color: #005580; + text-decoration: underline; +} +.row { + margin-left: -20px; + *zoom: 1; +} +.row:before, .row:after { + display: table; + content: ""; +} +.row:after { + clear: both; +} +[class*="span"] { + float: left; + margin-left: 20px; +} +.span1 { + width: 60px; +} +.span2 { + width: 140px; +} +.span3 { + width: 220px; +} +.span4 { + width: 300px; +} +.span5 { + width: 380px; +} +.span6 { + width: 460px; +} +.span7 { + width: 540px; +} +.span8 { + width: 620px; +} +.span9 { + width: 700px; +} +.span10 { + width: 780px; +} +.span11 { + width: 860px; +} +.span12, .container { + width: 940px; +} +.offset1 { + margin-left: 100px; +} +.offset2 { + margin-left: 180px; +} +.offset3 { + margin-left: 260px; +} +.offset4 { + margin-left: 340px; +} +.offset5 { + margin-left: 420px; +} +.offset6 { + margin-left: 500px; +} +.offset7 { + margin-left: 580px; +} +.offset8 { + margin-left: 660px; +} +.offset9 { + margin-left: 740px; +} +.offset10 { + margin-left: 820px; +} +.offset11 { + margin-left: 900px; +} +.row-fluid { + width: 100%; + *zoom: 1; +} +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; +} +.row-fluid:after { + clear: both; +} +.row-fluid > [class*="span"] { + float: left; + margin-left: 2.127659574%; +} +.row-fluid > [class*="span"]:first-child { + margin-left: 0; +} +.row-fluid .span1 { + width: 6.382978723%; +} +.row-fluid .span2 { + width: 14.89361702%; +} +.row-fluid .span3 { + width: 23.404255317%; +} +.row-fluid .span4 { + width: 31.914893614%; +} +.row-fluid .span5 { + width: 40.425531911%; +} +.row-fluid .span6 { + width: 48.93617020799999%; +} +.row-fluid .span7 { + width: 57.446808505%; +} +.row-fluid .span8 { + width: 65.95744680199999%; +} +.row-fluid .span9 { + width: 74.468085099%; +} +.row-fluid .span10 { + width: 82.97872339599999%; +} +.row-fluid .span11 { + width: 91.489361693%; +} +.row-fluid .span12 { + width: 99.99999998999999%; +} +.container { + width: 940px; + margin-left: auto; + margin-right: auto; + *zoom: 1; +} +.container:before, .container:after { + display: table; + content: ""; +} +.container:after { + clear: both; +} +.container-fluid { + padding-left: 20px; + padding-right: 20px; + *zoom: 1; +} +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; +} +.container-fluid:after { + clear: both; +} +p { + margin: 0 0 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; +} +p small { + font-size: 11px; + color: #999999; +} +.lead { + margin-bottom: 18px; + font-size: 20px; + font-weight: 200; + line-height: 27px; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-weight: bold; + color: #333333; + text-rendering: optimizelegibility; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} +h1 { + font-size: 30px; + line-height: 36px; +} +h1 small { + font-size: 18px; +} +h2 { + font-size: 24px; + line-height: 36px; +} +h2 small { + font-size: 18px; +} +h3 { + line-height: 27px; + font-size: 18px; +} +h3 small { + font-size: 14px; +} +h4, h5, h6 { + line-height: 18px; +} +h4 { + font-size: 14px; +} +h4 small { + font-size: 12px; +} +h5 { + font-size: 12px; +} +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} +.page-header h1 { + line-height: 1; +} +ul, ol { + padding: 0; + margin: 0 0 9px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +ul { + list-style: disc; +} +ol { + list-style: decimal; +} +li { + line-height: 18px; +} +ul.unstyled { + margin-left: 0; + list-style: none; +} +dl { + margin-bottom: 18px; +} +dt, dd { + line-height: 18px; +} +dt { + font-weight: bold; +} +dd { + margin-left: 9px; +} +hr { + margin: 18px 0; + border: 0; + border-top: 1px solid #e5e5e5; + border-bottom: 1px solid #ffffff; +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +.muted { + color: #999999; +} +abbr { + font-size: 90%; + text-transform: uppercase; + border-bottom: 1px dotted #ddd; + cursor: help; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #eeeeee; +} +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 22.5px; +} +blockquote small { + display: block; + line-height: 18px; + color: #999999; +} +blockquote small:before { + content: '\2014 \00A0'; +} +blockquote.pull-right { + float: right; + padding-left: 0; + padding-right: 15px; + border-left: 0; + border-right: 5px solid #eeeeee; +} +blockquote.pull-right p, blockquote.pull-right small { + text-align: right; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +address { + display: block; + margin-bottom: 18px; + line-height: 18px; + font-style: normal; +} +small { + font-size: 100%; +} +cite { + font-style: normal; +} +code, pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +code { + padding: 3px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + font-size: 12px; + line-height: 18px; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + white-space: pre; + white-space: pre-wrap; + word-break: break-all; +} +pre.prettyprint { + margin-bottom: 18px; +} +pre code { + padding: 0; + background-color: transparent; +} +form { + margin: 0 0 18px; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 27px; + font-size: 19.5px; + line-height: 36px; + color: #333333; + border: 0; + border-bottom: 1px solid #eee; +} +label, +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 18px; +} +label { + display: block; + margin-bottom: 5px; + color: #333333; +} +input, +textarea, +select, +.uneditable-input { + display: inline-block; + width: 210px; + height: 18px; + padding: 4px; + margin-bottom: 9px; + font-size: 13px; + line-height: 18px; + color: #555555; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.uneditable-textarea { + width: auto; + height: auto; +} +label input, label textarea, label select { + display: block; +} +input[type="image"], input[type="checkbox"], input[type="radio"] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + /* IE7 */ + + line-height: normal; + border: 0; + cursor: pointer; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +input[type="file"] { + padding: initial; + line-height: initial; + border: initial; + background-color: #ffffff; + background-color: initial; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +input[type="button"], input[type="reset"], input[type="submit"] { + width: auto; + height: auto; +} +select, input[type="file"] { + height: 28px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 28px; +} +select { + width: 220px; + background-color: #ffffff; +} +select[multiple], select[size] { + height: auto; +} +input[type="image"] { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +textarea { + height: auto; +} +input[type="hidden"] { + display: none; +} +.radio, .checkbox { + padding-left: 18px; +} +.radio input[type="radio"], .checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} +.controls > .radio:first-child, .controls > .checkbox:first-child { + padding-top: 5px; +} +.radio.inline, .checkbox.inline { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; +} +.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { + margin-left: 10px; +} +.controls > .radio.inline:first-child, .controls > .checkbox.inline:first-child { + padding-top: 0; +} +input, textarea { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} +input:focus, textarea:focus { + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + outline: 0; + outline: thin dotted \9; + /* IE6-8 */ + +} +input[type="file"]:focus, input[type="checkbox"]:focus, select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.input-mini { + width: 60px; +} +.input-small { + width: 90px; +} +.input-medium { + width: 150px; +} +.input-large { + width: 210px; +} +.input-xlarge { + width: 270px; +} +.input-xxlarge { + width: 530px; +} +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input { + float: none; + margin-left: 0; +} +input.span1, textarea.span1, .uneditable-input.span1 { + width: 50px; +} +input.span2, textarea.span2, .uneditable-input.span2 { + width: 130px; +} +input.span3, textarea.span3, .uneditable-input.span3 { + width: 210px; +} +input.span4, textarea.span4, .uneditable-input.span4 { + width: 290px; +} +input.span5, textarea.span5, .uneditable-input.span5 { + width: 370px; +} +input.span6, textarea.span6, .uneditable-input.span6 { + width: 450px; +} +input.span7, textarea.span7, .uneditable-input.span7 { + width: 530px; +} +input.span8, textarea.span8, .uneditable-input.span8 { + width: 610px; +} +input.span9, textarea.span9, .uneditable-input.span9 { + width: 690px; +} +input.span10, textarea.span10, .uneditable-input.span10 { + width: 770px; +} +input.span11, textarea.span11, .uneditable-input.span11 { + width: 850px; +} +input.span12, textarea.span12, .uneditable-input.span12 { + width: 930px; +} +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + background-color: #f5f5f5; + border-color: #ddd; + cursor: not-allowed; +} +.control-group.warning > label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; + border-color: #c09853; +} +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: 0 0 6px #dbc59e; + -moz-box-shadow: 0 0 6px #dbc59e; + box-shadow: 0 0 6px #dbc59e; +} +.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} +.control-group.error > label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} +.control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; + border-color: #b94a48; +} +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: 0 0 6px #d59392; + -moz-box-shadow: 0 0 6px #d59392; + box-shadow: 0 0 6px #d59392; +} +.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} +.control-group.success > label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} +.control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; + border-color: #468847; +} +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: 0 0 6px #7aba7b; + -moz-box-shadow: 0 0 6px #7aba7b; + box-shadow: 0 0 6px #7aba7b; +} +.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} +input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} +input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} +.form-actions { + padding: 17px 20px 18px; + margin-top: 18px; + margin-bottom: 18px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; +} +.uneditable-input { + display: block; + background-color: #ffffff; + border-color: #eee; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} +:-moz-placeholder { + color: #999999; +} +::-webkit-input-placeholder { + color: #999999; +} +.help-block { + margin-top: 5px; + margin-bottom: 0; + color: #999999; +} +.help-inline { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-bottom: 9px; + vertical-align: middle; + padding-left: 5px; +} +.input-prepend, .input-append { + margin-bottom: 5px; + *zoom: 1; +} +.input-prepend:before, +.input-append:before, +.input-prepend:after, +.input-append:after { + display: table; + content: ""; +} +.input-prepend:after, .input-append:after { + clear: both; +} +.input-prepend input, +.input-append input, +.input-prepend .uneditable-input, +.input-append .uneditable-input { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-prepend input:focus, +.input-append input:focus, +.input-prepend .uneditable-input:focus, +.input-append .uneditable-input:focus { + position: relative; + z-index: 2; +} +.input-prepend .uneditable-input, .input-append .uneditable-input { + border-left-color: #ccc; +} +.input-prepend .add-on, .input-append .add-on { + float: left; + display: block; + width: auto; + min-width: 16px; + height: 18px; + margin-right: -1px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + color: #999999; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #f5f5f5; + border: 1px solid #ccc; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-prepend .active, .input-append .active { + background-color: #a9dba9; + border-color: #46a546; +} +.input-prepend .add-on { + *margin-top: 1px; + /* IE6-7 */ + +} +.input-append input, .input-append .uneditable-input { + float: left; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-append .uneditable-input { + border-right-color: #ccc; +} +.input-append .add-on { + margin-right: 0; + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-append input:first-child { + *margin-left: -160px; +} +.input-append input:first-child + .add-on { + *margin-left: -21px; +} +.search-query { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 14px; +} +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input { + display: inline-block; + margin-bottom: 0; +} +.form-search label, +.form-inline label, +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + display: inline-block; +} +.form-search .input-append .add-on, +.form-inline .input-prepend .add-on, +.form-search .input-append .add-on, +.form-inline .input-prepend .add-on { + vertical-align: middle; +} +.control-group { + margin-bottom: 9px; +} +.form-horizontal legend + .control-group { + margin-top: 18px; + -webkit-margin-top-collapse: separate; +} +.form-horizontal .control-group { + margin-bottom: 18px; + *zoom: 1; +} +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; +} +.form-horizontal .control-group:after { + clear: both; +} +.form-horizontal .control-group > label { + float: left; + width: 140px; + padding-top: 5px; + text-align: right; +} +.form-horizontal .controls { + margin-left: 160px; +} +.form-horizontal .form-actions { + padding-left: 160px; +} +table { + max-width: 100%; + border-collapse: collapse; + border-spacing: 0; +} +.table { + width: 100%; + margin-bottom: 18px; +} +.table th, .table td { + padding: 8px; + line-height: 18px; + text-align: left; + border-top: 1px solid #ddd; +} +.table th { + font-weight: bold; + vertical-align: bottom; +} +.table td { + vertical-align: top; +} +.table thead:first-child tr th, .table thead:first-child tr td { + border-top: 0; +} +.table tbody + tbody { + border-top: 2px solid #ddd; +} +.table-condensed th, .table-condensed td { + padding: 4px 5px; +} +.table-bordered { + border: 1px solid #ddd; + border-collapse: separate; + *border-collapse: collapsed; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.table-bordered th + th, +.table-bordered td + td, +.table-bordered th + td, +.table-bordered td + th { + border-left: 1px solid #ddd; +} +.table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} +.table-bordered thead:first-child tr:first-child th:first-child, .table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-radius: 4px 0 0 0; + -moz-border-radius: 4px 0 0 0; + border-radius: 4px 0 0 0; +} +.table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-radius: 0 4px 0 0; + -moz-border-radius: 0 4px 0 0; + border-radius: 0 4px 0 0; +} +.table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; +} +.table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-radius: 0 0 4px 0; + -moz-border-radius: 0 0 4px 0; + border-radius: 0 0 4px 0; +} +.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} +table .span1 { + float: none; + width: 44px; + margin-left: 0; +} +table .span2 { + float: none; + width: 124px; + margin-left: 0; +} +table .span3 { + float: none; + width: 204px; + margin-left: 0; +} +table .span4 { + float: none; + width: 284px; + margin-left: 0; +} +table .span5 { + float: none; + width: 364px; + margin-left: 0; +} +table .span6 { + float: none; + width: 444px; + margin-left: 0; +} +table .span7 { + float: none; + width: 524px; + margin-left: 0; +} +table .span8 { + float: none; + width: 604px; + margin-left: 0; +} +table .span9 { + float: none; + width: 684px; + margin-left: 0; +} +table .span10 { + float: none; + width: 764px; + margin-left: 0; +} +table .span11 { + float: none; + width: 844px; + margin-left: 0; +} +table .span12 { + float: none; + width: 924px; + margin-left: 0; +} +[class^="icon-"] { + display: inline-block; + width: 14px; + height: 14px; + vertical-align: text-top; + background-image: url(../img/glyphicons-halflings.png); + background-position: 14px 14px; + background-repeat: no-repeat; + *margin-right: .3em; +} +[class^="icon-"]:last-child { + *margin-left: 0; +} +.icon-white { + background-image: url(../img/glyphicons-halflings-white.png); +} +.icon-glass { + background-position: 0 0; +} +.icon-music { + background-position: -24px 0; +} +.icon-search { + background-position: -48px 0; +} +.icon-envelope { + background-position: -72px 0; +} +.icon-heart { + background-position: -96px 0; +} +.icon-star { + background-position: -120px 0; +} +.icon-star-empty { + background-position: -144px 0; +} +.icon-user { + background-position: -168px 0; +} +.icon-film { + background-position: -192px 0; +} +.icon-th-large { + background-position: -216px 0; +} +.icon-th { + background-position: -240px 0; +} +.icon-th-list { + background-position: -264px 0; +} +.icon-ok { + background-position: -288px 0; +} +.icon-remove { + background-position: -312px 0; +} +.icon-zoom-in { + background-position: -336px 0; +} +.icon-zoom-out { + background-position: -360px 0; +} +.icon-off { + background-position: -384px 0; +} +.icon-signal { + background-position: -408px 0; +} +.icon-cog { + background-position: -432px 0; +} +.icon-trash { + background-position: -456px 0; +} +.icon-home { + background-position: 0 -24px; +} +.icon-file { + background-position: -24px -24px; +} +.icon-time { + background-position: -48px -24px; +} +.icon-road { + background-position: -72px -24px; +} +.icon-download-alt { + background-position: -96px -24px; +} +.icon-download { + background-position: -120px -24px; +} +.icon-upload { + background-position: -144px -24px; +} +.icon-inbox { + background-position: -168px -24px; +} +.icon-play-circle { + background-position: -192px -24px; +} +.icon-repeat { + background-position: -216px -24px; +} +.icon-refresh { + background-position: -240px -24px; +} +.icon-list-alt { + background-position: -264px -24px; +} +.icon-lock { + background-position: -287px -24px; +} +.icon-flag { + background-position: -312px -24px; +} +.icon-headphones { + background-position: -336px -24px; +} +.icon-volume-off { + background-position: -360px -24px; +} +.icon-volume-down { + background-position: -384px -24px; +} +.icon-volume-up { + background-position: -408px -24px; +} +.icon-qrcode { + background-position: -432px -24px; +} +.icon-barcode { + background-position: -456px -24px; +} +.icon-tag { + background-position: 0 -48px; +} +.icon-tags { + background-position: -25px -48px; +} +.icon-book { + background-position: -48px -48px; +} +.icon-bookmark { + background-position: -72px -48px; +} +.icon-print { + background-position: -96px -48px; +} +.icon-camera { + background-position: -120px -48px; +} +.icon-font { + background-position: -144px -48px; +} +.icon-bold { + background-position: -167px -48px; +} +.icon-italic { + background-position: -192px -48px; +} +.icon-text-height { + background-position: -216px -48px; +} +.icon-text-width { + background-position: -240px -48px; +} +.icon-align-left { + background-position: -264px -48px; +} +.icon-align-center { + background-position: -288px -48px; +} +.icon-align-right { + background-position: -312px -48px; +} +.icon-align-justify { + background-position: -336px -48px; +} +.icon-list { + background-position: -360px -48px; +} +.icon-indent-left { + background-position: -384px -48px; +} +.icon-indent-right { + background-position: -408px -48px; +} +.icon-facetime-video { + background-position: -432px -48px; +} +.icon-picture { + background-position: -456px -48px; +} +.icon-pencil { + background-position: 0 -72px; +} +.icon-map-marker { + background-position: -24px -72px; +} +.icon-adjust { + background-position: -48px -72px; +} +.icon-tint { + background-position: -72px -72px; +} +.icon-edit { + background-position: -96px -72px; +} +.icon-share { + background-position: -120px -72px; +} +.icon-check { + background-position: -144px -72px; +} +.icon-move { + background-position: -168px -72px; +} +.icon-step-backward { + background-position: -192px -72px; +} +.icon-fast-backward { + background-position: -216px -72px; +} +.icon-backward { + background-position: -240px -72px; +} +.icon-play { + background-position: -264px -72px; +} +.icon-pause { + background-position: -288px -72px; +} +.icon-stop { + background-position: -312px -72px; +} +.icon-forward { + background-position: -336px -72px; +} +.icon-fast-forward { + background-position: -360px -72px; +} +.icon-step-forward { + background-position: -384px -72px; +} +.icon-eject { + background-position: -408px -72px; +} +.icon-chevron-left { + background-position: -432px -72px; +} +.icon-chevron-right { + background-position: -456px -72px; +} +.icon-plus-sign { + background-position: 0 -96px; +} +.icon-minus-sign { + background-position: -24px -96px; +} +.icon-remove-sign { + background-position: -48px -96px; +} +.icon-ok-sign { + background-position: -72px -96px; +} +.icon-question-sign { + background-position: -96px -96px; +} +.icon-info-sign { + background-position: -120px -96px; +} +.icon-screenshot { + background-position: -144px -96px; +} +.icon-remove-circle { + background-position: -168px -96px; +} +.icon-ok-circle { + background-position: -192px -96px; +} +.icon-ban-circle { + background-position: -216px -96px; +} +.icon-arrow-left { + background-position: -240px -96px; +} +.icon-arrow-right { + background-position: -264px -96px; +} +.icon-arrow-up { + background-position: -289px -96px; +} +.icon-arrow-down { + background-position: -312px -96px; +} +.icon-share-alt { + background-position: -336px -96px; +} +.icon-resize-full { + background-position: -360px -96px; +} +.icon-resize-small { + background-position: -384px -96px; +} +.icon-plus { + background-position: -408px -96px; +} +.icon-minus { + background-position: -433px -96px; +} +.icon-asterisk { + background-position: -456px -96px; +} +.icon-exclamation-sign { + background-position: 0 -120px; +} +.icon-gift { + background-position: -24px -120px; +} +.icon-leaf { + background-position: -48px -120px; +} +.icon-fire { + background-position: -72px -120px; +} +.icon-eye-open { + background-position: -96px -120px; +} +.icon-eye-close { + background-position: -120px -120px; +} +.icon-warning-sign { + background-position: -144px -120px; +} +.icon-plane { + background-position: -168px -120px; +} +.icon-calendar { + background-position: -192px -120px; +} +.icon-random { + background-position: -216px -120px; +} +.icon-comment { + background-position: -240px -120px; +} +.icon-magnet { + background-position: -264px -120px; +} +.icon-chevron-up { + background-position: -288px -120px; +} +.icon-chevron-down { + background-position: -313px -119px; +} +.icon-retweet { + background-position: -336px -120px; +} +.icon-shopping-cart { + background-position: -360px -120px; +} +.icon-folder-close { + background-position: -384px -120px; +} +.icon-folder-open { + background-position: -408px -120px; +} +.icon-resize-vertical { + background-position: -432px -119px; +} +.icon-resize-horizontal { + background-position: -456px -118px; +} +.dropdown { + position: relative; +} +.dropdown-toggle { + *margin-bottom: -3px; +} +.dropdown-toggle:active, .open .dropdown-toggle { + outline: 0; +} +.caret { + display: inline-block; + width: 0; + height: 0; + text-indent: -99999px; + *text-indent: 0; + vertical-align: top; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #000000; + opacity: 0.3; + filter: alpha(opacity=30); + content: "\2193"; +} +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} +.dropdown:hover .caret, .open.dropdown .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + float: left; + display: none; + min-width: 160px; + max-width: 220px; + _width: 160px; + padding: 4px 0; + margin: 0; + list-style: none; + background-color: #ffffff; + border-color: #ccc; + border-color: rgba(0, 0, 0, 0.2); + border-style: solid; + border-width: 1px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + *border-right-width: 2px; + *border-bottom-width: 2px; +} +.dropdown-menu.bottom-up { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +.dropdown-menu .divider { + height: 1px; + margin: 5px 1px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; + *width: 100%; + *margin: -5px 0 5px; +} +.dropdown-menu a { + display: block; + padding: 3px 15px; + clear: both; + font-weight: normal; + line-height: 18px; + color: #555555; + white-space: nowrap; +} +.dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; +} +.dropdown.open { + *z-index: 1000; +} +.dropdown.open .dropdown-toggle { + color: #ffffff; + background: #ccc; + background: rgba(0, 0, 0, 0.3); +} +.dropdown.open .dropdown-menu { + display: block; +} +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.fade { + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -ms-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + opacity: 0; +} +.fade.in { + opacity: 1; +} +.collapse { + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -ms-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; + position: relative; + overflow: hidden; + height: 0; +} +.collapse.in { + height: auto; +} +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover { + color: #000000; + text-decoration: none; + opacity: 0.4; + filter: alpha(opacity=40); + cursor: pointer; +} +.btn { + display: inline-block; + padding: 4px 10px 4px; + font-size: 13px; + line-height: 18px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #fafafa; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + cursor: pointer; + *margin-left: .3em; +} +.btn:first-child { + *margin-left: 0; +} +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -ms-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} +.btn:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn.active, .btn:active { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + color: rgba(0, 0, 0, 0.5); + outline: 0; +} +.btn.disabled, .btn[disabled] { + cursor: default; + background-image: none; + background-color: #e6e6e6; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-large { + padding: 9px 14px; + font-size: 15px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.btn-large .icon { + margin-top: 1px; +} +.btn-small { + padding: 5px 9px; + font-size: 11px; + line-height: 16px; +} +.btn-small .icon { + margin-top: -1px; +} +.btn-primary, +.btn-primary:hover, +.btn-warning, +.btn-warning:hover, +.btn-danger, +.btn-danger:hover, +.btn-success, +.btn-success:hover, +.btn-info, +.btn-info:hover { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + color: #ffffff; +} +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active { + color: rgba(255, 255, 255, 0.75); +} +.btn-primary { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + background-color: #0044cc; +} +.btn-primary:active, .btn-primary.active { + background-color: #003399 \9; +} +.btn-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + background-color: #f89406; +} +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} +.btn-danger { + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + background-color: #bd362f; +} +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} +.btn-success { + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -ms-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(top, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + background-color: #51a351; +} +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} +.btn-info { + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + background-color: #2f96b4; +} +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} +button.btn, input[type="submit"].btn { + *padding-top: 2px; + *padding-bottom: 2px; +} +button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} +button.btn.large, input[type="submit"].btn.large { + *padding-top: 7px; + *padding-bottom: 7px; +} +button.btn.small, input[type="submit"].btn.small { + *padding-top: 3px; + *padding-bottom: 3px; +} +.btn-group { + position: relative; + *zoom: 1; + *margin-left: .3em; +} +.btn-group:before, .btn-group:after { + display: table; + content: ""; +} +.btn-group:after { + clear: both; +} +.btn-group:first-child { + *margin-left: 0; +} +.btn-group + .btn-group { + margin-left: 5px; +} +.btn-toolbar { + margin-top: 9px; + margin-bottom: 9px; +} +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} +.btn-group .btn { + position: relative; + float: left; + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.btn-group .btn:last-child, .btn-group .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.btn-group .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} +.btn-group .btn:hover, +.btn-group .btn:focus, +.btn-group .btn:active, +.btn-group .btn.active { + z-index: 2; +} +.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group.open { + *z-index: 1000; +} +.btn-group.open .dropdown-menu { + display: block; + margin-top: 1px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.btn .caret { + margin-top: 7px; + margin-left: 0; +} +.btn:hover .caret, .open.btn-group .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.btn-primary .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret { + border-top-color: #ffffff; + opacity: 0.75; + filter: alpha(opacity=75); +} +.btn-small .caret { + margin-top: 4px; +} +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 18px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.alert, .alert-heading { + color: #c09853; +} +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 18px; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success, .alert-success .alert-heading { + color: #468847; +} +.alert-danger, .alert-error { + background-color: #f2dede; + border-color: #eed3d7; +} +.alert-danger, +.alert-error, +.alert-danger .alert-heading, +.alert-error .alert-heading { + color: #b94a48; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info, .alert-info .alert-heading { + color: #3a87ad; +} +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} +.alert-block > p, .alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} +.nav { + margin-left: 0; + margin-bottom: 18px; + list-style: none; +} +.nav > li > a { + display: block; +} +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} +.nav-list { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; +} +.nav-list > li > a, .nav-list .nav-header { + display: block; + padding: 3px 15px; + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.nav-list .nav-header { + font-size: 11px; + font-weight: bold; + line-height: 18px; + color: #999999; + text-transform: uppercase; +} +.nav-list > li + .nav-header { + margin-top: 9px; +} +.nav-list .active > a, .nav-list .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} +.nav-list [class^="icon-"] { + margin-right: 2px; +} +.nav-tabs, .nav-pills { + *zoom: 1; +} +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + content: ""; +} +.nav-tabs:after, .nav-pills:after { + clear: both; +} +.nav-tabs > li, .nav-pills > li { + float: left; +} +.nav-tabs > li > a, .nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + margin-bottom: -1px; +} +.nav-tabs > li > a { + padding-top: 9px; + padding-bottom: 9px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > .active > a, .nav-tabs > .active > a:hover { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.nav-pills .active > a, .nav-pills .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li > a { + margin-right: 0; +} +.nav-tabs.nav-stacked { + border-bottom: 0; +} +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} +.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu { + margin-top: 1px; + border-width: 1px; +} +.nav-pills .dropdown-menu { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret { + border-top-color: #0088cc; + margin-top: 6px; +} +.nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret { + border-top-color: #005580; +} +.nav-tabs .active .dropdown-toggle .caret, .nav-pills .active .dropdown-toggle .caret { + border-top-color: #333333; +} +.nav > .dropdown.active > a:hover { + color: #000000; + cursor: pointer; +} +.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} +.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret { + border-top-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} +.tabs-stacked .open > a:hover { + border-color: #999999; +} +.tabbable { + *zoom: 1; +} +.tabbable:before, .tabbable:after { + display: table; + content: ""; +} +.tabbable:after { + clear: both; +} +.tabs-below .nav-tabs, .tabs-right .nav-tabs, .tabs-left .nav-tabs { + border-bottom: 0; +} +.tab-content > .tab-pane, .pill-content > .pill-pane { + display: none; +} +.tab-content > .active, .pill-content > .active { + display: block; +} +.tabs-below .nav-tabs { + border-top: 1px solid #ddd; +} +.tabs-below .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} +.tabs-below .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.tabs-below .nav-tabs > li > a:hover { + border-bottom-color: transparent; + border-top-color: #ddd; +} +.tabs-below .nav-tabs .active > a, .tabs-below .nav-tabs .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} +.tabs-left .nav-tabs > li, .tabs-right .nav-tabs > li { + float: none; +} +.tabs-left .nav-tabs > li > a, .tabs-right .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} +.tabs-left .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} +.tabs-left .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.tabs-left .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +.tabs-left .nav-tabs .active > a, .tabs-left .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +.tabs-right .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} +.tabs-right .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.tabs-right .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} +.tabs-right .nav-tabs .active > a, .tabs-right .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} +.navbar { + overflow: visible; + margin-bottom: 18px; +} +.navbar-inner { + padding-left: 20px; + padding-right: 20px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} +.btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} +.btn-navbar:hover, +.btn-navbar:active, +.btn-navbar.active, +.btn-navbar.disabled, +.btn-navbar[disabled] { + background-color: #222222; +} +.btn-navbar:active, .btn-navbar.active { + background-color: #080808 \9; +} +.btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} +.nav-collapse.collapse { + height: auto; +} +.navbar .brand:hover { + text-decoration: none; +} +.navbar .brand { + float: left; + display: block; + padding: 8px 20px 12px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + line-height: 1; + color: #ffffff; +} +.navbar .navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #999999; +} +.navbar .navbar-text a:hover { + color: #ffffff; + background-color: transparent; +} +.navbar .btn, .navbar .btn-group { + margin-top: 5px; +} +.navbar .btn-group .btn { + margin-top: 0; +} +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; +} +.navbar-form:after { + clear: both; +} +.navbar-form input, .navbar-form select { + display: inline-block; + margin-top: 5px; + margin-bottom: 0; +} +.navbar-form .radio, .navbar-form .checkbox { + margin-top: 5px; +} +.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { + margin-top: 3px; +} +.navbar-search { + position: relative; + float: left; + margin-top: 6px; + margin-bottom: 0; +} +.navbar-search .search-query { + padding: 4px 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #ffffff; + color: rgba(255, 255, 255, 0.75); + background: #666; + background: rgba(255, 255, 255, 0.3); + border: 1px solid #111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} +.navbar-search .search-query :-moz-placeholder { + color: #eeeeee; +} +.navbar-search .search-query::-webkit-input-placeholder { + color: #eeeeee; +} +.navbar-search .search-query:hover { + color: #ffffff; + background-color: #999999; + background-color: rgba(255, 255, 255, 0.5); +} +.navbar-search .search-query:focus, .navbar-search .search-query.focused { + padding: 5px 10px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; +} +.navbar-fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} +.navbar-fixed-top .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; +} +.navbar .nav > li { + display: block; + float: left; +} +.navbar .nav > li > a { + float: none; + padding: 10px 10px 11px; + line-height: 19px; + color: #999999; + text-decoration: none; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar .nav > li > a:hover { + background-color: transparent; + color: #ffffff; + text-decoration: none; +} +.navbar .nav .active > a, .navbar .nav .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #222222; + background-color: rgba(0, 0, 0, 0.5); +} +.navbar .divider-vertical { + height: 40px; + width: 1px; + margin: 0 9px; + overflow: hidden; + background-color: #222222; + border-right: 1px solid #333333; +} +.navbar .nav.pull-right { + margin-left: 10px; + margin-right: 0; +} +.navbar .dropdown-menu { + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.navbar .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} +.navbar .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} +.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret { + border-top-color: #ffffff; +} +.navbar .nav .active .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle { + background-color: transparent; +} +.navbar .nav .active > .dropdown-toggle:hover { + color: #ffffff; +} +.navbar .nav.pull-right .dropdown-menu { + left: auto; + right: 0; +} +.navbar .nav.pull-right .dropdown-menu:before { + left: auto; + right: 12px; +} +.navbar .nav.pull-right .dropdown-menu:after { + left: auto; + right: 13px; +} +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + background-color: #fbfbfb; + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.breadcrumb li { + display: inline; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb .divider { + padding: 0 5px; + color: #999999; +} +.breadcrumb .active a { + color: #333333; +} +.pagination { + height: 36px; + margin: 18px 0; +} +.pagination ul { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +.pagination li { + display: inline; +} +.pagination a { + float: left; + padding: 0 14px; + line-height: 34px; + text-decoration: none; + border: 1px solid #ddd; + border-left-width: 0; +} +.pagination a:hover, .pagination .active a { + background-color: #f5f5f5; +} +.pagination .active a { + color: #999999; + cursor: default; +} +.pagination .disabled a, .pagination .disabled a:hover { + color: #999999; + background-color: transparent; + cursor: default; +} +.pagination li:first-child a { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.pagination li:last-child a { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.pagination-centered { + text-align: center; +} +.pagination-right { + text-align: right; +} +.pager { + margin-left: 0; + margin-bottom: 18px; + list-style: none; + text-align: center; + *zoom: 1; +} +.pager:before, .pager:after { + display: table; + content: ""; +} +.pager:after { + clear: both; +} +.pager li { + display: inline; +} +.pager a { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} +.pager .next a { + float: right; +} +.pager .previous a { + float: left; +} +.modal-open .dropdown-menu { + z-index: 2050; +} +.modal-open .dropdown.open { + *z-index: 2050; +} +.modal-open .popover { + z-index: 2060; +} +.modal-open .tooltip { + z-index: 2070; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop, .modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + max-height: 500px; + overflow: auto; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + /* IE6-7 */ + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -ms-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} +.modal.fade.in { + top: 50%; +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} +.modal-header .close { + margin-top: 2px; +} +.modal-body { + padding: 15px; +} +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn { + float: right; + margin-left: 5px; + margin-bottom: 0; +} +.tooltip { + position: absolute; + z-index: 1020; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.tooltip.top { + margin-top: -2px; +} +.tooltip.right { + margin-left: 2px; +} +.tooltip.bottom { + margin-top: 2px; +} +.tooltip.left { + margin-left: -2px; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + padding: 5px; +} +.popover.top { + margin-top: -5px; +} +.popover.right { + margin-left: 5px; +} +.popover.bottom { + margin-top: 5px; +} +.popover.left { + margin-left: -5px; +} +.popover.top .arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} +.popover.right .arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} +.popover.bottom .arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} +.popover.left .arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} +.popover .arrow { + position: absolute; + width: 0; + height: 0; +} +.popover-inner { + padding: 3px; + width: 280px; + overflow: hidden; + background: #000000; + background: rgba(0, 0, 0, 0.8); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +} +.popover-title { + padding: 9px 15px; + line-height: 1; + background-color: #f5f5f5; + border-bottom: 1px solid #eee; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; +} +.popover-content { + padding: 14px; + background-color: #ffffff; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.popover-content p, .popover-content ul, .popover-content ol { + margin-bottom: 0; +} +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; +} +.thumbnails:after { + clear: both; +} +.thumbnails > li { + float: left; + margin: 0 0 18px 20px; +} +.thumbnail { + display: block; + padding: 4px; + line-height: 1; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); +} +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; +} +.label { + padding: 1px 3px 2px; + font-size: 9.75px; + font-weight: bold; + color: #ffffff; + text-transform: uppercase; + background-color: #999999; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.label-important { + background-color: #b94a48; +} +.label-warning { + background-color: #f89406; +} +.label-success { + background-color: #468847; +} +.label-info { + background-color: #3a87ad; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.accordion { + margin-bottom: 18px; +} +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.accordion-heading { + border-bottom: 0; +} +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} +.carousel { + position: relative; + margin-bottom: 18px; + line-height: 1; +} +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} +.carousel .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -ms-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel .item > img { + display: block; + line-height: 1; +} +.carousel .active, .carousel .next, .carousel .prev { + display: block; +} +.carousel .active { + left: 0; +} +.carousel .next, .carousel .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel .next { + left: 100%; +} +.carousel .prev { + left: -100%; +} +.carousel .next.left, .carousel .prev.right { + left: 0; +} +.carousel .active.left { + left: -100%; +} +.carousel .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} +.carousel-control.right { + left: auto; + right: 15px; +} +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 10px 15px 5px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} +.carousel-caption h4, .carousel-caption p { + color: #ffffff; +} +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #f5f5f5; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; +} +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 27px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} diff --git a/docs/css/bootstrap.min.css b/docs/css/bootstrap.min.css new file mode 100644 index 0000000..b01f92e --- /dev/null +++ b/docs/css/bootstrap.min.css @@ -0,0 +1,610 @@ +article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} +audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} +audio:not([controls]){display:none;} +html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} +a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +a:hover,a:active{outline:0;} +sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} +sup{top:-0.5em;} +sub{bottom:-0.25em;} +img{max-width:100%;height:auto;border:0;-ms-interpolation-mode:bicubic;} +button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} +button,input{*overflow:visible;line-height:normal;} +button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} +button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} +input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} +input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} +textarea{overflow:auto;vertical-align:top;} +body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;} +a{color:#0088cc;text-decoration:none;} +a:hover{color:#005580;text-decoration:underline;} +.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} +.row:after{clear:both;} +[class*="span"]{float:left;margin-left:20px;} +.span1{width:60px;} +.span2{width:140px;} +.span3{width:220px;} +.span4{width:300px;} +.span5{width:380px;} +.span6{width:460px;} +.span7{width:540px;} +.span8{width:620px;} +.span9{width:700px;} +.span10{width:780px;} +.span11{width:860px;} +.span12,.container{width:940px;} +.offset1{margin-left:100px;} +.offset2{margin-left:180px;} +.offset3{margin-left:260px;} +.offset4{margin-left:340px;} +.offset5{margin-left:420px;} +.offset6{margin-left:500px;} +.offset7{margin-left:580px;} +.offset8{margin-left:660px;} +.offset9{margin-left:740px;} +.offset10{margin-left:820px;} +.offset11{margin-left:900px;} +.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} +.row-fluid:after{clear:both;} +.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;} +.row-fluid>[class*="span"]:first-child{margin-left:0;} +.row-fluid .span1{width:6.382978723%;} +.row-fluid .span2{width:14.89361702%;} +.row-fluid .span3{width:23.404255317%;} +.row-fluid .span4{width:31.914893614%;} +.row-fluid .span5{width:40.425531911%;} +.row-fluid .span6{width:48.93617020799999%;} +.row-fluid .span7{width:57.446808505%;} +.row-fluid .span8{width:65.95744680199999%;} +.row-fluid .span9{width:74.468085099%;} +.row-fluid .span10{width:82.97872339599999%;} +.row-fluid .span11{width:91.489361693%;} +.row-fluid .span12{width:99.99999998999999%;} +.container{width:940px;margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";} +.container:after{clear:both;} +.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";} +.container-fluid:after{clear:both;} +p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;} +.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;} +h1,h2,h3,h4,h5,h6{margin:0;font-weight:bold;color:#333333;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;} +h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;} +h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;} +h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;} +h4,h5,h6{line-height:18px;} +h4{font-size:14px;}h4 small{font-size:12px;} +h5{font-size:12px;} +h6{font-size:11px;color:#999999;text-transform:uppercase;} +.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;} +.page-header h1{line-height:1;} +ul,ol{padding:0;margin:0 0 9px 25px;} +ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} +ul{list-style:disc;} +ol{list-style:decimal;} +li{line-height:18px;} +ul.unstyled{margin-left:0;list-style:none;} +dl{margin-bottom:18px;} +dt,dd{line-height:18px;} +dt{font-weight:bold;} +dd{margin-left:9px;} +hr{margin:18px 0;border:0;border-top:1px solid #e5e5e5;border-bottom:1px solid #ffffff;} +strong{font-weight:bold;} +em{font-style:italic;} +.muted{color:#999999;} +abbr{font-size:90%;text-transform:uppercase;border-bottom:1px dotted #ddd;cursor:help;} +blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;} +blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} +blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} +q:before,q:after,blockquote:before,blockquote:after{content:"";} +address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;} +small{font-size:100%;} +cite{font-style:normal;} +code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +code{padding:3px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;} +pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;}pre.prettyprint{margin-bottom:18px;} +pre code{padding:0;background-color:transparent;} +form{margin:0 0 18px;} +fieldset{padding:0;margin:0;border:0;} +legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;} +label,input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;} +label{display:block;margin-bottom:5px;color:#333333;} +input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.uneditable-textarea{width:auto;height:auto;} +label input,label textarea,label select{display:block;} +input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:0;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +input[type="file"]{padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;} +select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;} +select{width:220px;background-color:#ffffff;} +select[multiple],select[size]{height:auto;} +input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +textarea{height:auto;} +input[type="hidden"]{display:none;} +.radio,.checkbox{padding-left:18px;} +.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;} +.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} +.radio.inline,.checkbox.inline{display:inline-block;margin-bottom:0;vertical-align:middle;} +.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} +.controls>.radio.inline:first-child,.controls>.checkbox.inline:first-child{padding-top:0;} +input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;} +input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;} +input[type="file"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.input-mini{width:60px;} +.input-small{width:90px;} +.input-medium{width:150px;} +.input-large{width:210px;} +.input-xlarge{width:270px;} +.input-xxlarge{width:530px;} +input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;} +input.span1,textarea.span1,.uneditable-input.span1{width:50px;} +input.span2,textarea.span2,.uneditable-input.span2{width:130px;} +input.span3,textarea.span3,.uneditable-input.span3{width:210px;} +input.span4,textarea.span4,.uneditable-input.span4{width:290px;} +input.span5,textarea.span5,.uneditable-input.span5{width:370px;} +input.span6,textarea.span6,.uneditable-input.span6{width:450px;} +input.span7,textarea.span7,.uneditable-input.span7{width:530px;} +input.span8,textarea.span8,.uneditable-input.span8{width:610px;} +input.span9,textarea.span9,.uneditable-input.span9{width:690px;} +input.span10,textarea.span10,.uneditable-input.span10{width:770px;} +input.span11,textarea.span11,.uneditable-input.span11{width:850px;} +input.span12,textarea.span12,.uneditable-input.span12{width:930px;} +input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;} +.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} +.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;} +.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} +.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} +.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;} +.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} +.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} +.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;} +.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} +input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} +.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #ddd;} +.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} +:-moz-placeholder{color:#999999;} +::-webkit-input-placeholder{color:#999999;} +.help-block{margin-top:5px;margin-bottom:0;color:#999999;} +.help-inline{display:inline-block;*display:inline;*zoom:1;margin-bottom:9px;vertical-align:middle;padding-left:5px;} +.input-prepend,.input-append{margin-bottom:5px;*zoom:1;}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:"";} +.input-prepend:after,.input-append:after{clear:both;} +.input-prepend input,.input-append input,.input-prepend .uneditable-input,.input-append .uneditable-input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;} +.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;} +.input-prepend .add-on,.input-append .add-on{float:left;display:block;width:auto;min-width:16px;height:18px;margin-right:-1px;padding:4px 5px;font-weight:normal;line-height:18px;color:#999999;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#f5f5f5;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;} +.input-prepend .add-on{*margin-top:1px;} +.input-append input,.input-append .uneditable-input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.input-append .uneditable-input{border-right-color:#ccc;} +.input-append .add-on{margin-right:0;margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} +.input-append input:first-child{*margin-left:-160px;}.input-append input:first-child+.add-on{*margin-left:-21px;} +.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;} +.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input{display:inline-block;margin-bottom:0;} +.form-search label,.form-inline label,.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{display:inline-block;} +.form-search .input-append .add-on,.form-inline .input-prepend .add-on,.form-search .input-append .add-on,.form-inline .input-prepend .add-on{vertical-align:middle;} +.control-group{margin-bottom:9px;} +.form-horizontal legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;} +.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";} +.form-horizontal .control-group:after{clear:both;} +.form-horizontal .control-group>label{float:left;width:140px;padding-top:5px;text-align:right;} +.form-horizontal .controls{margin-left:160px;} +.form-horizontal .form-actions{padding-left:160px;} +table{max-width:100%;border-collapse:collapse;border-spacing:0;} +.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;border-top:1px solid #ddd;} +.table th{font-weight:bold;vertical-align:bottom;} +.table td{vertical-align:top;} +.table thead:first-child tr th,.table thead:first-child tr td{border-top:0;} +.table tbody+tbody{border-top:2px solid #ddd;} +.table-condensed th,.table-condensed td{padding:4px 5px;} +.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th+th,.table-bordered td+td,.table-bordered th+td,.table-bordered td+th{border-left:1px solid #ddd;} +.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} +.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;} +.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;} +.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;} +.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;} +.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} +table .span1{float:none;width:44px;margin-left:0;} +table .span2{float:none;width:124px;margin-left:0;} +table .span3{float:none;width:204px;margin-left:0;} +table .span4{float:none;width:284px;margin-left:0;} +table .span5{float:none;width:364px;margin-left:0;} +table .span6{float:none;width:444px;margin-left:0;} +table .span7{float:none;width:524px;margin-left:0;} +table .span8{float:none;width:604px;margin-left:0;} +table .span9{float:none;width:684px;margin-left:0;} +table .span10{float:none;width:764px;margin-left:0;} +table .span11{float:none;width:844px;margin-left:0;} +table .span12{float:none;width:924px;margin-left:0;} +[class^="icon-"]{display:inline-block;width:14px;height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child{*margin-left:0;} +.icon-white{background-image:url(../img/glyphicons-halflings-white.png);} +.icon-glass{background-position:0 0;} +.icon-music{background-position:-24px 0;} +.icon-search{background-position:-48px 0;} +.icon-envelope{background-position:-72px 0;} +.icon-heart{background-position:-96px 0;} +.icon-star{background-position:-120px 0;} +.icon-star-empty{background-position:-144px 0;} +.icon-user{background-position:-168px 0;} +.icon-film{background-position:-192px 0;} +.icon-th-large{background-position:-216px 0;} +.icon-th{background-position:-240px 0;} +.icon-th-list{background-position:-264px 0;} +.icon-ok{background-position:-288px 0;} +.icon-remove{background-position:-312px 0;} +.icon-zoom-in{background-position:-336px 0;} +.icon-zoom-out{background-position:-360px 0;} +.icon-off{background-position:-384px 0;} +.icon-signal{background-position:-408px 0;} +.icon-cog{background-position:-432px 0;} +.icon-trash{background-position:-456px 0;} +.icon-home{background-position:0 -24px;} +.icon-file{background-position:-24px -24px;} +.icon-time{background-position:-48px -24px;} +.icon-road{background-position:-72px -24px;} +.icon-download-alt{background-position:-96px -24px;} +.icon-download{background-position:-120px -24px;} +.icon-upload{background-position:-144px -24px;} +.icon-inbox{background-position:-168px -24px;} +.icon-play-circle{background-position:-192px -24px;} +.icon-repeat{background-position:-216px -24px;} +.icon-refresh{background-position:-240px -24px;} +.icon-list-alt{background-position:-264px -24px;} +.icon-lock{background-position:-287px -24px;} +.icon-flag{background-position:-312px -24px;} +.icon-headphones{background-position:-336px -24px;} +.icon-volume-off{background-position:-360px -24px;} +.icon-volume-down{background-position:-384px -24px;} +.icon-volume-up{background-position:-408px -24px;} +.icon-qrcode{background-position:-432px -24px;} +.icon-barcode{background-position:-456px -24px;} +.icon-tag{background-position:0 -48px;} +.icon-tags{background-position:-25px -48px;} +.icon-book{background-position:-48px -48px;} +.icon-bookmark{background-position:-72px -48px;} +.icon-print{background-position:-96px -48px;} +.icon-camera{background-position:-120px -48px;} +.icon-font{background-position:-144px -48px;} +.icon-bold{background-position:-167px -48px;} +.icon-italic{background-position:-192px -48px;} +.icon-text-height{background-position:-216px -48px;} +.icon-text-width{background-position:-240px -48px;} +.icon-align-left{background-position:-264px -48px;} +.icon-align-center{background-position:-288px -48px;} +.icon-align-right{background-position:-312px -48px;} +.icon-align-justify{background-position:-336px -48px;} +.icon-list{background-position:-360px -48px;} +.icon-indent-left{background-position:-384px -48px;} +.icon-indent-right{background-position:-408px -48px;} +.icon-facetime-video{background-position:-432px -48px;} +.icon-picture{background-position:-456px -48px;} +.icon-pencil{background-position:0 -72px;} +.icon-map-marker{background-position:-24px -72px;} +.icon-adjust{background-position:-48px -72px;} +.icon-tint{background-position:-72px -72px;} +.icon-edit{background-position:-96px -72px;} +.icon-share{background-position:-120px -72px;} +.icon-check{background-position:-144px -72px;} +.icon-move{background-position:-168px -72px;} +.icon-step-backward{background-position:-192px -72px;} +.icon-fast-backward{background-position:-216px -72px;} +.icon-backward{background-position:-240px -72px;} +.icon-play{background-position:-264px -72px;} +.icon-pause{background-position:-288px -72px;} +.icon-stop{background-position:-312px -72px;} +.icon-forward{background-position:-336px -72px;} +.icon-fast-forward{background-position:-360px -72px;} +.icon-step-forward{background-position:-384px -72px;} +.icon-eject{background-position:-408px -72px;} +.icon-chevron-left{background-position:-432px -72px;} +.icon-chevron-right{background-position:-456px -72px;} +.icon-plus-sign{background-position:0 -96px;} +.icon-minus-sign{background-position:-24px -96px;} +.icon-remove-sign{background-position:-48px -96px;} +.icon-ok-sign{background-position:-72px -96px;} +.icon-question-sign{background-position:-96px -96px;} +.icon-info-sign{background-position:-120px -96px;} +.icon-screenshot{background-position:-144px -96px;} +.icon-remove-circle{background-position:-168px -96px;} +.icon-ok-circle{background-position:-192px -96px;} +.icon-ban-circle{background-position:-216px -96px;} +.icon-arrow-left{background-position:-240px -96px;} +.icon-arrow-right{background-position:-264px -96px;} +.icon-arrow-up{background-position:-289px -96px;} +.icon-arrow-down{background-position:-312px -96px;} +.icon-share-alt{background-position:-336px -96px;} +.icon-resize-full{background-position:-360px -96px;} +.icon-resize-small{background-position:-384px -96px;} +.icon-plus{background-position:-408px -96px;} +.icon-minus{background-position:-433px -96px;} +.icon-asterisk{background-position:-456px -96px;} +.icon-exclamation-sign{background-position:0 -120px;} +.icon-gift{background-position:-24px -120px;} +.icon-leaf{background-position:-48px -120px;} +.icon-fire{background-position:-72px -120px;} +.icon-eye-open{background-position:-96px -120px;} +.icon-eye-close{background-position:-120px -120px;} +.icon-warning-sign{background-position:-144px -120px;} +.icon-plane{background-position:-168px -120px;} +.icon-calendar{background-position:-192px -120px;} +.icon-random{background-position:-216px -120px;} +.icon-comment{background-position:-240px -120px;} +.icon-magnet{background-position:-264px -120px;} +.icon-chevron-up{background-position:-288px -120px;} +.icon-chevron-down{background-position:-313px -119px;} +.icon-retweet{background-position:-336px -120px;} +.icon-shopping-cart{background-position:-360px -120px;} +.icon-folder-close{background-position:-384px -120px;} +.icon-folder-open{background-position:-408px -120px;} +.icon-resize-vertical{background-position:-432px -119px;} +.icon-resize-horizontal{background-position:-456px -118px;} +.dropdown{position:relative;} +.dropdown-toggle{*margin-bottom:-3px;} +.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} +.caret{display:inline-block;width:0;height:0;text-indent:-99999px;*text-indent:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000000;opacity:0.3;filter:alpha(opacity=30);content:"\2193";} +.dropdown .caret{margin-top:8px;margin-left:2px;} +.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100);} +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;max-width:220px;_width:160px;padding:4px 0;margin:0;list-style:none;background-color:#ffffff;border-color:#ccc;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;}.dropdown-menu.bottom-up{top:auto;bottom:100%;margin-bottom:2px;} +.dropdown-menu .divider{height:1px;margin:5px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;} +.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#555555;white-space:nowrap;} +.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;background-color:#0088cc;} +.dropdown.open{*z-index:1000;}.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);} +.dropdown.open .dropdown-menu{display:block;} +.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} +.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;} +.collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;} +.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;} +.btn{display:inline-block;padding:4px 10px 4px;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#fafafa;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:first-child{*margin-left:0;} +.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} +.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;color:rgba(0, 0, 0, 0.5);outline:0;} +.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.btn-large .icon{margin-top:1px;} +.btn-small{padding:5px 9px;font-size:11px;line-height:16px;} +.btn-small .icon{margin-top:-1px;} +.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;} +.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active{color:rgba(255, 255, 255, 0.75);} +.btn-primary{background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-ms-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(top, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0044cc;} +.btn-primary:active,.btn-primary.active{background-color:#003399 \9;} +.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;} +.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} +.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;} +.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} +.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;} +.btn-success:active,.btn-success.active{background-color:#408140 \9;} +.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;} +.btn-info:active,.btn-info.active{background-color:#24748c \9;} +button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} +button.btn.large,input[type="submit"].btn.large{*padding-top:7px;*padding-bottom:7px;} +button.btn.small,input[type="submit"].btn.small{*padding-top:3px;*padding-bottom:3px;} +.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";} +.btn-group:after{clear:both;} +.btn-group:first-child{*margin-left:0;} +.btn-group+.btn-group{margin-left:5px;} +.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;} +.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} +.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} +.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;} +.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} +.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:5px;*padding-bottom:5px;} +.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);} +.btn .caret{margin-top:7px;margin-left:0;} +.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);} +.btn-primary .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret{border-top-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);} +.btn-small .caret{margin-top:4px;} +.alert{padding:8px 35px 8px 14px;margin-bottom:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.alert,.alert-heading{color:#c09853;} +.alert .close{position:relative;top:-2px;right:-21px;line-height:18px;} +.alert-success{background-color:#dff0d8;border-color:#d6e9c6;} +.alert-success,.alert-success .alert-heading{color:#468847;} +.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;} +.alert-danger,.alert-error,.alert-danger .alert-heading,.alert-error .alert-heading{color:#b94a48;} +.alert-info{background-color:#d9edf7;border-color:#bce8f1;} +.alert-info,.alert-info .alert-heading{color:#3a87ad;} +.alert-block{padding-top:14px;padding-bottom:14px;} +.alert-block>p,.alert-block>ul{margin-bottom:0;} +.alert-block p+p{margin-top:5px;} +.nav{margin-left:0;margin-bottom:18px;list-style:none;} +.nav>li>a{display:block;} +.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;} +.nav-list{padding-left:14px;padding-right:14px;margin-bottom:0;} +.nav-list>li>a,.nav-list .nav-header{display:block;padding:3px 15px;margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} +.nav-list .nav-header{font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-transform:uppercase;} +.nav-list>li+.nav-header{margin-top:9px;} +.nav-list .active>a,.nav-list .active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;} +.nav-list [class^="icon-"]{margin-right:2px;} +.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";} +.nav-tabs:after,.nav-pills:after{clear:both;} +.nav-tabs>li,.nav-pills>li{float:left;} +.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} +.nav-tabs{border-bottom:1px solid #ddd;} +.nav-tabs>li{margin-bottom:-1px;} +.nav-tabs>li>a{padding-top:9px;padding-bottom:9px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;} +.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} +.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.nav-pills .active>a,.nav-pills .active>a:hover{color:#ffffff;background-color:#0088cc;} +.nav-stacked>li{float:none;} +.nav-stacked>li>a{margin-right:0;} +.nav-tabs.nav-stacked{border-bottom:0;} +.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} +.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} +.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;} +.nav-pills.nav-stacked>li>a{margin-bottom:3px;} +.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} +.nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;} +.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#0088cc;margin-top:6px;} +.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;} +.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;} +.nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;} +.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;} +.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;opacity:1;filter:alpha(opacity=100);} +.tabs-stacked .open>a:hover{border-color:#999999;} +.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";} +.tabbable:after{clear:both;} +.tabs-below .nav-tabs,.tabs-right .nav-tabs,.tabs-left .nav-tabs{border-bottom:0;} +.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} +.tab-content>.active,.pill-content>.active{display:block;} +.tabs-below .nav-tabs{border-top:1px solid #ddd;} +.tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0;} +.tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;} +.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd #ddd;} +.tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none;} +.tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} +.tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;} +.tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} +.tabs-left .nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} +.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} +.tabs-right .nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;} +.tabs-right .nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.tabs-right .nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} +.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} +.navbar{overflow:visible;margin-bottom:18px;} +.navbar-inner{padding-left:20px;padding-right:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);} +.btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;} +.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9;} +.btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);} +.btn-navbar .icon-bar+.icon-bar{margin-top:3px;} +.nav-collapse.collapse{height:auto;} +.navbar .brand:hover{text-decoration:none;} +.navbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#ffffff;} +.navbar .navbar-text{margin-bottom:0;line-height:40px;color:#999999;}.navbar .navbar-text a:hover{color:#ffffff;background-color:transparent;} +.navbar .btn,.navbar .btn-group{margin-top:5px;} +.navbar .btn-group .btn{margin-top:0;} +.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";} +.navbar-form:after{clear:both;} +.navbar-form input,.navbar-form select{display:inline-block;margin-top:5px;margin-bottom:0;} +.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;} +.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} +.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;color:rgba(255, 255, 255, 0.75);background:#666;background:rgba(255, 255, 255, 0.3);border:1px solid #111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query :-moz-placeholder{color:#eeeeee;} +.navbar-search .search-query::-webkit-input-placeholder{color:#eeeeee;} +.navbar-search .search-query:hover{color:#ffffff;background-color:#999999;background-color:rgba(255, 255, 255, 0.5);} +.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} +.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030;} +.navbar-fixed-top .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} +.navbar .nav.pull-right{float:right;} +.navbar .nav>li{display:block;float:left;} +.navbar .nav>li>a{float:none;padding:10px 10px 11px;line-height:19px;color:#999999;text-decoration:none;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);} +.navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none;} +.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:#222222;background-color:rgba(0, 0, 0, 0.5);} +.navbar .divider-vertical{height:40px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;} +.navbar .nav.pull-right{margin-left:10px;margin-right:0;} +.navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} +.navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} +.navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;} +.navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);} +.navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;} +.navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;} +.navbar .nav.pull-right .dropdown-menu{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before{left:auto;right:12px;} +.navbar .nav.pull-right .dropdown-menu:after{left:auto;right:13px;} +.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#fbfbfb;background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;} +.breadcrumb .divider{padding:0 5px;color:#999999;} +.breadcrumb .active a{color:#333333;} +.pagination{height:36px;margin:18px 0;} +.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} +.pagination li{display:inline;} +.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0;} +.pagination a:hover,.pagination .active a{background-color:#f5f5f5;} +.pagination .active a{color:#999999;cursor:default;} +.pagination .disabled a,.pagination .disabled a:hover{color:#999999;background-color:transparent;cursor:default;} +.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} +.pagination-centered{text-align:center;} +.pagination-right{text-align:right;} +.pager{margin-left:0;margin-bottom:18px;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";} +.pager:after{clear:both;} +.pager li{display:inline;} +.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} +.pager a:hover{text-decoration:none;background-color:#f5f5f5;} +.pager .next a{float:right;} +.pager .previous a{float:left;} +.modal-open .dropdown-menu{z-index:2050;} +.modal-open .dropdown.open{*z-index:2050;} +.modal-open .popover{z-index:2060;} +.modal-open .tooltip{z-index:2070;} +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} +.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} +.modal{position:fixed;top:50%;left:50%;z-index:1050;max-height:500px;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} +.modal.fade.in{top:50%;} +.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} +.modal-body{padding:15px;} +.modal-footer{padding:14px 15px 15px;margin-bottom:0;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";} +.modal-footer:after{clear:both;} +.modal-footer .btn{float:right;margin-left:5px;margin-bottom:0;} +.tooltip{position:absolute;z-index:1020;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.tooltip.top{margin-top:-2px;} +.tooltip.right{margin-left:2px;} +.tooltip.bottom{margin-top:2px;} +.tooltip.left{margin-left:-2px;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.tooltip-arrow{position:absolute;width:0;height:0;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px;}.popover.top{margin-top:-5px;} +.popover.right{margin-left:5px;} +.popover.bottom{margin-top:5px;} +.popover.left{margin-left:-5px;} +.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} +.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} +.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} +.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} +.popover .arrow{position:absolute;width:0;height:0;} +.popover-inner{padding:3px;width:280px;overflow:hidden;background:#000000;background:rgba(0, 0, 0, 0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);} +.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;} +.popover-content{padding:14px;background-color:#ffffff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} +.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";} +.thumbnails:after{clear:both;} +.thumbnails>li{float:left;margin:0 0 18px 20px;} +.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);} +a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} +.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} +.thumbnail .caption{padding:9px;} +.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.label-important{background-color:#b94a48;} +.label-warning{background-color:#f89406;} +.label-success{background-color:#468847;} +.label-info{background-color:#3a87ad;} +@-webkit-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} +.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} +.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} +.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);} +.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);} +.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);} +.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.accordion{margin-bottom:18px;} +.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.accordion-heading{border-bottom:0;} +.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} +.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} +.carousel{position:relative;margin-bottom:18px;line-height:1;} +.carousel-inner{overflow:hidden;width:100%;position:relative;} +.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} +.carousel .item>img{display:block;line-height:1;} +.carousel .active,.carousel .next,.carousel .prev{display:block;} +.carousel .active{left:0;} +.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;} +.carousel .next{left:100%;} +.carousel .prev{left:-100%;} +.carousel .next.left,.carousel .prev.right{left:0;} +.carousel .active.left{left:-100%;} +.carousel .active.right{left:100%;} +.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} +.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} +.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:10px 15px 5px;background:#333333;background:rgba(0, 0, 0, 0.75);} +.carousel-caption h4,.carousel-caption p{color:#ffffff;} +.hero-unit{padding:60px;margin-bottom:30px;background-color:#f5f5f5;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;} +.hero-unit p{font-size:18px;font-weight:200;line-height:27px;} +.pull-right{float:right;} +.pull-left{float:left;} +.hide{display:none;} +.show{display:block;} +.invisible{visibility:hidden;} diff --git a/docs/css/jquery.iviewer.css b/docs/css/jquery.iviewer.css new file mode 100644 index 0000000..d68c642 --- /dev/null +++ b/docs/css/jquery.iviewer.css @@ -0,0 +1,91 @@ +.iviewer_common { + position:absolute; + bottom:10px; + border: 1px solid #000; + height: 28px; + z-index: 5000; +} + +.iviewer_cursor { + cursor: url(../img/iviewer/hand.cur) 6 8, pointer; +} + +.iviewer_drag_cursor { + cursor: url(../img/iviewer/grab.cur) 6 8, pointer; +} + +.iviewer_button { + width: 28px; + cursor: pointer; + background-position: center center; + background-repeat: no-repeat; +} + +.iviewer_zoom_in { + left: 20px; + background: url(../img/iviewer/iviewer.zoom_in.png); +} + +.iviewer_zoom_out { + left: 55px; + background: url(../img/iviewer/iviewer.zoom_out.png); +} + +.iviewer_zoom_zero { + left: 90px; + background: url(../img/iviewer/iviewer.zoom_zero.png); +} + +.iviewer_zoom_fit { + left: 125px; + background: url(../img/iviewer/iviewer.zoom_fit.png); +} + +.iviewer_zoom_status { + left: 160px; + font: 1em/28px Sans; + color: #000; + background-color: #fff; + text-align: center; + width: 60px; +} + +.iviewer_rotate_left { + left: 227px; + background: #fff url(../img/iviewer/iviewer.rotate_left.png) center center no-repeat; +} + +.iviewer_rotate_right { + left: 262px; + background: #fff url(../img/iviewer/iviewer.rotate_right.png) center center no-repeat; +} + +.viewer +{ + width: 100%; + height: 500px; + position: relative; + background: transparent url('../img/loader.gif') no-repeat center center; +} + +.viewer img +{ + max-width: none; +} + +.wrapper +{ + overflow: hidden; +} + +.iviewer_common +{ + border: 0; + bottom: auto; + top: 10px; +} + +.iviewer_zoom_status +{ + border: 1px solid black; +} diff --git a/docs/css/prettify.css b/docs/css/prettify.css new file mode 100644 index 0000000..d44b3a2 --- /dev/null +++ b/docs/css/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/docs/css/template.css b/docs/css/template.css new file mode 100644 index 0000000..23265e6 --- /dev/null +++ b/docs/css/template.css @@ -0,0 +1,500 @@ +@import url(bootstrap.min.css); +@import url(bootstrap-responsive.css); +@import url(prettify.css); +@import url(jquery.iviewer.css); +@import url(http://fonts.googleapis.com/css?family=Crimson+Text|Philosopher|Forum); + +body +{ + padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */ + background: #f9f9f9; + color: #444; +} + +a +{ + color: #55A72F; +} + +li.l0, li.l1, li.l2, li.l3, li.l5, li.l6, li.l7, li.l8 +{ + list-style-type: decimal; +} + +a.brand, h2, .hero-unit h1 +{ + font-family: 'Forum', "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.element .span4 +{ + width: 275px; +} + +.namespace-contents hr, .package-contents hr +{ + border-top: 3px dotted silver; +} + +.namespace-indent, .package-indent +{ + padding-left: 10px; border-left: 1px dashed #f0f0f0; +} + +.element h3 i, .namespace-contents h3 i, .package-contents h3 i +{ + margin-top: 2px; + margin-right: 5px; +} + +.element h3, .namespace-contents h3, .package-contents h3 +{ + margin-top: 25px; + margin-bottom: 20px; + border-bottom: 1px solid silver; +} + +.element h3:first-of-type, .namespace-contents h3:first-of-type, +.package-contents h3:first-of-type +{ + margin-top: 30px; +} + +.element h2 +{ + font-family: inherit; + font-size: 1.2em; + color: black; +} + +.element .type +{ + font-weight: bold; +} + +#search-query +{ + height: auto; +} + +.hero-unit, div.element, .well +{ + border: 1px solid #e0e0e0; + background: white; +} + +h2 +{ + border-bottom: 1px dashed #55A72F; + margin-bottom: 10px; + padding-bottom: 0; + padding-left: 5px; + color: #e9e9e9; + font-weight: normal; + margin-top: 40px; +} + +h2:first-of-type +{ + margin-top: 0; +} + +.hero-unit +{ + background: #75a70d; /* Old browsers */ + background: -moz-radial-gradient(center, ellipse cover, #bfd255 0%, #8eb92a 72%, #72aa00 96%, #9ecb2d 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#bfd255), color-stop(72%,#8eb92a), color-stop(96%,#72aa00), color-stop(100%,#9ecb2d)); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* IE10+ */ + background: radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bfd255', endColorstr='#9ecb2d',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ + + padding: 40px 0 15px 0; + box-shadow: inset 0 0 10px gray; +} + +.hero-unit h1 +{ + text-align: center; + font-weight: normal; + text-align: center; + color: white; + text-shadow: black 0px 0px 15px; +} + +.hero-unit h2 +{ + border: none; + color: white; + background: rgba(48, 48, 48, 0.5); + padding: 0; + margin: 0; + margin-top: 15px; + text-align: center; +} + +.namespace-contents h2, .package-contents h2 +{ + padding-left: 44px; + background: transparent url('../img/icons/icon-th-big.png') no-repeat 3px center; +} + +.package-contents h2 +{ + background-image: url('../img/icons/icon-folder-open-big.png'); +} + +.namespace-contents .element h2, .package-contents .element h2 +{ + padding-left: 0; + background: none; +} + +div.element +{ + border-left: 10px solid #55A72F; + border-radius: 5px; + padding: 7px 7px 2px 7px; + margin-bottom: 15px; + margin-left: 0; +} + +div.element.protected +{ + border-left-color: orange; +} + +div.element.private +{ + border-left-color: red; +} + +div.element.class, div.element.interface +{ + border-left-color: #e0e0e0; +} + +div.element.class.abstract h1, div.element.interface.abstract h1 +{ + font-style: italic; +} + +div.element h1 +{ + font-size: 1.2em; + line-height: 1.5em; + margin-bottom: 10px; + padding-left: 22px; + background: transparent no-repeat left 2px; + word-wrap: break-word; +} + +div.element h1 a +{ + color: transparent; + margin-left: 10px; +} + +div.element h1:hover a +{ + color: silver; +} + +div.element h1 a:hover +{ + color: navy; +} + +div.element a.more:hover +{ + background: #f0f0f0; + color: #444; + text-decoration: none; +} + +div.element a.more +{ + font-weight: bold; + text-align: center; + color: gray; + border-top: 1px dashed silver; + display: block; + margin-top: 5px; + padding: 5px 0; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; +} + +div.element p +{ + font-size: 0.9em; +} + +div.element .table +{ + font-size: 0.9em; +} + +div.element .table th +{ + text-transform: capitalize; +} + +body.invert +{ + background: white; +} + +body.invert div.element +{ + background: #f9f9f9; +} + +ul.side-nav +{ + clear: both; +} + +ul.side-nav li +{ + word-wrap: break-word; + padding-left: 10px; + text-indent: -10px; +} + +ul.side-nav li a +{ + background: transparent no-repeat 5px 3px; + padding-bottom: 10px; + font-style: italic; +} + +ul.side-nav li pre +{ + font-size: 0.8em; + margin: 5px 15px 0 15px; + padding: 2px 5px; + background-color: #f8f8f8; + color: gray; + font-style: normal; + word-wrap: break-word; + text-indent: 0; +} + +ul.side-nav li.view-simple span.description +{ + display: none; +} + +ul.side-nav li.view-simple pre +{ + font-size: inherit; + margin: inherit; + padding: inherit; + background-color: inherit; + border: none; + color: inherit; + font-family: inherit; + font-style: inherit; + padding-bottom: 0; + padding-left: 5px; +} + +ul.side-nav li.view-simple a +{ + padding-bottom: 0px; +} + +i.icon-custom +{ + width: 16px; + height: 16px; + background-position: 0; +} + +.table.markers +{ + background: white; +} + +/* JS only functionality; disable by default */ +.btn-group.visibility, .btn-group.view, .btn-group.type-filter +{ + display: none; +} + +.btn-group.view +{ + margin-left: 20px; + margin-bottom: 20px; +} + +.visibility button +{ + height: 24px; +} + +div.element.constant h1, +i.icon-constant { background-image: url('../img/icons/constant.png'); } + +div.element.function h1, +i.icon-function { background-image: url('../img/icons/function.png'); } + +div.element.method h1, +i.icon-method { background-image: url('../img/icons/method.png'); } + +div.element.class h1, +i.icon-class { background-image: url('../img/icons/class.png'); } + +div.element.interface h1, +i.icon-interface { background-image: url('../img/icons/interface.png'); } + +div.element.property h1, +i.icon-property { background-image: url('../img/icons/property.png'); } + +i.icon-show-public { background-image: url('../img/icons/visibility_public.png'); } +i.icon-show-protected { background-image: url('../img/icons/visibility_protected.png'); } +i.icon-show-private { background-image: url('../img/icons/visibility_private.png'); } + +span.empty-namespace +{ + color: silver; +} + +footer +{ + text-align: right; + font-size: 0.8em; + opacity: 0.5; +} + +#mapHolder +{ + border: 4px solid #555; + padding: 0 !important; + overflow: hidden +} + +div.element div.subelement +{ + margin-left: 10px; + padding-bottom: 5px; +} + +pre code +{ + border: none; +} + +div.element div.subelement > code +{ + font-size: 0.8em; + float: left; + margin-right: 10px; + padding: 0 5px; + line-height: 16px; +} + +div.element div.subelement > p +{ + margin-left: 20px; + margin-right: 40px; +} + +div.element div.subelement h4 +{ + color: #666; + margin-bottom: 5px; +} + +div.element div.subelement.response +{ + padding-bottom: 15px; +} + +div.labels +{ + text-align: right; +} + +.nav-list .nav-header +{ + font-size: 13px; +} + +.go_to_top +{ + float: right; + margin-right: 20px; + background: #2C2C2C; + color: #999; + padding: 3px 10px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + line-height: 19px; +} + +.visibility .btn { + text-transform: uppercase; + font-size: 0.7em; + font-weight: bold; +} + +@media (min-width: 980px) +{ + a[name] + { + margin-top: -50px; + position: absolute; + } +} + +@media (min-width: 1200px) +{ + .method .span4 + { + width: 345px; + } +} + +/* redefined because twitter bootstrap assumes that bootstrap-responsive.css */ +@media (max-width: 980px) +{ + body + { + padding-top: 0; + } + + .go_to_top + { + display: none; + } + + .btn-group.visibility + { + font-size: 0.80em; + margin-bottom: 7px; + display: block; + float: right; + } +} + +@media (max-width: 768px) +{ + .hero-unit h1 { + font-size: 30px; + } + .hero-unit h2 { + font-size: 19px; + } + +} +@media (min-width: 768px) and (max-width: 980px) +{ + .method .span4 + { + width: 203px; + } +} diff --git a/docs/deprecated.html b/docs/deprecated.html new file mode 100644 index 0000000..606539c --- /dev/null +++ b/docs/deprecated.html @@ -0,0 +1,68 @@ + + + + + +OpenSQLManager + + + + + + + + + + +
+ +
+
+
+ +
No deprecated elements have been + found in this project. +
+
+
+
+
+
+ + diff --git a/docs/errors.html b/docs/errors.html new file mode 100644 index 0000000..50f18df --- /dev/null +++ b/docs/errors.html @@ -0,0 +1,104 @@ + + + + + +OpenSQLManager + + + + + + + + + + +
+ +
+
+
+ +
No errors have been found in this project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/docs/graph_class.html b/docs/graph_class.html new file mode 100644 index 0000000..fe96a8c --- /dev/null +++ b/docs/graph_class.html @@ -0,0 +1,65 @@ + + + + + +OpenSQLManager + + + + + + + + + + +
+ +
+
+
+ + diff --git a/docs/img/apple-touch-icon-114x114.png b/docs/img/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..1506f6a668fbb2837c06b561895da248c310ac53 GIT binary patch literal 28338 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�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 literal 0 HcmV?d00001 diff --git a/docs/img/apple-touch-icon.png b/docs/img/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d320cb5e1215894ef37cf8c6fd7a0085eba06f3 GIT binary patch literal 8358 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 LNHCv2rc(U_{c|km literal 0 HcmV?d00001 diff --git a/docs/img/glyphicons-halflings-white.png b/docs/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..a20760bfde58d1c92cee95116059fba03c68d689 GIT binary patch literal 4352 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 literal 0 HcmV?d00001 diff --git a/docs/img/icons/arrow_down.png b/docs/img/icons/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..61505adc46d8fa4156d9b31831ebe6770f0e2757 GIT binary patch literal 606 zcmV-k0-^nhP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph( z1qcLRmoAwA00G`fL_t(I%cWC2tJ+``e%^eL7t$KUBw$9t*+0;sKcG;!o#ftvQ=v=O zPEznkbn((fBwn}RP@zy12dlPS%uu3(Akjdnjb!m7Z{AKf?FH|p;Io_q=Wq_^JkLWo z=Qsxf&cxXRNV#0TVT@UX5OB_sBngrvNpr^7o%nCPR4T2dTrT%m)3hhWViEKC9B~|j zF^1#uh$Kmn&1OL6a}1fD2f7I*U{_szDuTQUi!ZOqfjWA01!nH;yA``w*%)K zs;Yug3Q-h6DTN>iAcUaZZvWhDHqV4=wffsM&FACsIL_zuX_G9=kR&O+_4XuD6w&YZ zlPHQVyWQ?u0DxMp_GP_Z-y9AHSe6Azl0XPax7|XPWh@p8ESJmcPN(zf4hxRsTn&fA zuar{gx(-1QAP9d+5=9YV7-BM+jB~l%>ytFDR;#zJ>#hvLKqiw(w{yPNyJ*ytHlGe^5w{<6H+p@P5DF!?G;MvWzec z5d^`9X0!S6zm#a(_8ZrA2b!kAG);J(_suYjSEqWV`y{Gq+Kbt2=5Dv!N1CQx)a!M2 sQpyjxu~Ml#WsK2AqtU(B3+LMT58IsRj2DXS7XSbN07*qoM6N<$f?9MBJpcdz literal 0 HcmV?d00001 diff --git a/docs/img/icons/arrow_right.png b/docs/img/icons/arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..60c5927ebf63f388b45315cbc4cc56a77b9f903c GIT binary patch literal 628 zcmV-)0*n2LP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph( z1qT;gv2%z300Hz#L_t(I%axPMt5Q)EhkyI*EgldQ%_FEFNFoiwK|$ce2O<`vO%-#J z*f5+m4E!U)pbO5VW@l24A`$5(O~gT>V;_X?vwa*%Pb1@|_l9>(HfyjxzP0vRMAI}J zBA?HH1aP2?dagoht>5TwNDO6R(YPG_8y~cXI2Im}{b9lX8_ zilTha<#MhY4K|w%7K;TIiv<)#fubnjoMSSXfKrNJF!)f@w4a$w<}m=UV}t2*irH)i z#ux-a_&XQ9UJr-E0ZJ)MCKDfz$D3;n4h4so5CWso2)Ek}0I1jNHC0vbmrA9tCkBKN z=yW=Wq6k3{z!-zoYK0_8=yW=};c)o2TrR)5TEmVFD5YSGK@>$e91e)0h*qoB@AZ0b zWLbWH{Ea67#u&_IGwgOdw%aYL)#{IazyG>ct9`j{4^CR}cs$tcc4#yjzXyZC2U(V% z|8JH50ce_rZnulkX!Ofwvpp*oi2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4`J+jIM*dB6Xqg)}~| zJoCIb=eAt%N2Sc0*LR=)Gr>jXc+U1{2EKOY&`?3wi#H~`UdZcts5G`~(Smi^VXH-t zNnA2H`u*=l#_~yWzkbC{@|eWZU~_(X%TKE^b)f2_P*>quOSp`{Hl;21nz{an^LB{Ts5!Fr;& literal 0 HcmV?d00001 diff --git a/docs/img/icons/constant.png b/docs/img/icons/constant.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f180d5a9b09a19b5ae44ad64a1fdceb6a86d7c GIT binary patch literal 496 zcmVrl1?U*0YQ8KBh3^hnN3W5 z2%|~HXz55n-@#z_4GhF=O%)o!1~F5NWx9pcZ;~F+?Pl3!f;~`hPjKs2om2M?&}Yi{ z)a|hNOZ<{ll;no}Bk)fO?j?Pd^dsz_V-;AIg>Bmyh7qUYr=-X5?0(D-NtDZF=JPoK zm&=9SZbzX|h$DHpwjoI*lSww44g39`Mx%jgn$+ucGMNm9VNk2pa2$tryNzwzJxRTg z;8l{SR;vIEhr`H=-EJ4(_i-GD)oR6Jv3R?-aYHZ~jUoig<&w!{f+RYf4giC};OT}S zkx1Zq9*4t$R;z_&Su~qXve_)-@tE~`O*);X-|ureoq}Sq`0d7mBub?cv)PRE`3%5z zyCt8`Q>j##PN(?3kLP)~uKN-h;x$auB$vxYtfW$@*foCnJuN{HCvYhz#zuJz@P!dKp~(AL>x#lFaYJy!Tsagqt+F;zg(Vd_Ma3C z(nGFZm^~mf*5 z)sz1pn_UOj3v?y|2J0zg2h4lZXZ~Oq6V)2(>o0PAi0Mp zcm2O}aQ*+4X;%Lqp4$EY_?&u@^n?8R{_$;a_<;NZ^2eq1Gykv3ut72B2M+tMZ(scX z!_&L}cQnO<)vrjkgy>B%C#)Z+=I#Bf|8MMChN2ecXJi`Peo$P2?0#|mG=^J|^}*N= zPwo1DaqZOq$7k37KfSmE=*JoV_w{7|UykNZn0k89t1|6?Zs{cGcU*1(=|3{P60d%I dd2d6B_y4`!nK<=Rk_TaW8yL|`1mgK1y#VW>cs>9C literal 0 HcmV?d00001 diff --git a/docs/img/icons/file-php.png b/docs/img/icons/file-php.png new file mode 100644 index 0000000000000000000000000000000000000000..c323f09f66241a28d61f1d2c8e90be0a68126bb6 GIT binary patch literal 4017 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 L;uWgGz+epk&R;19 literal 0 HcmV?d00001 diff --git a/docs/img/icons/folder.gif b/docs/img/icons/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 zcmZ?wbhEHb6ky=hKW2GJ7 I#Kd3?0MGg2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4c?q7?3B2Xp1x8ImHETXz54QVYrPgqHx8=(z e>Gl76{l!*pI92y$_dTH37(8A5T-G@yGywo6mxkK_ literal 0 HcmV?d00001 diff --git a/docs/img/icons/icon-folder-open-big.png b/docs/img/icons/icon-folder-open-big.png new file mode 100644 index 0000000000000000000000000000000000000000..fae384ef4df761b2d6cc250ed5787e430ae91663 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^azHG`!3HF+C+nOCQtLfk978H@y`6TEw^f11_3i;d ziGzYN2L&Zg3QDws(66dq&SgShn{Thb{zRo^(j5Lg&dD7z8Ed<2HaxncvF_0qB|qh( zD^{Iwcon{}=b8RLEj=%X$?owoQ+czMDqpDz@out+{J4%~%}Jdw83lFk?!Av|@026WQIOdE8_{3R(~E4X}F}*cK0{Nlc(N@tWx{N75ZIyLFkD`ce?_+omU+4eIu&X fef&+H?MME!>ysALYPH`1I-SAO)z4*}Q$iB}E$LkN literal 0 HcmV?d00001 diff --git a/docs/img/icons/icon-th-big.png b/docs/img/icons/icon-th-big.png new file mode 100644 index 0000000000000000000000000000000000000000..04b0ad872a98de63bc0e300e627ce69a2a209471 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fhMq2tAr-gYPBH{4<6!#zfBD*P z%ML8Ga1?(i);mdUy45w?2d5KGCQHxw$nZHi?xXOW{3u1P>qQzNK+O!Eu6{1-oD!M< D6}BRE literal 0 HcmV?d00001 diff --git a/docs/img/icons/icon_template.svg b/docs/img/icons/icon_template.svg new file mode 100644 index 0000000..b0428aa --- /dev/null +++ b/docs/img/icons/icon_template.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + Co + + diff --git a/docs/img/icons/interface.png b/docs/img/icons/interface.png new file mode 100644 index 0000000000000000000000000000000000000000..51a3a1762db628e8cbbfb4d933a74b4d962d2d7e GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR40E|;Z~{{z_~j>MQR++0q{n_jdZ_~Xzv)82ln zir1^4FSoop)7kP4q||D^oYExqqT%4L-+qnX2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4|3mlps%(3Z75trJZsonk=m!SRtUbjIcd*Gd{GD-MU&5kK`Fd$; z&qe*M;R)u)+B55zu54SYqS>Xy$aOeCxaR(R@13(xM|fE^lFf7PnUNSzTjBx@u1_}0S82W4^{;r-{cRJTTl!v}kb2YK z*1sl?dBGmby>EB*DR3}+u*rYhnEoKO=X=4viDB0(R!$ZFviy;n_U!uqz48-dSM>2+ S-W3cC0R~T3KbLh*2~7ZLUYG9x literal 0 HcmV?d00001 diff --git a/docs/img/icons/ok.png b/docs/img/icons/ok.png new file mode 100644 index 0000000000000000000000000000000000000000..39f287ab19b8bcdc156ea56355a95290d04f0ee8 GIT binary patch literal 3685 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 AIsgCw literal 0 HcmV?d00001 diff --git a/docs/img/icons/search.gif b/docs/img/icons/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..eef46fc9ee10547bfa2da348f81b4c83f19e65a4 GIT binary patch literal 152 zcmZ?wbhEHb6krfw*v!MQVZ+APuU|iW_~^rj4_mixJ96acuV25;ojZ5^`i(nx?(W*P zd;k6e|NsAIfC0syEQ|~cJPbM@0gxFCEUptydamAU5nbG%&zz z##7bH4$=1vId^*V*v!xR>*{?7mqKrCnmdg!}G z=IXm8Sn&!;akH?purU1n%JB2k%b%|wU4DOV*XpD9FQ1(YRJQ}B0U&^o4e)SH>*-Ur zh)`kY;$&s`_k)2EsF{J8m4Sm#kV96(KvF=6-{ZWnu*|swyBJ`G00a;d%-Q;G(RnJC zk*X~0{H%Zf{A2k0_b@F4v6je+t14+fASCR#!a*Y7?B`u`upwYzT_j5PRxk@1k>@6WFcf574M53UU$ zfM5nZ{PpG4FOc(@{(fdKQRiUz`t=9HgNKh8zJB|~V5B3;@aO9@i00pa89smd@*SEs z7ytqYX29h)kFR`S`1=Lu?N1E0y_w^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT literal 0 HcmV?d00001 diff --git a/docs/img/icons/visibility_private.png b/docs/img/icons/visibility_private.png new file mode 100644 index 0000000000000000000000000000000000000000..386dc2d879d20cf85e4eeaaeb29e66bfe8398995 GIT binary patch literal 3433 zcmV-v4VLnWP)StO&>uS)ve< z0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH15C~g000{K(ZT*W zKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9 zG%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5!4#~(4xGUqyucR% zVFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9;1XPc>u?taU>Kgl z7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZqynizYLQ(?Bl0bB z6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>XmZEFX8nhlgfVQHi z(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1#CT#lv5;6stS0Uu z9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>w zk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>Lsh-pbs)#zDT1jo7 zc2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8eYv>2*=jns=cMJ`N z4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^d=-((5|uiYR+WC0 z=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~?uTdNHFy_3W~^@< zVyraYW!!5#VPa`A+oZ&##pJ#z&6I1JX1dX|({#+t$SmBf*sRIyjyctwYo1}g*}U8Q zjfJH}oW)9uHjBrW+LnCF1(r>g_pF#!K2~{F^;XxcN!DEJEbDF7S8PxlSDOr*I-AS3 zsI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{%p4LO);n}Nd~$Sk z%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X;pL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_kmoO6c3xRt`@J4d zvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~e%5}Oeh2)X`#bu} z{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg6+#RN4Ot&@lW)Km z@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnWh~P(Th`1kV8JQRP zeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmhY-8-3xPZ8-xPf?w z_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C%bs^USv6UZd^m-e z5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3hINdvaL;7fjPeygd zGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eTPi8AClMUo~=55Lw zlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1`^^VQ7&C1OKHDNXF zTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk9!NTH<(q(S+MDf~ zceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8zO#GQ^T~S@VXG71P zKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S_si{9Jg#)~P3t?+ z@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZWdXIRo{Jz@#>IeD{ z>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl9~%uCz4Bzvli{bb zrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f&AH2?aJ@Kaet zy{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipf86ea~8P{#KF00Ny!L_t(I z%YBp0Yn4Y7#(y*KdvkMd5_A2?O={#qrJ7PyP+MBWjdmkq-MF}+bs>~4r2l}>F8c>` z*;S#1g25oRl$MrOp{P3rHxkqY6G_d7NzK>&cxTQzUEGhxE*u!n40E1y&hs!2yk>n4 z3E*Cr(|w$%;c!o}HQn-B?(hnY;bqn@gMg`rE04yquox=DO|R zUp{#A{auxj--pL4JLJVP;@XOlq_|SqX>o{!htqfF@7}v`afQVW#&r%q9UDEn|J?&W z`sY)r)HV#mseu}Z7@`;hyPb@@{e1S1zup@@d1C(b)myCzzJ}7t>hXViS095JriNmO zI7AH*Mbr_aqPbq0g^~MbZcZHs@Bl|YeCxa7+6<_gnV|-;4US?&b%fZ8*;d_LWBu6V z*shBJ{@Xoisi(Pmw6T?05OX0KnHVBQh)Qh75FrajJ>ZrWmI%mYfON2wFA*ApnZs#j zh=LeIr9A-zHG&vHAc!IAOq$K1>!Uq|)M@mh-aGFQr8{y|Bed^9jA$UzDGUkfop;_h zVp(IE8T)X>~3p`YDR)gs8T?b4&RaB~e2G=e#TS7U_Goc?G~vRPt13>(@8e!!;}HaG98e z2tl;1gF{qNGxI*N;?CXl#Q5>~jQT_+PcpeC-2CV;t5Z*J_};=;uKdQKs7A9^Z*dmE zr#%#g%C6AY@6wI+&&H=WzVCkJj+uTwb&zwn9&vSFuA1&0{epqP(U>*+yie53)^v5{ ziCbL!bbOgd+l}{%8v&|wO@4sXl^Ldgpx-1&QfsV_FSGQ2*8=Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipf8 z6ebXJjUpTX00MkTL_t(I%Y~CqY)nxU#(($Do7AMkOp9tm{cB2DkO)>?h=q_KqKP1u z8YDz46(O`lh@FMRP9!WEe>Mg|SV~Nzf}5P&@8sU^ z`_8$!2mZ0@A;Eu^ia}Q!9P5to#og>{S<|$qwjrGj%Ek`&kMupiKXB#3Q*t*>rTCcl zC+@1L`f&g2-3IVuL14`ep2 z+uV3N?fN`hDq8CR0Wn}hZ~`tl!y8uf`=4~bS-XBq-9YQ!LR7)7d1MctYaFRhe-$SV z=fDcs3fYDrAxHpDdHU06=Ee4t!)u`ONSz%uHYIJ33SVVl3^}&=u%8{d#qdY8uDM8ssjrA9$p<3++@D?p3lf-6B z31v-Gy4a|EF_X?>qTPhx46e$!*@rfg@{$^D1#Jx&Gf6aY-?2yqJBdu3ppzcjEBwGW zhN39aHjG3jh(RT<2*=?plm!3M8;bhsT?#{E3`huJP$@Hra5&}hVo_^xDuFi+Pxy?} z-@v|lM^~Vd2?=ph5s+ZA4J#lLIV*)4)sTD5Q2^c51}D0?mH#L=jq*Gb;wllj#?FFM z8t2lU9{Qzr-pk{6wL#+XJ9u~=dS1Fal5owl>eDL_alyEAHjJEg0#dbAx|r07FW*i3 zk?UNW_{#AxJ?MlD$KmugcC<82>&RxR=1LG$qqJD~Sr{z8@BL!h&*kWyI(UCfBSZ&V uoAFjHVNPw9Y6-DJV~m~6QTTgm0e%BYER)ZarpMm^00004TSQEP)StO&>uS)ve< z0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH15C~g000{K(ZT*W zKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9 zG%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5!4#~(4xGUqyucR% zVFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9;1XPc>u?taU>Kgl z7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZqynizYLQ(?Bl0bB z6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>XmZEFX8nhlgfVQHi z(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1#CT#lv5;6stS0Uu z9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>w zk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>Lsh-pbs)#zDT1jo7 zc2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8eYv>2*=jns=cMJ`N z4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^d=-((5|uiYR+WC0 z=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~?uTdNHFy_3W~^@< zVyraYW!!5#VPa`A+oZ&##pJ#z&6I1JX1dX|({#+t$SmBf*sRIyjyctwYo1}g*}U8Q zjfJH}oW)9uHjBrW+LnCF1(r>g_pF#!K2~{F^;XxcN!DEJEbDF7S8PxlSDOr*I-AS3 zsI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{%p4LO);n}Nd~$Sk z%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X;pL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_kmoO6c3xRt`@J4d zvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~e%5}Oeh2)X`#bu} z{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg6+#RN4Ot&@lW)Km z@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnWh~P(Th`1kV8JQRP zeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmhY-8-3xPZ8-xPf?w z_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C%bs^USv6UZd^m-e z5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3hINdvaL;7fjPeygd zGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eTPi8AClMUo~=55Lw zlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1`^^VQ7&C1OKHDNXF zTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk9!NTH<(q(S+MDf~ zceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8zO#GQ^T~S@VXG71P zKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S_si{9Jg#)~P3t?+ z@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZWdXIRo{Jz@#>IeD{ z>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl9~%uCz4Bzvli{bb zrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f&AH2?aJ@Kaet zy{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipf86eb*cJ8m}s00OT`L_t(I z%YBniXk1kk#(($Dn@nb+%_M1(NWV=0YLiwH$D2%?C%DVS&r7K)4FLg=c{F1vBp zWfw&#C>SgS#Xl(47O6x83))SoHqe%66G*4+B=g?8_ndoN%p|5RdN=37Ip6o4b2uM7 z?0rB5a1SflNKVhyxHwY+@aoyd;i<8y{i6e0hhmE9c6({z(#_vb{c(_Q4}CYu^}9DV zYTah=JKsFj9S5F>d{{@5_ld zrk~vYh4`yksckcGl0XxP8d0$-BQDb&|D3<^)AM`B_bz_)%7tzRLnmn-d2vsx*8eAl zk<5@}s5+t=K@(9OK@y~XLb>ho>DRCB0q_9(cRzim(OAGpre;V25l5*;5F>~q#BOYd z+;I1wd+qG-0RaE($5}J$yR&R_0$qEt3J;n%8AV`l~4N-%ND;m#e$6s1lTh5F6;$~0? z-97wA*6TnZsafVT*H^2a|9YpG=Q!!s-TZ`4O+rlefO0gV7$Oc)!xG@Ut2Y|723C&( z`02SC7iRKvORMp7Z(Cdl)+0&1`5mH(l+3)ZShF#L^~t-J-y)x$t91|Q!yl*ksubb(;uO>P3<~3gWtU5EA zO&l9waH5cM!23!vvwQ8d@>k0(9h#rz+GgWD;6{LpGbNLsl8rdV>pc31TGUV}?$6J% d{D0R1{0r!j$d`WA?P34`002ovPDHLkV1i_Kq4od( literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/grab.cur b/docs/img/iviewer/grab.cur new file mode 100644 index 0000000000000000000000000000000000000000..ef540be09383a215ba21287683ae956b74a6dbbf GIT binary patch literal 1150 zcmeHEF%H8Z3_L;+LM2k9N*yv~>~H#wK9i4B>Jy?)*;1Rr5Mf~HSVzWizBA$iDEg)e zv@Up@fGdC-B|(IIaVjw`XMnR4do4(}ceLED$#?I4PhZt?V;F{(zNyX4aU6>oTI<~I zR%1+|Z@pO>D9unx@mz^sV2R6KAHrH&a3w(Uah_+1dcf$ic$W0J$AsEGc`x}F-{G8# oT0W#ZA~$;zN&n?%4r~@-v(K$0B;Q#;t literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/hand.cur b/docs/img/iviewer/hand.cur new file mode 100644 index 0000000000000000000000000000000000000000..1a5bafb5263fd4937dda4098b04aa5c70e2de924 GIT binary patch literal 1150 zcma)3OKyWe4E694LIn}22q6~8?0U4`qB$BzVUYuLnN^5A#g-vqrbZ8co}UNC0FIu^ z1?Y|NodI+J@I{~!RsQPaynTKEFe0{|*)R-iM9cJuPktQ*F&}vmxJX7;nU}sFz|xzG*A)o1}vy~Np8!oh{{D) z3FWrSE(G-lOIo^%@l%Jh z7d(bKZD(=f(+rDu3Ibk!p~fAzvAEw(G5oFaf>VGX;I$X`=G^#MhKzfwaaX++^R_aG z{23g@-KfbsV!rlS8y~jNpC$Q98001E5Sq?VpxukSs-?)+t$^aeGL+RsprA4wk<#_> z_+u(WTiH*vZ^%;_bKH_BUEq}jd#?-l#9J=q_v{?VaI4}Q9JQ|FoaxO4M#r~&(9l-@ga5_qddH0^Pp)3D%%13U()$KPZ9mfuKHeN zh|FV%AcKd9$Xte~JpHr7ISdEsS=dbylRpV}b%EG*(H$Zm7BrYE89CoGzCv2mgg*7U?}T-eQj1 z{ctQepE}YD%L6}S{pbtWcxoXGX*qRvIs~7NleuJ1rI2sTU9}wgEO}#naM{Mwl$wh8u zCnBy@;!tLlFk2ANZy*yRh*u1IjEu7sgd^u~j?-pP>cuPS5S69F5h60HO2`84nde#W zyHhV;*NN!tY8*EZeXCkX$LB3TNWEh+HIj>(aWc0CrwBgBQY@5_fO(q}ggUVHfHYwh z33cBmty=DP=A9=gECUXndMm_NP*e}Z-LCDyS)!}~n7b*S3$R(WUj{y!TOYyebROJ- zFF$p&>5+Q7DfKeS+K_mst_KprM8H(Hy%~al3{|Z#A5JZTYe-7!V4F>!)KgSFrn=vN z3kCIkDE(K!G*^RwzlwE`Dy#7rUC1u2#kz=0tng2mHP|cZPQ4qN4qPSy<|wW2D5KC{MlR z;>)=A5V)!Cz;#udS#FfKqnHHD=_R1Ptpjzf{nOgnDXf!ZtKqUo3Ky}YM}T&xUI8_p z+{#DD)pj7q40-gM-UA6eVt~J6Ck37*j6+@9f{jOSVfEgWC}V(*7I~i&Dx8uU4S&P_ z;3=qW>uyHVjD_fF#+pz$KVvi(@T$|6gmQ;1NkX6Jb)Y}^@BGWy!Sjrgf9<#ho=bDz zCj-9w{fH|?2J}+O500000NkvXXu0mjf*RRDb literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/iviewer.rotate_right.png b/docs/img/iviewer/iviewer.rotate_right.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6c829871d058af5a5ca0ac67256c259f84c5ac GIT binary patch literal 1482 zcmV;*1vUDKP)W@q8L24va@vW@P7*!=(&yIADtgIo?`IW@@z#oP%kAO5~e4>aSvdau$keO zelrxe7h>a?XEPGL-8ZvUK7S5JxO_SC%cam%h9U3nOynA8Bd1~p@(p_slER=;FN42~ zVT$Cx%L&IBfqkNPU0Q$wV<=M8^Ktsd`-seX8%Hx4(Mza9RSeQph6Cvg*A2_?bs*!Z zJm9Mh7vz)H#bKgf96Z*=%6lrx!F>}8+<9p(ZW^~EGIuaSuQBYWfCsY}!gCl75#iYs zn4X1YwmkE{L{qbYU7_|vC;44Kc>_>d53G;Ofy>H6K72&Q1n)K0hYkOJ{}5yueQ_kO zAEZ3kO@`uTdQ^;QD4P$Xc-46$f7y>g|g44T+ z#BgE=@!>Z#-vKoL6Wa&pE*R*#HWno`0s)tGNL1G$LZyexFDGPt0qahH^Hl0tOywX% zlsY1!jA8k4hEa>zCTrlAtqC<~Car`X>shKzaMo5pP+|!}lx4#8x7#jb=yVHAyecTTC4J8t z#9H#H1x)ab5$qRn{T_~Gwh%$&8k>4#Nl^>etY1&RH*c@JV*VdWES08K(6hJ3ua1F+ z1Vqx@pUkersqB_Ip|BQ5mEtYg?Pld26u-(ZDhIXZN8p8vpywZqUmXq21K`XJ6VBRD zSPjgUh_hsuo0Zq@#H52sg=lQDK%p}U0=)MqxPXrz3y|HcLaYr6jTyT{TGH;2&kl$g zvn(tPnZ+iUo13A~-oxKTMnQmAi+~YaKrsopkYC+_iv!`6FZ*8at59p?CSTLD^ce@1hVDp0-#Q zq7i&EGSIAWEAo-(3@vR~e8qHMf3DS%&Pzg-H4FABh2HRK5QhTu_A0SBL~)<~@sXQv zl!l*(`MH4my)*cGH#$9gu8S$5cCU4I9uNy}^C|I;^|0b5vYngtVB^%;d7vlsx1OAw ktS2S0?VM~5JkO{63m1~IVD>3BuK)l507*qoM6N<$f)6RO6951J literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/iviewer.zoom_fit.png b/docs/img/iviewer/iviewer.zoom_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..364e01d90eae19584713851314629f2468198e9e GIT binary patch literal 1252 zcmbVMZD`zN9M7nO!F>6)Qu>rmKTa$KDx31r-tX6e<%`(6Krd_QfiW`8t`1_@uq7ekl83AbH+? zzu*7$$#_?1`>KY!8VG_|C2bSZcx-mx`sMihAai~i59?7fi@MD`D#97s?^ptvbD@%0UaWlEb9Y?!POak>Kac>j_lvC`$F%JGkXW>_ZEGx zJom!Kv#(7V2O9tK-kSZb!BUHpo@HF_;W5I?7`%^kn|fV6LyKC%38?;(5V z!PU9ZKS#&d``e%Ktf-E%=q0M&EZqyy}ir$_H&JcW2fJ{{PgiX z8-IUUIXQgrq&9v}_F_|k9sDEvsw97zUz^v|wk^6~k{(E}g+-F{ISKr))j<47BXr41~e0blAr&bSs z|IrSo^7@evzS-=(@x`Huqc2r99GkQ^PabxeDqKE2-7j>wsvG2m_N{Pyfo(Z~3KXY?;^Pc&YH??aJsCHEo`3 w8eZ!(AMJatv3kpyYro>2$M)>r+u)qoRbjGiisBQYX$xZ(3D5f)$iQF?09S=3^#A|> literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/iviewer.zoom_in.png b/docs/img/iviewer/iviewer.zoom_in.png new file mode 100644 index 0000000000000000000000000000000000000000..78993327c62ddd64e7fe33bc1b0d469ef9e17f30 GIT binary patch literal 1420 zcmbVMeM}o=96n$mLI`O1*jPqxokAS8_t9QIP6}&#?I^6YLL;DzakN*s!1Zp|0}9Rz z8rh;F0cBg38IU39T#zkeLnml8hzMCSG?@^xXdOBYVGI|HL|oz(DEbH4A6|0zem&3g z`+V;WTfxD&nA8{m0OHKKM4>pQ1>fi>@%sWi*eedZ1Y?O%#JYqAlBWQjldYscGecHU zg%s&*JUU5b0YHS4wwDMcmP5FMWn^R!Bl9wx$OeF{94|*YYA6A$q^fAQR`OuPF9B(% zR#J>vU<+rUs_EP&o+@f8usfP+92%!2CmYQ2;-UaU2_)!cYTX{(tCg(l;^I8G4N1Ut zh)|=IY&cb7v4IAbr$9^wOC7Kh29<~mkt? zy6{56v}sFRX(iQyz~K<#uSL*ic3n>tk$HCK_ zK(lTzs7O|_b%ItRdb$w;!&xj_!fwxIqQsOzUXp_l84NK@Fs^m9M<}HJbz@t!$KJ?M zP$A`E>v)G)57)jBS6;_)Fv2Ks*P|kY8`^A2u!ZfsWAnHVJ68Y*ZF@k28qrD)nZSf_1^Pw#| z@pZkmCA&G}0&7bcjq%x*?aRCV3irha4o~M_DArx{=C$ijm7gxpJfn{2L~$I+EADGSEAJts^bthXdZ0!+7(pGrKca+s`)MokNH6@80m`S3a@u zY1ygFvFkgB8j(NleZ>ubn=|IJ|7-yHzY}KZV-M0lk+#l6X1~TQy|p*uWp8(@{ii>t zUM%g1pU@A_-dyI62l_3g1J;f*Z-2$!(N|(ifOlu2-fw+1YIXRfE0Nik_Z$MUT=6@` he~f-qo>Y;tmQ(?tGoVp(DLyXve>58lh(UdY?;kaa{Rsd7 literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/iviewer.zoom_in2.gif b/docs/img/iviewer/iviewer.zoom_in2.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d596181627a30344f9783d466ce0558279fe729 GIT binary patch literal 90 zcmZ?wbhEHblwpuzXkcUjg8%>j>wsvG2m_O4Pyfo(Z}}I`;fT1UbHL~G(^^jrxfIDc qOSLxju^l&BbLLyj{a>m(=kzlMwFoEmw|glD9`i8f>~-Q|um%7;9UyH0 literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/iviewer.zoom_out.png b/docs/img/iviewer/iviewer.zoom_out.png new file mode 100644 index 0000000000000000000000000000000000000000..893f3502baaab667354fe8b560c1712b72630836 GIT binary patch literal 1416 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsddyBS)T zxj4DGI+;7U8WbpSnwXlJx+y{RrjQe2`as9%gOUbPQh^Bp(;tWlPxwF%JnN+90rN`{ zFk|eTuyZ2=1LH1F7srr_TYIJ*^g8Sy&?e2@*d%abWdMgri<5t&U4#0<`~ZPHTulKV zL_SFVVrt@l5PQLUVYuUp3a@^r?zky&+EXok@RH&z@w!8r$f$z%0{cUx;M)M%(BO@dlSAr|x|-`3zUuyW0)IVtW>|s>WVT?mGEc zSkr=`cGH2CXUi731dH|WWa9iWg>~1jL@c(3*I%OB-d`n9ld0_~{X@e~VM+?bvqa&xDF~4=3Dc{-t;PQB<+c zv78v6y_Q$sW5p8UNtB8n}}+(%+^^VTDLxDs_M@V zktZgdHP!#l9(Qv}igT01!>vuNAL^777;7#{%n;%?`4GGKfzXddg$9fTvuy=L>XpA# emo~({32$Iz;FK4L4Ckl>myMpTelF{r5}E)fw)-Uj literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/iviewer.zoom_out2.gif b/docs/img/iviewer/iviewer.zoom_out2.gif new file mode 100644 index 0000000000000000000000000000000000000000..77ec19af216c5525438e73e4fafef1ce08db3cf3 GIT binary patch literal 69 zcmZ?wbhEHblwpuzXkcUjg8%>j>wsvG2m_N!Pyfo(Z}}I`*>bCU^SwRQTrH10rZprj VQ(Lv|A^Y)9KG(nX7PB%~0{{a@8tMQ5 literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/iviewer.zoom_zero.png b/docs/img/iviewer/iviewer.zoom_zero.png new file mode 100644 index 0000000000000000000000000000000000000000..c981db6d690774d0c2e67e21c9081d5c89b5fd2d GIT binary patch literal 1091 zcmbVL&ui0A9M4pSOy+USDH`Jt54L&lWo?(ZTAQSq1v^VuUA;)t~d_LcwSBo>#!$V_3 z9LEjkPwFMM?vLJ`gY0_@JiN=6Jv3LLv!qU2W`Mb@O=_6WyXHJDVbfl^_!>`f+;-b3 zS7@bhO0kF=HzS*P+w~cm6!@+QT}TTXPE`s;ULyhK6LAo; zKoamt7>CkCDwR6QBLIO2kO)x>rW6S&0Pwv>U}}L~S4z6k(_*Kz(4f>;M6uOs#amLG z1oI-4WjW$ND8?*e;gUzqcFYS8^%-;=T7lzJhj@I%Xx2!RrUmBdMhLE7C~OjYVJ}fE zWn$a(MHmO7>qc>PtwUPEf85y8IxH{wSS;a?Gy{v(qkgClX1V*fP-MuwQBDUAD~h?O z6RYWBkLLBX!2ZN-$5tc*P9}BL$f+qc2OyjTdQR0O9U94`B&o2^u@x4nAeBw1(2x=n z5avKO31v+Nl7u7!=(60$=Dm=bo`w6m4%6*n!9THz7GRT-piIbOzXOU5LP^*lKCjIt z_&LY3Nh^$svk|L~1LqR9jexj(H@k|ng?bW90+iEJ2GWfvYE_c6auz`iY1tG)S)qru z|0iQ2b4H9>hb!)51ol8qidf>uee2NcllE7&Y7PpcX!=7_qbu-x&Nqo^YXsS zx4psB1L(rH2OVv_Ry|wWf8@aTYwPTIZ{+>+x4F)XFBxU;`RVIF##f(pxPd|L)0^?x S8}D{hqp{BCX7q<@b>%mi3|d_P literal 0 HcmV?d00001 diff --git a/docs/img/iviewer/iviewer.zoom_zero2.gif b/docs/img/iviewer/iviewer.zoom_zero2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e56c670fe62062458276fab5512701433b37af4e GIT binary patch literal 98 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 literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..105e058 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,79 @@ + + + + + +OpenSQLManager + + + + + + + + + + +
+ +
+

OpenSQLManager

+

Documentation

+
+ +
+
+ + diff --git a/docs/js/SVGPan.js b/docs/js/SVGPan.js new file mode 100644 index 0000000..4966b99 --- /dev/null +++ b/docs/js/SVGPan.js @@ -0,0 +1,232 @@ +/** + * SVGPan library 1.2 - phpDocumentor1 + * ==================== + * + * Given an unique existing element with id "viewport", including the + * the library into any SVG adds the following capabilities: + * + * - Mouse panning + * - Mouse zooming (using the wheel) + * - Object dargging + * + * Known issues: + * + * - Zooming (while panning) on Safari has still some issues + * + * Releases: + * + * 1.2 - phpDocumentor1, Fri Apr 08 19:19:00 CET 2011, Mike van Riel + * Increased zoom speed with 20% + * Disabled element moving functionality + * + * 1.2, Sat Mar 20 08:42:50 GMT 2010, Zeng Xiaohui + * Fixed a bug with browser mouse handler interaction + * + * 1.1, Wed Feb 3 17:39:33 GMT 2010, Zeng Xiaohui + * Updated the zoom code to support the mouse wheel on Safari/Chrome + * + * 1.0, Andrea Leofreddi + * First release + * + * This code is licensed under the following BSD license: + * + * Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Andrea Leofreddi. + */ + +var root = document.documentElement; + +var state = 'none', stateTarget, stateOrigin, stateTf; + +setupHandlers(root); + +/** + * Register handlers + */ +function setupHandlers(root){ + setAttributes(root, { + "onmouseup" : "add(evt)", + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)", +// "onmouseout" : "handleMouseUp(evt)" // Decomment this to stop the pan functionality when dragging out of the SVG element + }); + + if(navigator.userAgent.toLowerCase().indexOf('webkit') >= 0) + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari + else + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) { + var p = root.createSVGPoint(); + + p.x = evt.clientX; + p.y = evt.clientY; + + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) { + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + + element.setAttribute("transform", s); +} + +/** + * Dumps a matrix to a string (useful for debug). + */ +function dumpMatrix(matrix) { + var s = "[ " + matrix.a + ", " + matrix.c + ", " + matrix.e + "\n " + matrix.b + ", " + matrix.d + ", " + matrix.f + "\n 0, 0, 1 ]"; + + return s; +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes){ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +/** + * Handle mouse move event. + */ +function handleMouseWheel(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var delta; + + if(evt.wheelDelta) + delta = evt.wheelDelta / 3600; // Chrome/Safari + else + delta = evt.detail / -90; // Mozilla + + var z = 1 + (delta * 1.2); // Zoom factor: 0.9/1.1 + + var g = svgDoc.getElementById("viewport"); + + var p = getEventPoint(evt); + + p = p.matrixTransform(g.getCTM().inverse()); + + // Compute new scale matrix in current mouse position + var k = root.createSVGMatrix().translate(p.x, p.y).scale(z).translate(-p.x, -p.y); + + setCTM(g, g.getCTM().multiply(k)); + + stateTf = stateTf.multiply(k.inverse()); +} + +/** + * Handle mouse move event. + */ +function handleMouseMove(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var g = svgDoc.getElementById("viewport"); + + if(state == 'pan') { + // Pan mode + var p = getEventPoint(evt).matrixTransform(stateTf); + + setCTM(g, stateTf.inverse().translate(p.x - stateOrigin.x, p.y - stateOrigin.y)); + } else if(state == 'move') { + // Move mode + var p = getEventPoint(evt).matrixTransform(g.getCTM().inverse()); + + setCTM(stateTarget, root.createSVGMatrix().translate(p.x - stateOrigin.x, p.y - stateOrigin.y).multiply(g.getCTM().inverse()).multiply(stateTarget.getCTM())); + + stateOrigin = p; + } +} + +/** + * Handle click event. + */ +function handleMouseDown(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var g = svgDoc.getElementById("viewport"); + +// if(evt.target.tagName == "svg") { + // Pan mode + state = 'pan'; + + stateTf = g.getCTM().inverse(); + + stateOrigin = getEventPoint(evt).matrixTransform(stateTf); +// } else { + // Move mode +// state = 'move'; +// +// stateTarget = evt.target; +// +// stateTf = g.getCTM().inverse(); +// +// stateOrigin = getEventPoint(evt).matrixTransform(stateTf); +// } +} + +/** + * Handle mouse button release event. + */ +function handleMouseUp(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + if(state == 'pan' || state == 'move') { + // Quit pan mode + state = ''; + } +} + diff --git a/docs/js/bootstrap.js b/docs/js/bootstrap.js new file mode 100644 index 0000000..c832ccb --- /dev/null +++ b/docs/js/bootstrap.js @@ -0,0 +1,1722 @@ +/* =================================================== + * bootstrap-transition.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + +!function( $ ) { + + $(function () { + + "use strict" + + /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) + * ======================================================= */ + + $.support.transition = (function () { + var thisBody = document.body || document.documentElement + , thisStyle = thisBody.style + , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined + + return support && { + end: (function () { + var transitionEnd = "TransitionEnd" + if ( $.browser.webkit ) { + transitionEnd = "webkitTransitionEnd" + } else if ( $.browser.mozilla ) { + transitionEnd = "transitionend" + } else if ( $.browser.opera ) { + transitionEnd = "oTransitionEnd" + } + return transitionEnd + }()) + } + })() + + }) + +}( window.jQuery ) +/* ========================================================== + * bootstrap-alert.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function( $ ){ + + "use strict" + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function ( el ) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype = { + + constructor: Alert + + , close: function ( e ) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.trigger('close') + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.removeClass('in') + + function removeElement() { + $parent.remove() + $parent.trigger('closed') + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + $.fn.alert = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT DATA-API + * ============== */ + + $(function () { + $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) + }) + +}( window.jQuery ) +/* ============================================================ + * bootstrap-button.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + +!function( $ ){ + + "use strict" + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function ( element, options ) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype = { + + constructor: Button + + , setState: function ( state ) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + , toggle: function () { + var $parent = this.$element.parent('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + $.fn.button = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON DATA-API + * =============== */ + + $(function () { + $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) { + $(e.target).button('toggle') + }) + }) + +}( window.jQuery ) +/* ========================================================== + * bootstrap-carousel.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function( $ ){ + + "use strict" + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.carousel.defaults, options) + this.options.slide && this.slide(this.options.slide) + } + + Carousel.prototype = { + + cycle: function () { + this.interval = setInterval($.proxy(this.next, this), this.options.interval) + return this + } + + , to: function (pos) { + var $active = this.$element.find('.active') + , children = $active.parent().children() + , activePos = children.index($active) + , that = this + + if (pos > (children.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activePos == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) + } + + , pause: function () { + clearInterval(this.interval) + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + if (!$.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger('slide') + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } else { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.trigger('slide') + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + $.fn.carousel = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = typeof option == 'object' && option + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (typeof option == 'string' || (option = options.slide)) data[option]() + else data.cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL DATA-API + * ================= */ + + $(function () { + $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data()) + $target.carousel(options) + e.preventDefault() + }) + }) + +}( window.jQuery ) +/* ============================================================= + * bootstrap-collapse.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + +!function( $ ){ + + "use strict" + + var Collapse = function ( element, options ) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options["parent"]) { + this.$parent = $(this.options["parent"]) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension = this.dimension() + , scroll = $.camelCase(['scroll', dimension].join('-')) + , actives = this.$parent && this.$parent.find('.in') + , hasData + + if (actives && actives.length) { + hasData = actives.data('collapse') + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', 'show', 'shown') + this.$element[dimension](this.$element[0][scroll]) + + } + + , hide: function () { + var dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', 'hide', 'hidden') + this.$element[dimension](0) + } + + , reset: function ( size ) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element.addClass('collapse') + } + + , transition: function ( method, startEvent, completeEvent ) { + var that = this + , complete = function () { + if (startEvent == 'show') that.reset() + that.$element.trigger(completeEvent) + } + + this.$element + .trigger(startEvent) + [method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + /* COLLAPSIBLE PLUGIN DEFINITION + * ============================== */ + + $.fn.collapse = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = typeof option == 'object' && option + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSIBLE DATA-API + * ==================== */ + + $(function () { + $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $(target).collapse(option) + }) + }) + +}( window.jQuery ) +/* ============================================================ + * bootstrap-dropdown.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function( $ ){ + + "use strict" + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle="dropdown"]' + , Dropdown = function ( element ) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function ( e ) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + , isActive + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + isActive = $parent.hasClass('open') + + clearMenus() + !isActive && $parent.toggleClass('open') + + return false + } + + } + + function clearMenus() { + $(toggle).parent().removeClass('open') + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.fn.dropdown = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(function () { + $('html').on('click.dropdown.data-api', clearMenus) + $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) + }) + +}( window.jQuery ) +/* ========================================================= + * bootstrap-modal.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function( $ ){ + + "use strict" + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function ( content, options ) { + this.options = $.extend({}, $.fn.modal.defaults, options) + this.$element = $(content) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + + if (this.isShown) return + + $('body').addClass('modal-open') + + this.isShown = true + this.$element.trigger('show') + + escape.call(this) + backdrop.call(this, function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position + + that.$element + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) : + that.$element.trigger('shown') + + }) + } + + , hide: function ( e ) { + e && e.preventDefault() + + if (!this.isShown) return + + var that = this + this.isShown = false + + $('body').removeClass('modal-open') + + escape.call(this) + + this.$element + .trigger('hide') + .removeClass('in') + + $.support.transition && this.$element.hasClass('fade') ? + hideWithTransition.call(this) : + hideModal.call(this) + } + + } + + + /* MODAL PRIVATE METHODS + * ===================== */ + + function hideWithTransition() { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + hideModal.call(that) + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + hideModal.call(that) + }) + } + + function hideModal( that ) { + this.$element + .hide() + .trigger('hidden') + + backdrop.call(this) + } + + function backdrop( callback ) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('