Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision a4420618

Von Tamino Steinert vor 3 Monaten hinzugefügt

  • ID a442061885d528d333a2b6d0a76346c2dbcae120
  • Vorgänger 6a5a4049
  • Nachfolger a1e016b4

Varianten: Bearbeiten von Varianten Eigenschaften und Ausprägungen

Unterschiede anzeigen:

SL/Controller/VariantProperty.pm
10 10
use SL::DB::Manager::VariantProperty;
11 11

  
12 12
use Rose::Object::MakeMethods::Generic (
13
  'scalar --get_set_init' => [ qw(variant_property variant_property_value) ]
13
  'scalar --get_set_init' => [ qw(variant_property) ]
14 14
);
15 15

  
16 16
#__PACKAGE__->run_before('check_auth');
17
__PACKAGE__->run_before('add_javascripts', only => [ qw(edit_property) ]);
17
__PACKAGE__->run_before('add_javascripts', only => [ qw(edit_variant_property) ]);
18 18

  
19 19
#
20 20
# actions
21 21
#
22 22

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

  
26 26
  $self->_setup_list_action_bar;
......
30 30
               );
31 31
}
32 32

  
33
sub action_edit_property {
33
sub action_edit_variant_property {
34 34
  my ($self) = @_;
35 35

  
36 36
  my $is_new = !$self->variant_property->id;
37 37
  $self->_setup_form_action_bar;
38
  $self->render('variant_property/variant_property_form', title => ($is_new ? t8('Add Variant Property') : t8('Edit Variant Property')));
38
  $self->render(
39
    'variant_property/variant_property_form',
40
    title => ($is_new ? t8('Add Variant Property') : t8('Edit Variant Property')),
41
  );
39 42
}
40 43

  
41
sub action_save_property {
44
sub action_save_variant_property {
42 45
  my ($self) = @_;
43 46

  
44
  $self->create_or_update_property;
47
  $self->create_or_update_variant_property;
45 48
}
46 49

  
47
sub action_delete_property {
50
sub action_delete_variant_property {
48 51
  my ($self) = @_;
49 52

  
50
  if ( eval { $self->shop->delete; 1; } ) {
51
    flash_later('info',  $::locale->text('The shop has been deleted.'));
53
  if ( eval {
54
      SL::DB->client->with_transaction(sub {
55
        $_->delete for $self->variant_property->property_values;
56
        $self->variant_property->delete;
57
      });
58
      1;
59
    } ) {
60
    flash_later('info',  t8('The Variant Property has been deleted.'));
52 61
  } else {
53
    flash_later('error', $::locale->text('The shop is in use and cannot be deleted.'));
62
    flash_later('error', t8('The Variant Property is in use and cannot be deleted.'));
54 63
  };
55
  $self->redirect_to(action => 'list_properties');
64
  $self->redirect_to(action => 'list_variant_properties');
56 65
}
57 66

  
58
sub action_reorder_properties {
67
sub action_reorder_variant_properties {
59 68
  my ($self) = @_;
60 69

  
61 70
  SL::DB::VariantProperty->reorder_list(@{ $::form->{variant_property_id} || [] });
62 71
  $self->render(\'', { type => 'json' }); # ' emacs happy again
63 72
}
64 73

  
65
sub action_edit_property_value {
74
sub action_reorder_variant_property_values {
66 75
  my ($self) = @_;
67 76

  
68
  $self->render_variant_edit_dialog();
77
  SL::DB::VariantPropertyValue->reorder_list(@{ $::form->{variant_property_value_id} || [] });
78
  $self->render(\'', { type => 'json' }); # ' emacs happy again
69 79
}
70 80

  
71
sub action_save_property_value {
81
sub action_edit_variant_property_value {
72 82
  my ($self) = @_;
73 83

  
74
  $self->create_or_update_property_value;
75
}
76

  
77

  
78
sub render_variant_edit_dialog {
79
  my ($self) = @_;
80 84
  $self->js
81 85
    ->run(
82
      'kivi.VariantProperty.variant_dialog',
83
      t8('Variant Value'),
84
      $self->render('variant_property/variant_property_value_form', { output => 0 })
86
      'kivi.VariantProperty.variant_property_value_dialog',
87
      t8('Variant Property Value'),
88
      $self->render(
89
        'variant_property/variant_property_value_form',
90
        { output => 0 },
91
        variant_property_value => SL::DB::Manager::VariantPropertyValue->find_by(
92
            id => $::form->{variant_property_value_id}
93
          ),
94
      )
85 95
    )
86 96
    ->reinit_widgets;
87 97

  
88 98
  $self->js->render;
89 99
}
90 100

  
91
#sub action_list_property_values_list {
92
#  my ($self) = @_;
93
#
94
#  $self->_setup_list_action_bar;
95
#  $self->render('variant_property/variant_property_list',
96
#                title             => t8('Variant Property'),
97
#                VARIANTPROPERTIES => SL::DB::Manager::VariantProperty->get_all_sorted,
98
#               );
99
#}
100

  
101
#sub action_reorder {
102
#  my ($self) = @_;
103
#
104
#  SL::DB::DeliveryTerm->reorder_list(@{ $::form->{delivery_term_id} || [] });
105
#
106
#  $self->render(\'', { type => 'json' });     # ' make Emacs happy
107
#}
108
#
101
sub action_save_variant_property_value {
102
  my ($self) = @_;
103

  
104
  die "'variant_property_value.id' is needed" unless $::form->{variant_property_value}->{id};
105

  
106
  my $variant_property_value = SL::DB::Manager::VariantPropertyValue->find_by(
107
    id => $::form->{variant_property_value}->{id}
108
  ) or die t8("Could not find Variant Property Value");
109

  
110
  $variant_property_value->update_attributes(
111
    %{$::form->{variant_property_value}}
112
  );
113

  
114
  flash_later('info', t8('The Variant Property Value has been saved.'));
115
  $self->redirect_to(
116
    action => 'edit_variant_property',
117
    id     => $variant_property_value->variant_property_id,
118
  );
119
}
120

  
121
sub action_add_variant_property_value {
122
  my ($self) = @_;
123

  
124
  my $new_variant_property_value = SL::DB::VariantPropertyValue->new(
125
    %{ $::form->{new_variant_property_value} },
126
    variant_property => $self->variant_property,
127
  )->save;
128

  
129
  $self->redirect_to(
130
    action => 'edit_variant_property',
131
    id     => $self->variant_property->id,
132
  );
133
}
134

  
109 135
#
110 136
#inits
111 137
#
......
114 140
  SL::DB::Manager::VariantProperty->find_by_or_create(id => $::form->{id} || 0)->assign_attributes(%{ $::form->{variant_property} });
115 141
}
116 142

  
117
sub init_variant_property_value {
118
  SL::DB::Manager::VariantPropertyValue->find_by_or_create(id => $::form->{variant_property_value_id} || 0)->assign_attributes(%{ $::form->{variant_property_value} });
119
}
120

  
121 143
sub add_javascripts  {
122 144
  $::request->{layout}->add_javascripts(qw(kivi.VariantProperty.js));
123 145
}
......
126 148
# helpers
127 149
#
128 150

  
129
sub create_or_update_property {
151
sub create_or_update_variant_property {
130 152
  my ($self) = @_;
131 153

  
132 154
  my $is_new = !$self->variant_property->id;
......
134 156
  my @errors = $self->variant_property->validate;
135 157
  if (@errors) {
136 158
    flash('error', @errors);
137
    $self->action_edit_property();
159
    $self->action_edit_variant_property();
138 160
    return;
139 161
  }
140 162

  
141 163
  $self->variant_property->save;
142 164

  
143 165
  flash_later('info', $is_new ? t8('The Variant Property has been created.') : t8('The Variant Property has been saved.'));
144
  $self->redirect_to(action => 'list_properties');
145
}
146

  
147
sub create_or_update_property_value {
148
  my ($self) = @_;
149

  
150
  $main::lxdebug->dump(0, "TST:FORM ", $::form);
151
  my $is_new = !$self->variant_property_value->id;
152

  
153
#  my @errors = $self->variant_property_value->validate;
154
#  if (@errors) {
155
#    flash('error', @errors);
156
#    $self->action_edit_property();
157
#    return;
158
#  }
159
  $main::lxdebug->dump(0, "TST:PV ", $self->variant_property_value);
160
  $self->variant_property_value->assign_attributes( variant_property_id => $::form->{property_value_id});
161
  $self->variant_property_value->save;
162

  
163
  flash_later('info', $is_new ? t8('The Variant Property Value has been created.') : t8('The Variant Property Value has been saved.'));
164
  $self->action_edit_property();
165
  return;
166
  $self->redirect_to(
167
    action => 'edit_variant_property',
168
    id     => $self->variant_property->id,
169
  );
166 170
}
167 171

  
168 172
sub _setup_form_action_bar {
......
173 177
      combobox => [
174 178
        action => [
175 179
          t8('Save'),
176
          submit    => [ '#form', { action => "VariantProperty/save_property" } ],
180
          submit    => [ '#form', { action => "VariantProperty/save_variant_property" } ],
177 181
          accesskey => 'enter',
178 182
        ],
179 183
         action => [
180 184
          t8('Delete'),
181
          submit => [ '#form', { action => "VariantProperty/delete_property" } ],
185
          submit => [ '#form', { action => "VariantProperty/delete_variant_property" } ],
182 186
        ],
183 187
      ],
184 188
      action => [
185 189
        t8('Cancel'),
186
        submit => [ '#form', { action => "VariantProperty/list_properties" } ],
190
        submit => [ '#form', { action => "VariantProperty/list_variant_properties" } ],
187 191
      ],
188 192
    );
189 193
  }
......
196 200
    $bar->add(
197 201
      link => [
198 202
        t8('Add'),
199
        link => $self->url_for(action => 'edit_property'),
203
        link => $self->url_for(action => 'edit_variant_property'),
200 204
      ],
201 205
    )
202 206
  };
SL/DB/VariantProperty.pm
9 9
use SL::DB::Manager::VariantProperty;
10 10
use SL::DB::Helper::ActsAsList;
11 11
use SL::DB::Helper::TranslatedAttributes;
12
use SL::DB::Helper::AttrSorted;
12 13

  
13 14
__PACKAGE__->meta->add_relationships(
14 15
  parent_variants => {
......
24 25
  }
25 26
);
26 27

  
28
__PACKAGE__->attr_sorted({ unsorted => 'property_values', position => 'sortkey'});
29

  
27 30
__PACKAGE__->meta->initialize;
28 31

  
29 32
sub validate {
SL/DB/VariantPropertyValue.pm
7 7

  
8 8
use SL::DB::MetaSetup::VariantPropertyValue;
9 9
use SL::DB::Manager::VariantPropertyValue;
10
use SL::DB::Helper::ActsAsList;
10 11

  
11 12
__PACKAGE__->meta->add_relationships(
12 13
  parent_variants => {
js/kivi.VariantProperty.js
1 1
namespace('kivi.VariantProperty', function(ns) {
2 2
  var $dialog;
3 3

  
4
  ns.variant_dialog = function(title, html) {
5
    var id            = 'jqueryui_popup_dialog';
4
  ns.variant_property_value_dialog = function(title, html) {
5
    var id = 'jqueryui_popup_dialog';
6 6
    var dialog_params = {
7 7
      id:     id,
8 8
      width:  800,
9 9
      height: 500,
10 10
      modal:  true,
11
      close: function(event, ui) { $dialog.remove(); },
11
      close: function(_event, _ui) { $dialog.remove(); },
12 12
    };
13 13

  
14 14
    $('#' + id).remove();
......
23 23
    return true;
24 24
  };
25 25

  
26

  
27
  ns.save_variant_value = function() {
28
    var form = $('#variant_property_value_form').serializeArray();
29
    console.log("my", form)
30
    form.push( { name: 'action', value: 'VariantProperty/save_property_value' }
31
    );
32

  
33
    $.post('controller.pl', form, function(data) {
34
      kivi.eval_json_result(data);
35
    });
26
  ns.save_variant_property_value = function() {
27
    var data = $('#variant_property_value_form').serializeArray();
28
    data.push({ name: 'action', value: 'VariantProperty/save_variant_property_value' });
29
    $.post('controller.pl', data, kivi.eval_json_result);
36 30
  };
37 31

  
38
  ns.add_or_edit_variant_value = function(id) {
39
    $.post('controller.pl', { action: 'VariantProperty/edit_property_value', id: id }, function(data) {
40
      kivi.eval_json_result(data);
41
    });
32
  ns.add_variant_property_value = function() {
33
    var data = $('#variant_property_value_list_form').serializeArray();
34
    data.push({ name: 'action', value: 'VariantProperty/add_variant_property_value' });
35
    $.post("controller.pl", data, kivi.eval_json_result);
36
  }
37

  
38
  ns.edit_variant_property_value = function(variant_property_value_id) {
39
    $.post('controller.pl', {
40
      action: 'VariantProperty/edit_variant_property_value',
41
      variant_property_value_id: variant_property_value_id
42
    }, kivi.eval_json_result);
42 43
  };
43 44

  
44 45
});
menus/user/10-variant_properties.yaml
4 4
  name: Variant Properties
5 5
  order: 1110
6 6
  params:
7
    action: VariantProperty/list_properties
7
    action: VariantProperty/list_variant_properties
templates/design40_webpages/variant_property/variant_property_form.html
1 1
[% USE HTML %][% USE T8 %][% USE L %][% USE LxERP %][%- USE P -%]
2 2
[% USE Dumper %]
3

  
3 4
<h1>[% FORM.title %]</h1>
5
[%- INCLUDE 'common/flash.html' %]
4 6

  
5
[% #Dumper.dump_html(SELF.variant_property.property_values) %] 
6 7
<div class="wrapper">
7 8
<form method="post" action="controller.pl" id="form">
8
  [%- INCLUDE 'common/flash.html' %] 
9
[% P.hidden_tag("id", SELF.variant_property.id) %]
9 10

  
10 11
<table class="tbl-horizontal">
11 12
  <caption> [% LxERP.t8("Variant Property") %] </caption>
......
23 24
      <td> [%- 'Abbreviation' | $T8 %] </td>
24 25
      <td> [% P.input_tag("variant_property.abbreviation", SELF.variant_property.abbreviation, "data-validate"="required", "data-title"=LxERP.t8("Abbreviation")) %] </td>
25 26
    </tr>
26
    [% IF SELF.variant_property.id %] 
27
    [% END %] 
28 27
  </tbody>
29 28
</table>
30 29

  
31
   
32 30
<table class="tbl-horizontal">
33 31
  <caption> [%- 'Translation' | $T8 %] </caption>
34 32
  <tbody>
35
    [%- FOREACH language = SELF.languages %] 
33
    [%- FOREACH language = SELF.languages %]
36 34
    <tr><th class="caption" colspan="2">[%- HTML.escape(language.description) %] ([%- LxERP.t8('Translation') %])</th></tr>
37 35
    <tr>
38 36
      <td> [%- 'Name' | $T8 %] </td>
......
48 46
    </tr>
49 47
    <tr>
50 48
      <th> [% LxERP.t8("Texts for quotations & orders") %] </th>
51
      <td> 
49
      <td>
52 50
      <input type="text" name="translation_[% language.id %]" value="[%- HTML.escape(SELF.variant_property.translated_attribute('description_long', language, 1)) %]" size="60">
53 51
      </td>
54 52
      </tr>
55 53
      <tr>
56 54
      <th> [% LxERP.t8("Texts for invoices") %] </th>
57
      <td> 
55
      <td>
58 56
      <input type="text" name="translation_invoice_[% language.id %]" value="[%- HTML.escape(SELF.variant_property.translated_attribute('description_long_invoice', language, 1)) %]" size="60">
59 57
      </td>
60 58
    </tr>
61
    [%- END %] 
59
    [%- END %]
62 60
  </tbody>
63 61
</table>
64
[% P.hidden_tag("id", SELF.variant_property.id) %] 
65
    
66

  
67 62
</form>
68 63

  
69
  [% IF !SELF.variant_property.property_values.size %] 
70
  <p>
71
    [%- 'No Variantpropertyvalues has been created yet.' | $T8 %] 
72
  </p>
73
  [%- ELSE %] 
74
    [% PROCESS "variant_property/variant_property_value_list.html" %]
75
  [% END %]
64
[% IF SELF.variant_property.id %]
65
  [% PROCESS "variant_property/variant_property_value_list.html" %]
66
[% END %]
76 67

  
77
  [% L.button_tag('kivi.VariantProperty.add_or_edit_variant_value(' _ SELF.variant_property.id _ ')', LxERP.t8("Add"))  %]
78 68
</div>
templates/design40_webpages/variant_property/variant_property_list.html
9 9
<h1>[% title %]</h1>
10 10

  
11 11
<div class="wrapper">
12
  [% IF !VARIANTPROPERTIES.size %] 
12
  [% IF !VARIANTPROPERTIES.size %]
13 13
  <p>
14
    [%- 'No Variantproperty has been created yet.' | $T8 %] 
14
    [%- 'No Variantproperty has been created yet.' | $T8 %]
15 15
  </p>
16
  [%- ELSE %] 
16
  [%- ELSE %]
17 17
  <table id="variant_properties" class="tbl-list width-moderate">
18 18
    <caption>[% 'Variant Properties' | $T8 %]</caption>
19 19
    <thead>
20
      <tr>
20 21
        <th><img src="image/updown.png" alt="[% LxERP.t8('reorder item') %]"></th>
21 22
        <th>[% 'Name'         | $T8 %]</th>
22 23
        <th>[% 'Unique Name'  | $T8 %]</th>
......
27 28
      [% FOREACH variant_property = VARIANTPROPERTIES %]
28 29
      <tr id="variant_property_id_[% variant_property.id %]">
29 30
        <td class="dragdrop"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
30
        <td>[% L.link(SELF.url_for(action="edit_property",
31
        <td>[% L.link(SELF.url_for(action="edit_variant_property",
31 32
          id=variant_property.id), variant_property.name) %]</td>
32 33
        <td>[% variant_property.unique_name  | html %]</td>
33 34
        <td>[% variant_property.abbreviation | html %]</td>
34
        </tr>
35
      </tr>
35 36
      [% END %]
36 37
    </tbody>
37 38
  </table>
38
  [%- END %] 
39
  [%- END %]
39 40
</div>
40 41

  
41 42
[% L.sortable_element('#variant_properties tbody', url =>
42
SELF.url_for(action='reorder_properties'), with => 'variant_property_id') %]
43

  
43
SELF.url_for(action='reorder_variant_properties'), with => 'variant_property_id') %]
templates/design40_webpages/variant_property/variant_property_value_form.html
1 1
[% USE HTML %][% USE T8 %][% USE L %][% USE LxERP %][%- USE P -%]
2 2
[% USE Dumper %]
3 3
<h1>[% FORM.title %]</h1>
4
[%- INCLUDE 'common/flash.html' %] 
4
[%- INCLUDE 'common/flash.html' %]
5 5

  
6 6
<form id="variant_property_value_form">
7
    [% P.hidden_tag("variant_property_id", SELF.variant_property.id) %] 
8
    [% P.input_tag("h_variant_property_id", SELF.variant_property.id) %] 
9
    Name:[% SELF.variant_property.name %]
7
  [% P.hidden_tag("variant_property_value.id", variant_property_value.id) %]
10 8
  <div class="wrapper">
11 9
    <table class="tbl-horizontal">
12 10
      <caption> [% LxERP.t8("Value") %] </caption>
......
14 12
      <tbody>
15 13
        <tr>
16 14
          <td> [%- 'Value' | $T8 %] </td>
17
          <td> [% P.input_tag("variant_property_value.value", SELF.variant_property_value.value, "data-validate"="required", "data-title"=LxERP.t8("Value")) %] </td>
15
          <td>
16
            [% P.input_tag(
17
                "variant_property_value.value",
18
                variant_property_value.value,
19
                "data-validate"="required",
20
                "data-title"=LxERP.t8("Value")
21
            ) %]
22
          </td>
18 23
        </tr>
19
          <tr>
24
        <tr>
20 25
          <td> [%- 'Abbreviation' | $T8 %] </td>
21
          <td> [% P.input_tag("variant_property_value.abbreviation", SELF.variant_property_value.abbreviation, "data-validate"="required", "data-title"=LxERP.t8("Abbreviation")) %] </td>
26
          <td>
27
            [% P.input_tag(
28
                "variant_property_value.abbreviation",
29
                variant_property_value.abbreviation,
30
                "data-validate"="required",
31
                "data-title"=LxERP.t8("Abbreviation"),
32
            ) %]
33
          </td>
22 34
        </tr>
23 35
      </tbody>
24 36
    </table>
......
28 40
    <table class="tbl-horizontal">
29 41
      <caption> [%- 'Translation' | $T8 %] </caption>
30 42
      <tbody>
31
        [%- FOREACH language = SELF.languages %] 
43
        [%- FOREACH language = SELF.languages %]
32 44
        <tr><th class="caption" colspan="2">[%- HTML.escape(language.description) %] ([%- LxERP.t8('Translation') %])</th></tr>
33 45
        <tr>
34 46
          <td> [%- 'Value' | $T8 %] </td>
35
          <input type="text" name="translation_[% language.id %]" value="[%- HTML.escape(SELF.variant_property_value.translated_attribute('description_long', language, 1)) %]" size="60">
36
          <td> [% P.input_tag("variant_property_value.value", SELF.variant_property_value.value, "data-validate"="required", "data-title"=LxERP.t8("value")) %] </td>
47
          <input type="text" name="translation_[% language.id %]" value="[%- HTML.escape(variant_property_value.translated_attribute('description_long', language, 1)) %]" size="60">
48
          <td> [% P.input_tag("variant_property_value.value", variant_property_value.value, "data-validate"="required", "data-title"=LxERP.t8("value")) %] </td>
37 49
        </tr>
38 50
          <tr>
39 51
          <td> [%- 'Abbreviation' | $T8 %] </td>
40
          <input type="text" name="translation_invoice_[% language.id %]" value="[%- HTML.escape(SELF.variant_property_value.translated_attribute('description_long_invoice', language, 1)) %]" size="60">
41
          <td> [% P.input_tag("variant_property_value.description", SELF.variant_property_value.description, "data-validate"="required", "data-title"=LxERP.t8("Description")) %] </td>
52
          <input type="text" name="translation_invoice_[% language.id %]" value="[%- HTML.escape(variant_property_value.translated_attribute('description_long_invoice', language, 1)) %]" size="60">
53
          <td> [% P.input_tag("variant_property_value.description", variant_property_value.description, "data-validate"="required", "data-title"=LxERP.t8("Description")) %] </td>
42 54
        </tr>
43
        [%- END %] 
55
        [%- END %]
44 56
      </tbody>
45 57
    </table>
46
    [% P.hidden_tag("variant_property_value_id", SELF.variant_property_value.id) %] 
47 58
  </div>
48 59
</form>
49 60

  
50 61
<div class="buttons">
51
    [% L.button_tag("kivi.VariantProperty.save_variant_value()", LxERP.t8("Save"))  %]
62
    [% L.button_tag("kivi.VariantProperty.save_variant_property_value()", LxERP.t8("Save"))  %]
52 63
</div>
53 64

  
templates/design40_webpages/variant_property/variant_property_value_list.html
3 3
[% USE L %]
4 4
[% USE LxERP %]
5 5

  
6

  
7 6
<div class="wrapper">
8

  
7
<form id="variant_property_value_list_form">
8
  [% L.hidden_tag("id", SELF.variant_property.id) %]
9 9
  <table class="tbl-list width-moderate" id="variant_property_values">
10
    <caption>[% 'Value' | $T8 %]</caption>
10
    <caption>[% 'Values' | $T8 %]</caption>
11 11
    <thead>
12 12
      <tr>
13 13
        <th><img src="image/updown.png" alt="[% LxERP.t8('reorder item') %]"></th>
......
16 16
      </tr>
17 17
    </thead>
18 18
    <tbody>
19
       [% FOREACH value = SELF.variant_property.property_values %]
20
        <tr id="variant_property_value_id_[% variant_property_value.id %]">
21
          <td class="dragdrop"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
22
          <td><a href="#" onclick="kivi.VariantProperty.add_or_edit_variant_value('[% value.id %]');">[% value.value        | html %]</a></td>
23
          <td>[% value.abbreviation | html %]</td>
24
        </tr>
19
      [% FOREACH value = SELF.variant_property.property_values_sorted %]
20
      <tr id="variant_property_value_id_[% value.id %]">
21
        <td class="dragdrop"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
22
        <td><a href="#" onclick="kivi.VariantProperty.edit_variant_property_value('[% value.id %]');">[% value.value | html %]</a></td>
23
        <td>[% value.abbreviation | html %]</td>
24
       </tr>
25 25
      [% END %]
26 26
    </tbody>
27
    <tfoot>
28
      <tr>
29
        <td>
30
          [% L.button_tag(
31
                'kivi.VariantProperty.add_variant_property_value()',
32
                LxERP.t8("Add counted")
33
          ) %]
34
        </td>
35
        <td>
36
          [% L.input_tag(
37
              "new_variant_property_value.value",
38
              '',
39
              class="wi-small",
40
          ) %]
41
        </td>
42
        <td>
43
          [% L.input_tag(
44
              "new_variant_property_value.abbreviation",
45
              '',
46
              class="wi-small",
47
          ) %]
48
        </td>
49
      </tr>
50
    </tfoot>
27 51
  </table>
52
</form>
28 53
</div>
29 54

  
30 55
[% L.sortable_element('#variant_property_values tbody', url =>
31 56
SELF.url_for(action='reorder_variant_property_values'), with => 'variant_property_value_id') %]
57

  

Auch abrufbar als: Unified diff