BUG 7402 "ACTUALIZACION DE PMTABLES EN BASE DE DATOS" Solved!

- verification & validation for column name defined twice or more added
- fixed IE compaitbility for variable named length (use it cause problems in IE)
- fixed slashed added on json value posted on a ajax request, soldev adding stripslashed on server side
This commit is contained in:
Erik Amaru Ortiz
2011-08-09 15:44:55 -04:00
parent edb1d55ae4
commit 34e32f49ad
4 changed files with 52 additions and 23 deletions

View File

@@ -334,7 +334,7 @@ class pmTablesProxy extends HttpProxyController
public function delete($httpData) public function delete($httpData)
{ {
G::LoadClass('reportTables'); G::LoadClass('reportTables');
$rows = G::json_decode($httpData->rows); $rows = G::json_decode(stripslashes($httpData->rows));
$rp = new reportTables(); $rp = new reportTables();
$at = new AdditionalTables(); $at = new AdditionalTables();
@@ -403,7 +403,7 @@ class pmTablesProxy extends HttpProxyController
*/ */
public function dataCreate($httpData) public function dataCreate($httpData)
{ {
$rows = G::json_decode($httpData->rows); $rows = G::json_decode(stripslashes($httpData->rows));
require_once 'classes/model/AdditionalTables.php'; require_once 'classes/model/AdditionalTables.php';
$oAdditionalTables = new AdditionalTables(); $oAdditionalTables = new AdditionalTables();
@@ -495,7 +495,7 @@ class pmTablesProxy extends HttpProxyController
require_once $sPath . $this->className . '.php'; require_once $sPath . $this->className . '.php';
$rows = G::json_decode($httpData->rows); $rows = G::json_decode(stripslashes($httpData->rows));
if (is_array($rows)) { if (is_array($rows)) {
foreach($rows as $row) { foreach($rows as $row) {
@@ -791,8 +791,8 @@ class pmTablesProxy extends HttpProxyController
{ {
require_once 'classes/model/AdditionalTables.php'; require_once 'classes/model/AdditionalTables.php';
$tablesToExport = json_decode(stripslashes($httpData->rows)); $tablesToExport = G::json_decode(stripslashes($httpData->rows));
try{ try{
G::LoadCLass('net'); G::LoadCLass('net');
$net = new NET(G::getIpAddress()); $net = new NET(G::getIpAddress());

View File

@@ -291,13 +291,13 @@ NewPMTableRow = function(){
} }
var row = new PMRow(new props); var row = new PMRow(new props);
length = infoGrid.getStore().data.length; len = infoGrid.getStore().data.length;
editor.stopEditing(); editor.stopEditing();
store.insert(length, row); store.insert(len, row);
infoGrid.getView().refresh(); infoGrid.getView().refresh();
infoGrid.getSelectionModel().selectRow(length); infoGrid.getSelectionModel().selectRow(len);
editor.startEditing(length); editor.startEditing(len);
}; };
//Load PM Table Edition Row Form //Load PM Table Edition Row Form

View File

@@ -280,10 +280,12 @@ Ext.onReady(function(){
}, },
afteredit: function(roweditor, rowIndex) { afteredit: function(roweditor, rowIndex) {
row = assignedGrid.getSelectionModel().getSelected(); row = assignedGrid.getSelectionModel().getSelected();
//if a column was set as PK so can't be null
if (row.get('field_key') == true) { if (row.get('field_key') == true) {
row.data.field_null = false; row.data.field_null = false;
row.commit();
} }
row.commit();
} }
}); });
@@ -616,44 +618,50 @@ function createReportTable()
//validate columns count //validate columns count
if(allRows.getCount() == 0) { if(allRows.getCount() == 0) {
PMExt.error(_('ID_ERROR'), 'Set columns for this Report Table please.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT7'));
return false; return false;
} }
var fieldsNames = new Array();
for (var r=0; r < allRows.getCount(); r++) { for (var i = 0; i < allRows.getCount(); i++) {
row = allRows.getAt(r); row = allRows.getAt(i);
if (in_array(row.data['field_name'], fieldsNames)) {
PMExt.error(_('ID_ERROR'),_('ID_PMTABLES_ALERT1') + ' <b>' + row.data['field_name']+'</b>');
return false;
}
// validate that fieldname is not empty // validate that fieldname is not empty
if(row.data['field_name'].trim() == '') { if(row.data['field_name'].trim() == '') {
PMExt.error(_('ID_ERROR'), 'Field Name for all columns is required.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT2'));
return false; return false;
} }
if(row.data['field_label'].trim() == '') { if(row.data['field_label'].trim() == '') {
PMExt.error(_('ID_ERROR'), 'Field Label for all columns is required.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT3'));
return false; return false;
} }
if (row.data['field_type'] == '') { if (row.data['field_type'] == '') {
PMExt.error(_('ID_ERROR'), 'Set a field type for <b>'+row.data['field_name']+'</b> please.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT4') + ' <b>'+row.data['field_name']+'</b>');
return false; return false;
} }
// validate field size for varchar & int column types // validate field size for varchar & int column types
if ((row.data['field_type'] == 'VARCHAR' || row.data['field_type'] == 'INT') && row.data['field_size'] == '') { if ((row.data['field_type'] == 'VARCHAR' || row.data['field_type'] == 'INT') && row.data['field_size'] == '') {
PMExt.error(_('ID_ERROR'), 'Set a field size for '+row.data['field_name']+' ('+row.data['field_type']+') please.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT5')+' '+row.data['field_name']+' ('+row.data['field_type']+').');
return false; return false;
} }
if (row.data['field_key']) { if (row.data['field_key']) {
hasSomePrimaryKey = true; hasSomePrimaryKey = true;
} }
fieldsNames.push(row.data['field_name']);
columns.push(row.data); columns.push(row.data);
} }
if (!hasSomePrimaryKey) { if (!hasSomePrimaryKey) {
PMExt.error(_('ID_ERROR'), 'You need set one column at least as Primary Key.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT6'));
return; return;
} }
@@ -912,3 +920,11 @@ function loadTableRowsFromArray(records)
store.add(row); store.add(row);
} }
} }
function in_array(needle, haystack) {
for(var i in haystack) {
if(haystack[i] == needle) return true;
}
return false;
}

View File

@@ -892,27 +892,33 @@ function createReportTable()
//validate columns count //validate columns count
if(allRows.getCount() == 0) { if(allRows.getCount() == 0) {
PMExt.error(_('ID_ERROR'), 'Set columns for this Report Table please.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT7'));
return false; return false;
} }
var fieldsNames = new Array();
for (var r=0; r < allRows.getCount(); r++) { for (var r=0; r < allRows.getCount(); r++) {
row = allRows.getAt(r); row = allRows.getAt(r);
if (in_array(row.data['field_name'], fieldsNames)) {
PMExt.error(_('ID_ERROR'),_('ID_PMTABLES_ALERT1') + ' <b>' + row.data['field_name']+'</b>');
return false;
}
// validate that fieldname is not empty // validate that fieldname is not empty
if(row.data['field_name'].trim() == '') { if(row.data['field_name'].trim() == '') {
PMExt.error(_('ID_ERROR'), 'Field Name for "'+row.data['field_dyn']+'" is required.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT2'));
return false; return false;
} }
if(row.data['field_label'].trim() == '') { if(row.data['field_label'].trim() == '') {
PMExt.error(_('ID_ERROR'), 'Field Label for all columns is required.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT3'));
return false; return false;
} }
// validate field size for varchar & int column types // validate field size for varchar & int column types
if ((row.data['field_type'] == 'VARCHAR' || row.data['field_type'] == 'INT') && row.data['field_size'] == '') { if ((row.data['field_type'] == 'VARCHAR' || row.data['field_type'] == 'INT') && row.data['field_size'] == '') {
PMExt.error(_('ID_ERROR'), 'Set a field size for '+row.data['field_name']+' ('+row.data['field_type']+') please.'); PMExt.error(_('ID_ERROR'), _('ID_PMTABLES_ALERT5')+' '+row.data['field_name']+' ('+row.data['field_type']+').');
return false; return false;
} }
@@ -1305,4 +1311,11 @@ function verifyTableLimit()
return false; return false;
} }
return true; return true;
}
function in_array(needle, haystack) {
for(var i in haystack) {
if(haystack[i] == needle) return true;
}
return false;
} }