Projekt

Allgemein

Profil

Webmasken individuell anpassen » Historie » Version 8

Andreas Rudin, 20.12.2016 22:28

1 1 Andreas Rudin
h1. Webmasken individuell anpassen
2
3
Ich zeige hier einige Beispiele, wie Eingabemasken in kivitendo den eigenen Bedürfnissen angepasst werden können.
4
Ziel dabei:
5
* bessere Übersicht
6
* weniger Eingabefehler
7
* schnelleres Arbeiten
8
9 3 Andreas Rudin
Als Beispiel verwende ich die Maske zum Erfassen und Editieren von KundInnen/LieferantInnen.
10 1 Andreas Rudin
Die dafür benötigten Dateien finden wir im Pfad
11
@templates/webpages/customer_vendor/@
12
13 5 Andreas Rudin
=> Bei solchen Änderungen ist es selbstverständlich wichtig darauf zu achten, dass bei einem Upgrade von kivitendo die Änderugen überschrieben werden können und dann nach dem Upgrade erneut von Hand wieder eingegeben werden müssen!
14
15 1 Andreas Rudin
h2. Nicht benötigte Felder ausblenden:
16
17
Fax-Nummern von KundInnen und LieferantInnen werden nicht benötigt, da kein Fax vorhanden ist:
18
19
@./tabs/billing.html, Zeilen 140ff:@
20
<pre>
21
<!-- Fax auskommentiert
22
    <tr>
23
      <th align="right" nowrap>[% 'Fax' | $T8 %]</th>
24
25
      <td>
26
        [% L.input_tag('cv.fax', SELF.cv.fax, size = 30) %]
27
      </td>
28
    </tr>
29
-->
30
</pre>
31 2 Andreas Rudin
32
h2. Felder umplatzieren:
33
34
Der Kundentyp soll direkt unter dem Kundennamen erscheinen, damit nicht vergessen wird, diesen auszufüllen:
35
36 3 Andreas Rudin
1. ./tabs/billing.html, Zeilen 269ff  auskommentieren und <tr> und </tr> Tags versetzen, um "Sprache" und "Lieferbedingungen" eine Zeile nach oben zu verschieben:
37 2 Andreas Rudin
38
@./tabs/billing.html, Zeilen 257ff:@
39
<pre>
40
<!-- Tabellenzeilenbeginn nach oben verschoben --> 
41
       <tr>
42
  [% IF ( SELF.all_currencies.size ) %]
43
<!-- <tr> -->
44
          <th align="right">[% 'Currency' | $T8 %]</th>
45
46
          <td>
47
            [% L.select_tag('cv.currency_id', SELF.all_currencies, title_key = 'name', value_key = 'id', default = SELF.cv.currency_id) %]
48
          </td>
49
<!-- </tr> -->
50
  [% END %]
51
52
<!-- <tr> -->
53
<!-- Kunden- bzw. Lieferantentyp nach oben verschoben
54
      [% IF ( !INSTANCE_CONF.get_vertreter ) %]
55
         <th align="right">
56
           [% IF ( SELF.is_vendor() ) %]
57
             [% 'Type of Vendor' | $T8 %]
58
           [% ELSE %]
59
             [% 'Type of Customer' | $T8 %]
60
           [% END %]
61
         </th>
62
63
         <td>
64
           [% L.select_tag('cv.business_id', SELF.all_business, default = SELF.cv.business_id, value_key = 'id', title_key = 'description', with_empty = 1) %]
65
         </td>
66
      [% END %]
67 1 Andreas Rudin
-->
68
         <th align="right">[% 'Language' | $T8 %]</th>
69 3 Andreas Rudin
</pre>
70
71
2. Kundentypfeld hinter Kundennamen einfügen:
72
73
@./tabs/billing.html, Zeilen 75ff:@
74
<pre>
75 4 Andreas Rudin
<!-- Kundentyp hier eingefuegt -->
76 3 Andreas Rudin
     <tr>
77
      [% IF ( !INSTANCE_CONF.get_vertreter ) %]
78
        <th align="right">
79
          [% IF ( SELF.is_vendor() ) %]
80
            [% 'Type of Vendor' | $T8 %]
81
          [% ELSE %]
82
            [% 'Type of Customer' | $T8 %]
83
          [% END %]
84
        </th>
85
86
        <td>
87
          [% L.select_tag('cv.business_id', SELF.all_business, default = SELF.cv.business_id, value_key = 'id', title_key = 'description', with_empty = 1) %]
88
        </td>
89
      [% END %]
90
     </tr>
91 1 Andreas Rudin
</pre>
92 4 Andreas Rudin
93
h2. Benutzerdefinierte Variablen in Hauptseite integrieren
94
95
Als benutzerdefinierte Variable wurde definiert: Datenfeldbezeichnung: "Vorname", Datenfeldname: "vorname", Typ: "Textzeile"
96
Diese soll unter dem Kundennamen, aber über dem neu platzierten Kundentyp eingefügt werden.
97
98
1. Benutzerdefinierte Variable "Vorname" in ./tabs/billing.html einfügen:
99
100
@./tabs/billing.html, Zeilen 75ff:@
101
<pre>
102
<!-- Vorname hier eingefuegt -->
103
        [% FOREACH var = SELF.cv.cvars_by_config %]
104
          [% IF ( var.config.name == 'vorname' ) %]
105
        <tr>
106
          <th align="right" valign="top" nowrap>[% var.config.description | html %]</th>
107
108
          <td valign="top">
109
            [% INCLUDE 'common/render_cvar_input.html'
110
                        cvar_name_prefix = 'cv_cvars.'
111
                        var_name = ''
112
            %]
113
          </td>
114
        </tr>
115
          [% END %]
116
        [% END %]
117
</pre>
118
119
=> Da die Ausgabe der benutzerdefinierten Variablen in einer FOREACH-Schleife erfolgt, wird innerhalb der FOREACH-Schleife mit einer IF-Abfrage der gewüschte Datenfeldname abgefragt und nur dann der entsprechende HTML-Code erzeugt.
120
121
2. Benutzerdefinierte Variable "Vorname" im Tab "Benutzerdefinierte Variablen" nicht mehr anzeigen:
122
Dies ist wichtig, da sonst beim Speichern der Wert, der hier in der Maske steht die Eingabe im Haupt-Tab wieder überschreibt!
123
124
@./tabs/custom_variables.html, Zeilen 6ff:@
125
<pre>
126
      [% FOREACH var = SELF.cv.cvars_by_config %]
127
<!-- Vorname ausschliessen -->
128
        [% IF ( var.config.name != 'vorname' ) %]
129
        <tr>
130
          <th align="right" valign="top" nowrap>[% var.config.description | html %]</th>
131
132
          <td valign="top">
133
            [% INCLUDE 'common/render_cvar_input.html'
134
                        cvar_name_prefix = 'cv_cvars.'
135
                        var_name = ''
136
            %]
137
          </td>
138
        </tr>
139
        [% END %]
140
      [% END %]
141
</pre>
142
=> Umgekehrtes Vorgehen wie oben: HTML-Ausgabe erfolgt nur, wenn der Datenfeldname ungleich 'vorname'.
143 6 Andreas Rudin
144
h2. Bezeichnungen individuell anpassen
145 7 Andreas Rudin
146
Die Bezeichnung "Kundenname" soll im Deutschen durch "Nachname oder Firmenname" ersetzt werden.
147
148 8 Andreas Rudin
Dazu wird zunächst im Ordner locale/de/more eine Kopie der Datei "all" mit Namen "custom" erstellt.
149 7 Andreas Rudin
(Der Name der neuen Datei kann beliebig gewählt werden)
150
<pre>
151
cd Pfad-zur-kivitendo-Installation/locale/de/more
152
sudo cp -a all custom
153
</pre>
154
155
Anschliessend wird in der Datei locale/de/all nach allen Vorkommnissen des Worts "Kundename" gesucht.
156
157
Alle Zeilen, die gefunden wurden werden in die neue Datei locale/de/more/custom übertragen und entsprechend angepasst:
158
159
@locale/de/more/custom@
160
<pre>
161
#!/usr/bin/perl
162
# -*- coding: utf-8; -*-
163
# vim: fenc=utf-8
164
165
use utf8;
166
167
# These are special translations
168
# The file has the form of 'english text'  => 'foreign text',
169
170
$self->{more_texts} = {
171
172
 'Customer Name'               => 'Nachname oder Firmenname',
173
 'Customer missing!'           => 'Nachname oder Firmenname fehlt!',
174
 'Customername'                => 'Nachname oder Firmenname',
175
 'The customer name is missing.' => 'Nachname oder Firmenname fehlt.',
176
}
177
</pre>
178
179
Falls im Englischen entsprechende Anpassungen gewünscht werden, so wird analog eine Datei locale/en/more/custom erstellt.