Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e822adb3

Von Moritz Bunkus vor etwa 10 Jahren hinzugefügt

  • ID e822adb3f7c61a1148cd6f73be2bb302ab704e0f
  • Vorgänger 1947cd9a
  • Nachfolger eecee9b5

Pflichtenhefte: Funktion Abschnitte/Funktionsblöcke neu nummerieren

Unterschiede anzeigen:

SL/Controller/RequirementSpec.pm
265 265
  $self->invalidate_version->render($self);
266 266
}
267 267

  
268
sub action_renumber_sections {
269
  my ($self)  = @_;
270

  
271
  my %numbers = map { ($_ => 1)                                                                         } qw(section function_block);
272
  my %formats = map { my $method = "${_}_number_format"; ($_ => $self->requirement_spec->type->$method) } qw(section function_block);
273
  my @items   = @{ $self->requirement_spec->sections_sorted };
274

  
275
  $self->requirement_spec->db->with_transaction(sub {
276
    while (@items) {
277
      my $item = shift @items;
278
      my $type = $item->parent_id ? 'function_block' : 'section';
279

  
280
      $item->update_attributes(fb_number => SL::PrefixedNumber->new(number => $formats{$type} || 0)->set_to($numbers{$type}));
281

  
282
      $numbers{$type}++;
283

  
284
      unshift @items, @{ $item->children_sorted };
285
    }
286

  
287
    $self->requirement_spec->invalidate_version unless $self->requirement_spec->is_template;
288

  
289
    1;
290
  });
291

  
292
  $self->redirect_to(action => 'show', id => $self->requirement_spec->id);
293
}
294

  
268 295
#
269 296
# filters
270 297
#
css/requirement_spec.css
50 50
.context-menu-item.icon-pdf    { background-image: url("../image/application-pdf.png"); }
51 51
.context-menu-item.icon-add-picture { background-image: url("../image/add-picture.png"); }
52 52
.context-menu-item.icon-download    { background-image: url("../image/download.png"); }
53
.context-menu-item.icon-renumber    { background-image: url("../image/format-list-ordered.png"); }
53 54

  
54 55
/* ------------------------------------------------------------ */
55 56
/* Sections & function blocks */
js/locale/de.js
27 27
"Delete requirement spec":"Pflichtenheft löschen",
28 28
"Delete template":"Vorlage löschen",
29 29
"Delete text block":"Textblock löschen",
30
"Do you really want do continue?":"Wollen Sie wirklich fortfahren?",
30 31
"Do you really want to cancel?":"Wollen Sie wirklich abbrechen?",
31 32
"Do you really want to revert to this version?":"Wollen Sie wirklich auf diese Version zurücksetzen?",
32 33
"Do you want to set the account number \"#1\" to \"#2\" and the name \"#3\" to \"#4\"?":"Soll die Kontonummer \"#1\" zu \"#2\" und den Name \"#3\" zu \"#4\" geändert werden?",
......
40 41
"Function block actions":"Funktionsblockaktionen",
41 42
"If you switch to a different tab without saving you will lose the data you've entered in the current tab.":"Wenn Sie auf einen anderen Tab wechseln, ohne vorher zu speichern, so gehen die im aktuellen Tab eingegebenen Daten verloren.",
42 43
"Map":"Karte",
44
"No":"Nein",
43 45
"Part picker":"Artikelauswahl",
44 46
"Paste":"Einfügen",
45 47
"Paste template":"Vorlage einfügen",
46 48
"Project link actions":"Projektverknüpfungs-Aktionen",
47 49
"Quotations/Orders actions":"Aktionen für Angebote/Aufträge",
50
"Re-numbering all sections and function blocks in the order they are currently shown cannot be undone.":"Das Neu-Nummerieren aller Abschnitte und Funktionsblöcke kann nicht rückgängig gemacht werden.",
48 51
"Remove article":"Artikel entfernen",
52
"Renumber sections and function blocks":"Abschnitte/Funktionsblöcke neu nummerieren",
49 53
"Requirement spec actions":"Pflichtenheftaktionen",
50 54
"Requirement spec template actions":"Pflichtenheftvorlagen-Aktionen",
51 55
"Revert to version":"Auf Version zurücksetzen",
......
71 75
"Update":"Erneuern",
72 76
"Update quotation/order":"Auftrag/Angebot aktualisieren",
73 77
"Version actions":"Aktionen für Versionen",
78
"Yes":"Ja",
74 79
"flat-rate position":"Pauschalposition",
75 80
"time and effort based position":"Aufwandsposition"
76 81
});
js/requirement_spec.js
413 413
    .bind('keypress', 'shift+return', function(event) { return ns.submit_function_block.apply(this, [ event, true ]); });
414 414
};
415 415

  
416
ns.renumber_callback = function(accepted) {
417
  console.log(accepted ? "yay :)" : "oh no :(");
418
  if (!accepted)
419
    return;
420

  
421
  $.ajax({
422
    url:     'controller.pl?action=RequirementSpec/renumber_sections',
423
    type:    'post',
424
    data:    { id: $('#requirement_spec_id').val() },
425
    success: kivi.eval_json_result
426
  });
427
};
428

  
429
ns.renumber = function(opt) {
430
  $('#rs-dialog-confirm').remove();
431

  
432
  var text1   = kivi.t8('Re-numbering all sections and function blocks in the order they are currently shown cannot be undone.');
433
  var text2   = kivi.t8('Do you really want do continue?');
434
  var $dialog = $('<div id="rs-dialog-confirm"><p>' + text1 + '</p><p>' + text2 + '</p></div>').hide().appendTo('body');
435
  var buttons = {};
436

  
437
  buttons[kivi.t8('Yes')] = function() {
438
    $(this).dialog('close');
439
    ns.renumber_callback(true);
440
  };
441

  
442
  buttons[kivi.t8('No')] = function() {
443
    $(this).dialog('close');
444
    ns.renumber_callback(false);
445
  };
446

  
447
  $dialog.dialog({
448
      resizable: false
449
    , modal:     true
450
    , title:     kivi.t8('Are you sure?')
451
    , height:    250
452
    , width:     400
453
    , buttons:   buttons
454
  });
455
};
456

  
416 457
// -------------------------------------------------------------------------
417 458
// ------------------------------- templates -------------------------------
418 459
// -------------------------------------------------------------------------
......
829 870
      // , sep99:           "---------"
830 871
      , copy_reqspec:    { name: kivi.t8('Copy template'),   icon: "copy",   callback: kivi.requirement_spec.copy_reqspec   }
831 872
      , delete_reqspec:  { name: kivi.t8('Delete template'), icon: "delete", callback: kivi.requirement_spec.delete_reqspec }
873
      , sep_paste_template: "---------"
874
      , renumber:        { name: kivi.t8('Renumber sections and function blocks'), icon: "renumber", callback: kivi.requirement_spec.renumber }
832 875
    };
833 876

  
834 877
    $.contextMenu({
......
848 891
      , copy_reqspec:       { name: kivi.t8('Copy requirement spec'),   icon: "copy",   callback: kivi.requirement_spec.copy_reqspec   }
849 892
      , delete_reqspec:     { name: kivi.t8('Delete requirement spec'), icon: "delete", callback: kivi.requirement_spec.delete_reqspec }
850 893
      , sep_paste_template: "---------"
894
      , renumber:           { name: kivi.t8('Renumber sections and function blocks'), icon: "renumber", callback: kivi.requirement_spec.renumber }
895
      , sep_paste_template: "---------"
851 896
      , paste_template:     { name: kivi.t8('Paste template'),     icon: "paste",  callback: kivi.requirement_spec.paste_template }
852 897
    };
853 898

  
locale/de/all
834 834
  'Do not link to a project.'   => 'Nicht mit einem Projekt verknüpfen.',
835 835
  'Do not modify this position' => 'Diese Position nicht verändern',
836 836
  'Do not set default buchungsgruppe' => 'Nie Standardbuchungsgruppe setzen',
837
  'Do you really want do continue?' => 'Wollen Sie wirklich fortfahren?',
837 838
  'Do you really want to cancel?' => 'Wollen Sie wirklich abbrechen?',
838 839
  'Do you really want to close the following SEPA exports? No payment will be recorded for bank collections that haven\'t been marked as executed yet.' => 'Wollen Sie wirklich die folgenden SEPA-Exporte abschließen? Für Überweisungen, die noch nicht gebucht wurden, werden dann keine Zahlungen verbucht.',
839 840
  'Do you really want to close the following SEPA exports? No payment will be recorded for bank transfers that haven\'t been marked as executed yet.' => 'Wollen Sie wirklich die folgenden SEPA-Exporte abschließen? Für Überweisungen, die noch nicht gebucht wurden, werden dann keine Zahlungen verbucht.',
......
1927 1928
  'RFQs'                        => 'Preisanfragen',
1928 1929
  'ROP'                         => 'Mindestlagerbestand',
1929 1930
  'Ranges of numbers'           => 'Nummernkreise',
1931
  'Re-numbering all sections and function blocks in the order they are currently shown cannot be undone.' => 'Das Neu-Nummerieren aller Abschnitte und Funktionsblöcke kann nicht rückgängig gemacht werden.',
1930 1932
  'Re-run analysis'             => 'Analyse wiederholen',
1931 1933
  'Receipt'                     => 'Zahlungseingang',
1932 1934
  'Receipt posted!'             => 'Beleg gebucht!',
......
1962 1964
  'Removed spoolfiles!'         => 'Druckdateien entfernt!',
1963 1965
  'Removed text blocks: #1'     => 'Entfernte Textblöcke: #1',
1964 1966
  'Removing marked entries from queue ...' => 'Markierte Einträge werden von der Warteschlange entfernt ...',
1967
  'Renumber sections and function blocks' => 'Abschnitte/Funktionsblöcke neu nummerieren',
1965 1968
  'Replace the orphaned currencies by other not orphaned currencies. To do so, please delete the currency in the textfields above and replace it by another currency. You could loose or change unintentionally exchangerates. Go on very carefully since you could destroy transactions.' => 'Ersetze die Währungen durch andere gültige Währungen. Wenn Sie sich hierfür entscheiden, ersetzen Sie bitte alle Währungen, die oben angegeben sind, durch Währungen, die in Ihrem System ordnungsgemäß eingetragen sind. Alle eingetragenen Wechselkurse für die verwaiste Währung werden dabei gelöscht. Bitte gehen Sie sehr vorsichtig vor, denn die betroffenen Buchungen können unter Umständen kaputt gehen.',
1966 1969
  'Report Positions'            => 'Berichte',
1967 1970
  'Report about warehouse contents' => 'Lagerbestand anzeigen',

Auch abrufbar als: Unified diff