Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 459574b9

Von Moritz Bunkus vor fast 8 Jahren hinzugefügt

  • ID 459574b971b01d2cc88c5d4cbe1ad14c11b19ec7
  • Vorgänger 6761a7c1
  • Nachfolger 60d0f05f

SimpleSystemSetting: Umstellung von »Pflichtenhefte« → »Komplexitätsgrade«, »Risikograde«

Unterschiede anzeigen:

SL/Controller/RequirementSpecComplexity.pm
1
package SL::Controller::RequirementSpecComplexity;
2

  
3
use strict;
4

  
5
use parent qw(SL::Controller::Base);
6

  
7
use SL::DB::RequirementSpecComplexity;
8
use SL::Helper::Flash;
9
use SL::Locale::String;
10

  
11
use Rose::Object::MakeMethods::Generic
12
(
13
 scalar => [ qw(requirement_spec_complexity) ],
14
);
15

  
16
__PACKAGE__->run_before('check_auth');
17
__PACKAGE__->run_before('load_requirement_spec_complexity', only => [ qw(edit update destroy) ]);
18

  
19
#
20
# actions
21
#
22

  
23
sub action_list {
24
  my ($self) = @_;
25

  
26
  $self->render('requirement_spec_complexity/list',
27
                title                         => t8('Complexities'),
28
                REQUIREMENT_SPEC_COMPLEXITIES => SL::DB::Manager::RequirementSpecComplexity->get_all_sorted);
29
}
30

  
31
sub action_new {
32
  my ($self) = @_;
33

  
34
  $self->{requirement_spec_complexity} = SL::DB::RequirementSpecComplexity->new;
35
  $self->render('requirement_spec_complexity/form', title => t8('Create a new complexity'));
36
}
37

  
38
sub action_edit {
39
  my ($self) = @_;
40
  $self->render('requirement_spec_complexity/form', title => t8('Edit complexity'));
41
}
42

  
43
sub action_create {
44
  my ($self) = @_;
45

  
46
  $self->{requirement_spec_complexity} = SL::DB::RequirementSpecComplexity->new;
47
  $self->create_or_update;
48
}
49

  
50
sub action_update {
51
  my ($self) = @_;
52
  $self->create_or_update;
53
}
54

  
55
sub action_destroy {
56
  my ($self) = @_;
57

  
58
  if (eval { $self->{requirement_spec_complexity}->delete; 1; }) {
59
    flash_later('info',  t8('The complexity has been deleted.'));
60
  } else {
61
    flash_later('error', t8('The complexity is in use and cannot be deleted.'));
62
  }
63

  
64
  $self->redirect_to(action => 'list');
65
}
66

  
67
sub action_reorder {
68
  my ($self) = @_;
69

  
70
  SL::DB::RequirementSpecComplexity->reorder_list(@{ $::form->{requirement_spec_complexity_id} || [] });
71

  
72
  $self->render(\'', { type => 'json' });
73
}
74

  
75
#
76
# filters
77
#
78

  
79
sub check_auth {
80
  $::auth->assert('config');
81
}
82

  
83
#
84
# helpers
85
#
86

  
87
sub create_or_update {
88
  my $self   = shift;
89
  my $is_new = !$self->{requirement_spec_complexity}->id;
90
  my $params = delete($::form->{requirement_spec_complexity}) || { };
91
  my $title  = $is_new ? t8('Create a new complexity') : t8('Edit complexity');
92

  
93
  $self->{requirement_spec_complexity}->assign_attributes(%{ $params });
94

  
95
  my @errors = $self->{requirement_spec_complexity}->validate;
96

  
97
  if (@errors) {
98
    flash('error', @errors);
99
    $self->render('requirement_spec_complexity/form', title => $title);
100
    return;
101
  }
102

  
103
  $self->{requirement_spec_complexity}->save;
104

  
105
  flash_later('info', $is_new ? t8('The complexity has been created.') : t8('The complexity has been saved.'));
106
  $self->redirect_to(action => 'list');
107
}
108

  
109
sub load_requirement_spec_complexity {
110
  my ($self) = @_;
111
  $self->{requirement_spec_complexity} = SL::DB::RequirementSpecComplexity->new(id => $::form->{id})->load;
112
}
113

  
114
1;
SL/Controller/RequirementSpecRisk.pm
1
package SL::Controller::RequirementSpecRisk;
2

  
3
use strict;
4

  
5
use parent qw(SL::Controller::Base);
6

  
7
use SL::DB::RequirementSpecRisk;
8
use SL::Helper::Flash;
9
use SL::Locale::String;
10

  
11
use Rose::Object::MakeMethods::Generic
12
(
13
 scalar => [ qw(requirement_spec_risk) ],
14
);
15

  
16
__PACKAGE__->run_before('check_auth');
17
__PACKAGE__->run_before('load_requirement_spec_risk', only => [ qw(edit update destroy) ]);
18

  
19
#
20
# actions
21
#
22

  
23
sub action_list {
24
  my ($self) = @_;
25

  
26
  $self->render('requirement_spec_risk/list',
27
                title                  => t8('Risk levels'),
28
                REQUIREMENT_SPEC_RISKS => SL::DB::Manager::RequirementSpecRisk->get_all_sorted);
29
}
30

  
31
sub action_new {
32
  my ($self) = @_;
33

  
34
  $self->{requirement_spec_risk} = SL::DB::RequirementSpecRisk->new;
35
  $self->render('requirement_spec_risk/form', title => t8('Create a new risk level'));
36
}
37

  
38
sub action_edit {
39
  my ($self) = @_;
40
  $self->render('requirement_spec_risk/form', title => t8('Edit risk level'));
41
}
42

  
43
sub action_create {
44
  my ($self) = @_;
45

  
46
  $self->{requirement_spec_risk} = SL::DB::RequirementSpecRisk->new;
47
  $self->create_or_update;
48
}
49

  
50
sub action_update {
51
  my ($self) = @_;
52
  $self->create_or_update;
53
}
54

  
55
sub action_destroy {
56
  my ($self) = @_;
57

  
58
  if (eval { $self->{requirement_spec_risk}->delete; 1; }) {
59
    flash_later('info',  t8('The risk level has been deleted.'));
60
  } else {
61
    flash_later('error', t8('The risk level is in use and cannot be deleted.'));
62
  }
63

  
64
  $self->redirect_to(action => 'list');
65
}
66

  
67
sub action_reorder {
68
  my ($self) = @_;
69

  
70
  SL::DB::RequirementSpecRisk->reorder_list(@{ $::form->{requirement_spec_risk_id} || [] });
71

  
72
  $self->render(\'', { type => 'json' });
73
}
74

  
75
#
76
# filters
77
#
78

  
79
sub check_auth {
80
  $::auth->assert('config');
81
}
82

  
83
#
84
# helpers
85
#
86

  
87
sub create_or_update {
88
  my $self   = shift;
89
  my $is_new = !$self->{requirement_spec_risk}->id;
90
  my $params = delete($::form->{requirement_spec_risk}) || { };
91
  my $title  = $is_new ? t8('Create a new risk level') : t8('Edit risk level');
92

  
93
  $self->{requirement_spec_risk}->assign_attributes(%{ $params });
94

  
95
  my @errors = $self->{requirement_spec_risk}->validate;
96

  
97
  if (@errors) {
98
    flash('error', @errors);
99
    $self->render('requirement_spec_risk/form', title => $title);
100
    return;
101
  }
102

  
103
  $self->{requirement_spec_risk}->save;
104

  
105
  flash_later('info', $is_new ? t8('The risk level has been created.') : t8('The risk level has been saved.'));
106
  $self->redirect_to(action => 'list');
107
}
108

  
109
sub load_requirement_spec_risk {
110
  my ($self) = @_;
111
  $self->{requirement_spec_risk} = SL::DB::RequirementSpecRisk->new(id => $::form->{id})->load;
112
}
113

  
114
1;
SL/Controller/SimpleSystemSetting.pm
155 155
    ],
156 156
  },
157 157

  
158
  requirement_spec_complexity => {
159
    class  => 'RequirementSpecComplexity',
160
    titles => {
161
      list => t8('Complexities'),
162
      add  => t8('Add complexity'),
163
      edit => t8('Edit complexity'),
164
    },
165
  },
166

  
158 167
  requirement_spec_predefined_text => {
159 168
    # Make locales.pl happy: $self->render("simple_system_setting/_requirement_spec_predefined_text_form")
160 169
    class  => 'RequirementSpecPredefinedText',
......
172 181
    ],
173 182
  },
174 183

  
184
  requirement_spec_risk => {
185
    class  => 'RequirementSpecRisk',
186
    titles => {
187
      list => t8('Risk levels'),
188
      add  => t8('Add risk level'),
189
      edit => t8('Edit risk level'),
190
    },
191
  },
192

  
175 193
  requirement_spec_status => {
176 194
    # Make locales.pl happy: $self->render("simple_system_setting/_requirement_spec_status_form")
177 195
    class  => 'RequirementSpecStatus',
locale/de/all
192 192
  'Add bank account'            => 'Bankkonto erfassen',
193 193
  'Add booking group'           => 'Buchungsgruppe erfassen',
194 194
  'Add business'                => 'Kunden-/Lieferantentyp hinzufügen',
195
  'Add complexity'              => 'Komplexitätsgrad hinzufügen',
195 196
  'Add custom variable'         => 'Benutzerdefinierte Variable erfassen',
196 197
  'Add department'              => 'Abteilung hinzufügen',
197 198
  'Add empty line (csv_import)' => 'Leere Zeile einfügen',
......
218 219
  'Add project type'            => 'Projekttypen hinzufügen',
219 220
  'Add requirement spec status' => 'Pflichtenheftstatus hinzufügen',
220 221
  'Add requirement spec type'   => 'Pflichtenhefttypen hinzufügen',
222
  'Add risk level'              => 'Risikograd hinzufügen',
221 223
  'Add section'                 => 'Abschnitt hinzufügen',
222 224
  'Add sub function block'      => 'Unterfunktionsblock hinzufügen',
223 225
  'Add taxzone'                 => 'Steuerzone hinzufügen',
......
667 669
  'Create PDF'                  => 'PDF erzeugen',
668 670
  'Create a new background job' => 'Einen neuen Hintergrund-Job anlegen',
669 671
  'Create a new client'         => 'Einen neuen Mandanten anlegen',
670
  'Create a new complexity'     => 'Einen Komplexitätsgrad anlegen',
671 672
  'Create a new delivery term'  => 'Neue Lieferbedingungen anlegen',
672 673
  'Create a new group'          => 'Neue Benutzergruppe erfassen',
673 674
  'Create a new payment term'   => 'Neue Zahlungsbedingungen anlegen',
......
678 679
  'Create a new purchase price rule' => 'Neue Einkaufspreisregel anlegen',
679 680
  'Create a new requirement spec' => 'Ein neues Pflichtenheft anlegen',
680 681
  'Create a new requirement spec template' => 'Eine neue Pflichtenheftvorlage erfassen',
681
  'Create a new risk level'     => 'Einen neuen Risikograd anlegen',
682 682
  'Create a new sales price rule' => 'Neue Verkaufspreisregel anlegen',
683 683
  'Create a new user'           => 'Einen neuen Benutzer anlegen',
684 684
  'Create a new user group'     => 'Eine neue Benutzergruppe erfassen',
......
1850 1850
  'No bins have been added to this warehouse yet.' => 'Es wurden zu diesem Lager noch keine Lagerplätze angelegt.',
1851 1851
  'No changes since previous version.' => 'Keine Änderungen seit der letzten Version.',
1852 1852
  'No clients have been created yet.' => 'Es wurden noch keine Mandanten angelegt.',
1853
  'No complexities has been created yet.' => 'Es wurden noch keine Komplexitätsgrade angelegt.',
1854 1853
  'No contact selected to delete' => 'Keine Ansprechperson zum Löschen ausgewählt',
1855 1854
  'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
1856 1855
  'No data was found.'          => 'Es wurden keine Daten gefunden.',
......
1887 1886
  'No requirement spec templates have been created yet.' => 'Es wurden noch keine Pflichtenheftvorlagen angelegt.',
1888 1887
  'No results.'                 => 'Keine Artikel',
1889 1888
  'No revert available.'        => 'Dieser Vorgang kann nicht rückgängig gemacht werden, ggf. falsch erstellte Buchungen müssen einzeln manuell korrigiert werden.',
1890
  'No risks level has been created yet.' => 'Es wurden noch keine Risikograde angelegt.',
1891 1889
  'No search results found!'    => 'Keine Suchergebnisse gefunden!',
1892 1890
  'No sections created yet'     => 'Keine Abschnitte erstellt',
1893 1891
  'No sections have been created so far.' => 'Bisher wurden noch keine Abschnitte angelegt.',
......
2925 2923
  'The columns "Dunning Duedate", "Total Fees" and "Interest" show data for the previous dunning created for this invoice.' => 'Die Spalten "Zahlbar bis", "Kumulierte Gebühren" und "Zinsen" zeigen Daten der letzten für diese Rechnung erzeugten Mahnung.',
2926 2924
  'The combination of database host, port and name is not unique.' => 'Die Kombination aus Datenbankhost, -port und -name ist nicht eindeutig.',
2927 2925
  'The command is missing.'     => 'Der Befehl fehlt.',
2928
  'The complexity has been created.' => 'Der Komplexitätsgrad wurde angelegt.',
2929
  'The complexity has been deleted.' => 'Der Komplexitätsgrad wurde gelöscht.',
2930
  'The complexity has been saved.' => 'Der Komplexitätsgrad wurde gespeichert.',
2931
  'The complexity is in use and cannot be deleted.' => 'Der Komplexitätsgrad wird verwendet und kann nicht gelöscht werden.',
2932 2926
  'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/kivitendo.conf.' => 'Die Verbindung zum LDAP-Server kann nicht verschlüsselt werden (Fehler bei SSL/TLS-Initialisierung). Bitte überprüfen Sie die Angaben in config/kivitendo.conf.',
2933 2927
  'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
2934 2928
  'The connection to the configured client database "#1" on host "#2:#3" failed.' => 'Die Verbindung zur konfigurierten Datenbank "#1" auf Host "#2:#3" schlug fehl.',
......
3083 3077
  'The requirement spec has been saved.' => 'Das Pflichtenheft wurde gespeichert.',
3084 3078
  'The requirement spec is in use and cannot be deleted.' => 'Das Pflichtenheft wird verwendet und kann nicht gelöscht werden.',
3085 3079
  'The requirement spec template has been saved.' => 'Die Pflichtenheftvorlage wurde gespeichert.',
3086
  'The risk level has been created.' => 'Der Risikograd wurde angelegt.',
3087
  'The risk level has been deleted.' => 'Der Risikograd wurde gelöscht.',
3088
  'The risk level has been saved.' => 'Der Risikograd wurde gespeichert.',
3089
  'The risk level is in use and cannot be deleted.' => 'Der Risikograd wird verwendet und kann nicht gelöscht werden.',
3090 3080
  'The second reason is that kivitendo allowed the user to enter the tax amount manually regardless of the taxkey used.' => 'Der zweite Grund war, dass kivitendo zuließ, dass die Benutzer beliebige, von den tatsächlichen Steuerschlüsseln unabhängige Steuerbeträge eintrugen.',
3091 3081
  'The second way is to use Perl\'s CPAN module and let it download and install the module for you.' => 'Die zweite Variante besteht darin, Perls CPAN-Modul zu benutzen und es das Modul für Sie installieren zu lassen.',
3092 3082
  'The selected bank account does not exist anymore.' => 'Das ausgewählte Bankkonto existiert nicht mehr.',
menus/user/00-erp.yaml
1161 1161
  name: Complexities
1162 1162
  order: 400
1163 1163
  params:
1164
    action: RequirementSpecComplexity/list
1164
    action: SimpleSystemSetting/list
1165
    type: requirement_spec_complexity
1165 1166
- parent: system_requirement_specs
1166 1167
  id: system_requirement_specs_risks
1167 1168
  name: Risks
1168 1169
  order: 500
1169 1170
  params:
1170
    action: RequirementSpecRisk/list
1171
    action: SimpleSystemSetting/list
1172
    type: requirement_spec_risk
1171 1173
- parent: system_requirement_specs
1172 1174
  id: system_requirement_specs_acceptance_statuses
1173 1175
  name: Acceptance Statuses
templates/webpages/requirement_spec_complexity/form.html
1
[% USE HTML %][% USE L %][% USE LxERP %]
2
<h1>[% FORM.title %]</h1>
3

  
4
 <form method="post" action="controller.pl">
5

  
6
[%- INCLUDE 'common/flash.html' %]
7

  
8
  <table>
9
   <tr>
10
    <td>[% LxERP.t8("Description") %]</td>
11
    <td>[% L.input_tag("requirement_spec_complexity.description", SELF.requirement_spec_complexity.description) %]</td>
12
   </tr>
13
  </table>
14

  
15
  <p>
16
   [% L.hidden_tag("id", SELF.requirement_spec_complexity.id) %]
17
   [% L.hidden_tag("action", "RequirementSpecComplexity/dispatch") %]
18
   [% L.submit_tag("action_" _ (SELF.requirement_spec_complexity.id ? "update" : "create"), LxERP.t8('Save')) %]
19
   [%- IF SELF.requirement_spec_complexity.id %]
20
    [% L.submit_tag("action_destroy", LxERP.t8('Delete'), confirm=LxERP.t8('Do you really want to delete this object?')) %]
21
   [%- END %]
22
   <a href="[% SELF.url_for(action => 'list') %]">[%- LxERP.t8('Abort') %]</a>
23
  </p>
24
 </form>
templates/webpages/requirement_spec_complexity/list.html
1
[% USE HTML %][% USE L %][% USE LxERP %]
2
<h1>[% FORM.title %]</h1>
3

  
4
[%- INCLUDE "common/flash.html" %]
5

  
6
 <form method="post" action="controller.pl">
7
  [% IF !REQUIREMENT_SPEC_COMPLEXITIES.size %]
8
   <p>
9
    [%- LxERP.t8("No complexities has been created yet.") %]
10
   </p>
11

  
12
  [%- ELSE %]
13
   <table id="requirement_spec_complexity_list">
14
    <thead>
15
    <tr class="listheading">
16
     <th align="center"><img src="image/updown.png" alt="[%- LxERP.t8("reorder item") %]"></th>
17
     <th>[%- LxERP.t8("Description") %]</th>
18
    </tr>
19
    </thead>
20

  
21
    <tbody>
22
    [%- FOREACH requirement_spec_complexity = REQUIREMENT_SPEC_COMPLEXITIES %]
23
    <tr class="listrow[% loop.count % 2 %]" id="requirement_spec_complexity_id_[% requirement_spec_complexity.id %]">
24
     <td align="center" class="dragdrop"><img src="image/updown.png" alt="[%- LxERP.t8("reorder item") %]"></td>
25
     <td>
26
      <a href="[% SELF.url_for(action => "edit", id => requirement_spec_complexity.id) %]">
27
       [%- HTML.escape(requirement_spec_complexity.description) %]
28
      </a>
29
     </td>
30
    </tr>
31
    [%- END %]
32
    </tbody>
33
   </table>
34
  [%- END %]
35

  
36
  <p>
37
   <a href="[% SELF.url_for(action => "new") %]">[%- LxERP.t8("Create a new complexity") %]</a>
38
  </p>
39
 </form>
40

  
41
 [% L.sortable_element("#requirement_spec_complexity_list tbody", url => "controller.pl?action=RequirementSpecComplexity/reorder", with => "requirement_spec_complexity_id") %]
templates/webpages/requirement_spec_risk/form.html
1
[% USE HTML %][% USE L %][% USE LxERP %]
2
<h1>[% FORM.title %]</h1>
3

  
4
 <form method="post" action="controller.pl">
5

  
6
[%- INCLUDE 'common/flash.html' %]
7

  
8
  <table>
9
   <tr>
10
    <td>[% LxERP.t8("Description") %]</td>
11
    <td>[% L.input_tag("requirement_spec_risk.description", SELF.requirement_spec_risk.description) %]</td>
12
   </tr>
13
  </table>
14

  
15
  <p>
16
   [% L.hidden_tag("id", SELF.requirement_spec_risk.id) %]
17
   [% L.hidden_tag("action", "RequirementSpecRisk/dispatch") %]
18
   [% L.submit_tag("action_" _ (SELF.requirement_spec_risk.id ? "update" : "create"), LxERP.t8('Save')) %]
19
   [%- IF SELF.requirement_spec_risk.id %]
20
    [% L.submit_tag("action_destroy", LxERP.t8('Delete'), confirm=LxERP.t8('Do you really want to delete this object?')) %]
21
   [%- END %]
22
   <a href="[% SELF.url_for(action => 'list') %]">[%- LxERP.t8('Abort') %]</a>
23
  </p>
24
 </form>
templates/webpages/requirement_spec_risk/list.html
1
[% USE HTML %][% USE L %][% USE LxERP %]
2
<h1>[% FORM.title %]</h1>
3

  
4
[%- INCLUDE "common/flash.html" %]
5

  
6
 <form method="post" action="controller.pl">
7
  [% IF !REQUIREMENT_SPEC_RISKS.size %]
8
   <p>
9
    [%- LxERP.t8("No risks level has been created yet.") %]
10
   </p>
11

  
12
  [%- ELSE %]
13
   <table id="requirement_spec_risk_list">
14
    <thead>
15
    <tr class="listheading">
16
     <th align="center"><img src="image/updown.png" alt="[%- LxERP.t8("reorder item") %]"></th>
17
     <th>[%- LxERP.t8("Description") %]</th>
18
    </tr>
19
    </thead>
20

  
21
    <tbody>
22
    [%- FOREACH requirement_spec_risk = REQUIREMENT_SPEC_RISKS %]
23
    <tr class="listrow[% loop.count % 2 %]" id="requirement_spec_risk_id_[% requirement_spec_risk.id %]">
24
     <td align="center" class="dragdrop"><img src="image/updown.png" alt="[%- LxERP.t8("reorder item") %]"></td>
25
     <td>
26
      <a href="[% SELF.url_for(action => "edit", id => requirement_spec_risk.id) %]">
27
       [%- HTML.escape(requirement_spec_risk.description) %]
28
      </a>
29
     </td>
30
    </tr>
31
    [%- END %]
32
    </tbody>
33
   </table>
34
  [%- END %]
35

  
36
  <p>
37
   <a href="[% SELF.url_for(action => "new") %]">[%- LxERP.t8("Create a new risk level") %]</a>
38
  </p>
39
 </form>
40

  
41
 [% L.sortable_element("#requirement_spec_risk_list tbody", url => "controller.pl?action=RequirementSpecRisk/reorder", with => "requirement_spec_risk_id") %]

Auch abrufbar als: Unified diff