BUG 8775 Add validation to prevent deletion of tasks... SOLVED
- Problem, a task is deleted if you have or not cases - Added validation, that prevents a task is deleted if you have cases
This commit is contained in:
@@ -1511,22 +1511,48 @@ var processmap=function(){
|
|||||||
},args:index})},
|
},args:index})},
|
||||||
{image:"/images/delete.png",text:G_STRINGS.ID_PROCESSMAP_DELETE_TASK,launch:this.parent.closure({instance:this,method:function(index){
|
{image:"/images/delete.png",text:G_STRINGS.ID_PROCESSMAP_DELETE_TASK,launch:this.parent.closure({instance:this,method:function(index){
|
||||||
var data = this.data.db.task[index];
|
var data = this.data.db.task[index];
|
||||||
new this.parent.module.app.confirm().make({
|
|
||||||
label:G_STRINGS.ID_PROCESSMAP_CONFIRM_DELETE_TASK+" "+ data.label,
|
var r = new leimnud.module.rpc.xmlhttp({
|
||||||
action:function()
|
url: this.options.dataServer,
|
||||||
{
|
args: "action=taskCases&data=" + {
|
||||||
data.object.drag.flush();
|
task_uid: data.uid
|
||||||
this.dropables.derivation.unregister(data.object.dropIndex);
|
}.toJSONString()
|
||||||
this.data.render.deleteDerivation(data.uid,true);
|
|
||||||
this.parent.dom.remove(data.object.elements);
|
|
||||||
var r = new leimnud.module.rpc.xmlhttp({
|
|
||||||
url:this.options.dataServer,
|
|
||||||
args:"action=deleteTask&data="+{pro_uid:this.options.uid,tas_uid:data.uid}.toJSONString()
|
|
||||||
});
|
|
||||||
r.make();
|
|
||||||
}.extend(this)
|
|
||||||
});
|
});
|
||||||
|
r.callback = function (rpc) {
|
||||||
|
var rs = rpc.xmlhttp.responseText.parseJSON();
|
||||||
|
var casesNumRec = rs.casesNumRec;
|
||||||
|
|
||||||
|
if (casesNumRec == 0) {
|
||||||
|
new this.parent.module.app.confirm().make({
|
||||||
|
label: G_STRINGS.ID_PROCESSMAP_CONFIRM_DELETE_TASK + " " + data.label,
|
||||||
|
action: function () {
|
||||||
|
data.object.drag.flush();
|
||||||
|
this.dropables.derivation.unregister(data.object.dropIndex);
|
||||||
|
this.data.render.deleteDerivation(data.uid, true);
|
||||||
|
this.parent.dom.remove(data.object.elements);
|
||||||
|
var r2 = new leimnud.module.rpc.xmlhttp({
|
||||||
|
url: this.options.dataServer,
|
||||||
|
args: "action=deleteTask&data=" + {
|
||||||
|
pro_uid: this.options.uid,
|
||||||
|
tas_uid: data.uid
|
||||||
|
}.toJSONString()
|
||||||
|
});
|
||||||
|
r2.make();
|
||||||
|
}.extend(this)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var msg = _("ID_TASK_CANT_DELETE");
|
||||||
|
msg = msg.replace("{0}", data.label);
|
||||||
|
msg = msg.replace("{1}", casesNumRec);
|
||||||
|
|
||||||
|
new this.parent.module.app.info().make({label: msg});
|
||||||
|
}
|
||||||
|
}.extend(this);
|
||||||
|
r.make();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(confirm(G_STRINGS.ID_PROCESSMAP_CONFIRM_DELETE_TASK+" "+ data.label))
|
if(confirm(G_STRINGS.ID_PROCESSMAP_CONFIRM_DELETE_TASK+" "+ data.label))
|
||||||
{
|
{
|
||||||
data.object.drag.flush();
|
data.object.drag.flush();
|
||||||
|
|||||||
@@ -501,6 +501,40 @@ try {
|
|||||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_FileEditCreateEmpty', '');
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_FileEditCreateEmpty', '');
|
||||||
G::RenderPage('publish', 'raw');
|
G::RenderPage('publish', 'raw');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "taskCases":
|
||||||
|
require_once ("classes/model/Application.php");
|
||||||
|
require_once ("classes/model/AppDelegation.php");
|
||||||
|
require_once ("classes/model/AppDelay.php");
|
||||||
|
|
||||||
|
$criteria = new Criteria("workflow");
|
||||||
|
$criteria->addSelectColumn("COUNT(DISTINCT APPLICATION.APP_UID)");
|
||||||
|
|
||||||
|
$criteria->addJoin(ApplicationPeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN);
|
||||||
|
$criteria->addJoin(ApplicationPeer::APP_UID, AppDelayPeer::APP_UID, Criteria::LEFT_JOIN);
|
||||||
|
|
||||||
|
$criteria->add(AppDelegationPeer::TAS_UID, $oData->task_uid);
|
||||||
|
|
||||||
|
$criteria->add(
|
||||||
|
$criteria->getNewCriterion(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL)->addOr(
|
||||||
|
$criteria->getNewCriterion(AppDelayPeer::APP_DELAY_UID, null, Criteria::ISNOTNULL)->addAnd(
|
||||||
|
$criteria->getNewCriterion(AppDelayPeer::APP_TYPE, array("REASSIGN", "ADHOC", "CANCEL"), Criteria::NOT_IN))->addAnd(
|
||||||
|
$criteria->getNewCriterion(AppDelayPeer::APP_DISABLE_ACTION_USER, null, Criteria::ISNULL)->addOr(
|
||||||
|
$criteria->getNewCriterion(AppDelayPeer::APP_DISABLE_ACTION_USER, 0))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$rs = ApplicationPeer::doSelectRS($criteria);
|
||||||
|
|
||||||
|
$rs->next();
|
||||||
|
$row = $rs->getRow();
|
||||||
|
|
||||||
|
$response->casesNumRec = intval($row[0]);
|
||||||
|
|
||||||
|
$json = new Services_JSON();
|
||||||
|
$sOutput = $json->encode($response);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if( isset($sOutput) )
|
if( isset($sOutput) )
|
||||||
die($sOutput);
|
die($sOutput);
|
||||||
|
|||||||
Reference in New Issue
Block a user