[Rt-commit] rt branch, 4.6/lifecycle-ui-dev, repushed
Craig Kaiser
craig at bestpractical.com
Fri Dec 13 11:40:28 EST 2019
The branch 4.6/lifecycle-ui-dev was deleted and repushed:
was 0d318bb137762e6488b0ac756839508b4ab27d03
now 2c4ce14695d6cf578016521620b02a4f0b7237d5
1: 0d318bb137 ! 1: 2c4ce14695 Core Lifecycle-UI
@@ -210,6 +210,12 @@
@_,
);
+ $args{'Type'} = $args{'Type'} // 'ticket';
++
++ my $needs_update = RT->System->LifecycleCacheNeedsUpdate;
++ if ($needs_update > $lifecycle_cache_time) {
++ $self->FillCache();
++ $lifecycle_cache_time = $needs_update;
++ }
- if (defined $args{Name} and exists $LIFECYCLES_CACHE{ $args{Name} }) {
- $self->{'name'} = $args{Name};
@@ -223,12 +229,6 @@
- $self->{'type'} = $args{Type};
- } else {
- return undef;
-+ my $needs_update = RT->System->LifecycleCacheNeedsUpdate;
-+ if ($needs_update > $lifecycle_cache_time) {
-+ $self->FillCache();
-+ $lifecycle_cache_time = $needs_update;
-+ }
-+
+ my $load_class = sub {
+ if (defined $args{Name} and exists $LIFECYCLES_CACHE{ $args{Name} }) {
+ $self->{'name'} = $args{Name};
@@ -460,6 +460,26 @@
+ %{$args{NewConfig}}
+ );
+
++ # Remove any stale status mapppings that no longer apply
++ for my $mapname ( keys %{$lifecycles->{__maps__}} ) {
++ if ( $mapname =~ /($name) ->|-> ($name)/ ) {
++ my $left = $1;
++ my $right = $2;
++ next unless $right or $left;
++
++ foreach my $mapping ( $lifecycles->{__maps__}->{$mapname} ) {
++ next unless scalar keys %{$mapping};
++
++ my ($left_status, $right_status) = ((keys %{$mapping})[0], (values %{$mapping})[0]);
++ my $status = $left ? $left_status : $right_status;
++
++ unless ( grep{ $status eq $_ } keys %{$lifecycles->{$name}->{'transitions'}} ) {
++ RT::Logger->error("Deleting mapping: $left_status -> $right_status, for status: $status" );
++ delete $lifecycles->{'__maps__'}{$mapname};
++ }
++ }
++ }
++ }
+ my ($ok, $msg) = $class->_SaveLifecycles($lifecycles, $CurrentUser);
+ return ($ok, $msg) if !$ok;
+
@@ -1554,6 +1574,7 @@
+
+.lifeycycle-ui-edit-node {
+ position: absolute;
++ z-index: 99;
+}
+
+.svg-container {
@@ -1968,7 +1989,7 @@
+ UpdateNode(element) {
+ var self = this;
+ const nodeInput = jQuery("#lifeycycle-ui-edit-node");
-+ nodeInput.css( {position:"absolute", top:event.pageY - 235, left: event.pageX});
++ nodeInput.css( {position:"absolute", top:event.pageY - 275, left: event.pageX + 15});
+
+ var list = document.getElementById('lifeycycle-ui-edit-node').querySelectorAll('input, select');
+
@@ -2287,16 +2308,40 @@
+ var index = this.nodes.findIndex(x => x.id == d.id);
+ this.DeleteLinksForNode(this.nodes[index]);
+
++ self.CheckRights(d);
++ self.CheckDefaults(d);
++ self.CheckActions(d);
++
+ this.nodes.splice(index, 1);
-+
-+ // defaults
++ }
++
++ LinksForNode (node) {
++ return this.links.filter(link => {
++ if ( link.source.id === node.id ) {
++ return true;
++ }
++ else if ( link.target.id === node.id && link.start ) {
++ return true;
++ }
++ else {
++ return false;
++ }
++ });
++ }
++
++ CheckDefaults(d) {
++ var self = this;
++
+ jQuery.each(self.config.defaults, function (key, value) {
+ if (value === d.name) {
+ delete self.config.defaults[key];
+ }
+ });
-+
-+ // rights
++ }
++
++ CheckRights(d) {
++ var self = this;
++
+ jQuery.each(self.config.rights, function(key, value) {
+ var pattern = d.name+" ->|-> "+d.name;
+ var re = new RegExp(pattern,"g");
@@ -2306,27 +2351,13 @@
+ });
+ }
+
-+ LinksForNode (node) {
-+ return this.links.filter(link => {
-+ if ( link.source.id === node.id ) {
-+ return true;
-+ }
-+ else if ( link.target.id === node.id && link.start ) {
-+ return true;
-+ }
-+ else {
-+ return false;
-+ }
-+ });
-+ }
-+
+ CheckActions(d) {
+ var self = this;
+
+ var actions = [];
-+ var tempArr = self.config.actions;
-+
-+ var i = tempArr.length/2;
++ var tempArr = self.config.actions || [];
++
++ var i = tempArr.length / 2;
+ while (i--) {
+ var action, info;
+ [action, info] = tempArr.splice(0, 2);
@@ -2350,10 +2381,16 @@
+ }
+ return true;
+ });
++ self.CheckRights(node);
++ self.CheckDefaults(node);
+ self.CheckActions(node);
+ }
+
+ UpdateNodeModel(node, args) {
++ this.CheckActions(node);
++ this.CheckDefaults(node);
++ this.CheckRights(node);
++
+ var nodeIndex = this.nodes.findIndex(x => x.id == node.id);
+
+ this.nodes[nodeIndex] = {...this.nodes[nodeIndex], ...args};
More information about the rt-commit
mailing list