From b7bb8ce2f9663e6ed5de1018080b73c605f4d082 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Tue, 20 Feb 2018 13:58:01 +0000 Subject: [PATCH] www/dbq/dbq.php --- lib/php/db/table.php | 9 +++++---- lib/php/db/types/ldap.php | 26 ++++++++++++++++++++++---- www/dbq/html/default.css | 8 ++++---- www/dbq/html/default.min.css | 2 +- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/lib/php/db/table.php b/lib/php/db/table.php index f7470b99..fe67ba57 100644 --- a/lib/php/db/table.php +++ b/lib/php/db/table.php @@ -362,7 +362,7 @@ Class Table extends nb { */ public function fields($name=null) { - if (!$this->db()->conf_type('nosql') and!isset($this->_fields)) { + if (!$this->db()->conf_type('nosql') and !isset($this->_fields)) { $this->create_temporary(); $this->_fields = true; @@ -555,7 +555,7 @@ Class Table extends nb { return $row; }; } - $row = $fct($this,$values); + $row = $fct($this,$values,$add); $table = $this; } @@ -1728,6 +1728,7 @@ Class Table extends nb { } public function insert($post,&$info=[],$insert_word='INSERT') { + if ($fct = $this->db()->conf_type(strtolower($insert_word))) return $fct($this,$post); if (empty($info['values'])) $info['values'] = []; if (empty($post)) $this->bye('insert(): No values'); @@ -1907,6 +1908,7 @@ Class Table extends nb { } public function delete($post,&$info=[]) { + if ($fct = $this->db()->conf_type('delete')) return $fct($this,$post); if (empty($info['values'])) $info['values'] = []; $info['values'] = $post; @@ -1920,8 +1922,7 @@ Class Table extends nb { return null; } - # NB 07.12.17: Add LIMIT 1. If a table as not primary key when want to delete only on record -# NB 12.12.17 $sql = 'DELETE FROM ' . $this->sql_name() . $where . ($this->db()->type == 'pgsql' ? '' : ' LIMIT 1'); + # Add LIMIT 1. If a table as not primary key when want to delete only on record $sql = 'DELETE FROM ' . $this->sql_name() . $where . ($this->db()->conf_type('delete_no_limit') ? '' : ' LIMIT 1'); $info['sql'] = $sql; diff --git a/lib/php/db/types/ldap.php b/lib/php/db/types/ldap.php index 9c3cb7e3..c1fd232c 100644 --- a/lib/php/db/types/ldap.php +++ b/lib/php/db/types/ldap.php @@ -51,18 +51,36 @@ $DB_TYPES['ldap'] = [ ]); return $r; }, - 'html_edit_row' => function(&$table,&$values) { + 'html_edit_row' => function(&$table,&$values,$add) { $table->db()->ldap->prepare([ 'base' => $values['dn'], ]); $row = $table->db()->ldap->fetch(); - #debug($row); - $table->add_fields(array_keys($row)); + $fields = []; + foreach ($row as $k=>$v) $fields[$k] = 99; + $i = 9; foreach ($table->fields() as $f) { + $fields[$f->name] = $i++; + } + $fields['dn'] = 0; + $fields['objectClass'] = 1; + if ($add) bye($row); + #debug($fields); + uksort($row,function ($a,$b) use($fields) { return $fields[$a] >= $fields[$b]; }); + #bye($row); + $table->replace_fields(array_keys($row)); return $row; }, + 'insert' => function(&$table,&$values) { + $dn = $values['dn']; unset($values['dn']); + bye([$dn,$values]); + return (int)$table->db()->ldap->add($dn,$values); + }, + 'delete' => function(&$table,&$values) { + $dn = $values['dn']; unset($values['dn']); + return (int)$table->db()->ldap->delete($dn); + }, 'update' => function(&$table,&$values) { $dn = $values['dn']; unset($values['dn']); - #bye([$dn,$values]); return (int)$table->db()->ldap->update($dn,$values); }, ]; diff --git a/www/dbq/html/default.css b/www/dbq/html/default.css index 53909f6c..fc3f2fea 100644 --- a/www/dbq/html/default.css +++ b/www/dbq/html/default.css @@ -226,10 +226,6 @@ div.row div { height: 1.2em; } -.action-vi.jpegPhoto img { - max-width: 200px; -} - div.row div.view .button { margin-bottom: 5px; } div.row div.delete .button { margin-top: 5px; } div.row div:last-child { border-bottom: none; padding-bottom: 0; } @@ -369,3 +365,7 @@ form.edit .fields input[size], form.edit .fields textarea, form.edit .fields select { width: 65%; } + +form.edit .fields img { + max-height: 90px; +} diff --git a/www/dbq/html/default.min.css b/www/dbq/html/default.min.css index aaae83cd..0e3772f6 100644 --- a/www/dbq/html/default.min.css +++ b/www/dbq/html/default.min.css @@ -1 +1 @@ -html{font:90% 'Trebuchet MS',sans-serif;background-color:#eee}body{display:table;margin-left:auto;margin-right:auto;padding-left:1em;padding-right:1em;color:#444}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.loader{border:16px solid #fff;border-radius:50%;border-top:16px solid #000;padding:0;margin:0 auto 0 auto;width:8em;height:8em;animation:spin 2s linear infinite;display:block}body.loader{margin-top:8em}.loader *{display:none!important}h1{margin:0 0 .2em 0;font-size:180%;padding-bottom:.3em;margin-bottom:.5em;border-bottom:dashed 1px #444}h1 select{padding:0;border:none;background:inherit;font:inherit}a{color:inherit}div>a,li a,p a,td a{color:#3572b0}a,a:visited{text-decoration:none}.button:hover,a:hover{opacity:.8}ul{padding:0;margin:0}li{list-style:none;padding:0 0 0 .3em}table{border-collapse:collapse}td,th{padding:.2em .7em}th a.sort{float:left;margin-right:.1em}input:not([type]),input[type=''],input[type=date],input[type=email],input[type=password],input[type=text],input[type=url],select,textarea{border-radius:3px;border:solid 1px #ddd;padding:.3em .4em;box-shadow:0 1px 1px #eee}input[size]{max-width:70%}div.row div label:after,form label:after{content:':'}form input,form label,form select{vertical-align:middle;margin:.2em .4em .2em 0}.rows{padding:0}.rows form{display:inline-block}.block,.menu,div.row,form.edit,iframe,pre,table.rows,ul.row{border-radius:4px;border-spacing:0;padding:.5em .2em;margin-bottom:.5em;border:solid 1px #ddd;background-color:#fafafa;box-shadow:0 1px 2px #eee}table.rows{border-style:hidden;border-collapse:collapse;box-shadow:0 0 0 1px #ddd;table-layout:fixed}table.rows tr:nth-child(even) td{background-color:#fefefe}div.row div,table.rows td,table.rows th,ul.row li{border-bottom:solid 1px #ddd}div.row div,table.rows tr:last-child td,ul.row li{border-bottom:none}table.rows td,table.rows th{border-right:dashed 1px #ddd}.rows .count{text-align:right}table.rows th{text-align:left}table.rows td{padding:.3em .3em}table.rows.fixed{width:100%}div.row div label,table.rows.fixed td,table.rows.fixed th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}table.rows.fixed th{white-space:normal}table.rows td.delete,table.rows td.view{width:1%;white-space:nowrap}table.rows.fixed th.view{width:2em}table.rows.fixed th.delete{width:2.7em}div.rows{clear:both}div.row{float:left;margin-right:4px;min-width:24%}.nofloat{float:none}div.row div{margin:0;padding:.1em .2em;border-bottom:solid 1px #fff}.rows .row img{height:1.2em}.action-vi.jpegPhoto img{max-width:200px}div.row div.view .button{margin-bottom:5px}div.row div.delete .button{margin-top:5px}div.row div:last-child{border-bottom:none;padding-bottom:0}div.row div.delete label,div.row div.view label{display:none}div.row div.delete,div.row div.view{text-align:center}div.row div label,ul.row li label{padding:.1em .5em .1em 0;min-width:20%;display:inline-block}.button{font:inherit;display:inline-block;text-decoration:none;line-height:1.6em;cursor:pointer;white-space:nowrap;box-sizing:border-box;margin:0 .1em 0 0;padding:0 .3em;border-radius:4px;border:none;color:#3572b0;background-color:#eee;background:linear-gradient(to bottom right,#eee,#ddd);box-shadow:0 1px 1px #bbb}.bottom,.center,.menu,.nav,.rows{clear:both;display:table}.bottom,.buttons,.center,.menu,.nav,.rows,td.button{margin-left:auto;margin-right:auto}div.buttons{text-align:center;margin-top:.5em}form.menu{padding:.5em;background-color:#fafafa;max-width:1024px}form.menu .button.add{float:right;margin-top:.2em}form.menu .criterias{border-top:dashed 1px #ddd;margin-top:.3em;padding-top:.3em;clear:both}form.menu .criterias span.label{border-right:solid 1px #fff;border-radius:3px;margin:0 .2em;white-space:nowrap;float:left}form.menu .criterias span.label:last-child{border-right:none}form.menu select:focus{max-width:auto}form.menu select{max-width:20%}form.menu .criterias input[type=text]{width:4em}div.row label,form.edit .fields label{width:25%;text-align:right;display:inline-block;margin-right:1em;vertical-align:top}div.row .label span,form.edit .fields .label span{width:54%;display:inline-block;text-align:left;vertical-align:middle;margin-top:.2em}form.edit .fields input[size],form.edit .fields select,form.edit .fields textarea{width:65%} +html{font:90% 'Trebuchet MS',sans-serif;background-color:#eee}body{display:table;margin-left:auto;margin-right:auto;padding-left:1em;padding-right:1em;color:#444}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.loader{border:16px solid #fff;border-radius:50%;border-top:16px solid #000;padding:0;margin:0 auto 0 auto;width:8em;height:8em;animation:spin 2s linear infinite;display:block}body.loader{margin-top:8em}.loader *{display:none!important}h1{margin:0 0 .2em 0;font-size:180%;padding-bottom:.3em;margin-bottom:.5em;border-bottom:dashed 1px #444}h1 select{padding:0;border:none;background:inherit;font:inherit}a{color:inherit}div>a,li a,p a,td a{color:#3572b0}a,a:visited{text-decoration:none}.button:hover,a:hover{opacity:.8}ul{padding:0;margin:0}li{list-style:none;padding:0 0 0 .3em}table{border-collapse:collapse}td,th{padding:.2em .7em}th a.sort{float:left;margin-right:.1em}input:not([type]),input[type=''],input[type=date],input[type=email],input[type=password],input[type=text],input[type=url],select,textarea{border-radius:3px;border:solid 1px #ddd;padding:.3em .4em;box-shadow:0 1px 1px #eee}input[size]{max-width:70%}div.row div label:after,form label:after{content:':'}form input,form label,form select{vertical-align:middle;margin:.2em .4em .2em 0}.rows{padding:0}.rows form{display:inline-block}.block,.menu,div.row,form.edit,iframe,pre,table.rows,ul.row{border-radius:4px;border-spacing:0;padding:.5em .2em;margin-bottom:.5em;border:solid 1px #ddd;background-color:#fafafa;box-shadow:0 1px 2px #eee}table.rows{border-style:hidden;border-collapse:collapse;box-shadow:0 0 0 1px #ddd;table-layout:fixed}table.rows tr:nth-child(even) td{background-color:#fefefe}div.row div,table.rows td,table.rows th,ul.row li{border-bottom:solid 1px #ddd}div.row div,table.rows tr:last-child td,ul.row li{border-bottom:none}table.rows td,table.rows th{border-right:dashed 1px #ddd}.rows .count{text-align:right}table.rows th{text-align:left}table.rows td{padding:.3em .3em}table.rows.fixed{width:100%}div.row div label,table.rows.fixed td,table.rows.fixed th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}table.rows.fixed th{white-space:normal}table.rows td.delete,table.rows td.view{width:1%;white-space:nowrap}table.rows.fixed th.view{width:2em}table.rows.fixed th.delete{width:2.7em}div.rows{clear:both}div.row{float:left;margin-right:4px;min-width:24%}.nofloat{float:none}div.row div{margin:0;padding:.1em .2em;border-bottom:solid 1px #fff}.rows .row img{height:1.2em}div.row div.view .button{margin-bottom:5px}div.row div.delete .button{margin-top:5px}div.row div:last-child{border-bottom:none;padding-bottom:0}div.row div.delete label,div.row div.view label{display:none}div.row div.delete,div.row div.view{text-align:center}div.row div label,ul.row li label{padding:.1em .5em .1em 0;min-width:20%;display:inline-block}.button{font:inherit;display:inline-block;text-decoration:none;line-height:1.6em;cursor:pointer;white-space:nowrap;box-sizing:border-box;margin:0 .1em 0 0;padding:0 .3em;border-radius:4px;border:none;color:#3572b0;background-color:#eee;background:linear-gradient(to bottom right,#eee,#ddd);box-shadow:0 1px 1px #bbb}.bottom,.center,.menu,.nav,.rows{clear:both;display:table}.bottom,.buttons,.center,.menu,.nav,.rows,td.button{margin-left:auto;margin-right:auto}div.buttons{text-align:center;margin-top:.5em}form.menu{padding:.5em;background-color:#fafafa;max-width:1024px}form.menu .button.add{float:right;margin-top:.2em}form.menu .criterias{border-top:dashed 1px #ddd;margin-top:.3em;padding-top:.3em;clear:both}form.menu .criterias span.label{border-right:solid 1px #fff;border-radius:3px;margin:0 .2em;white-space:nowrap;float:left}form.menu .criterias span.label:last-child{border-right:none}form.menu select:focus{max-width:auto}form.menu select{max-width:20%}form.menu .criterias input[type=text]{width:4em}div.row label,form.edit .fields label{width:25%;text-align:right;display:inline-block;margin-right:1em;vertical-align:top}div.row .label span,form.edit .fields .label span{width:54%;display:inline-block;text-align:left;vertical-align:middle;margin-top:.2em}form.edit .fields input[size],form.edit .fields select,form.edit .fields textarea{width:65%}form.edit .fields img{max-height:90px} -- 2.47.3