[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Noalyss-commit] [noalyss] 133/151: Correct Manage Table , finish implem
From: |
Dany De Bontridder |
Subject: |
[Noalyss-commit] [noalyss] 133/151: Correct Manage Table , finish implementing |
Date: |
Sat, 4 Feb 2017 17:14:34 +0000 (UTC) |
sparkyx pushed a commit to branch master
in repository noalyss.
commit b386c8915e43e6233ce753453756fa664d922233
Author: Dany De Bontridder <address@hidden>
Date: Sun Jan 22 15:29:29 2017 +0100
Correct Manage Table , finish implementing
---
html/js/managetable.js | 88 ++++---
include/database/class_noalyss_sql.php | 25 +-
include/lib/class_html_input.php | 12 +
include/lib/class_manage_table_sql.php | 412 ++++++++++++++++++++++++++++----
4 files changed, 466 insertions(+), 71 deletions(-)
diff --git a/html/js/managetable.js b/html/js/managetable.js
index 507d6d7..1993ad5 100644
--- a/html/js/managetable.js
+++ b/html/js/managetable.js
@@ -118,20 +118,28 @@ var ManageTable = function (p_table_name)
console.log(req.responseText);
try {
var xml = req.responseXML;
- var status = getElementsByTagName("status");
+ var status = xml.getElementsByTagName("status");
var ctl = xml.getElementsByTagName("ctl");
var html = xml.getElementsByTagName("html");
+ var ctl_row = xml.getElementsByTagName("ctl_row");
if (status.length == 0 || ctl.length == 0 || html.length == 0)
{
throw "Invalid answer " + req.responseText;
}
+ var answer=[];
answer['status'] = getNodeText(status[0]);
+ console.log(answer);
answer['ctl'] = getNodeText(ctl[0]);
+ console.log(answer);
+ answer['ctl_row'] = getNodeText(ctl_row[0]);
+ console.log(answer);
answer['html'] = getNodeText(html[0]);
+ console.log(answer);
return answer;
} catch (e) {
console.log("erreur parsing");
+ console.log(e.message);
throw e;
}
};
@@ -144,68 +152,94 @@ var ManageTable = function (p_table_name)
*/
this.save = function (form_id) {
waiting_box();
- var form = $F(form_id);
- this.param_add(form);
- var here=this;
+ try {
+ this.param['action'] = 'save';
+ console.log(form_id);
+ var form = $(form_id).serialize(true);
+ console.log(form);
+ this.param_add(form);
+ var here=this;
+ } catch (e) {
+ alert(e.message);
+ console.log(e.message);
+ return false;
+ }
new Ajax.Request(this.callback, {
parameters: this.param,
method: "post",
onSuccess: function (req) {
+ try {
/// Display the result of the update
/// or add , the name of the row in the table has the
/// if p_ctl_row does not exist it means it is a new
/// row , otherwise an update
var answer=here.parseXML(req);
+ console.log(answer);
if (answer ['status'] == 'OK') {
- if ($(answer['ctl'])) {
- $(answer['ctl']).update(answer['html']);
+ if ($(answer['ctl_row'])) {
+ $(answer['ctl_row']).update(answer['html']);
} else {
var new_row = new Element("tr");
- new_row.id = answer['ctl'];
+ new_row.id = answer['ctl_row'];
new_row.innerHTML = answer['html'];
- $("tb" + req.control).appendChild(new_row);
+ $("tb"+answer['ctl']).appendChild(new_row);
}
} else {
console.error("Error in save");
throw "error in save";
}
-
-
+ remove_waiting_box();
+ $("dtr").hide();
+ } catch (e) {
+ alert(e.message);
+ console.log(e.message);
+ return false;
+ }
}
- })
+ });
+ return false;
};
/**
address@hidden call the ajax with action delete
address@hidden id (pk) of the data row
*/
- this.delete = function (p_id, p_ctl_row) {
+ this.delete = function (p_id, p_ctl) {
this.param['p_id'] = p_id;
this.param['action'] = 'delete';
+ this.param['ctl'] = p_ctl;
var here=this;
- new Ajax.Request(this.callback, {
- parameters: this.parm,
- method: "get",
- onSuccess: function (req) {
- here.parseXML(req);
- if (here.answer['status'] == 'OK') {
- $(here.answer['ctl']).hide();
- }
+ smoke.confirm("Confirmez ?",
+ function (e)
+ {
+ if (e ) {
+ new Ajax.Request(here.callback, {
+ parameters: here.param,
+ method: "get",
+ onSuccess: function (req) {
+ var answer = here.parseXML(req);
+ if (answer['status'] == 'OK') {
+ var x=answer['ctl_row'];
+ $(x).hide();
+ }
+ }
+ });
}
-
- });
+ }) ;
+
};
/**
address@hidden display a dialog box with the information
* of the data row
address@hidden id (pk) of the data row
+ address@hidden ctl name of the object
*/
- this.input = function (p_id, p_ctl_row) {
+ this.input = function (p_id, p_ctl) {
waiting_box();
this.param['p_id'] = p_id;
this.param['action'] = 'input';
- this.param['ctl_row'] = p_ctl_row;
+ this.param['ctl'] = p_ctl;
var control = this.control;
var here = this;
// display the form to enter data
@@ -225,10 +259,10 @@ var ManageTable = function (p_table_name)
var pos = calcy(250);
$(obj.id).setStyle({position: "absolute", top: pos + 'px',
width: "auto", "margin-left": "10%"});
console.log("set dgb content")
- $(obj.id).update(req.responseText);
+ $(obj.id).update(x['html']);
} catch (e) {
- console.log(e.getMessage());
- smoke.alert("ERREUR " + e.getMessage());
+ console.log(e.message);
+ smoke.alert("ERREUR " + e.message);
}
}
diff --git a/include/database/class_noalyss_sql.php
b/include/database/class_noalyss_sql.php
index d1d5d82..34eb689 100644
--- a/include/database/class_noalyss_sql.php
+++ b/include/database/class_noalyss_sql.php
@@ -110,7 +110,7 @@ abstract class Noalyss_SQL
public function get($p_string)
{
if (array_key_exists($p_string, $this->type)) {
- return $this->$idx;
+ return $this->$p_string;
}
else
throw new Exception(__FILE__.":".__LINE__.$p_string.'Erreur
attribut inexistant '.$p_string);
@@ -309,6 +309,20 @@ abstract class Noalyss_SQL
}
return $this;
}
+ /**
+ * Turn an object (row) into an array
+ * @return array
+ */
+ public function to_array()
+ {
+ $array=array();
+ foreach ($this->name as $key=> $value)
+ {
+
+ $array[$key]=$this->$key;
+ }
+ return $array;
+ }
/**
* @brief retrieve array of object thanks a condition
@@ -373,6 +387,15 @@ abstract class Noalyss_SQL
$count=$this->cn->get_value("select count(*) from
$this->table".$p_where,$p_array);
return $count;
}
+ /**
+ * Count the number of record with the id ,
+ * @return integer 0 doesn't exist , 1 exists
+ */
+ public function exist() {
+ $pk=$this->primary_key;
+ $count=$this->cn->get_value("select count(*) from ".$this->table."
where ".$this->primary_key."=$1",array($this->$pk));
+ return $count;
+ }
}
?>
diff --git a/include/lib/class_html_input.php b/include/lib/class_html_input.php
index 3b64d9a..e5d1e2f 100755
--- a/include/lib/class_html_input.php
+++ b/include/lib/class_html_input.php
@@ -553,6 +553,18 @@ class HtmlInput
return $r;
}
/**
+ * @brief transform a json to hidden
+ * @param json $p_json
+ */
+ static function json_to_hidden($p_json)
+ {
+ $aJson=json_decode($p_json);
+ foreach($aJson as $key=>$value)
+ {
+ echo HtmlInput::hidden($key, $value);
+ }
+ }
+ /**
*transform $_GET data to hidden
address@hidden $array is an of indices
address@hidden HtmlInput::request_to_hidden
diff --git a/include/lib/class_manage_table_sql.php
b/include/lib/class_manage_table_sql.php
index b46a10f..2b93548 100644
--- a/include/lib/class_manage_table_sql.php
+++ b/include/lib/class_manage_table_sql.php
@@ -25,7 +25,33 @@
* @brief Purpose is to propose a librairy to display a table content
* and allow to update and delete row , handle also the ajax call
* thanks the script managetable.js
- * @see ManageTable
+
+ *
+ * Code for ajax , here we see the ajax_input for creating a dg box
+ @code
+ $objet->set_pk($p_id);
+ $objet->set_object_name($objet_name);
+
+ // Set the ajax to call
+ $objet->set_callback("ajax.php");
+
+ // Build the json object for JS
+ $plugin_code=HtmlInput::default_value_request("plugin_code","");
+ $ac=HtmlInput::default_value_request("ac","");
+ $sa=HtmlInput::default_value_request("sa","");
+ $aJson=array("gDossier"=>Dossier::id(),
+ "ac"=>$ac,
+ "plugin_code"=>$plugin_code,
+ "sa"=>$sa,
+ "sb"=>$sb
+ );
+ $json=json_encode($aJson);
+ $objet->param_set($json);
+
+ // Display the box
+ $xml=$objet->ajax_input();
+ @endcode
+ * @see ManageTable.js
*/
class Manage_Table_SQL
{
@@ -34,10 +60,14 @@ class Manage_Table_SQL
private $a_label_displaid; //!< Label of the col. of the datarow
private $a_order; //!< order of the col
private $a_prop; //!< property for each col.
+ private $a_type; //!< Type of the column : date , select ... Only in input
+ private $a_select; //!< Possible value if a_type is a SELECT
private $object_name; //!< Object_name is used for the javascript
private $row_delete; //!< Flag to indicate if rows can be deleted
private $row_update; //!< Flag to indicate if rows can be updated
+ private $row_append; //!< Flag to indicate if rows can be added
private $json_parameter; //!< Default parameter to add (gDossier...)
+
const UPDATABLE=1;
const VISIBLE=2;
@@ -56,25 +86,63 @@ class Manage_Table_SQL
$this->a_label_displaid[$value]=$value;
$this->a_order[$order]=$value;
$this->a_prop[$value]=self::UPDATABLE|self::VISIBLE;
+ $this->a_type[$value]=$this->table->type[$value];
+ $this->a_select[$value]=null;
$order++;
}
$this->object_name=uniqid("tbl");
$this->row_delete=TRUE;
$this->row_update=TRUE;
+ $this->row_append=TRUE;
$this->callback="ajax.php";
$this->json=json_encode(array("gDossier"=>Dossier::id(),
"op"=>"managetable"));
}
-
+
+ /**
+ * @brief set the type of a column , it will change in the input db box ,
the
+ * select must supply an array of possible values [val=> , label=>] with
+ * the variable $this->key_name->a_value
+ * @param $p_key col name
+ * @param $p_type is SELECT NUMERIC TEXT or DATE
+ * @param $p_array if type is SELECT an array is expected
+ */
+ function set_col_type($p_key, $p_value, $p_array=NULL)
+ {
+ if (!isset($this->a_type[$p_key]))
+ throw new Exception("invalid key $p_key");
+
+ if (!in_array($p_value,
+ array("text", "numeric", "date", "select",
"timestamp")))
+ throw new Exception("invalid type $p_value");
+
+ $this->a_type[$p_key]=$p_value;
+ $this->a_select[$p_key]=$p_array;
+ }
+ /**
+ * @brief return the type of a column
+ * @param $p_key col name
+ * @see set_col_type
+ */
+ function get_col_type($p_key)
+ {
+ if (!isset($this->a_type[$p_key]))
+ throw new Exception("invalid key");
+
+ return $this->a_type[$p_key];
+ }
+
/**
* Get the object name
* @details : return the object name , it is useful it
* the javascript will return coded without the create_js_script function
* @see create_js_script
*/
- function get_js_variable () {
+ function get_js_variable()
+ {
return $this->object_name;
}
+
/**
* Set the parameter of the object (gDossier, ac, plugin_code...)
* @detail By default , only gDossier will be set . The default value
@@ -82,9 +150,11 @@ class Manage_Table_SQL
* @param string with json format $p_json
*
*/
- function param_set($p_json) {
- $this->json=$p_json;
+ function param_set($p_json)
+ {
+ $this->json_parameter=$p_json;
}
+
/**
* @brief set the callback function that is passed to javascript
* @param $p_file : callback file by default ajax.php
@@ -95,22 +165,31 @@ class Manage_Table_SQL
}
/**
- * @brief we must create first the javascript if we want to update or
delete
- * row. It is the default script .
+ * @brief we must create first the javascript if we want to update, insert
+ * or delete rows. It is the default script .
*/
function create_js_script()
- {
+ {
echo "
<script>
var {$this->object_name}=new
ManageTable(\"{$this->table->table}\");
{$this->object_name}.set_callback(\"{$this->callback}\");
- {$this->object_name}.param_add({$this->json});
+ {$this->object_name}.param_add({$this->json_parameter});
</script>
";
}
/**
+ * Set the object_name
+ * @param string $p_object_name name of the JS var, used in ajax response
+ */
+ function set_object_name($p_object_name)
+ {
+ $this->object_name=$p_object_name;
+ }
+
+ /**
* @brief set a column of the data row updatable or not
* @param string $p_key data column
* @param bool $p_value Boolean False or True
@@ -120,11 +199,11 @@ class Manage_Table_SQL
if (!$this->a_prop[$p_key])
throw new Exception(__FILE__.":".__LINE__."$p_key invalid index");
if ($p_value==False)
- $this->a_prop[$p_key]=$this->a_prop[$p_key] - self::UPDATABLE;
+ $this->a_prop[$p_key]=$this->a_prop[$p_key]-self::UPDATABLE;
elseif ($p_value==True)
$this->a_prop[$p_key]=$this->a_prop[$p_key]|self::UPDATABLE;
else
- throw new Exception ("set_property_updatable [ $p_value ]
incorrect");
+ throw new Exception("set_property_updatable [ $p_value ]
incorrect");
}
/**
@@ -137,6 +216,37 @@ class Manage_Table_SQL
}
/**
+ * @brief return false if the append of the row is forbidden
+ */
+ function can_append_row()
+ {
+
+ return $this->row_append;
+ }
+
+ /**
+ * @brief Enable or disable the deletion of rows
+ * @param $p_value Boolean : true enable the row to be deleted
+ */
+ function set_delete_row($p_value)
+ {
+ if ($p_value!==True&&$p_value!==False)
+ throw new Exception("Valeur invalide set_delete_row [$p_value]");
+ $this->row_delete=$p_value;
+ }
+
+ /**
+ * @brief Enable or disable the appending of rows
+ * @param $p_value Boolean : true enable the row to be appended
+ */
+ function set_append_row($p_value)
+ {
+ if ($p_value!==True&&$p_value!==False)
+ throw new Exception("Valeur invalide set_append_row [$p_value]");
+ $this->row_append=$p_value;
+ }
+
+ /**
* @brief Enable or disable the updating of rows
* @param $p_value Boolean : true enable the row to be updated
*/
@@ -156,24 +266,14 @@ class Manage_Table_SQL
}
/**
- * @brief Enable or disable the deleting of rows
- * @param $p_value Boolean : true enable the row to be deleted
- */
- function set_delete_row($p_value)
- {
- if ($p_value!==True&&$p_value!==False)
- throw new Exception("Valeur invalide set_delete_row [$p_value]");
- $this->row_delete=$p_value;
- }
-
- /**
* @brief return True if the column is updatable otherwise false
* @param $p_key data column
*/
function get_property_updatable($p_key)
{
- $val= $this->a_prop[$p_key] & self::UPDATABLE ;
- if ( $val == self::UPDATABLE) return true;
+ $val=$this->a_prop[$p_key]&self::UPDATABLE;
+ if ($val==self::UPDATABLE)
+ return true;
return false;
}
@@ -187,11 +287,11 @@ class Manage_Table_SQL
if (!$this->a_prop[$p_key])
throw new Exception(__FILE__.":".__LINE__."$p_key invalid index");
if ($p_value==False)
- $this->a_prop[$p_key]=$this->a_prop[$p_key] -self::VISIBLE;
+ $this->a_prop[$p_key]=$this->a_prop[$p_key]-self::VISIBLE;
elseif ($p_value==True)
$this->a_prop[$p_key]=$this->a_prop[$p_key]|self::VISIBLE;
else
- throw new Exception ("set_property_updatable [ $p_value ]
incorrect");
+ throw new Exception("set_property_updatable [ $p_value ]
incorrect");
}
/**
@@ -200,8 +300,9 @@ class Manage_Table_SQL
*/
function get_property_visible($p_key)
{
- $val = $this->a_prop[$p_key] & self::VISIBLE ;
- if ( $val === self::VISIBLE) return true;
+ $val=$this->a_prop[$p_key]&self::VISIBLE;
+ if ($val===self::VISIBLE)
+ return true;
return false;
}
@@ -286,8 +387,25 @@ class Manage_Table_SQL
*/
function display_table()
{
- $ret=$this->table->seek();
+ $ret=$this->table->seek("order by ".$this->table->primary_key);
$nb=Database::num_row($ret);
+ if ($this->can_append_row()==TRUE)
+ {
+ echo HtmlInput::button_action(_("Ajout"),
+ sprintf("%s.input('-1','%s')", $this->object_name,
+ $this->object_name));
+ }
+ $nb_order=count($this->a_order);
+ $virg=""; $result="";
+ for ($e=0; $e<$nb_order; $e++)
+ {
+ if ($this->get_property_visible($this->a_order[$e])==TRUE)
+ {
+ $result.=$virg."$e";
+ $virg=",";
+ }
+ }
+ echo HtmlInput::filter_table("tb".$this->object_name, $result, 1);
printf('<table class="result" id="tb%s">', $this->object_name);
for ($i=0; $i<$nb; $i++)
{
@@ -298,6 +416,13 @@ class Manage_Table_SQL
$row=Database::fetch_array($ret, $i);
$this->display_row($row);
}
+ echo "</table>";
+ if ($this->can_append_row()==TRUE)
+ {
+ echo HtmlInput::button_action(_("Ajout"),
+ sprintf("%s.input('-1','%s')", $this->object_name,
+ $this->object_name));
+ }
}
/**
@@ -313,7 +438,7 @@ class Manage_Table_SQL
{
$key=$this->a_order[$i];
-
+
if ($this->get_property_visible($key)==true)
echo th($this->a_label_displaid[$key]);
}
@@ -326,6 +451,7 @@ class Manage_Table_SQL
function set_pk($p_id)
{
$this->table->set_pk_value($p_id);
+ $this->table->load();
}
/**
@@ -338,7 +464,7 @@ class Manage_Table_SQL
{
$v=HtmlInput::default_value_request($this->a_order[$i], "");
$key=$this->a_order[$i];
- $this->table->$key=$v;
+ $this->table->$key=strip_tags($v);
}
}
@@ -364,8 +490,8 @@ class Manage_Table_SQL
echo "<td>";
if ($this->can_update_row())
{
- $js=sprintf("onclick=\"%s.input('%s','%s');\"",
-
$this->object_name,$p_row[$this->table->primary_key],$this->object_name
+ $js=sprintf("onclick=\"%s.input('%s','%s');\"", $this->object_name,
+ $p_row[$this->table->primary_key], $this->object_name
);
echo HtmlInput::anchor(_("Modifier"), "", $js);
}
@@ -373,8 +499,8 @@ class Manage_Table_SQL
echo "<td>";
if ($this->can_delete_row())
{
- $js=sprintf("onclick=\"%s.delete('%s','%s');\"",
- $this->object_name,$p_row[$this->table->primary_key],
$this->object_name
+ $js=sprintf("onclick=\"%s.delete('%s','%s');\"",
$this->object_name,
+ $p_row[$this->table->primary_key], $this->object_name
);
echo HtmlInput::anchor(_("Effacer"), "", $js);
}
@@ -390,24 +516,175 @@ class Manage_Table_SQL
{
$nb_order=count($this->a_order);
echo "<table>";
- echo "<tr>";
for ($i=0; $i<$nb_order; $i++)
{
+ echo "<tr>";
$key=$this->a_order[$i];
$label=$this->a_label_displaid[$key];
$value=$this->table->get($key);
- // Label
- echo "<td> {$label} </td>";
- printf('<input type="text" label="%s" value="%s" name="%s"
id="%s">',
- $label, $value, $key, $key
- );
+ if ($this->get_property_visible($key)===TRUE)
+ {
+ // Label
+ echo "<td> {$label} </td>";
+
+ if ($this->get_property_updatable($key)==TRUE)
+ {
+ echo "<td>";
+ if ($this->a_type[$key]=="select")
+ {
+ $select = new ISelect($key);
+ $select->value=$this->a_select[$key];
+ $select->selected=$value;
+ echo $select->input();
+ }
+ else
+ {
+ $text=new IText($key);
+ $text->value=$value;
+ $min_size=(strlen($value)<30)?30:strlen($value)+5;
+ $text->size=$min_size;
+ echo $text->input();
+ /* printf('<input class="input_text" type="text"
label="%s" value="%s" name="%s" id="%s">',
+ $label, $value, $key, $key
+ );*/
+ }
+ echo "</td>";
+ }
+ else
+ {
+ printf('<td>%s %s</td>', h($value),
+ HtmlInput::hidden($key, $value)
+ );
+ }
+ }
+ echo "</tr>";
}
- echo "</tr>";
echo "</table>";
}
/**
+ * @brief Save the record from Request into the DB and returns an XML
+ * to update the Html Element
+ * @return \DOMDocument
+ */
+ function ajax_save()
+ {
+
+ $status="NOK";
+ $xml=new DOMDocument('1.0', "UTF-8");
+ try
+ {
+ // fill up object with $_REQUEST
+ $this->from_request();
+ // save the object
+ $this->save();
+ // compose the answer
+ $status="OK";
+ $s1=$xml->createElement("status", $status);
+ $ctl=$this->object_name."_".$this->table->get_pk_value();
+ $s2=$xml->createElement("ctl_row", $ctl);
+ $s4=$xml->createElement("ctl", $this->object_name);
+ ob_start();
+ $this->table->load();
+ $array=$this->table->to_array();
+ $this->display_row($array);
+ $html=ob_get_contents();
+ ob_end_clean();
+ $s3=$xml->createElement("html", html_entity_decode($html));
+
+ $root=$xml->createElement("data");
+ $root->appendChild($s1);
+ $root->appendChild($s2);
+ $root->appendChild($s3);
+ $root->appendChild($s4);
+ }
+ catch (Exception $ex)
+ {
+ $s1=$xml->createElement("status", "NOK");
+ $s2=$xml->createElement("ctl_row",
+ $this->object_name+"_"+$this->table->get_pk_value());
+ $s4=$xml->createElement("ctl", $this->object_name);
+ $s3=$xml->createElement("html", $ex->getTraceAsString());
+ $root=$xml->createElement("data");
+ $root->appendChild($s1);
+ $root->appendChild($s2);
+ $root->appendChild($s3);
+ $root->appendChild($s4);
+ }
+ $xml->appendChild($root);
+ return $xml;
+ }
+
+ /**
+ * @brief send an xml with input of the object, create an xml answer.
+ * XML Tag
+ * - status : OK , NOK
+ * - ctl : Dom id to update
+ * - content : Html answer
+ * @return DomDocument
+ */
+ function ajax_input()
+ {
+ $xml=new DOMDocument("1.0", "UTF-8");
+ $xml->createElement("status", "OK");
+ try
+ {
+ $status="OK";
+ ob_start();
+ echo HtmlInput::title_box("Donnée", "dtr");
+ printf('<form id="frm%s_%s" method="POST"
onsubmit="%s.save(\'frm%s_%s\');return false;">',
+ $this->object_name, $this->table->get_pk_value(),
+ $this->object_name, $this->object_name,
+ $this->table->get_pk_value());
+ $this->input();
+ // JSON param to hidden
+ echo HtmlInput::json_to_hidden($this->json_parameter);
+ echo HtmlInput::hidden("p_id", $this->table->get_pk_value());
+ // button Submit and cancel
+ $close=sprintf("\$('%s').remove()", "dtr");
+ echo '<ul class="aligned-block">',
+ '<li>',
+ HtmlInput::submit('update', _("OK")),
+ '</li>',
+ '<li>',
+ HtmlInput::button_action(_("Cancel"), $close,"","smallbutton"),
+ '</li>',
+ '</ul>';
+ echo "</form>";
+
+ $html=ob_get_contents();
+ ob_end_clean();
+
+ $s1=$xml->createElement("status", $status);
+ $ctl=$this->object_name."_".$this->table->get_pk_value();
+ $s2=$xml->createElement("ctl_row", $ctl);
+ $s4=$xml->createElement("ctl", $this->object_name);
+ $s3=$xml->createElement("html", html_entity_decode($html));
+ $root=$xml->createElement("data");
+ $root->appendChild($s1);
+ $root->appendChild($s2);
+ $root->appendChild($s3);
+ $root->appendChild($s4);
+ }
+ catch (Exception $ex)
+ {
+ $s1=$xml->createElement("status", "NOK");
+ $s2=$xml->createElement("ctl", $this->object_name);
+ $s2=$xml->createElement("ctl_row",
+ $this->object_name+"_"+$this->table->get_pk_value());
+ $s3=$xml->createElement("html", $ex->getTraceAsString());
+ $root=$xml->createElement("data");
+ $root->appendChild($s1);
+ $root->appendChild($s2);
+ $root->appendChild($s3);
+ $root->appendChild($s4);
+ }
+ $xml->appendChild($root);
+ return $xml;
+ }
+
+ /**
* @brief delete a datarow , the id must be have set before
* @see from_request
*/
@@ -417,13 +694,62 @@ class Manage_Table_SQL
}
/**
+ * Delete a record and return an XML answer for ajax
+ * @return \DOMDocument
+ */
+ function ajax_delete()
+ {
+ $status="NOK";
+ $xml=new DOMDocument('1.0', "UTF-8");
+ try
+ {
+ $this->table->delete();
+ $status="OK";
+ $s1=$xml->createElement("status", $status);
+ $ctl=$this->object_name."_".$this->table->get_pk_value();
+ $s2=$xml->createElement("ctl_row", $ctl);
+ $s3=$xml->createElement("html", _("Effacé"));
+ $s4=$xml->createElement("ctl", $this->object_name);
+
+ $root=$xml->createElement("data");
+ $root->appendChild($s1);
+ $root->appendChild($s2);
+ $root->appendChild($s3);
+ $root->appendChild($s4);
+ }
+ catch (Exception $ex)
+ {
+ $s1=$xml->createElement("status", "NOK");
+ $s2=$xml->createElement("ctl",
+ $this->object_name."_".$this->table->get_pk_value());
+ $s3=$xml->createElement("html", $ex->getTraceAsString());
+ $s4=$xml->createElement("ctl", $this->object_name);
+
+ $root=$xml->createElement("data");
+ $root->appendChild($s1);
+ $root->appendChild($s2);
+ $root->appendChild($s3);
+ $root->appendChild($s4);
+ }
+ $xml->appendChild($root);
+ return $xml;
+ }
+
+ /**
* @brief save the Noalyss_SQL Object
* The noalyss_SQL is not empty
* @see from_request
*/
function save()
{
- $this->table->save();
+ if ($this->table->exist()==0)
+ {
+ $this->table->insert();
+ }
+ else
+ {
+ $this->table->update();
+ }
}
/**
- [Noalyss-commit] [noalyss] 144/151: Merge branch 'master' of ns3:/srv/git/noalyss, (continued)
- [Noalyss-commit] [noalyss] 144/151: Merge branch 'master' of ns3:/srv/git/noalyss, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 09/151: Experiment less, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 123/151: Test ManageTable ; fix parseXML function, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 126/151: Correct js : this of the object is not callable from a nested function, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 135/151: Fix bug : duplicate doesn't take in account the TVA_ID, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 148/151: Missing col in ANC_TABLE, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 111/151: Improve Manage_Table_SQL : add functions for javascript , update or visible flag ..., Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 147/151: Return must be after throw, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 141/151: ManageTable colorize the row in alternate, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 150/151: Improve Doxygen setting, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 133/151: Correct Manage Table , finish implementing,
Dany De Bontridder <=
- [Noalyss-commit] [noalyss] 03/151: CSS : Update style mobile, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 57/151: CSS : Update style mobile, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 117/151: Indent properly, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 89/151: remove debug info, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 114/151: Move class_table_sql to lib , since it is usable without Noalyss, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 127/151: Add the noalyss version in the info page, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 121/151: Fix several issue in JS, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 98/151: Correct simul.py remove old file, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 146/151: Merge branch 'master' of ns3:/srv/git/noalyss, Dany De Bontridder, 2017/02/04
- [Noalyss-commit] [noalyss] 142/151: Doc : complete documentation, Dany De Bontridder, 2017/02/04