issue 1533, fixed a bug related move document extra var

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@10297 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
flyskyko 2012-03-02 13:29:06 +00:00
parent 0877657962
commit 70ac43c24d
4 changed files with 103 additions and 3 deletions

View file

@ -707,10 +707,41 @@ class documentController extends document {
if(!$module_srl) return new Object(-1,'msg_invalid_request');
$obj->module_srl = $module_srl;
if(!is_null($var_idx)) $obj->var_idx = $var_idx;
$output = executeQuery('document.deleteDocumentExtraKeys', $obj);
if(!$output->toBool()) return $output;
return executeQuery('document.deleteDocumentExtraVars', $obj);
$oDB = DB::getInstance();
$oDB->begin();
$output = $oDB->executeQuery('document.deleteDocumentExtraKeys', $obj);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
$output = $oDB->executeQuery('document.updateDocumentExtraKeyIdxOrder', $obj);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
$output = executeQuery('document.deleteDocumentExtraVars', $obj);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
$output = $oDB->executeQuery('document.updateDocumentExtraVarIdxOrder', $obj);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
$oDB->commit();
return new Object();
}
/**

View file

@ -417,6 +417,51 @@
$obj->sort_index = 'var_idx';
$obj->order = 'asc';
$output = executeQueryArray('document.getDocumentExtraKeys', $obj);
// correcting index order
$isFixed = FALSE;
if(is_array($output->data))
{
$prevIdx = 0;
foreach($output->data as $no => $value)
{
// case first
if($prevIdx == 0 && $value->idx != 1)
{
$args = new stdClass();
$args->module_srl = $module_srl;
$args->var_idx = $value->idx;
$args->new_idx = 1;
executeQuery('document.updateDocumentExtraKeyIdx', $args);
executeQuery('document.updateDocumentExtraVarIdx', $args);
$prevIdx = 1;
$isFixed = TRUE;
continue;
}
// case others
if($prevIdx > 0 && $prevIdx + 1 != $value->idx)
{
$args = new stdClass();
$args->module_srl = $module_srl;
$args->var_idx = $value->idx;
$args->new_idx = $prevIdx + 1;
executeQuery('document.updateDocumentExtraKeyIdx', $args);
executeQuery('document.updateDocumentExtraVarIdx', $args);
$prevIdx += 1;
$isFixed = TRUE;
continue;
}
$prevIdx = $value->idx;
}
}
if($isFixed)
{
$output = executeQueryArray('document.getDocumentExtraKeys', $obj);
}
$oExtraVar->setExtraVarKeys($output->data);
$keys = $oExtraVar->getExtraVars();
if(!$keys) $keys = array();

View file

@ -0,0 +1,12 @@
<query id="updateDocumentExtraKeyIdxOrder" action="update">
<tables>
<table name="document_extra_keys" />
</tables>
<columns>
<column name="var_idx" default="minus(1)" />
</columns>
<conditions>
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
<condition operation="excess" column="var_idx" var="var_idx" filter="number" notnull="notnull" pipe="and" />
</conditions>
</query>

View file

@ -0,0 +1,12 @@
<query id="updateDocumentExtraVarIdxOrder" action="update">
<tables>
<table name="document_extra_vars" />
</tables>
<columns>
<column name="var_idx" default="minus(1)" />
</columns>
<conditions>
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
<condition operation="excess" column="var_idx" var="var_idx" filter="number" notnull="notnull" pipe="and" />
</conditions>
</query>