Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e98e2094

Von Moritz Bunkus vor mehr als 17 Jahren hinzugefügt

  • ID e98e20941b580769e3f4e6e2bcac60a679b7e06b
  • Vorgänger f51616ce
  • Nachfolger 99308d4c

Ein oben angedocktes, auf CSS basierendes Menü hinzugefügt.

Unterschiede anzeigen:

SL/Form.pm
349 349
sub header {
350 350
  $main::lxdebug->enter_sub();
351 351

  
352
  my ($self) = @_;
352
  my ($self, $extra_code) = @_;
353 353

  
354 354
  if ($self->{header}) {
355 355
    $main::lxdebug->leave_sub();
......
439 439
  
440 440
  </script>
441 441

  
442
  $extra_code
442 443
</head>
443 444

  
444 445
|;
SL/Menu.pm
83 83
  # add other params
84 84
  foreach my $key (keys %{ $self->{$item} }) {
85 85
    $str .= "&" . $form->escape($key, 1) . "=";
86
    ($value, $conf) = split /=/, $self->{$item}{$key}, 2;
86
    ($value, $conf) = split(/=/, $self->{$item}{$key}, 2);
87 87
    $value = $myconfig->{$value} . "/$conf" if ($conf);
88 88
    $str .= $form->escape($value, 1);
89 89
  }
......
99 99
  return $str;
100 100
}
101 101

  
102
sub menuitem_v3 {
103
  $main::lxdebug->enter_sub();
104

  
105
  my ($self, $myconfig, $form, $item, $other) = @_;
106

  
107
  my $module = $form->{script};
108
  my $action = "section_menu";
109
  my $target = "";
110

  
111
  if ($self->{$item}{module}) {
112
    $module = $self->{$item}{module};
113
  }
114
  if ($self->{$item}{action}) {
115
    $action = $self->{$item}{action};
116
  }
117
  if ($self->{$item}{target}) {
118
    $target = $self->{$item}{target};
119
  }
120

  
121
  my $level = $form->escape($item);
122

  
123
  my $str = qq|<a href="$module?action=| . $form->escape($action) .
124
    qq|&level=| . $form->escape($level);
125
  map({ $str .= "&${_}=" . $form->escape($form->{$_}); } qw(path login password));
126

  
127
  my @vars = qw(module action target href);
128

  
129
  if ($self->{$item}{href}) {
130
    $str  = qq|<a href=$self->{$item}{href}|;
131
    @vars = qw(module target href);
132
  }
133

  
134
  map { delete $self->{$item}{$_} } @vars;
135

  
136
  # add other params
137
  foreach my $key (keys %{ $self->{$item} }) {
138
    $str .= "&" . $form->escape($key, 1) . "=";
139
    ($value, $conf) = split(/=/, $self->{$item}{$key}, 2);
140
    $value = $myconfig->{$value} . "/$conf" if ($conf);
141
    $str .= $form->escape($value, 1);
142
  }
143

  
144
  $str .= '"';
145

  
146
  if ($target) {
147
    $str .= qq| target="| . $form->quote($target) . qq|"|;
148
  }
149

  
150
  if ($other) {
151
    foreach my $key (keys(%{$other})) {
152
      $str .= qq| ${key}="| . $form->quote($other->{$key}) . qq|"|;
153
    }
154
  }
155

  
156
  $str .= ">";
157

  
158
  $main::lxdebug->leave_sub();
159

  
160
  return $str;
161
}
162

  
102 163
sub menuitemNew {
103 164
  my ($self, $myconfig, $form, $item) = @_;
104 165

  
......
128 189
  # add other params
129 190
  foreach my $key (keys %{ $self->{$item} }) {
130 191
    $str .= "&" . $form->escape($key, 1) . "=";
131
    ($value, $conf) = split /=/, $self->{$item}{$key}, 2;
192
    ($value, $conf) = split(/=/, $self->{$item}{$key}, 2);
132 193
    $value = $myconfig->{$value} . "/$conf" if ($conf);
133 194
    $str .= $form->escape($value, 1);
134 195
  }
......
150 211
    @menu = grep { /^${menulevel}--/ } @{ $self->{ORDER} };
151 212
  }
152 213

  
153
  my @a    = split /;/, $myconfig->{acs};
214
  my @a    = split(/;/, $myconfig->{acs});
154 215
  my $excl = ();
155 216

  
156 217
  # remove --AR, --AP from array
bin/mozilla/admin.pl
601 601
	</tr>
602 602
       <tr>
603 603
           <th align=right>| . $locale->text('Setup Menu') . qq|</th>
604
           <td><input name=menustyle type=radio class=radio value=neu $menustyle_neu>&nbsp;| .
604
           <td><input name=menustyle type=radio class=radio value=v3 $menustyle_v3>&nbsp;| .
605
           $locale->text("Top (CSS)") . qq|
606
           <input name=menustyle type=radio class=radio value=neu $menustyle_neu>&nbsp;| .
605 607
           $locale->text("Top (Javascript)") . qq|
606 608
           <input name=menustyle type=radio class=radio value=old $menustyle_old>&nbsp;| .
607 609
           $locale->text("Old (on the side)") . qq|
bin/mozilla/am.pl
3074 3074
	</tr>
3075 3075
	<tr>
3076 3076
	  <th align=right>| . $locale->text('Setup Menu') . qq|</th>
3077
	  <td><input name=menustyle type=radio class=radio value=neu $menustyle_neu>&nbsp;| .
3077
	  <td><input name=menustyle type=radio class=radio value=v3 $menustyle_v3>&nbsp;| .
3078
    $locale->text("Top (CSS)") . qq|
3079
	  <input name=menustyle type=radio class=radio value=neu $menustyle_neu>&nbsp;| .
3078 3080
    $locale->text("Top (Javascript)") . qq|
3079 3081
    <input name=menustyle type=radio class=radio value=old $menustyle_old>&nbsp;| .
3080 3082
    $locale->text("Old (on the side)") . qq|</td>
bin/mozilla/login.pl
149 149
  }
150 150

  
151 151
  # made it this far, execute the menu
152
  if ($user->{menustyle} eq "neu") {
152
  if ($user->{menustyle} eq "v3") {
153
    $form->{callback} =
154
      "menuv3.pl?login=$form->{login}&password=$form->{password}&path=$form->{path}&action=display";
155
  } elsif ($user->{menustyle} eq "neu") {
153 156
    $form->{callback} =
154 157
      "menunew.pl?login=$form->{login}&password=$form->{password}&path=$form->{path}&action=display";
155 158
  } else {
bin/mozilla/menuv3.pl
1
#=====================================================================
2
# LX-Office ERP
3
# Copyright (C) 2004
4
# Based on SQL-Ledger Version 2.1.9
5
# Web http://www.lx-office.org
6
#
7
######################################################################
8
# SQL-Ledger Accounting
9
# Copyright (c) 1998-2002
10
#
11
#  Author: Dieter Simader
12
#   Email: dsimader@sql-ledger.org
13
#     Web: http://www.sql-ledger.org
14
#
15
#  Contributors: Christopher Browne
16
#
17
# This program is free software; you can redistribute it and/or modify
18
# it under the terms of the GNU General Public License as published by
19
# the Free Software Foundation; either version 2 of the License, or
20
# (at your option) any later version.
21
#
22
# This program is distributed in the hope that it will be useful,
23
# but WITHOUT ANY WARRANTY; without even the implied warranty of
24
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25
# GNU General Public License for more details.
26
# You should have received a copy of the GNU General Public License
27
# along with this program; if not, write to the Free Software
28
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29
#######################################################################
30
#
31
# thre frame layout with refractured menu
32
#
33
#######################################################################
34

  
35
$menufile = "menu.ini";
36
use SL::Menu;
37

  
38
1;
39

  
40
# end of main
41

  
42
sub display {
43
  $form->header(qq|<link rel="stylesheet" href="css/menuv3.css?id=| .
44
                int(rand(100000)) . qq|" type="text/css">|);
45

  
46
  print(qq|<body>\n|);
47

  
48
  clock_line();
49

  
50
  print qq|
51

  
52
<div id="menu">
53

  
54
| . acc_menu() . qq|
55

  
56
</div>
57

  
58
<div style="clear: both;"></div>
59

  
60
<iframe id="win1" src="login.pl?login=$form->{login}&password=$form->{password}&action=company_logo&path=$form->{path}" width="100%" height="93%" name="main_window" style="position: absolute; border: 0px; z-index: 99; ">
61
<p>Ihr Browser kann leider keine eingebetteten Frames anzeigen.
62
</p>
63
</iframe>
64
</body>
65
</html>
66

  
67
|;
68

  
69
}
70

  
71
sub clock_line {
72

  
73
  $login = "["
74
    . $form->{login}
75
    . " - <a href=\"login.pl?path="
76
    . $form->{"path"}
77
    . "&password="
78
    . $form->{"password"}
79
    . "&action=logout\" target=\"_top\">"
80
    . $locale->text('Logout')
81
    . "</a>] ";
82
  my ($Sekunden, $Minuten,   $Stunden,   $Monatstag, $Monat,
83
      $Jahr,     $Wochentag, $Jahrestag, $Sommerzeit)
84
    = localtime(time);
85
  my $CTIME_String = localtime(time);
86
  $Monat     += 1;
87
  $Jahrestag += 1;
88
  $Monat     = $Monat < 10     ? $Monat     = "0" . $Monat     : $Monat;
89
  $Monatstag = $Monatstag < 10 ? $Monatstag = "0" . $Monatstag : $Monatstag;
90
  $Jahr += 1900;
91
  my @Wochentage = ("Sonntag",    "Montag",  "Dienstag", "Mittwoch",
92
                    "Donnerstag", "Freitag", "Samstag");
93
  my @Monatsnamen = ("",       "Januar",    "Februar", "M&auml;rz",
94
                     "April",  "Mai",       "Juni",    "Juli",
95
                     "August", "September", "Oktober", "November",
96
                     "Dezember");
97
  $datum =
98
      $Wochentage[$Wochentag] . ", der "
99
    . $Monatstag . "."
100
    . $Monat . "."
101
    . $Jahr . " - ";
102

  
103
  #$zeit="<div id='Uhr'>".$Stunden.":".$Minuten.":".$Sekunden."</div>";
104
  $zeit = "<div id='Uhr'>" . $Stunden . ":" . $Minuten . "</div>";
105
  print qq|
106
<script type="text/javascript">
107
<!--
108
var clockid=new Array()
109
var clockidoutside=new Array()
110
var i_clock=-1
111
var thistime= new Date()
112
var hours= | . $Stunden . qq|;
113
var minutes= | . $Minuten . qq|;
114
var seconds= | . $Sekunden . qq|;
115
if (eval(hours) <10) {hours="0"+hours}
116
if (eval(minutes) < 10) {minutes="0"+minutes}
117
if (seconds < 10) {seconds="0"+seconds}
118
//var thistime = hours+":"+minutes+":"+seconds
119
var thistime = hours+":"+minutes
120

  
121
function writeclock() {
122
	i_clock++
123
	if (document.all \|\| document.getElementById \|\| document.layers) {
124
		clockid[i_clock]="clock"+i_clock
125
		document.write("<font family=arial size=2><span id='"+clockid[i_clock]+"' style='position:relative'>"+thistime+"</span></font>")
126
	}
127
}
128

  
129
function clockon() {
130
	thistime= new Date()
131
	hours=thistime.getHours()
132
	minutes=thistime.getMinutes()
133
	seconds=thistime.getSeconds()
134
	if (eval(hours) <10) {hours="0"+hours}
135
	if (eval(minutes) < 10) {minutes="0"+minutes}
136
	if (seconds < 10) {seconds="0"+seconds}
137
	//thistime = hours+":"+minutes+":"+seconds
138
	thistime = hours+":"+minutes
139

  
140
	if (document.all) {
141
		for (i=0;i<=clockid.length-1;i++) {
142
			var thisclock=eval(clockid[i])
143
			thisclock.innerHTML=thistime
144
		}
145
	}
146

  
147
	if (document.getElementById) {
148
		for (i=0;i<=clockid.length-1;i++) {
149
			document.getElementById(clockid[i]).innerHTML=thistime
150
		}
151
	}
152
	var timer=setTimeout("clockon()",60000)
153
}
154
//window.onload=clockon
155
//-->
156
</script>
157
<table border="0" width="100%" background="image/bg_titel.gif" cellpadding="0" cellspacing="0">
158
	<tr>
159
		<td  style="color:white; font-family:verdana,arial,sans-serif; font-size: 12px;"> &nbsp; [<a href="JavaScript:top.main_window.print()">drucken</a>]</td>
160
		<td align="right" style="vertical-align:middle; color:white; font-family:verdana,arial,sans-serif; font-size: 12px;" nowrap>|
161
    . $login . $datum . qq| <script>writeclock()</script>&nbsp;
162
		</td>
163
	</tr>
164
</table>
165
|;
166
}
167

  
168
sub acc_menu {
169
  $locale = Locale->new($language, "menu");
170

  
171
  $mainlevel = $form->{level};
172
  $mainlevel =~ s/$mainlevel--//g;
173
  my $menu = new Menu "$menufile";
174
  $menu = new Menu "custom_$menufile" if (-f "custom_$menufile");
175
  $menu = new Menu "$form->{login}_$menufile"
176
    if (-f "$form->{login}_$menufile");
177

  
178
  $| = 1;
179

  
180
  return print_menu($menu);
181
}
182

  
183
sub my_length {
184
  my ($s) = @_;
185
  my $len = 0;
186
  my $i;
187
  my $skip = 0;
188

  
189
  for ($i = 0; $i < length($s); $i++) {
190
    my $c = substr($s, $i, 1);
191
    if ($skip && ($c eq ";")) {
192
      $skip = 0;
193
    } elsif ($skip) {
194
      next;
195
    } elsif ($c eq "&") {
196
      $skip = 1;
197
      $len++;
198
    } else {
199
      $len++;
200
    }
201
  }
202

  
203
  return $len;
204
}
205

  
206
sub print_menu {
207
  my ($menu, $parent, $depth) = @_;
208
  my $html;
209

  
210
  die if ($depth * 1 > 5);
211

  
212
  my @menuorder;
213

  
214
  @menuorder = $menu->access_control(\%myconfig, $parent);
215

  
216
  $parent .= "--" if ($parent);
217

  
218
  foreach my $item (@menuorder) {
219
    substr($item, 0, length($parent)) = "";
220
    next if (($item eq "") || ($item =~ /--/));
221

  
222
    my $menu_item = $menu->{"${parent}${item}"};
223
    my $menu_title = $locale->text($item);
224
    my $menu_text = $menu_title;
225

  
226
    $menu_text =~ s/ /<br>/ if ($parent && (my_length($menu_text) >= 17));
227

  
228
    my $target = "main_window";
229
    $target = $menu_item->{"target"} if ($menu_item->{"target"});
230

  
231
    if ($menu_item->{"submenu"} || !defined($menu_item->{"module"}) ||
232
        ($menu_item->{"module"} eq "menu.pl")) {
233

  
234
      my $h = print_menu($menu, "${parent}${item}", $depth * 1 + 1);
235
      if (!$parent) {
236
        $html .= qq|<ul><li><h2>${menu_text}</h2><ul>${h}</ul></li></ul>|;
237
      } else {
238
        $html .= qq|<li><div class="x">${menu_text}</div><ul>${h}</ul></li>|;
239
      }
240
    } else {
241
      $html .= qq|<li>|;
242
      $html .= $menu->menuitem_v3(\%myconfig, $form, "${parent}$item",
243
                                  { "title" => $menu_title,
244
                                    "target" => $target });
245
      $html .= qq|${menu_text}</a></li>|;
246
    }
247
  }
248

  
249
  return $html;
250
}
css/csshover.htc
1
<attach event="ondocumentready" handler="parseStylesheets" />
2
<script>
3
/**
4
 *	Whatever:hover - V2.02.060206 - hover, active & focus
5
 *	------------------------------------------------------------
6
 *	(c) 2005 - Peter Nederlof
7
 *	Peterned - http://www.xs4all.nl/~peterned/
8
 *	License  - http://creativecommons.org/licenses/LGPL/2.1/
9
 *
10
 *	Whatever:hover is free software; you can redistribute it and/or
11
 *	modify it under the terms of the GNU Lesser General Public
12
 *	License as published by the Free Software Foundation; either
13
 *	version 2.1 of the License, or (at your option) any later version.
14
 *
15
 *	Whatever:hover is distributed in the hope that it will be useful,
16
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
 *	Lesser General Public License for more details.
19
 *
20
 *	Credits and thanks to:
21
 *	Arnoud Berendsen, Martin Reurings, Robert Hanson
22
 *
23
 *	howto: body { behavior:url("csshover.htc"); }
24
 *	------------------------------------------------------------
25
 */
26

  
27
var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,
28
currentSheet, doc = window.document, hoverEvents = [], activators = {
29
	onhover:{on:'onmouseover', off:'onmouseout'},
30
	onactive:{on:'onmousedown', off:'onmouseup'},
31
	onunknown:{on:'onfocus', off:'onblur'}
32
}
33

  
34
function parseStylesheets() {
35
	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
36
	window.attachEvent('onunload', unhookHoverEvents);
37
	var sheets = doc.styleSheets, l = sheets.length;
38
	for(var i=0; i<l; i++) 
39
		parseStylesheet(sheets[i]);
40
}
41
	function parseStylesheet(sheet) {
42
		if(sheet.imports) {
43
			try {
44
				var imports = sheet.imports, l = imports.length;
45
				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
46
			} catch(securityException){}
47
		}
48

  
49
		try {
50
			var rules = (currentSheet = sheet).rules, l = rules.length;
51
			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
52
		} catch(securityException){}
53
	}
54

  
55
	function parseCSSRule(rule) {
56
		var select = rule.selectorText, style = rule.style.cssText;
57
		if(!csshoverReg.test(select) || !style) return;
58
		
59
		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
60
		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
61
		var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
62
		var affected = select.replace(/:(hover|active|unknown).*$/, '');
63
		var elements = getElementsBySelect(affected);
64
		if(elements.length == 0) return;
65

  
66
		currentSheet.addRule(newSelect, style);
67
		for(var i=0; i<elements.length; i++)
68
			new HoverElement(elements[i], className, activators[pseudo]);
69
	}
70

  
71
function HoverElement(node, className, events) {
72
	if(!node.hovers) node.hovers = {};
73
	if(node.hovers[className]) return;
74
	node.hovers[className] = true;
75
	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
76
	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
77
}
78
	function hookHoverEvent(node, type, handler) {
79
		node.attachEvent(type, handler);
80
		hoverEvents[hoverEvents.length] = { 
81
			node:node, type:type, handler:handler 
82
		};
83
	}
84

  
85
	function unhookHoverEvents() {
86
		for(var e,i=0; i<hoverEvents.length; i++) {
87
			e = hoverEvents[i]; 
88
			e.node.detachEvent(e.type, e.handler);
89
		}
90
	}
91

  
92
function getElementsBySelect(rule) {
93
	var parts, nodes = [doc];
94
	parts = rule.split(' ');
95
	for(var i=0; i<parts.length; i++) {
96
		nodes = getSelectedNodes(parts[i], nodes);
97
	}	return nodes;
98
}
99
	function getSelectedNodes(select, elements) {
100
		var result, node, nodes = [];
101
		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
102
		if(identify) {
103
			var element = doc.getElementById(identify[1]);
104
			return element? [element]:nodes;
105
		}
106
		
107
		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
108
		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
109
		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
110
		for(var i=0; i<elements.length; i++) {
111
			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
112
			for(var j=0; j<result.length; j++) {
113
				node = result[j];
114
				if(classReg && !classReg.test(node.className)) continue;
115
				nodes[nodes.length] = node;
116
			}
117
		}	
118
		
119
		return nodes;
120
	}
121
</script>
css/menuv3.css
1
body {
2
behavior:url("css/csshover.htc");
3
}
4

  
5
#menu{
6
width:100%;
7
float:left;
8
}
9

  
10
#menu a, #menu h2, #menu div.x {
11
font:11px/16px arial,helvetica,sans-serif;
12
display:block;
13
border-width:1px;
14
border-style:solid;
15
border-color:#ccc #888 #555 #bbb;
16
white-space:nowrap;
17
margin:0;
18
padding:1px 0 1px 3px;
19
}
20

  
21
#menu h2{
22
color:#fff;
23
background:#000 url(../image/expand3.gif) no-repeat 100% 100%;
24
}
25

  
26
#menu a{
27
background:#eee;
28
text-decoration:none;
29
}
30

  
31
#menu a, #menu a:visited{
32
color:#000;
33
}
34

  
35
#menu a:hover{
36
color:#a00;
37
background:#ddd;
38
}
39

  
40
#menu a:active{
41
color:#060;
42
background:#ccc;
43
}
44

  
45
#menu ul{
46
list-style:none;
47
margin:0;
48
padding:0;
49
float:left;
50
width:9em;
51
}
52

  
53
#menu li{
54
position:relative;
55
}
56

  
57
#menu ul ul{
58
position:absolute;
59
z-index:500;
60
top:auto;
61
display:none;
62
}
63

  
64
#menu ul ul ul{
65
top:0;
66
left:100%;
67
}
68

  
69
/* Begin non-anchor hover selectors */
70

  
71
/* Enter the more specific element (div) selector
72
on non-anchor hovers for IE5.x to comply with the
73
older version of csshover.htc - V1.21.041022. It
74
improves IE's performance speed to use the older
75
file and this method */
76

  
77
div#menu h2:hover{
78
background:#000 url(../image/expand3.gif) no-repeat -999px -9999px;
79
}
80

  
81
div#menu li:hover{
82
cursor:pointer;
83
z-index:100;
84
}
85

  
86
div#menu li:hover ul ul,
87
div#menu li li:hover ul ul,
88
div#menu li li li:hover ul ul,
89
div#menu li li li li:hover ul ul
90
{display:none;}
91

  
92
div#menu li:hover ul,
93
div#menu li li:hover ul,
94
div#menu li li li:hover ul,
95
div#menu li li li li:hover ul
96
{display:block;}
97

  
98
/* End of non-anchor hover selectors */
99

  
100
/* Styling for Expand */
101

  
102
#menu a.x, #menu a.x:visited{
103
/*font-weight:bold;*/
104
color:#000;
105
background:#eee url(../image/expand3.gif) no-repeat 100% 100%;
106
}
107

  
108
#menu a.x:hover{
109
color:#fff;
110
background:#000;
111
}
112

  
113
#menu a.x:active{
114
color:#060;
115
background:#ccc;
116
}
117

  
118
#menu div.x, #menu div.x:visited{
119
/*font-weight:bold;*/
120
color:#000;
121
background:#eee url(../image/expand3.gif) no-repeat 100% 100%;
122
}
123

  
124
#menu div.x:hover{
125
color:#fff;
126
background:#000;
127
}
128

  
129
#menu div.x:active{
130
color:#060;
131
background:#ccc;
132
}
locale/de/admin
84 84
  'The passwords do not match.' => 'Die Passw&ouml;rter stimmen nicht &uuml;berein.',
85 85
  'This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!' => 'In diesem Schritt werden bestehende Datenbanken gesucht. Es werden noch keine ?nderungen vorgenommen!',
86 86
  'To add a user to a group edit a name, change the login name and save.  A new user with the same variables will then be saved under the new login name.' => 'Um einer Gruppe einen neuen Benutzer hinzuzuf?gen, ?ndern und speichern Sie am einfachsten einen bestehen den Zugriffsnamen. Unter dem neuen Namen wird dann ein Benutzer mit denselben Einstellungen angelegt.',
87
  'Top (CSS)'                   => 'Oben (mit CSS)',
87 88
  'Top (Javascript)'            => 'Oben (mit Javascript)',
88 89
  'Unknown dependency \'%s\'.'  => 'Unbekannte Abh&auml;ngigkeit \'%s\'.',
89 90
  'Unlock System'               => 'System entsperren',
locale/de/all
993 993
  'Title'                       => 'Titel',
994 994
  'To'                          => 'An',
995 995
  'To add a user to a group edit a name, change the login name and save.  A new user with the same variables will then be saved under the new login name.' => 'Um einer Gruppe einen neuen Benutzer hinzuzuf?gen, ?ndern und speichern Sie am einfachsten einen bestehen den Zugriffsnamen. Unter dem neuen Namen wird dann ein Benutzer mit denselben Einstellungen angelegt.',
996
  'Top (CSS)'                   => 'Oben (mit CSS)',
996 997
  'Top (Javascript)'            => 'Oben (mit Javascript)',
997 998
  'Top 100'                     => 'Top 100',
998 999
  'Top 100 hinzufuegen'         => 'Top 100 hinzuf?gen',
locale/de/am
224 224
  'The unit in row %d has been deleted in the meantime.' => 'Die Einheit in Zeile %d ist in der Zwischentzeit gel&ouml;scht worden.',
225 225
  'The unit in row %d has been used in the meantime and cannot be changed anymore.' => 'Die Einheit in Zeile %d wurde in der Zwischenzeit benutzt und kann nicht mehr ge&auml;ndert werden.',
226 226
  'The units have been saved.'  => 'Die Einheiten wurden gespeichert.',
227
  'Top (CSS)'                   => 'Oben (mit CSS)',
227 228
  'Top (Javascript)'            => 'Oben (mit Javascript)',
228 229
  'Transaction reversal enforced for all dates' => 'Fehleintragungen m?ssen f?r jeden Zeitraum mit einer Kontraeintragung ausgebessert werden',
229 230
  'Transaction reversal enforced up to' => 'Fehleintragungen k?nnen bis zu dem angegebenen Zeitraum nur mit einer Kontraeintragung ausgebessert werden!',
locale/de/menuv3
1
$self->{texts} = {
2
  'Logout'                      => 'Abmeldung',
3
};
4

  
5
$self->{subs} = {
6
  'acc_menu'                    => 'acc_menu',
7
  'clock_line'                  => 'clock_line',
8
  'display'                     => 'display',
9
  'section_menu'                => 'section_menu',
10
};
11

  
12
1;
makesymlinks
3 3
# Erstellt die benotigten Symlinks
4 4

  
5 5
ln -vsf login.pl admin.pl
6
for i in ap ar bp ca cp ct cn dn gl ic ir is menu oe pe rc rp datev licenses fa ustva menunew common; do
6
for i in ap ar bp ca cp ct cn dn gl ic ir is menu oe pe rc rp datev licenses fa ustva menunew common menuv3; do
7 7
  ln -vsf am.pl $i.pl
8 8
done
9 9

  

Auch abrufbar als: Unified diff