Pflichtenheft Angebote/Aufträge: "Abbrechen" ohne AJAX-Call nur in JS
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 31 Jul 2013 14:49:43 +0000 (16:49 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 1 Apr 2014 11:09:08 +0000 (13:09 +0200)
SL/Controller/RequirementSpecOrder.pm
js/requirement_spec.js
templates/webpages/requirement_spec_order/update.html

index fafa77c..f0f20d4 100644 (file)
@@ -17,7 +17,8 @@ use SL::DB::RequirementSpecOrder;
 use SL::Helper::Flash;
 use SL::Locale::String;
 
-use constant TAB_ID => 'ui-tabs-4';
+use constant LIST_SELECTOR  => '#quotations_and_orders';
+use constant FORMS_SELECTOR => '#quotations_and_orders_article_assignment,#quotations_and_orders_new,#quotations_and_orders_update';
 
 use Rose::Object::MakeMethods::Generic
 (
@@ -44,8 +45,9 @@ sub action_new {
     return $self->js->flash('error', t8('This function requires the presence of articles with a time-based unit such as "h" or "min".'))->render($self);
   }
 
-  my $html   = $self->render('requirement_spec_order/new', { output => 0 }, make_part_title => sub { $_[0]->partnumber . ' ' . $_[0]->description });
-  $self->js->html('#' . TAB_ID(), $html)
+  my $html = $self->render('requirement_spec_order/new', { output => 0 }, make_part_title => sub { $_[0]->partnumber . ' ' . $_[0]->description });
+  $self->js->hide(LIST_SELECTOR())
+           ->after(LIST_SELECTOR(), $html)
            ->render($self);
 }
 
@@ -72,7 +74,8 @@ sub action_create {
 
   # 3. Notify the user and return to list.
   my $html = $self->render('requirement_spec_order/list', { output => 0 });
-  $self->js->html('#' . TAB_ID(), $html)
+  $self->js->replaceWith(LIST_SELECTOR(), $html)
+           ->remove(FORMS_SELECTOR())
            ->flash('info', $::form->{quotation} ? t8('Sales quotation #1 has been created.', $order->quonumber) : t8('Sales order #1 has been created.', $order->ordnumber))
            ->render($self);
 }
@@ -99,7 +102,8 @@ sub action_update {
     make_section_title => sub { $_[0]->fb_number . ' ' . $_[0]->title },
   );
 
-  $self->js->html('#' . TAB_ID(), $html)
+  $self->js->hide(LIST_SELECTOR())
+           ->after(LIST_SELECTOR(), $html)
            ->render($self);
 }
 
@@ -136,7 +140,8 @@ sub action_do_update {
   $self->init_requirement_spec;
 
   my $html = $self->render('requirement_spec_order/list', { output => 0 });
-  $self->js->html('#' . TAB_ID(), $html)
+  $self->js->replaceWith(LIST_SELECTOR(), $html)
+           ->remove(FORMS_SELECTOR())
            ->flash('info', $::form->{quotation} ? t8('Sales quotation #1 has been updated.', $order->quonumber) : t8('Sales order #1 has been updated.', $order->ordnumber))
            ->render($self);
 }
@@ -149,7 +154,8 @@ sub action_edit_assignment {
   }
 
   my $html   = $self->render('requirement_spec_order/edit_assignment', { output => 0 }, make_part_title => sub { $_[0]->partnumber . ' ' . $_[0]->description });
-  $self->js->html('#' . TAB_ID(), $html)
+  $self->js->hide(LIST_SELECTOR())
+           ->after(LIST_SELECTOR(), $html)
            ->render($self);
 }
 
@@ -159,7 +165,8 @@ sub action_save_assignment {
   SL::DB::RequirementSpecItem->new(id => $_->{id})->load->update_attributes(order_part_id => ($_->{order_part_id} || undef)) for @{ $sections };
 
   my $html = $self->render('requirement_spec_order/list', { output => 0 });
-  $self->js->html('#' . TAB_ID(), $html)
+  $self->js->replaceWith(LIST_SELECTOR(), $html)
+           ->remove(FORMS_SELECTOR())
            ->render($self);
 }
 
@@ -172,19 +179,11 @@ sub action_delete {
   $self->init_requirement_spec;
 
   my $html = $self->render('requirement_spec_order/list', { output => 0 });
-  $self->js->html('#' . TAB_ID(), $html)
+  $self->js->replaceWith(LIST_SELECTOR(), $html)
            ->flash('info', $order->quotation ? t8('Sales quotation #1 has been deleted.', $order->quonumber) : t8('Sales order #1 has been deleted.', $order->ordnumber))
            ->render($self);
 }
 
-sub action_cancel {
-  my ($self) = @_;
-
-  my $html = $self->render('requirement_spec_order/list', { output => 0 });
-  $self->js->html('#' . TAB_ID(), $html)
-           ->render($self);
-}
-
 #
 # filters
 #
index d2a5052..5c4967f 100644 (file)
@@ -365,8 +365,13 @@ ns.find_quotation_order_id = function(clicked_elt) {
 };
 
 ns.standard_quotation_order_ajax_call = function(key, opt) {
-  if ((key == 'cancel') && !confirm(kivi.t8('Do you really want to cancel?')))
+  if (key == 'cancel') {
+    if (confirm(kivi.t8('Do you really want to cancel?'))) {
+      $('#quotations_and_orders').show();
+      $('#quotations_and_orders_article_assignment,#quotations_and_orders_new,#quotations_and_orders_update').remove();
+    }
     return true;
+  }
 
   else if ((key == 'create') && $('#quotations_and_orders_form INPUT[name="sections[].order_part_id"]').filter(function(idx, elt) { return ($(elt).val() || '') == '' }).size()) {
     alert(kivi.t8('There is one or more sections for which no part has been assigned yet; therefore creating the new record is not possible yet.'));
index 17d8343..2230bd2 100644 (file)
@@ -2,7 +2,7 @@
 [% SET style = "width: 400px" %]
 [% SET order = SELF.rs_order.order %]
 
-<div class="quotations-and-orders-update-context-menu">
+<div id="quotations_and_orders_update" class="quotations-and-orders-update-context-menu">
 
  <h2>
   [% IF order.quotation %]