Completed
Push — master ( 8694e9...906a0e )
by cam
01:30
created
ecrire/action/editer_auteur.php 1 patch
Indentation   +279 added lines, -279 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -37,41 +37,41 @@  discard block
 block discarded – undo
37 37
  */
38 38
 function action_editer_auteur_dist($arg = null) {
39 39
 
40
-	if (is_null($arg)) {
41
-		$securiser_action = charger_fonction('securiser_action', 'inc');
42
-		$arg = $securiser_action();
43
-	}
44
-
45
-
46
-	// si id_auteur n'est pas un nombre, c'est une creation
47
-	if (!$id_auteur = intval($arg)) {
48
-		if (($id_auteur = auteur_inserer()) > 0) {
49
-			# cf. GROS HACK
50
-			# recuperer l'eventuel logo charge avant la creation
51
-			# ils ont un id = 0-id_auteur de la session
52
-			$id_hack = 0 - $GLOBALS['visiteur_session']['id_auteur'];
53
-			$chercher_logo = charger_fonction('chercher_logo', 'inc');
54
-			foreach (['on', 'off'] as $type) {
55
-				if ($logo = $chercher_logo($id_hack, 'id_auteur', $type)) {
56
-					if ($logo = reset($logo)) {
57
-						rename($logo, str_replace($id_hack, $id_auteur, $logo));
58
-					}
59
-				}
60
-			}
61
-		}
62
-	}
63
-
64
-	// Enregistre l'envoi dans la BD
65
-	$err = '';
66
-	if ($id_auteur > 0) {
67
-		$err = auteur_modifier($id_auteur);
68
-	}
69
-
70
-	if ($err) {
71
-		spip_log("echec editeur auteur: $err", _LOG_ERREUR);
72
-	}
73
-
74
-	return [$id_auteur, $err];
40
+    if (is_null($arg)) {
41
+        $securiser_action = charger_fonction('securiser_action', 'inc');
42
+        $arg = $securiser_action();
43
+    }
44
+
45
+
46
+    // si id_auteur n'est pas un nombre, c'est une creation
47
+    if (!$id_auteur = intval($arg)) {
48
+        if (($id_auteur = auteur_inserer()) > 0) {
49
+            # cf. GROS HACK
50
+            # recuperer l'eventuel logo charge avant la creation
51
+            # ils ont un id = 0-id_auteur de la session
52
+            $id_hack = 0 - $GLOBALS['visiteur_session']['id_auteur'];
53
+            $chercher_logo = charger_fonction('chercher_logo', 'inc');
54
+            foreach (['on', 'off'] as $type) {
55
+                if ($logo = $chercher_logo($id_hack, 'id_auteur', $type)) {
56
+                    if ($logo = reset($logo)) {
57
+                        rename($logo, str_replace($id_hack, $id_auteur, $logo));
58
+                    }
59
+                }
60
+            }
61
+        }
62
+    }
63
+
64
+    // Enregistre l'envoi dans la BD
65
+    $err = '';
66
+    if ($id_auteur > 0) {
67
+        $err = auteur_modifier($id_auteur);
68
+    }
69
+
70
+    if ($err) {
71
+        spip_log("echec editeur auteur: $err", _LOG_ERREUR);
72
+    }
73
+
74
+    return [$id_auteur, $err];
75 75
 }
76 76
 
77 77
 /**
@@ -88,44 +88,44 @@  discard block
 block discarded – undo
88 88
  */
89 89
 function auteur_inserer($source = null, $set = null) {
90 90
 
91
-	// Ce qu'on va demander comme modifications
92
-	$champs = [];
93
-	$champs['source'] = $source ?: 'spip';
94
-
95
-	$champs['login'] = '';
96
-	$champs['statut'] = '5poubelle';  // inutilisable tant qu'il n'a pas ete renseigne et institue
97
-	$champs['webmestre'] = 'non';
98
-	if (empty($champs['imessage'])) {
99
-		$champs['imessage'] = 'oui';
100
-	}
101
-
102
-	if ($set) {
103
-		$champs = array_merge($champs, $set);
104
-	}
105
-
106
-	// Envoyer aux plugins
107
-	$champs = pipeline(
108
-		'pre_insertion',
109
-		[
110
-			'args' => [
111
-				'table' => 'spip_auteurs',
112
-			],
113
-			'data' => $champs
114
-		]
115
-	);
116
-	$id_auteur = sql_insertq('spip_auteurs', $champs);
117
-	pipeline(
118
-		'post_insertion',
119
-		[
120
-			'args' => [
121
-				'table' => 'spip_auteurs',
122
-				'id_objet' => $id_auteur
123
-			],
124
-			'data' => $champs
125
-		]
126
-	);
127
-
128
-	return $id_auteur;
91
+    // Ce qu'on va demander comme modifications
92
+    $champs = [];
93
+    $champs['source'] = $source ?: 'spip';
94
+
95
+    $champs['login'] = '';
96
+    $champs['statut'] = '5poubelle';  // inutilisable tant qu'il n'a pas ete renseigne et institue
97
+    $champs['webmestre'] = 'non';
98
+    if (empty($champs['imessage'])) {
99
+        $champs['imessage'] = 'oui';
100
+    }
101
+
102
+    if ($set) {
103
+        $champs = array_merge($champs, $set);
104
+    }
105
+
106
+    // Envoyer aux plugins
107
+    $champs = pipeline(
108
+        'pre_insertion',
109
+        [
110
+            'args' => [
111
+                'table' => 'spip_auteurs',
112
+            ],
113
+            'data' => $champs
114
+        ]
115
+    );
116
+    $id_auteur = sql_insertq('spip_auteurs', $champs);
117
+    pipeline(
118
+        'post_insertion',
119
+        [
120
+            'args' => [
121
+                'table' => 'spip_auteurs',
122
+                'id_objet' => $id_auteur
123
+            ],
124
+            'data' => $champs
125
+        ]
126
+    );
127
+
128
+    return $id_auteur;
129 129
 }
130 130
 
131 131
 
@@ -150,70 +150,70 @@  discard block
 block discarded – undo
150 150
  */
151 151
 function auteur_modifier($id_auteur, $set = null, $force_update = false) {
152 152
 
153
-	include_spip('inc/modifier');
154
-	include_spip('inc/filtres');
155
-	$c = collecter_requests(
156
-		// include list
157
-		objet_info('auteur', 'champs_editables'),
158
-		// exclude list
159
-		$force_update ? [] : ['webmestre', 'pass', 'login'],
160
-		// donnees eventuellement fournies
161
-		$set
162
-	);
163
-
164
-	if (
165
-		$err = objet_modifier_champs(
166
-			'auteur',
167
-			$id_auteur,
168
-			[
169
-			'data' => $set,
170
-			'nonvide' => ['nom' => _T('ecrire:item_nouvel_auteur')]
171
-			],
172
-			$c
173
-		)
174
-	) {
175
-		return $err;
176
-	}
177
-	$session = $c;
178
-
179
-	$err = '';
180
-	if (!$force_update) {
181
-		// Modification de statut, changement de rubrique ?
182
-		$c = collecter_requests(
183
-		// include list
184
-			[
185
-				'statut',
186
-				'new_login',
187
-				'new_pass',
188
-				'login',
189
-				'pass',
190
-				'webmestre',
191
-				'restreintes',
192
-				'id_parent'
193
-			],
194
-			// exclude list
195
-			[],
196
-			// donnees eventuellement fournies
197
-			$set
198
-		);
199
-		if (isset($c['new_login']) and !isset($c['login'])) {
200
-			$c['login'] = $c['new_login'];
201
-		}
202
-		if (isset($c['new_pass']) and !isset($c['pass'])) {
203
-			$c['pass'] = $c['new_pass'];
204
-		}
205
-		$err = auteur_instituer($id_auteur, $c);
206
-		$session = array_merge($session, $c);
207
-	}
208
-
209
-	// .. mettre a jour les sessions de cet auteur
210
-	include_spip('inc/session');
211
-	$session['id_auteur'] = $id_auteur;
212
-	unset($session['new_login']);
213
-	unset($session['new_pass']);
214
-	actualiser_sessions($session);
215
-
216
-	return $err;
153
+    include_spip('inc/modifier');
154
+    include_spip('inc/filtres');
155
+    $c = collecter_requests(
156
+        // include list
157
+        objet_info('auteur', 'champs_editables'),
158
+        // exclude list
159
+        $force_update ? [] : ['webmestre', 'pass', 'login'],
160
+        // donnees eventuellement fournies
161
+        $set
162
+    );
163
+
164
+    if (
165
+        $err = objet_modifier_champs(
166
+            'auteur',
167
+            $id_auteur,
168
+            [
169
+            'data' => $set,
170
+            'nonvide' => ['nom' => _T('ecrire:item_nouvel_auteur')]
171
+            ],
172
+            $c
173
+        )
174
+    ) {
175
+        return $err;
176
+    }
177
+    $session = $c;
178
+
179
+    $err = '';
180
+    if (!$force_update) {
181
+        // Modification de statut, changement de rubrique ?
182
+        $c = collecter_requests(
183
+        // include list
184
+            [
185
+                'statut',
186
+                'new_login',
187
+                'new_pass',
188
+                'login',
189
+                'pass',
190
+                'webmestre',
191
+                'restreintes',
192
+                'id_parent'
193
+            ],
194
+            // exclude list
195
+            [],
196
+            // donnees eventuellement fournies
197
+            $set
198
+        );
199
+        if (isset($c['new_login']) and !isset($c['login'])) {
200
+            $c['login'] = $c['new_login'];
201
+        }
202
+        if (isset($c['new_pass']) and !isset($c['pass'])) {
203
+            $c['pass'] = $c['new_pass'];
204
+        }
205
+        $err = auteur_instituer($id_auteur, $c);
206
+        $session = array_merge($session, $c);
207
+    }
208
+
209
+    // .. mettre a jour les sessions de cet auteur
210
+    include_spip('inc/session');
211
+    $session['id_auteur'] = $id_auteur;
212
+    unset($session['new_login']);
213
+    unset($session['new_pass']);
214
+    actualiser_sessions($session);
215
+
216
+    return $err;
217 217
 }
218 218
 
219 219
 /**
@@ -234,9 +234,9 @@  discard block
 block discarded – undo
234 234
  * @return string
235 235
  */
236 236
 function auteur_associer($id_auteur, $objets, $qualif = null) {
237
-	include_spip('action/editer_liens');
237
+    include_spip('action/editer_liens');
238 238
 
239
-	return objet_associer(['auteur' => $id_auteur], $objets, $qualif);
239
+    return objet_associer(['auteur' => $id_auteur], $objets, $qualif);
240 240
 }
241 241
 
242 242
 /**
@@ -255,9 +255,9 @@  discard block
 block discarded – undo
255 255
  * @return string
256 256
  */
257 257
 function auteur_dissocier($id_auteur, $objets) {
258
-	include_spip('action/editer_liens');
258
+    include_spip('action/editer_liens');
259 259
 
260
-	return objet_dissocier(['auteur' => $id_auteur], $objets);
260
+    return objet_dissocier(['auteur' => $id_auteur], $objets);
261 261
 }
262 262
 
263 263
 /**
@@ -278,9 +278,9 @@  discard block
 block discarded – undo
278 278
  * @return bool|int
279 279
  */
280 280
 function auteur_qualifier($id_auteur, $objets, $qualif) {
281
-	include_spip('action/editer_liens');
281
+    include_spip('action/editer_liens');
282 282
 
283
-	return objet_qualifier_liens(['auteur' => $id_auteur], $objets, $qualif);
283
+    return objet_qualifier_liens(['auteur' => $id_auteur], $objets, $qualif);
284 284
 }
285 285
 
286 286
 
@@ -299,139 +299,139 @@  discard block
 block discarded – undo
299 299
  * @return bool|string
300 300
  */
301 301
 function auteur_instituer($id_auteur, $c, $force_webmestre = false) {
302
-	if (!$id_auteur = intval($id_auteur)) {
303
-		return false;
304
-	}
305
-	$erreurs = []; // contiendra les differentes erreurs a traduire par _T()
306
-	$champs = [];
307
-
308
-	// les memoriser pour les faire passer dans le pipeline pre_edition
309
-	if (isset($c['login']) and strlen($c['login'])) {
310
-		$champs['login'] = $c['login'];
311
-	}
312
-	if (isset($c['pass']) and strlen($c['pass'])) {
313
-		$champs['pass'] = $c['pass'];
314
-	}
315
-
316
-	$statut = $statut_ancien = sql_getfetsel('statut', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
317
-
318
-	if (
319
-		isset($c['statut'])
320
-		and (autoriser('modifier', 'auteur', $id_auteur, null, ['statut' => $c['statut']]))
321
-	) {
322
-		$statut = $champs['statut'] = $c['statut'];
323
-	}
324
-
325
-	// Restreindre avant de declarer l'auteur
326
-	// (section critique sur les droits)
327
-	if (isset($c['id_parent']) and $c['id_parent']) {
328
-		if (is_array($c['restreintes'])) {
329
-			$c['restreintes'][] = $c['id_parent'];
330
-		} else {
331
-			$c['restreintes'] = [$c['id_parent']];
332
-		}
333
-	}
334
-
335
-	if (
336
-		isset($c['webmestre'])
337
-		and ($force_webmestre or autoriser('modifier', 'auteur', $id_auteur, null, ['webmestre' => '?']))
338
-	) {
339
-		$champs['webmestre'] = $c['webmestre'] == 'oui' ? 'oui' : 'non';
340
-	}
341
-
342
-	// si statut change et n'est pas 0minirezo, on force webmestre a non
343
-	if (isset($c['statut']) and $c['statut'] !== '0minirezo') {
344
-		$champs['webmestre'] = $c['webmestre'] = 'non';
345
-	}
346
-
347
-	// Envoyer aux plugins
348
-	$champs = pipeline(
349
-		'pre_edition',
350
-		[
351
-			'args' => [
352
-				'table' => 'spip_auteurs',
353
-				'id_objet' => $id_auteur,
354
-				'action' => 'instituer',
355
-				'statut_ancien' => $statut_ancien,
356
-			],
357
-			'data' => $champs
358
-		]
359
-	);
360
-
361
-	if (
362
-		isset($c['restreintes']) and is_array($c['restreintes'])
363
-		and autoriser('modifier', 'auteur', $id_auteur, null, ['restreint' => $c['restreintes']])
364
-	) {
365
-		$rubriques = array_map('intval', $c['restreintes']);
366
-		$rubriques = array_unique($rubriques);
367
-		$rubriques = array_diff($rubriques, [0]);
368
-		auteur_dissocier($id_auteur, ['rubrique' => '*']);
369
-		auteur_associer($id_auteur, ['rubrique' => $rubriques]);
370
-	}
371
-
372
-	$flag_ecrire_acces = false;
373
-	// commencer par traiter les cas particuliers des logins et pass
374
-	// avant les autres ecritures en base
375
-	if (isset($champs['login']) or isset($champs['pass'])) {
376
-		$auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
377
-		include_spip('inc/auth');
378
-		if (isset($champs['login']) and strlen($champs['login'])) {
379
-			if (!auth_modifier_login($auth_methode, $champs['login'], $id_auteur)) {
380
-				$erreurs[] = 'ecrire:impossible_modifier_login_auteur';
381
-			}
382
-		}
383
-		if (isset($champs['pass']) and strlen($champs['pass'])) {
384
-			$champs['login'] = sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
385
-			if (!auth_modifier_pass($auth_methode, $champs['login'], $champs['pass'], $id_auteur)) {
386
-				$erreurs[] = 'ecrire:impossible_modifier_pass_auteur';
387
-			}
388
-		}
389
-		unset($champs['login']);
390
-		unset($champs['pass']);
391
-		$flag_ecrire_acces = true;
392
-	}
393
-
394
-	if (!(is_countable($champs) ? count($champs) : 0)) {
395
-		return implode(' ', array_map('_T', $erreurs));
396
-	}
397
-	sql_updateq('spip_auteurs', $champs, 'id_auteur=' . $id_auteur);
398
-
399
-	// .. mettre a jour les fichiers .htpasswd et .htpasswd-admin
400
-	if (
401
-		$flag_ecrire_acces
402
-		or isset($champs['statut'])
403
-	) {
404
-		include_spip('inc/acces');
405
-		ecrire_acces();
406
-	}
407
-
408
-	// Invalider les caches
409
-	include_spip('inc/invalideur');
410
-	suivre_invalideur("id='auteur/$id_auteur'");
411
-
412
-	// Pipeline
413
-	pipeline(
414
-		'post_edition',
415
-		[
416
-			'args' => [
417
-				'table' => 'spip_auteurs',
418
-				'id_objet' => $id_auteur,
419
-				'action' => 'instituer',
420
-				'statut_ancien' => $statut_ancien,
421
-			],
422
-			'data' => $champs
423
-		]
424
-	);
425
-
426
-
427
-	// Notifications
428
-	if ($notifications = charger_fonction('notifications', 'inc')) {
429
-		$notifications(
430
-			'instituerauteur',
431
-			$id_auteur,
432
-			['statut' => $statut, 'statut_ancien' => $statut_ancien]
433
-		);
434
-	}
435
-
436
-	return implode(' ', array_map('_T', $erreurs));
302
+    if (!$id_auteur = intval($id_auteur)) {
303
+        return false;
304
+    }
305
+    $erreurs = []; // contiendra les differentes erreurs a traduire par _T()
306
+    $champs = [];
307
+
308
+    // les memoriser pour les faire passer dans le pipeline pre_edition
309
+    if (isset($c['login']) and strlen($c['login'])) {
310
+        $champs['login'] = $c['login'];
311
+    }
312
+    if (isset($c['pass']) and strlen($c['pass'])) {
313
+        $champs['pass'] = $c['pass'];
314
+    }
315
+
316
+    $statut = $statut_ancien = sql_getfetsel('statut', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
317
+
318
+    if (
319
+        isset($c['statut'])
320
+        and (autoriser('modifier', 'auteur', $id_auteur, null, ['statut' => $c['statut']]))
321
+    ) {
322
+        $statut = $champs['statut'] = $c['statut'];
323
+    }
324
+
325
+    // Restreindre avant de declarer l'auteur
326
+    // (section critique sur les droits)
327
+    if (isset($c['id_parent']) and $c['id_parent']) {
328
+        if (is_array($c['restreintes'])) {
329
+            $c['restreintes'][] = $c['id_parent'];
330
+        } else {
331
+            $c['restreintes'] = [$c['id_parent']];
332
+        }
333
+    }
334
+
335
+    if (
336
+        isset($c['webmestre'])
337
+        and ($force_webmestre or autoriser('modifier', 'auteur', $id_auteur, null, ['webmestre' => '?']))
338
+    ) {
339
+        $champs['webmestre'] = $c['webmestre'] == 'oui' ? 'oui' : 'non';
340
+    }
341
+
342
+    // si statut change et n'est pas 0minirezo, on force webmestre a non
343
+    if (isset($c['statut']) and $c['statut'] !== '0minirezo') {
344
+        $champs['webmestre'] = $c['webmestre'] = 'non';
345
+    }
346
+
347
+    // Envoyer aux plugins
348
+    $champs = pipeline(
349
+        'pre_edition',
350
+        [
351
+            'args' => [
352
+                'table' => 'spip_auteurs',
353
+                'id_objet' => $id_auteur,
354
+                'action' => 'instituer',
355
+                'statut_ancien' => $statut_ancien,
356
+            ],
357
+            'data' => $champs
358
+        ]
359
+    );
360
+
361
+    if (
362
+        isset($c['restreintes']) and is_array($c['restreintes'])
363
+        and autoriser('modifier', 'auteur', $id_auteur, null, ['restreint' => $c['restreintes']])
364
+    ) {
365
+        $rubriques = array_map('intval', $c['restreintes']);
366
+        $rubriques = array_unique($rubriques);
367
+        $rubriques = array_diff($rubriques, [0]);
368
+        auteur_dissocier($id_auteur, ['rubrique' => '*']);
369
+        auteur_associer($id_auteur, ['rubrique' => $rubriques]);
370
+    }
371
+
372
+    $flag_ecrire_acces = false;
373
+    // commencer par traiter les cas particuliers des logins et pass
374
+    // avant les autres ecritures en base
375
+    if (isset($champs['login']) or isset($champs['pass'])) {
376
+        $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
377
+        include_spip('inc/auth');
378
+        if (isset($champs['login']) and strlen($champs['login'])) {
379
+            if (!auth_modifier_login($auth_methode, $champs['login'], $id_auteur)) {
380
+                $erreurs[] = 'ecrire:impossible_modifier_login_auteur';
381
+            }
382
+        }
383
+        if (isset($champs['pass']) and strlen($champs['pass'])) {
384
+            $champs['login'] = sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
385
+            if (!auth_modifier_pass($auth_methode, $champs['login'], $champs['pass'], $id_auteur)) {
386
+                $erreurs[] = 'ecrire:impossible_modifier_pass_auteur';
387
+            }
388
+        }
389
+        unset($champs['login']);
390
+        unset($champs['pass']);
391
+        $flag_ecrire_acces = true;
392
+    }
393
+
394
+    if (!(is_countable($champs) ? count($champs) : 0)) {
395
+        return implode(' ', array_map('_T', $erreurs));
396
+    }
397
+    sql_updateq('spip_auteurs', $champs, 'id_auteur=' . $id_auteur);
398
+
399
+    // .. mettre a jour les fichiers .htpasswd et .htpasswd-admin
400
+    if (
401
+        $flag_ecrire_acces
402
+        or isset($champs['statut'])
403
+    ) {
404
+        include_spip('inc/acces');
405
+        ecrire_acces();
406
+    }
407
+
408
+    // Invalider les caches
409
+    include_spip('inc/invalideur');
410
+    suivre_invalideur("id='auteur/$id_auteur'");
411
+
412
+    // Pipeline
413
+    pipeline(
414
+        'post_edition',
415
+        [
416
+            'args' => [
417
+                'table' => 'spip_auteurs',
418
+                'id_objet' => $id_auteur,
419
+                'action' => 'instituer',
420
+                'statut_ancien' => $statut_ancien,
421
+            ],
422
+            'data' => $champs
423
+        ]
424
+    );
425
+
426
+
427
+    // Notifications
428
+    if ($notifications = charger_fonction('notifications', 'inc')) {
429
+        $notifications(
430
+            'instituerauteur',
431
+            $id_auteur,
432
+            ['statut' => $statut, 'statut_ancien' => $statut_ancien]
433
+        );
434
+    }
435
+
436
+    return implode(' ', array_map('_T', $erreurs));
437 437
 }
Please login to merge, or discard this patch.
ecrire/inc/filtres_selecteur_generique.php 1 patch
Indentation   +144 added lines, -144 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  **/
8 8
 
9 9
 if (!defined('_ECRIRE_INC_VERSION')) {
10
-	return;
10
+    return;
11 11
 }
12 12
 
13 13
 /**
@@ -28,51 +28,51 @@  discard block
 block discarded – undo
28 28
  *     - afficher : tableau des objets à afficher (mais pas forcément sélectionnables)
29 29
  */
30 30
 function selecteur_lister_objets($includelist = [], $excludelist = []) {
31
-	static $liste_selecteurs, $liste_parents;
32
-
33
-	if (!$liste_selecteurs) {
34
-		$liste_selecteurs = find_all_in_path('formulaires/selecteur/', 'hierarchie-[\w]+[.]html$');
35
-	}
36
-	$objets_selectionner = [];
37
-	foreach ($liste_selecteurs as $fichier => $chemin) {
38
-		$objets_selectionner[] = preg_replace('/^hierarchie-([\w]+)[.]html$/', '$1', $fichier);
39
-	}
40
-
41
-	// S'il y a une whitelist on ne garde que ce qui est dedans
42
-	if (!empty($includelist)) {
43
-		$includelist = array_map('table_objet', $includelist);
44
-		$objets_selectionner = array_intersect($objets_selectionner, $includelist);
45
-	}
46
-	// On supprime ce qui est dans la liste d’exclusion
47
-	$excludelist = array_map('table_objet', $excludelist);
48
-	// On enlève toujours la racine
49
-	$excludelist[] = 'racine';
50
-	$objets_selectionner = array_diff($objets_selectionner, $excludelist);
51
-
52
-	// Ensuite on cherche ce qu'on doit afficher : au moins ceux qu'on peut sélectionner
53
-	$objets_afficher = $objets_selectionner;
54
-
55
-	// Il faut alors chercher d'éventuels parents obligatoires en plus :
56
-	// lister-trucs-bidules.html => on doit afficher des "trucs" pour trouver des "bidules"
57
-	if (!$liste_parents) {
58
-		$liste_parents = find_all_in_path('formulaires/selecteur/', 'lister-[\w]+-[\w]+[.]html$');
59
-	}
60
-	foreach ($liste_parents as $fichier => $chemin) {
61
-		preg_match('/^lister-([\w]+)-([\w]+)[.]html$/', $fichier, $captures);
62
-		$parent = $captures[1];
63
-		$type = $captures[2];
64
-		// Si le type fait partie de ce qu'on doit afficher alors on ajoute aussi le parent à l'affichage
65
-		if (in_array($type, $objets_afficher)) {
66
-			$objets_afficher[] = $parent;
67
-		}
68
-	}
69
-
70
-	$objets = [
71
-		'selectionner' => array_unique($objets_selectionner),
72
-		'afficher' => array_unique($objets_afficher),
73
-	];
74
-
75
-	return $objets;
31
+    static $liste_selecteurs, $liste_parents;
32
+
33
+    if (!$liste_selecteurs) {
34
+        $liste_selecteurs = find_all_in_path('formulaires/selecteur/', 'hierarchie-[\w]+[.]html$');
35
+    }
36
+    $objets_selectionner = [];
37
+    foreach ($liste_selecteurs as $fichier => $chemin) {
38
+        $objets_selectionner[] = preg_replace('/^hierarchie-([\w]+)[.]html$/', '$1', $fichier);
39
+    }
40
+
41
+    // S'il y a une whitelist on ne garde que ce qui est dedans
42
+    if (!empty($includelist)) {
43
+        $includelist = array_map('table_objet', $includelist);
44
+        $objets_selectionner = array_intersect($objets_selectionner, $includelist);
45
+    }
46
+    // On supprime ce qui est dans la liste d’exclusion
47
+    $excludelist = array_map('table_objet', $excludelist);
48
+    // On enlève toujours la racine
49
+    $excludelist[] = 'racine';
50
+    $objets_selectionner = array_diff($objets_selectionner, $excludelist);
51
+
52
+    // Ensuite on cherche ce qu'on doit afficher : au moins ceux qu'on peut sélectionner
53
+    $objets_afficher = $objets_selectionner;
54
+
55
+    // Il faut alors chercher d'éventuels parents obligatoires en plus :
56
+    // lister-trucs-bidules.html => on doit afficher des "trucs" pour trouver des "bidules"
57
+    if (!$liste_parents) {
58
+        $liste_parents = find_all_in_path('formulaires/selecteur/', 'lister-[\w]+-[\w]+[.]html$');
59
+    }
60
+    foreach ($liste_parents as $fichier => $chemin) {
61
+        preg_match('/^lister-([\w]+)-([\w]+)[.]html$/', $fichier, $captures);
62
+        $parent = $captures[1];
63
+        $type = $captures[2];
64
+        // Si le type fait partie de ce qu'on doit afficher alors on ajoute aussi le parent à l'affichage
65
+        if (in_array($type, $objets_afficher)) {
66
+            $objets_afficher[] = $parent;
67
+        }
68
+    }
69
+
70
+    $objets = [
71
+        'selectionner' => array_unique($objets_selectionner),
72
+        'afficher' => array_unique($objets_afficher),
73
+    ];
74
+
75
+    return $objets;
76 76
 }
77 77
 
78 78
 /**
@@ -99,31 +99,31 @@  discard block
 block discarded – undo
99 99
  *     liste des couples (objets => id_objet) ou liste des identifiants d'un type d'objet.
100 100
  **/
101 101
 function picker_selected($selected, $type = '') {
102
-	$select = [];
103
-	$type = preg_replace(',\W,', '', $type);
104
-
105
-	if ($selected and !is_array($selected)) {
106
-		$selected = explode(',', $selected);
107
-	}
108
-
109
-	if (is_array($selected)) {
110
-		foreach ($selected as $value) {
111
-			// Si c'est le bon format déjà
112
-			if (preg_match('/^([\w]+)[|]([0-9]+)$/', $value, $captures)) {
113
-				$objet = $captures[1];
114
-				$id_objet = intval($captures[2]);
115
-
116
-				// Si on cherche un type et que c'est le bon, on renvoit un tableau que d'identifiants
117
-				if (is_string($type) and $type == $objet and ($id_objet or in_array($objet, ['racine', 'rubrique']))) {
118
-					$select[] = $id_objet;
119
-				} elseif (!$type and ($id_objet or in_array($objet, ['racine', 'rubrique']))) {
120
-					$select[] = ['objet' => $objet, 'id_objet' => $id_objet];
121
-				}
122
-			}
123
-		}
124
-	}
125
-
126
-	return $select;
102
+    $select = [];
103
+    $type = preg_replace(',\W,', '', $type);
104
+
105
+    if ($selected and !is_array($selected)) {
106
+        $selected = explode(',', $selected);
107
+    }
108
+
109
+    if (is_array($selected)) {
110
+        foreach ($selected as $value) {
111
+            // Si c'est le bon format déjà
112
+            if (preg_match('/^([\w]+)[|]([0-9]+)$/', $value, $captures)) {
113
+                $objet = $captures[1];
114
+                $id_objet = intval($captures[2]);
115
+
116
+                // Si on cherche un type et que c'est le bon, on renvoit un tableau que d'identifiants
117
+                if (is_string($type) and $type == $objet and ($id_objet or in_array($objet, ['racine', 'rubrique']))) {
118
+                    $select[] = $id_objet;
119
+                } elseif (!$type and ($id_objet or in_array($objet, ['racine', 'rubrique']))) {
120
+                    $select[] = ['objet' => $objet, 'id_objet' => $id_objet];
121
+                }
122
+            }
123
+        }
124
+    }
125
+
126
+    return $select;
127 127
 }
128 128
 
129 129
 /**
@@ -140,49 +140,49 @@  discard block
 block discarded – undo
140 140
  *     Booléen indiquant si les articles sont sélectionnables
141 141
  */
142 142
 function picker_identifie_id_rapide($ref, $rubriques_ou_objets = false, $articles = false) {
143
-	include_spip('inc/json');
144
-	include_spip('inc/lien');
145
-
146
-	// On construit un tableau des objets sélectionnables suivant les paramètres
147
-	$objets = [];
148
-	if ($rubriques_ou_objets and is_array($rubriques_ou_objets)) {
149
-		$objets = $rubriques_ou_objets;
150
-	} else {
151
-		if ($rubriques_ou_objets) {
152
-			$objets[] = 'rubriques';
153
-		}
154
-		if ($articles) {
155
-			$objets[] = 'articles';
156
-		}
157
-	}
158
-
159
-	// si id numerique et un seul objet possible, pas d'ambiguite
160
-	if (is_numeric($ref) and count($objets) === 1) {
161
-		$ref = reset($objets) . $ref;
162
-	}
163
-
164
-	// Si la référence ne correspond à rien, c'est fini
165
-	if (!($match = typer_raccourci($ref))) {
166
-		return json_export(false);
167
-	}
168
-	// Sinon on récupère les infos utiles
169
-	[$type, , $id, , , , ] = array_pad($match, 7, null);
170
-
171
-	// On regarde si le type trouvé fait partie des objets sélectionnables
172
-	if (!in_array(table_objet($type), $objets)) {
173
-		return json_export(false);
174
-	}
175
-
176
-	// Maintenant que tout est bon, on cherche les informations sur cet objet
177
-	include_spip('inc/filtres');
178
-	if (!$titre = generer_objet_info($id, $type, 'titre')) {
179
-		return json_export(false);
180
-	}
181
-
182
-	// On simplifie le texte
183
-	$titre = attribut_html($titre);
184
-
185
-	return json_export(['type' => $type, 'id' => "$type|$id", 'titre' => $titre]);
143
+    include_spip('inc/json');
144
+    include_spip('inc/lien');
145
+
146
+    // On construit un tableau des objets sélectionnables suivant les paramètres
147
+    $objets = [];
148
+    if ($rubriques_ou_objets and is_array($rubriques_ou_objets)) {
149
+        $objets = $rubriques_ou_objets;
150
+    } else {
151
+        if ($rubriques_ou_objets) {
152
+            $objets[] = 'rubriques';
153
+        }
154
+        if ($articles) {
155
+            $objets[] = 'articles';
156
+        }
157
+    }
158
+
159
+    // si id numerique et un seul objet possible, pas d'ambiguite
160
+    if (is_numeric($ref) and count($objets) === 1) {
161
+        $ref = reset($objets) . $ref;
162
+    }
163
+
164
+    // Si la référence ne correspond à rien, c'est fini
165
+    if (!($match = typer_raccourci($ref))) {
166
+        return json_export(false);
167
+    }
168
+    // Sinon on récupère les infos utiles
169
+    [$type, , $id, , , , ] = array_pad($match, 7, null);
170
+
171
+    // On regarde si le type trouvé fait partie des objets sélectionnables
172
+    if (!in_array(table_objet($type), $objets)) {
173
+        return json_export(false);
174
+    }
175
+
176
+    // Maintenant que tout est bon, on cherche les informations sur cet objet
177
+    include_spip('inc/filtres');
178
+    if (!$titre = generer_objet_info($id, $type, 'titre')) {
179
+        return json_export(false);
180
+    }
181
+
182
+    // On simplifie le texte
183
+    $titre = attribut_html($titre);
184
+
185
+    return json_export(['type' => $type, 'id' => "$type|$id", 'titre' => $titre]);
186 186
 }
187 187
 
188 188
 /**
@@ -205,34 +205,34 @@  discard block
 block discarded – undo
205 205
  *     Comme le filtre `oui` : espace (` `) si rubrique à afficher, chaîne vide sinon.
206 206
  */
207 207
 function test_enfants_rubrique($id_rubrique, $types = []) {
208
-	static $has_child = [];
209
-
210
-	if (!isset($has_child[$id_rubrique])) {
211
-		$types = (is_array($types) ? array_filter($types) : []);
212
-
213
-		// recuperer tous les freres et soeurs de la rubrique visee
214
-		$id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
215
-		$fratrie = sql_allfetsel('id_rubrique', 'spip_rubriques', 'id_parent=' . intval($id_parent));
216
-		$fratrie = array_column($fratrie, 'id_rubrique');
217
-		$has = sql_allfetsel('DISTINCT id_parent', 'spip_rubriques', sql_in('id_parent', $fratrie));
218
-		$has = array_column($has, 'id_parent');
219
-		$fratrie = array_diff($fratrie, $has);
220
-
221
-		while (count($fratrie) and is_array($types) and count($types)) {
222
-			$type = array_shift($types);
223
-			$h = sql_allfetsel('DISTINCT id_rubrique', table_objet_sql($type), sql_in('id_rubrique', $fratrie));
224
-			$h = array_column($h, 'id_rubrique');
225
-			$has = array_merge($has, $h);
226
-			$fratrie = array_diff($fratrie, $h);
227
-		}
228
-
229
-		if (count($has)) {
230
-			$has_child = $has_child + array_combine($has, array_pad([], count($has), true));
231
-		}
232
-		if (count($fratrie)) {
233
-			$has_child = $has_child + array_combine($fratrie, array_pad([], count($fratrie), false));
234
-		}
235
-	}
236
-
237
-	return $has_child[$id_rubrique] ? ' ' : '';
208
+    static $has_child = [];
209
+
210
+    if (!isset($has_child[$id_rubrique])) {
211
+        $types = (is_array($types) ? array_filter($types) : []);
212
+
213
+        // recuperer tous les freres et soeurs de la rubrique visee
214
+        $id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
215
+        $fratrie = sql_allfetsel('id_rubrique', 'spip_rubriques', 'id_parent=' . intval($id_parent));
216
+        $fratrie = array_column($fratrie, 'id_rubrique');
217
+        $has = sql_allfetsel('DISTINCT id_parent', 'spip_rubriques', sql_in('id_parent', $fratrie));
218
+        $has = array_column($has, 'id_parent');
219
+        $fratrie = array_diff($fratrie, $has);
220
+
221
+        while (count($fratrie) and is_array($types) and count($types)) {
222
+            $type = array_shift($types);
223
+            $h = sql_allfetsel('DISTINCT id_rubrique', table_objet_sql($type), sql_in('id_rubrique', $fratrie));
224
+            $h = array_column($h, 'id_rubrique');
225
+            $has = array_merge($has, $h);
226
+            $fratrie = array_diff($fratrie, $h);
227
+        }
228
+
229
+        if (count($has)) {
230
+            $has_child = $has_child + array_combine($has, array_pad([], count($has), true));
231
+        }
232
+        if (count($fratrie)) {
233
+            $has_child = $has_child + array_combine($fratrie, array_pad([], count($fratrie), false));
234
+        }
235
+    }
236
+
237
+    return $has_child[$id_rubrique] ? ' ' : '';
238 238
 }
Please login to merge, or discard this patch.
ecrire/lang/spip_de.php 1 patch
Indentation   +669 added lines, -669 removed lines patch added patch discarded remove patch
@@ -4,248 +4,248 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'Zurück zur vollständigen grafischen Oberfläche',
14
-	'access_mode_texte' => 'vereinfachtes Interface als Textversion anzeigen',
15
-	'admin_debug' => 'Debug',
16
-	'admin_modifier_article' => 'Artikel bearbeiten',
17
-	'admin_modifier_auteur' => 'Autor bearbeiten',
18
-	'admin_modifier_breve' => 'Meldung bearbeiten',
19
-	'admin_modifier_mot' => 'Schlagwort bearbeiten',
20
-	'admin_modifier_rubrique' => 'Rubrik bearbeiten',
21
-	'admin_recalculer' => 'Seite aus Cache löschen',
22
-	'afficher_calendrier' => 'Kalender anzeigen',
23
-	'afficher_trad' => 'Übersetzungen anzeigen',
24
-	'alerte_maj_impossible' => '<b>Achtung!</b> Ihre SQL Datenbank konnte nicht auf die Version @version@ umgestellt werden. Möglicherweise gibt es ein Problem mit den Zugriffsrechten. Bitte setzen Sie sich mit Ihrem Webspace-Provider in Verbindung.',
25
-	'alerte_modif_info_concourante' => 'Achtung - diese Information wurde auf anderem Weg modifiziert. Der aktuelle Wert lautet:',
26
-	'analyse_xml' => 'XML-Analyse',
27
-	'annuler' => 'Abbrechen',
28
-	'antispam_champ_vide' => 'Bitte lassen Sie dieses Feld leer:',
29
-	'articles_recents' => 'Die neuesten Artikel',
30
-	'attention_champ_mini_nb_caractères' => 'Achtung! Mindestens @nb@ Zeichen',
31
-	'avis_1_erreur_saisie' => 'Ihre Eingabe enthält einen Fehler, bitte überprüfen Sie die Informationen.',
32
-	'avis_archive_incorrect' => 'Die archivierte Datei ist keine SPIP-Datei',
33
-	'avis_archive_invalide' => 'Die archivierte Datei ist keine SPIP-Datei',
34
-	'avis_attention' => 'ACHTUNG!',
35
-	'avis_champ_incorrect_type_objet' => 'Falscher Objektname @name@ für Objekt vom Typ @type@',
36
-	'avis_colonne_inexistante' => 'Die Spalte @col@ existiert nicht',
37
-	'avis_erreur' => 'Fehler: Siehe unten',
38
-	'avis_erreur_connexion' => 'Verbindungsfehler',
39
-	'avis_erreur_cookie' => 'Cookie-Problem',
40
-	'avis_erreur_fonction_contexte' => 'Programmfehler. Diese Funktion darf nicht in diesem Zusammenhang aufgerufen werden.',
41
-	'avis_erreur_mysql' => 'SQL-Fehler',
42
-	'avis_erreur_sauvegarde' => 'Fehler in der Sicherung (@type@ @id_objet@) ! ',
43
-	'avis_erreur_visiteur' => 'Ein Problem beim Zugang zum Redaktionssystem ist aufgetreten.',
44
-	'avis_nb_erreurs_saisie' => 'Ihre Eingabe enthält @nb@ Fehler, bitte überprüfen Sie die Informationen.',
12
+    // A
13
+    'access_interface_graphique' => 'Zurück zur vollständigen grafischen Oberfläche',
14
+    'access_mode_texte' => 'vereinfachtes Interface als Textversion anzeigen',
15
+    'admin_debug' => 'Debug',
16
+    'admin_modifier_article' => 'Artikel bearbeiten',
17
+    'admin_modifier_auteur' => 'Autor bearbeiten',
18
+    'admin_modifier_breve' => 'Meldung bearbeiten',
19
+    'admin_modifier_mot' => 'Schlagwort bearbeiten',
20
+    'admin_modifier_rubrique' => 'Rubrik bearbeiten',
21
+    'admin_recalculer' => 'Seite aus Cache löschen',
22
+    'afficher_calendrier' => 'Kalender anzeigen',
23
+    'afficher_trad' => 'Übersetzungen anzeigen',
24
+    'alerte_maj_impossible' => '<b>Achtung!</b> Ihre SQL Datenbank konnte nicht auf die Version @version@ umgestellt werden. Möglicherweise gibt es ein Problem mit den Zugriffsrechten. Bitte setzen Sie sich mit Ihrem Webspace-Provider in Verbindung.',
25
+    'alerte_modif_info_concourante' => 'Achtung - diese Information wurde auf anderem Weg modifiziert. Der aktuelle Wert lautet:',
26
+    'analyse_xml' => 'XML-Analyse',
27
+    'annuler' => 'Abbrechen',
28
+    'antispam_champ_vide' => 'Bitte lassen Sie dieses Feld leer:',
29
+    'articles_recents' => 'Die neuesten Artikel',
30
+    'attention_champ_mini_nb_caractères' => 'Achtung! Mindestens @nb@ Zeichen',
31
+    'avis_1_erreur_saisie' => 'Ihre Eingabe enthält einen Fehler, bitte überprüfen Sie die Informationen.',
32
+    'avis_archive_incorrect' => 'Die archivierte Datei ist keine SPIP-Datei',
33
+    'avis_archive_invalide' => 'Die archivierte Datei ist keine SPIP-Datei',
34
+    'avis_attention' => 'ACHTUNG!',
35
+    'avis_champ_incorrect_type_objet' => 'Falscher Objektname @name@ für Objekt vom Typ @type@',
36
+    'avis_colonne_inexistante' => 'Die Spalte @col@ existiert nicht',
37
+    'avis_erreur' => 'Fehler: Siehe unten',
38
+    'avis_erreur_connexion' => 'Verbindungsfehler',
39
+    'avis_erreur_cookie' => 'Cookie-Problem',
40
+    'avis_erreur_fonction_contexte' => 'Programmfehler. Diese Funktion darf nicht in diesem Zusammenhang aufgerufen werden.',
41
+    'avis_erreur_mysql' => 'SQL-Fehler',
42
+    'avis_erreur_sauvegarde' => 'Fehler in der Sicherung (@type@ @id_objet@) ! ',
43
+    'avis_erreur_visiteur' => 'Ein Problem beim Zugang zum Redaktionssystem ist aufgetreten.',
44
+    'avis_nb_erreurs_saisie' => 'Ihre Eingabe enthält @nb@ Fehler, bitte überprüfen Sie die Informationen.',
45 45
 
46
-	// B
47
-	'barre_a_accent_grave' => 'Grosses A mit accent grave einfügen',
48
-	'barre_aide' => 'Verwende Sie die typografischen Kürzel, um Ihre Seite zu formatieren.',
49
-	'barre_e_accent_aigu' => 'Grosses E mit accent aigu einfügen',
50
-	'barre_eo' => 'Ein E in das O einfügen',
51
-	'barre_eo_maj' => 'Ein E in ein grosses O einfügen',
52
-	'barre_euro' => 'Symbol € einfügen',
53
-	'barre_gras' => '{{fett}} setzen',
54
-	'barre_guillemets' => 'In „Anführungszeichen“ setzen',
55
-	'barre_guillemets_simples' => 'In ‚Anführungszeichen‘ setzen',
56
-	'barre_intertitre' => 'in {{{Zwischentitel}}} umwandeln',
57
-	'barre_italic' => 'in {kursive} Schrift setzen',
58
-	'barre_lien' => 'in [Hyperlink->http://...] umwandeln',
59
-	'barre_lien_input' => 'Bitte geben Sie die Adresse Ihres Links an. Sie können das Format http://www.meinewebsite.com wählen, oder einfach die Nummer eines Artikels dieser Website angeben.',
60
-	'barre_note' => 'In [[Fussnote]] umwandeln',
61
-	'barre_paragraphe' => 'Neuen Absatz anlegen',
62
-	'barre_quote' => '<quote>Nachricht zitieren</quote>',
63
-	'bouton_changer' => 'Ändern',
64
-	'bouton_chercher' => 'Suchen',
65
-	'bouton_choisir' => 'Auswählen',
66
-	'bouton_deplacer' => 'Verschieben',
67
-	'bouton_download' => 'Runterladen',
68
-	'bouton_enregistrer' => 'Speichern',
69
-	'bouton_radio_desactiver_messagerie_interne' => 'Interne Nachrichten abschalten',
70
-	'bouton_radio_envoi_annonces' => 'Editorische Ankündigungen verschicken',
71
-	'bouton_radio_non_envoi_annonces' => 'Keine Ankündigungen verschicken',
72
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Keine Liste der Neuigkeiten verschicken',
73
-	'bouton_recharger_page' => 'Seite neu laden',
74
-	'bouton_telecharger' => 'Runterladen',
75
-	'bouton_upload' => 'Hochladen',
76
-	'bouton_valider' => 'Bestätigen',
46
+    // B
47
+    'barre_a_accent_grave' => 'Grosses A mit accent grave einfügen',
48
+    'barre_aide' => 'Verwende Sie die typografischen Kürzel, um Ihre Seite zu formatieren.',
49
+    'barre_e_accent_aigu' => 'Grosses E mit accent aigu einfügen',
50
+    'barre_eo' => 'Ein E in das O einfügen',
51
+    'barre_eo_maj' => 'Ein E in ein grosses O einfügen',
52
+    'barre_euro' => 'Symbol € einfügen',
53
+    'barre_gras' => '{{fett}} setzen',
54
+    'barre_guillemets' => 'In „Anführungszeichen“ setzen',
55
+    'barre_guillemets_simples' => 'In ‚Anführungszeichen‘ setzen',
56
+    'barre_intertitre' => 'in {{{Zwischentitel}}} umwandeln',
57
+    'barre_italic' => 'in {kursive} Schrift setzen',
58
+    'barre_lien' => 'in [Hyperlink->http://...] umwandeln',
59
+    'barre_lien_input' => 'Bitte geben Sie die Adresse Ihres Links an. Sie können das Format http://www.meinewebsite.com wählen, oder einfach die Nummer eines Artikels dieser Website angeben.',
60
+    'barre_note' => 'In [[Fussnote]] umwandeln',
61
+    'barre_paragraphe' => 'Neuen Absatz anlegen',
62
+    'barre_quote' => '<quote>Nachricht zitieren</quote>',
63
+    'bouton_changer' => 'Ändern',
64
+    'bouton_chercher' => 'Suchen',
65
+    'bouton_choisir' => 'Auswählen',
66
+    'bouton_deplacer' => 'Verschieben',
67
+    'bouton_download' => 'Runterladen',
68
+    'bouton_enregistrer' => 'Speichern',
69
+    'bouton_radio_desactiver_messagerie_interne' => 'Interne Nachrichten abschalten',
70
+    'bouton_radio_envoi_annonces' => 'Editorische Ankündigungen verschicken',
71
+    'bouton_radio_non_envoi_annonces' => 'Keine Ankündigungen verschicken',
72
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Keine Liste der Neuigkeiten verschicken',
73
+    'bouton_recharger_page' => 'Seite neu laden',
74
+    'bouton_telecharger' => 'Runterladen',
75
+    'bouton_upload' => 'Hochladen',
76
+    'bouton_valider' => 'Bestätigen',
77 77
 
78
-	// C
79
-	'cal_apresmidi' => 'nachmittags',
80
-	'cal_jour_entier' => 'ganztägig',
81
-	'cal_matin' => 'morgens',
82
-	'cal_par_jour' => 'Tageskalender',
83
-	'cal_par_mois' => 'Monatskalender',
84
-	'cal_par_semaine' => 'Wochenkalender',
85
-	'choix_couleur_interface' => 'Farbe',
86
-	'choix_interface' => 'Oberflächenfarbe',
87
-	'colonne' => 'Spalte',
88
-	'confirm_changer_statut' => 'Achtung, Sie werden den Status dieses Elementes ändern. Wollen Sie fortfahren?',
89
-	'correcte' => 'korrekt',
78
+    // C
79
+    'cal_apresmidi' => 'nachmittags',
80
+    'cal_jour_entier' => 'ganztägig',
81
+    'cal_matin' => 'morgens',
82
+    'cal_par_jour' => 'Tageskalender',
83
+    'cal_par_mois' => 'Monatskalender',
84
+    'cal_par_semaine' => 'Wochenkalender',
85
+    'choix_couleur_interface' => 'Farbe',
86
+    'choix_interface' => 'Oberflächenfarbe',
87
+    'colonne' => 'Spalte',
88
+    'confirm_changer_statut' => 'Achtung, Sie werden den Status dieses Elementes ändern. Wollen Sie fortfahren?',
89
+    'correcte' => 'korrekt',
90 90
 
91
-	// D
92
-	'date_aujourdhui' => 'heute',
93
-	'date_avant_jc' => 'v.u.Z.',
94
-	'date_dans' => 'in @delai@',
95
-	'date_de_mois_1' => '@j@ @nommois@',
96
-	'date_de_mois_10' => '@j@ @nommois@',
97
-	'date_de_mois_11' => '@j@ @nommois@',
98
-	'date_de_mois_12' => '@j@ @nommois@',
99
-	'date_de_mois_2' => '@j@ @nommois@',
100
-	'date_de_mois_3' => '@j@ @nommois@',
101
-	'date_de_mois_4' => '@j@ @nommois@',
102
-	'date_de_mois_5' => '@j@ @nommois@',
103
-	'date_de_mois_6' => '@j@ @nommois@',
104
-	'date_de_mois_7' => '@j@ @nommois@',
105
-	'date_de_mois_8' => '@j@ @nommois@',
106
-	'date_de_mois_9' => '@j@ @nommois@',
107
-	'date_demain' => 'morgen',
108
-	'date_fmt_heures_minutes' => '@h@ Uhr @m@ Minuten',
109
-	'date_fmt_heures_minutes_court' => '@h@:@m@',
110
-	'date_fmt_jour' => '@nomjour@ @jour@',
111
-	'date_fmt_jour_heure' => '@jour@ um @heure@',
112
-	'date_fmt_jour_heure_debut_fin' => '@jour@ von @heure_debut@ bis @heure_fin@',
113
-	'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ von @heure_debut@@dtabbr@ bis @dtend@@heure_fin@@dtabbr@',
114
-	'date_fmt_jour_mois' => '@jour@. @nommois@',
115
-	'date_fmt_jour_mois_annee' => '@jour@. @nommois@ @annee@',
116
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
117
-	'date_fmt_nomjour' => '@nomjour@ @date@.',
118
-	'date_fmt_nomjour_date' => 'am @nomjour@ @date@',
119
-	'date_fmt_periode' => 'Vom @date_debut@ bis zum @date_fin@',
120
-	'date_fmt_periode_abbr' => 'Vom @dtart@@date_debut@@dtabbr@ bis zum @dtend@@date_fin@@dtabbr@',
121
-	'date_fmt_periode_from' => 'Von',
122
-	'date_fmt_periode_to' => 'bis',
123
-	'date_fmt_saison_annee' => '@saison@ @annee@',
124
-	'date_heures' => 'Stunden',
125
-	'date_hier' => 'gestern',
126
-	'date_il_y_a' => 'vor @delai@',
127
-	'date_jnum1' => '1',
128
-	'date_jnum10' => '10',
129
-	'date_jnum11' => '11',
130
-	'date_jnum12' => '12',
131
-	'date_jnum13' => '13',
132
-	'date_jnum14' => '14',
133
-	'date_jnum15' => '15',
134
-	'date_jnum16' => '16',
135
-	'date_jnum17' => '17',
136
-	'date_jnum18' => '18',
137
-	'date_jnum19' => '19',
138
-	'date_jnum2' => '2',
139
-	'date_jnum20' => '20',
140
-	'date_jnum21' => '21',
141
-	'date_jnum22' => '22',
142
-	'date_jnum23' => '23',
143
-	'date_jnum24' => '24',
144
-	'date_jnum25' => '25',
145
-	'date_jnum26' => '26',
146
-	'date_jnum27' => '27',
147
-	'date_jnum28' => '28',
148
-	'date_jnum29' => '29',
149
-	'date_jnum3' => '3',
150
-	'date_jnum30' => '30',
151
-	'date_jnum31' => '31',
152
-	'date_jnum4' => '4',
153
-	'date_jnum5' => '5',
154
-	'date_jnum6' => '6',
155
-	'date_jnum7' => '7',
156
-	'date_jnum8' => '8',
157
-	'date_jnum9' => '9',
158
-	'date_jour_1' => 'Sonntag',
159
-	'date_jour_1_abbr' => 'So.',
160
-	'date_jour_1_initiale' => 'S',
161
-	'date_jour_2' => 'Montag',
162
-	'date_jour_2_abbr' => 'Mo.',
163
-	'date_jour_2_initiale' => 'M',
164
-	'date_jour_3' => 'Dienstag',
165
-	'date_jour_3_abbr' => 'Di.',
166
-	'date_jour_3_initiale' => 'D',
167
-	'date_jour_4' => 'Mittwoch',
168
-	'date_jour_4_abbr' => 'Mi.',
169
-	'date_jour_4_initiale' => 'M',
170
-	'date_jour_5' => 'Donnerstag',
171
-	'date_jour_5_abbr' => 'Do.',
172
-	'date_jour_5_initiale' => 'D',
173
-	'date_jour_6' => 'Freitag',
174
-	'date_jour_6_abbr' => 'Fr.',
175
-	'date_jour_6_initiale' => 'F',
176
-	'date_jour_7' => 'Samstag',
177
-	'date_jour_7_abbr' => 'Sa.',
178
-	'date_jour_7_initiale' => 'S',
179
-	'date_jours' => 'Tagen',
180
-	'date_minutes' => 'Minuten',
181
-	'date_mois' => 'Monaten',
182
-	'date_mois_1' => 'Januar',
183
-	'date_mois_10' => 'Oktober',
184
-	'date_mois_10_abbr' => 'Okt.',
185
-	'date_mois_11' => 'November',
186
-	'date_mois_11_abbr' => 'Nev.',
187
-	'date_mois_12' => 'Dezember',
188
-	'date_mois_12_abbr' => 'Dez.',
189
-	'date_mois_1_abbr' => 'Jan.',
190
-	'date_mois_2' => 'Februar',
191
-	'date_mois_2_abbr' => 'Feb.',
192
-	'date_mois_3' => 'März',
193
-	'date_mois_3_abbr' => 'Mrz.',
194
-	'date_mois_4' => 'April',
195
-	'date_mois_4_abbr' => 'Apr.',
196
-	'date_mois_5' => 'Mai',
197
-	'date_mois_5_abbr' => 'Mai',
198
-	'date_mois_6' => 'Juni',
199
-	'date_mois_6_abbr' => 'Jun.',
200
-	'date_mois_7' => 'Juli',
201
-	'date_mois_7_abbr' => 'Juli',
202
-	'date_mois_8' => 'August',
203
-	'date_mois_8_abbr' => 'Aug.',
204
-	'date_mois_9' => 'September',
205
-	'date_mois_9_abbr' => 'Sept.',
206
-	'date_saison_1' => 'Winter',
207
-	'date_saison_2' => 'Frühling',
208
-	'date_saison_3' => 'Sommer',
209
-	'date_saison_4' => 'unabhängig',
210
-	'date_secondes' => 'Sekunden',
211
-	'date_semaines' => 'Wochen',
212
-	'date_un_mois' => 'Monat',
213
-	'date_une_heure' => 'Stunde',
214
-	'date_une_minute' => 'Minute',
215
-	'date_une_seconde' => 'Sekunde',
216
-	'date_une_semaine' => 'Woche',
217
-	'dirs_commencer' => 'um die Installation wirklich zu starten',
218
-	'dirs_preliminaire' => 'Vorbereitung: <b>Berechtigungen einstellen</b>',
219
-	'dirs_probleme_droits' => 'Problem mit den Berechtigungen',
220
-	'dirs_repertoires_absents' => '<p><b>Folgende Verzeichnisse wurden nicht gefunden:</b></p><ul>@bad_dirs@</ul>
91
+    // D
92
+    'date_aujourdhui' => 'heute',
93
+    'date_avant_jc' => 'v.u.Z.',
94
+    'date_dans' => 'in @delai@',
95
+    'date_de_mois_1' => '@j@ @nommois@',
96
+    'date_de_mois_10' => '@j@ @nommois@',
97
+    'date_de_mois_11' => '@j@ @nommois@',
98
+    'date_de_mois_12' => '@j@ @nommois@',
99
+    'date_de_mois_2' => '@j@ @nommois@',
100
+    'date_de_mois_3' => '@j@ @nommois@',
101
+    'date_de_mois_4' => '@j@ @nommois@',
102
+    'date_de_mois_5' => '@j@ @nommois@',
103
+    'date_de_mois_6' => '@j@ @nommois@',
104
+    'date_de_mois_7' => '@j@ @nommois@',
105
+    'date_de_mois_8' => '@j@ @nommois@',
106
+    'date_de_mois_9' => '@j@ @nommois@',
107
+    'date_demain' => 'morgen',
108
+    'date_fmt_heures_minutes' => '@h@ Uhr @m@ Minuten',
109
+    'date_fmt_heures_minutes_court' => '@h@:@m@',
110
+    'date_fmt_jour' => '@nomjour@ @jour@',
111
+    'date_fmt_jour_heure' => '@jour@ um @heure@',
112
+    'date_fmt_jour_heure_debut_fin' => '@jour@ von @heure_debut@ bis @heure_fin@',
113
+    'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ von @heure_debut@@dtabbr@ bis @dtend@@heure_fin@@dtabbr@',
114
+    'date_fmt_jour_mois' => '@jour@. @nommois@',
115
+    'date_fmt_jour_mois_annee' => '@jour@. @nommois@ @annee@',
116
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
117
+    'date_fmt_nomjour' => '@nomjour@ @date@.',
118
+    'date_fmt_nomjour_date' => 'am @nomjour@ @date@',
119
+    'date_fmt_periode' => 'Vom @date_debut@ bis zum @date_fin@',
120
+    'date_fmt_periode_abbr' => 'Vom @dtart@@date_debut@@dtabbr@ bis zum @dtend@@date_fin@@dtabbr@',
121
+    'date_fmt_periode_from' => 'Von',
122
+    'date_fmt_periode_to' => 'bis',
123
+    'date_fmt_saison_annee' => '@saison@ @annee@',
124
+    'date_heures' => 'Stunden',
125
+    'date_hier' => 'gestern',
126
+    'date_il_y_a' => 'vor @delai@',
127
+    'date_jnum1' => '1',
128
+    'date_jnum10' => '10',
129
+    'date_jnum11' => '11',
130
+    'date_jnum12' => '12',
131
+    'date_jnum13' => '13',
132
+    'date_jnum14' => '14',
133
+    'date_jnum15' => '15',
134
+    'date_jnum16' => '16',
135
+    'date_jnum17' => '17',
136
+    'date_jnum18' => '18',
137
+    'date_jnum19' => '19',
138
+    'date_jnum2' => '2',
139
+    'date_jnum20' => '20',
140
+    'date_jnum21' => '21',
141
+    'date_jnum22' => '22',
142
+    'date_jnum23' => '23',
143
+    'date_jnum24' => '24',
144
+    'date_jnum25' => '25',
145
+    'date_jnum26' => '26',
146
+    'date_jnum27' => '27',
147
+    'date_jnum28' => '28',
148
+    'date_jnum29' => '29',
149
+    'date_jnum3' => '3',
150
+    'date_jnum30' => '30',
151
+    'date_jnum31' => '31',
152
+    'date_jnum4' => '4',
153
+    'date_jnum5' => '5',
154
+    'date_jnum6' => '6',
155
+    'date_jnum7' => '7',
156
+    'date_jnum8' => '8',
157
+    'date_jnum9' => '9',
158
+    'date_jour_1' => 'Sonntag',
159
+    'date_jour_1_abbr' => 'So.',
160
+    'date_jour_1_initiale' => 'S',
161
+    'date_jour_2' => 'Montag',
162
+    'date_jour_2_abbr' => 'Mo.',
163
+    'date_jour_2_initiale' => 'M',
164
+    'date_jour_3' => 'Dienstag',
165
+    'date_jour_3_abbr' => 'Di.',
166
+    'date_jour_3_initiale' => 'D',
167
+    'date_jour_4' => 'Mittwoch',
168
+    'date_jour_4_abbr' => 'Mi.',
169
+    'date_jour_4_initiale' => 'M',
170
+    'date_jour_5' => 'Donnerstag',
171
+    'date_jour_5_abbr' => 'Do.',
172
+    'date_jour_5_initiale' => 'D',
173
+    'date_jour_6' => 'Freitag',
174
+    'date_jour_6_abbr' => 'Fr.',
175
+    'date_jour_6_initiale' => 'F',
176
+    'date_jour_7' => 'Samstag',
177
+    'date_jour_7_abbr' => 'Sa.',
178
+    'date_jour_7_initiale' => 'S',
179
+    'date_jours' => 'Tagen',
180
+    'date_minutes' => 'Minuten',
181
+    'date_mois' => 'Monaten',
182
+    'date_mois_1' => 'Januar',
183
+    'date_mois_10' => 'Oktober',
184
+    'date_mois_10_abbr' => 'Okt.',
185
+    'date_mois_11' => 'November',
186
+    'date_mois_11_abbr' => 'Nev.',
187
+    'date_mois_12' => 'Dezember',
188
+    'date_mois_12_abbr' => 'Dez.',
189
+    'date_mois_1_abbr' => 'Jan.',
190
+    'date_mois_2' => 'Februar',
191
+    'date_mois_2_abbr' => 'Feb.',
192
+    'date_mois_3' => 'März',
193
+    'date_mois_3_abbr' => 'Mrz.',
194
+    'date_mois_4' => 'April',
195
+    'date_mois_4_abbr' => 'Apr.',
196
+    'date_mois_5' => 'Mai',
197
+    'date_mois_5_abbr' => 'Mai',
198
+    'date_mois_6' => 'Juni',
199
+    'date_mois_6_abbr' => 'Jun.',
200
+    'date_mois_7' => 'Juli',
201
+    'date_mois_7_abbr' => 'Juli',
202
+    'date_mois_8' => 'August',
203
+    'date_mois_8_abbr' => 'Aug.',
204
+    'date_mois_9' => 'September',
205
+    'date_mois_9_abbr' => 'Sept.',
206
+    'date_saison_1' => 'Winter',
207
+    'date_saison_2' => 'Frühling',
208
+    'date_saison_3' => 'Sommer',
209
+    'date_saison_4' => 'unabhängig',
210
+    'date_secondes' => 'Sekunden',
211
+    'date_semaines' => 'Wochen',
212
+    'date_un_mois' => 'Monat',
213
+    'date_une_heure' => 'Stunde',
214
+    'date_une_minute' => 'Minute',
215
+    'date_une_seconde' => 'Sekunde',
216
+    'date_une_semaine' => 'Woche',
217
+    'dirs_commencer' => 'um die Installation wirklich zu starten',
218
+    'dirs_preliminaire' => 'Vorbereitung: <b>Berechtigungen einstellen</b>',
219
+    'dirs_probleme_droits' => 'Problem mit den Berechtigungen',
220
+    'dirs_repertoires_absents' => '<p><b>Folgende Verzeichnisse wurden nicht gefunden:</b></p><ul>@bad_dirs@</ul>
221 221
   <p>Das liegt wahrscheinlich an unzutreffender Gross- und Kleinschreibung.
222 222
   Überprüfen Sie bitte die genaue Schreibweise der oben stehenden Verzeichnisse,
223 223
   sollten Sie Abweichungen feststellen, benennen Sie bitte mit Ihrem FTP-Programm die betreffenden Verzeichnisse um.</p>
224 224
   <p>Danach können Sie ',
225
-	'dirs_repertoires_suivants' => '<p><b>In die folgenden Verzeichnisse kann nicht geschrieben werden:</b></p><ul>@bad_dirs@</ul>
225
+    'dirs_repertoires_suivants' => '<p><b>In die folgenden Verzeichnisse kann nicht geschrieben werden:</b></p><ul>@bad_dirs@</ul>
226 226
 <p>Um das Problem zu lösen, verwenden Sie bitte Ihren FTP-Client, um die Zugriffsrechte für diese
227 227
 Verzeichnisse zu setzen.Die Installationsanleitung erläutert die Details dazu.</p>
228 228
 <p>Wenn Sie diesen Vorgang abgeschlossen haben, können Sie',
229
-	'double_occurrence' => 'Dublette von @balise@',
229
+    'double_occurrence' => 'Dublette von @balise@',
230 230
 
231
-	// E
232
-	'en_cours' => 'läuft',
233
-	'envoi_via_le_site' => 'Gesendet über Website ',
234
-	'erreur' => 'Fehler',
235
-	'erreur_balise_non_fermee' => 'Letzter Tag nicht geschlossen:',
236
-	'erreur_technique_ajaxform' => 'Ups. Das Formular wurde aufgrund eines technischen Fehlers nicht abgeschickt. Sie können es erneut versuchen.',
237
-	'erreur_technique_enregistrement_champs' => 'Das Feld @champs@ konnte aufgrund eines technischen Problems nicht gespeichert werden.',
238
-	'erreur_technique_enregistrement_impossible' => 'Technisches Prolem: Speichern nicht möglich.',
239
-	'erreur_texte' => 'Fehler',
240
-	'etape' => 'Schritt',
231
+    // E
232
+    'en_cours' => 'läuft',
233
+    'envoi_via_le_site' => 'Gesendet über Website ',
234
+    'erreur' => 'Fehler',
235
+    'erreur_balise_non_fermee' => 'Letzter Tag nicht geschlossen:',
236
+    'erreur_technique_ajaxform' => 'Ups. Das Formular wurde aufgrund eines technischen Fehlers nicht abgeschickt. Sie können es erneut versuchen.',
237
+    'erreur_technique_enregistrement_champs' => 'Das Feld @champs@ konnte aufgrund eines technischen Problems nicht gespeichert werden.',
238
+    'erreur_technique_enregistrement_impossible' => 'Technisches Prolem: Speichern nicht möglich.',
239
+    'erreur_texte' => 'Fehler',
240
+    'etape' => 'Schritt',
241 241
 
242
-	// F
243
-	'fichier_introuvable' => 'Datei @fichier@ unauffindbar.',
244
-	'fonction_introuvable' => 'Funktion @fonction@() unauffindbar.',
245
-	'form_auteur_confirmation' => 'Bestätigen Sie Ihre Mailadresse',
246
-	'form_auteur_email_modifie' => 'Ihre Mailadresse wurde geändert.',
247
-	'form_auteur_envoi_mail_confirmation' => 'Eine Mail wurde an @email@ gesendet. Sie müssen auf den in ihr angegebenen Link klicken, um die Korrektheit Ihrer Adresse zu bestätigen.',
248
-	'form_auteur_mail_confirmation' => 'Hallo,
242
+    // F
243
+    'fichier_introuvable' => 'Datei @fichier@ unauffindbar.',
244
+    'fonction_introuvable' => 'Funktion @fonction@() unauffindbar.',
245
+    'form_auteur_confirmation' => 'Bestätigen Sie Ihre Mailadresse',
246
+    'form_auteur_email_modifie' => 'Ihre Mailadresse wurde geändert.',
247
+    'form_auteur_envoi_mail_confirmation' => 'Eine Mail wurde an @email@ gesendet. Sie müssen auf den in ihr angegebenen Link klicken, um die Korrektheit Ihrer Adresse zu bestätigen.',
248
+    'form_auteur_mail_confirmation' => 'Hallo,
249 249
 
250 250
 Sie möchten Ihre Mail-Adresse ändern.Um Ihre neue Adresse zu bestätigen,
251 251
  brauchen Sie nur diesen Link zu öffnen (wenn Sie darauf verzichten,
@@ -253,335 +253,335 @@  discard block
 block discarded – undo
253 253
 
254 254
     @url@
255 255
 ',
256
-	'form_deja_inscrit' => 'Sie sind bereits eingetragen.',
257
-	'form_email_non_valide' => 'Ihre E-Mail-Adresse ist ungültig.',
258
-	'form_forum_access_refuse' => 'Sie haben keinen Zugang mehr zu dieser Website.',
259
-	'form_forum_bonjour' => 'Hallo @nom@,',
260
-	'form_forum_confirmer_email' => 'Bitte öffnen sie folgenden URL zum Bestätigen ihrer Mailadresse: @url_confirm@',
261
-	'form_forum_email_deja_enregistre' => 'Diese E-Mail-Adresse ist bereits eingetragen. Sie können also Ihr normals Passwort verwenden.',
262
-	'form_forum_identifiant_mail' => 'Ihre neuen Zugangsdaten wurden Ihnen per Mail zugestellt.',
263
-	'form_forum_identifiants' => 'Persönliche Zugangsdaten',
264
-	'form_forum_indiquer_nom_email' => 'Tragen Sie bitte hier Ihren Namen und Ihre E-Mail-Adresse ein. Die persönlichen Zugangsdaten werden Ihnen dann per E-Mail zugeschickt.',
265
-	'form_forum_login' => 'Login:',
266
-	'form_forum_message_auto' => '(automatisch erzeugte Nachricht)',
267
-	'form_forum_pass' => 'Passwort:',
268
-	'form_forum_probleme_mail' => 'E-Mail Problem: Zugangsdaten können nicht verschickt werden.',
269
-	'form_forum_voici1' => 'Hier sind Ihre Zugangsdaten für die Teilnahme an der Website "@nom_site_spip@" (@adresse_site@):',
270
-	'form_forum_voici2' => 'Hier sind Ihre Zugangsdaten um Artikel für die Website "@nom_site_spip@" (@adresse_login@) vorzuschlagen:',
271
-	'form_indiquer_email' => 'Bitte geben Sie Ihre E-Mail-Adresse an.',
272
-	'form_indiquer_nom' => 'Bitte geben Sie Ihren Namen an.',
273
-	'form_indiquer_nom_site' => 'Bitte geben Sie den Namen Ihrer Website an.',
274
-	'form_pet_deja_enregistre' => 'Diese Website wurde bereits erfasst',
275
-	'form_pet_signature_pasprise' => 'Ihre Signatur wird nicht berücksichtigt.',
276
-	'form_prop_confirmer_envoi' => 'Endgültig senden',
277
-	'form_prop_description' => 'Beschreibung/Kommentar',
278
-	'form_prop_enregistre' => 'Ihr Vorschlag wurde gespeichert und wird nach Freigabe durch die Redaktion der Website angezeigt.',
279
-	'form_prop_envoyer' => 'Nachricht senden',
280
-	'form_prop_indiquer_email' => 'Bitte geben Sie eine gültige E-Mail Adresse an',
281
-	'form_prop_indiquer_nom_site' => 'Bitte geben Sie den Namen der Website an.',
282
-	'form_prop_indiquer_sujet' => 'Bitte geben Sie ein Thema an',
283
-	'form_prop_message_envoye' => 'Nachricht gesendet',
284
-	'form_prop_non_enregistre' => 'Ihr Vorschlag wurde nicht gespeichert.',
285
-	'form_prop_sujet' => 'Thema',
286
-	'form_prop_url_site' => 'URL der der Website',
287
-	'format_date_attendu' => 'Ein Datum im Format tt/mm/jjjj eingeben. ',
288
-	'format_date_incorrecte' => 'Falsches Datum oder Datumsformat',
289
-	'format_heure_attendu' => 'Uhrzeit im Format hh:mm eingeben.',
290
-	'format_heure_incorrecte' => 'Falsches Zeitformat oder Zeit',
291
-	'forum_non_inscrit' => 'Sie sind nicht eingeschrieben oder Adresse bzw. Passwort waren falsch.',
292
-	'forum_par_auteur' => 'von @auteur@',
293
-	'forum_titre_erreur' => 'Fehler...',
256
+    'form_deja_inscrit' => 'Sie sind bereits eingetragen.',
257
+    'form_email_non_valide' => 'Ihre E-Mail-Adresse ist ungültig.',
258
+    'form_forum_access_refuse' => 'Sie haben keinen Zugang mehr zu dieser Website.',
259
+    'form_forum_bonjour' => 'Hallo @nom@,',
260
+    'form_forum_confirmer_email' => 'Bitte öffnen sie folgenden URL zum Bestätigen ihrer Mailadresse: @url_confirm@',
261
+    'form_forum_email_deja_enregistre' => 'Diese E-Mail-Adresse ist bereits eingetragen. Sie können also Ihr normals Passwort verwenden.',
262
+    'form_forum_identifiant_mail' => 'Ihre neuen Zugangsdaten wurden Ihnen per Mail zugestellt.',
263
+    'form_forum_identifiants' => 'Persönliche Zugangsdaten',
264
+    'form_forum_indiquer_nom_email' => 'Tragen Sie bitte hier Ihren Namen und Ihre E-Mail-Adresse ein. Die persönlichen Zugangsdaten werden Ihnen dann per E-Mail zugeschickt.',
265
+    'form_forum_login' => 'Login:',
266
+    'form_forum_message_auto' => '(automatisch erzeugte Nachricht)',
267
+    'form_forum_pass' => 'Passwort:',
268
+    'form_forum_probleme_mail' => 'E-Mail Problem: Zugangsdaten können nicht verschickt werden.',
269
+    'form_forum_voici1' => 'Hier sind Ihre Zugangsdaten für die Teilnahme an der Website "@nom_site_spip@" (@adresse_site@):',
270
+    'form_forum_voici2' => 'Hier sind Ihre Zugangsdaten um Artikel für die Website "@nom_site_spip@" (@adresse_login@) vorzuschlagen:',
271
+    'form_indiquer_email' => 'Bitte geben Sie Ihre E-Mail-Adresse an.',
272
+    'form_indiquer_nom' => 'Bitte geben Sie Ihren Namen an.',
273
+    'form_indiquer_nom_site' => 'Bitte geben Sie den Namen Ihrer Website an.',
274
+    'form_pet_deja_enregistre' => 'Diese Website wurde bereits erfasst',
275
+    'form_pet_signature_pasprise' => 'Ihre Signatur wird nicht berücksichtigt.',
276
+    'form_prop_confirmer_envoi' => 'Endgültig senden',
277
+    'form_prop_description' => 'Beschreibung/Kommentar',
278
+    'form_prop_enregistre' => 'Ihr Vorschlag wurde gespeichert und wird nach Freigabe durch die Redaktion der Website angezeigt.',
279
+    'form_prop_envoyer' => 'Nachricht senden',
280
+    'form_prop_indiquer_email' => 'Bitte geben Sie eine gültige E-Mail Adresse an',
281
+    'form_prop_indiquer_nom_site' => 'Bitte geben Sie den Namen der Website an.',
282
+    'form_prop_indiquer_sujet' => 'Bitte geben Sie ein Thema an',
283
+    'form_prop_message_envoye' => 'Nachricht gesendet',
284
+    'form_prop_non_enregistre' => 'Ihr Vorschlag wurde nicht gespeichert.',
285
+    'form_prop_sujet' => 'Thema',
286
+    'form_prop_url_site' => 'URL der der Website',
287
+    'format_date_attendu' => 'Ein Datum im Format tt/mm/jjjj eingeben. ',
288
+    'format_date_incorrecte' => 'Falsches Datum oder Datumsformat',
289
+    'format_heure_attendu' => 'Uhrzeit im Format hh:mm eingeben.',
290
+    'format_heure_incorrecte' => 'Falsches Zeitformat oder Zeit',
291
+    'forum_non_inscrit' => 'Sie sind nicht eingeschrieben oder Adresse bzw. Passwort waren falsch.',
292
+    'forum_par_auteur' => 'von @auteur@',
293
+    'forum_titre_erreur' => 'Fehler...',
294 294
 
295
-	// I
296
-	'ical_texte_rss_articles' => 'Die «backend» Datei mit den Artikeln der Website finden Sie unter dieser Adresse:',
297
-	'ical_texte_rss_articles2' => 'Sie können auch «backend» Dateien für einzelne Rubriken de Website nutzen:',
298
-	'ical_texte_rss_breves' => 'Es gibt ebenfalls eine Datei für die Meldungen der Website. Wenn Sie die Nummer (ID) einer Rubrik angeben, erhalten Sie auchsschliesslich die Meldungen aus dieser Rubrik.',
299
-	'icone_a_suivre' => 'Aufgaben',
300
-	'icone_admin_site' => 'Konfiguration',
301
-	'icone_agenda' => 'Kalender',
302
-	'icone_aide_ligne' => 'Online-Hilfe',
303
-	'icone_articles' => 'Artikel',
304
-	'icone_auteurs' => 'Autoren',
305
-	'icone_brouteur' => 'Übersicht',
306
-	'icone_configuration_site' => 'Konfiguration',
307
-	'icone_configurer_site' => 'Ihre Website konfigurieren',
308
-	'icone_creer_nouvel_auteur' => 'Neuen Autor anlegen',
309
-	'icone_creer_rubrique' => 'Neue Rubrik anlegen',
310
-	'icone_creer_sous_rubrique' => 'Neue Unterrubrik anlegen',
311
-	'icone_deconnecter' => 'Log-Out',
312
-	'icone_discussions' => 'Diskussionen',
313
-	'icone_doc_rubrique' => 'Dokumente der Rubriken',
314
-	'icone_ecrire_article' => 'Neuen Artikel schreiben',
315
-	'icone_edition_site' => 'Redaktion',
316
-	'icone_gestion_langues' => 'Sprachverwaltung',
317
-	'icone_informations_personnelles' => 'Persönliche Informationen',
318
-	'icone_interface_complet' => 'Expertenmodus',
319
-	'icone_interface_simple' => 'Standardmodus',
320
-	'icone_maintenance_site' => 'Wartung',
321
-	'icone_messagerie_personnelle' => 'Persönliche Nachrichten',
322
-	'icone_repartition_debut' => 'Seit Einrichtung der Website',
323
-	'icone_rubriques' => 'Rubriken',
324
-	'icone_sauver_site' => 'Website sichern',
325
-	'icone_site_entier' => 'Ganze Website',
326
-	'icone_sites_references' => 'Verlinkte Websites',
327
-	'icone_statistiques' => 'Statistiken',
328
-	'icone_suivi_activite' => 'Aktivitäten verfolgen',
329
-	'icone_suivi_actualite' => 'Entwicklung der Website',
330
-	'icone_suivi_pettions' => 'Petitionen verwalten',
331
-	'icone_suivi_revisions' => 'Änderungen des Artikels',
332
-	'icone_supprimer_document' => 'Dokument löschen',
333
-	'icone_supprimer_image' => 'Bild löschen',
334
-	'icone_tous_articles' => 'Alle Ihre Artikel',
335
-	'icone_tous_auteur' => 'Alle Autoren',
336
-	'icone_tous_visiteur' => 'Alle Besucher',
337
-	'icone_visiter_site' => 'Website ansehen',
338
-	'icone_voir_en_ligne' => 'Online ansehen',
339
-	'img_indisponible' => 'Bild nicht vorhanden',
340
-	'impossible' => 'unmöglich',
341
-	'info_a_suivre' => 'AUFGABEN »',
342
-	'info_acces_interdit' => 'Zugang gesperrt',
343
-	'info_acces_refuse' => 'Zugang verweigert',
344
-	'info_action' => 'Aktion: @action@',
345
-	'info_administrer_rubriques' => 'Sie können diese Rubrik und ihre Unterrubriken verwalten',
346
-	'info_adresse_non_indiquee' => 'Sie haben keine Adresse zum Testen agegeben!',
347
-	'info_aide' => 'HILFE:',
348
-	'info_ajouter_mot' => 'Wort hinzufügen',
349
-	'info_annonce' => 'ANKÜNDIGUNG',
350
-	'info_annonces_generales' => 'Allgemeine Ankündigungen:',
351
-	'info_article_propose' => 'Vorgeschlagener Artikel',
352
-	'info_article_publie' => 'Veröffentlichter Artikel',
353
-	'info_article_redaction' => 'Artikel in Bearbeitung',
354
-	'info_article_refuse' => 'Abgelehnter Artikel',
355
-	'info_article_supprime' => 'Gelöschter Artikel',
356
-	'info_articles' => 'Artikel',
357
-	'info_articles_a_valider' => 'Zur Veröffentlichung vorgeschlagenen Artikel',
358
-	'info_articles_nb' => '@nb@ Artikel',
359
-	'info_articles_proposes' => 'Vorgeschlagene Artikel',
360
-	'info_articles_un' => '1 Artikel',
361
-	'info_auteurs_nombre' => 'Autor(en):',
362
-	'info_authentification_ftp' => 'Authentifizierung per FTP.',
363
-	'info_breves_2' => 'Meldungen',
364
-	'info_breves_nb' => '@nb@ Meldungen',
365
-	'info_breves_un' => '1 Meldung',
366
-	'info_connexion_refusee' => 'Die Verbindung wurde verweigert.',
367
-	'info_contact_developpeur' => 'Bitte kontaktieren Sie einen der Entwickler.',
368
-	'info_contenance' => 'Diese Website enthält:',
369
-	'info_contribution' => 'Beiträge',
370
-	'info_copyright' => '@spip@ ist freie Software im Sinne der @lien_gpl@.',
371
-	'info_copyright_doc' => 'Weitere Informationen finden Sie unter <a href="@spipnet@">@spipnet_affiche@</a>.',
372
-	'info_copyright_gpl' => 'GNU Public License',
373
-	'info_cours_edition' => 'In Bearbeitung',
374
-	'info_creer_repertoire' => 'Bitte legen Sie eine Datei oder ein Verzeichnis mit diesem Namen an: ',
375
-	'info_creer_repertoire_2' => '(Im Unterverzeichnis <b>@repertoire@</b>)',
376
-	'info_creer_vignette' => 'Miniaturbilder automatisch anlegen',
377
-	'info_creerdansrubrique_non_autorise' => 'Sie sind nicht berechtigt, Inhalte in dieser Rubrik anzulegen.',
378
-	'info_deplier' => 'Öffnen',
379
-	'info_descriptif_nombre' => 'Beschreibung(en):',
380
-	'info_description' => 'Beschreibung:',
381
-	'info_description_2' => 'Beschreibung:',
382
-	'info_dimension' => 'Maße:',
383
-	'info_documents_nb' => '@nb@ Dokumente',
384
-	'info_documents_un' => '1 Dokument',
385
-	'info_ecire_message_prive' => 'Neue private Nachricht schreiben',
386
-	'info_email_invalide' => 'Ungültige E-Mail Adresse.',
387
-	'info_en_cours_validation' => 'Ihre Artikel in Bearbeitung',
388
-	'info_en_ligne' => 'Zur Zeit online:',
389
-	'info_envoyer_message_prive' => 'Private Nachricht an diesen Autor schicken',
390
-	'info_erreur_requete' => 'Abfragefehler: ',
391
-	'info_erreur_squelette2' => 'Keine Vorlage <b>@fichier@</b> vorhanden ...',
392
-	'info_erreur_systeme' => 'Systemfahler (Fehler no. @errsys@)',
393
-	'info_erreur_systeme2' => 'Möglicherweise ist die Festplatte voll oder die Datenbank beschädigt.<br />
295
+    // I
296
+    'ical_texte_rss_articles' => 'Die «backend» Datei mit den Artikeln der Website finden Sie unter dieser Adresse:',
297
+    'ical_texte_rss_articles2' => 'Sie können auch «backend» Dateien für einzelne Rubriken de Website nutzen:',
298
+    'ical_texte_rss_breves' => 'Es gibt ebenfalls eine Datei für die Meldungen der Website. Wenn Sie die Nummer (ID) einer Rubrik angeben, erhalten Sie auchsschliesslich die Meldungen aus dieser Rubrik.',
299
+    'icone_a_suivre' => 'Aufgaben',
300
+    'icone_admin_site' => 'Konfiguration',
301
+    'icone_agenda' => 'Kalender',
302
+    'icone_aide_ligne' => 'Online-Hilfe',
303
+    'icone_articles' => 'Artikel',
304
+    'icone_auteurs' => 'Autoren',
305
+    'icone_brouteur' => 'Übersicht',
306
+    'icone_configuration_site' => 'Konfiguration',
307
+    'icone_configurer_site' => 'Ihre Website konfigurieren',
308
+    'icone_creer_nouvel_auteur' => 'Neuen Autor anlegen',
309
+    'icone_creer_rubrique' => 'Neue Rubrik anlegen',
310
+    'icone_creer_sous_rubrique' => 'Neue Unterrubrik anlegen',
311
+    'icone_deconnecter' => 'Log-Out',
312
+    'icone_discussions' => 'Diskussionen',
313
+    'icone_doc_rubrique' => 'Dokumente der Rubriken',
314
+    'icone_ecrire_article' => 'Neuen Artikel schreiben',
315
+    'icone_edition_site' => 'Redaktion',
316
+    'icone_gestion_langues' => 'Sprachverwaltung',
317
+    'icone_informations_personnelles' => 'Persönliche Informationen',
318
+    'icone_interface_complet' => 'Expertenmodus',
319
+    'icone_interface_simple' => 'Standardmodus',
320
+    'icone_maintenance_site' => 'Wartung',
321
+    'icone_messagerie_personnelle' => 'Persönliche Nachrichten',
322
+    'icone_repartition_debut' => 'Seit Einrichtung der Website',
323
+    'icone_rubriques' => 'Rubriken',
324
+    'icone_sauver_site' => 'Website sichern',
325
+    'icone_site_entier' => 'Ganze Website',
326
+    'icone_sites_references' => 'Verlinkte Websites',
327
+    'icone_statistiques' => 'Statistiken',
328
+    'icone_suivi_activite' => 'Aktivitäten verfolgen',
329
+    'icone_suivi_actualite' => 'Entwicklung der Website',
330
+    'icone_suivi_pettions' => 'Petitionen verwalten',
331
+    'icone_suivi_revisions' => 'Änderungen des Artikels',
332
+    'icone_supprimer_document' => 'Dokument löschen',
333
+    'icone_supprimer_image' => 'Bild löschen',
334
+    'icone_tous_articles' => 'Alle Ihre Artikel',
335
+    'icone_tous_auteur' => 'Alle Autoren',
336
+    'icone_tous_visiteur' => 'Alle Besucher',
337
+    'icone_visiter_site' => 'Website ansehen',
338
+    'icone_voir_en_ligne' => 'Online ansehen',
339
+    'img_indisponible' => 'Bild nicht vorhanden',
340
+    'impossible' => 'unmöglich',
341
+    'info_a_suivre' => 'AUFGABEN »',
342
+    'info_acces_interdit' => 'Zugang gesperrt',
343
+    'info_acces_refuse' => 'Zugang verweigert',
344
+    'info_action' => 'Aktion: @action@',
345
+    'info_administrer_rubriques' => 'Sie können diese Rubrik und ihre Unterrubriken verwalten',
346
+    'info_adresse_non_indiquee' => 'Sie haben keine Adresse zum Testen agegeben!',
347
+    'info_aide' => 'HILFE:',
348
+    'info_ajouter_mot' => 'Wort hinzufügen',
349
+    'info_annonce' => 'ANKÜNDIGUNG',
350
+    'info_annonces_generales' => 'Allgemeine Ankündigungen:',
351
+    'info_article_propose' => 'Vorgeschlagener Artikel',
352
+    'info_article_publie' => 'Veröffentlichter Artikel',
353
+    'info_article_redaction' => 'Artikel in Bearbeitung',
354
+    'info_article_refuse' => 'Abgelehnter Artikel',
355
+    'info_article_supprime' => 'Gelöschter Artikel',
356
+    'info_articles' => 'Artikel',
357
+    'info_articles_a_valider' => 'Zur Veröffentlichung vorgeschlagenen Artikel',
358
+    'info_articles_nb' => '@nb@ Artikel',
359
+    'info_articles_proposes' => 'Vorgeschlagene Artikel',
360
+    'info_articles_un' => '1 Artikel',
361
+    'info_auteurs_nombre' => 'Autor(en):',
362
+    'info_authentification_ftp' => 'Authentifizierung per FTP.',
363
+    'info_breves_2' => 'Meldungen',
364
+    'info_breves_nb' => '@nb@ Meldungen',
365
+    'info_breves_un' => '1 Meldung',
366
+    'info_connexion_refusee' => 'Die Verbindung wurde verweigert.',
367
+    'info_contact_developpeur' => 'Bitte kontaktieren Sie einen der Entwickler.',
368
+    'info_contenance' => 'Diese Website enthält:',
369
+    'info_contribution' => 'Beiträge',
370
+    'info_copyright' => '@spip@ ist freie Software im Sinne der @lien_gpl@.',
371
+    'info_copyright_doc' => 'Weitere Informationen finden Sie unter <a href="@spipnet@">@spipnet_affiche@</a>.',
372
+    'info_copyright_gpl' => 'GNU Public License',
373
+    'info_cours_edition' => 'In Bearbeitung',
374
+    'info_creer_repertoire' => 'Bitte legen Sie eine Datei oder ein Verzeichnis mit diesem Namen an: ',
375
+    'info_creer_repertoire_2' => '(Im Unterverzeichnis <b>@repertoire@</b>)',
376
+    'info_creer_vignette' => 'Miniaturbilder automatisch anlegen',
377
+    'info_creerdansrubrique_non_autorise' => 'Sie sind nicht berechtigt, Inhalte in dieser Rubrik anzulegen.',
378
+    'info_deplier' => 'Öffnen',
379
+    'info_descriptif_nombre' => 'Beschreibung(en):',
380
+    'info_description' => 'Beschreibung:',
381
+    'info_description_2' => 'Beschreibung:',
382
+    'info_dimension' => 'Maße:',
383
+    'info_documents_nb' => '@nb@ Dokumente',
384
+    'info_documents_un' => '1 Dokument',
385
+    'info_ecire_message_prive' => 'Neue private Nachricht schreiben',
386
+    'info_email_invalide' => 'Ungültige E-Mail Adresse.',
387
+    'info_en_cours_validation' => 'Ihre Artikel in Bearbeitung',
388
+    'info_en_ligne' => 'Zur Zeit online:',
389
+    'info_envoyer_message_prive' => 'Private Nachricht an diesen Autor schicken',
390
+    'info_erreur_requete' => 'Abfragefehler: ',
391
+    'info_erreur_squelette2' => 'Keine Vorlage <b>@fichier@</b> vorhanden ...',
392
+    'info_erreur_systeme' => 'Systemfahler (Fehler no. @errsys@)',
393
+    'info_erreur_systeme2' => 'Möglicherweise ist die Festplatte voll oder die Datenbank beschädigt.<br />
394 394
 <span style="color:red;">Versuchen Sie <a href=\'@script@\'>die Datenbank zu reparieren</a>, oder wenden Sie sich an Ihren Provider.</span>',
395
-	'info_fini' => 'Fertig!',
396
-	'info_format_image' => 'Für diese Dateiformate können Vorschaubilder erstellt werden: @gd_formats@.',
397
-	'info_format_non_defini' => 'Undefiniertes Format',
398
-	'info_grand_ecran' => 'Grosser Bildschirm',
399
-	'info_image_aide' => 'HILFE',
400
-	'info_image_process_titre' => 'Methode zum Anlegen der Miniaturbilder',
401
-	'info_impossible_lire_page' => '<b>Fehler!</b> Die Seite <tt><html>@test_proxy@</html></tt> ist nicht über den Proxy erreichbar',
402
-	'info_installation_systeme_publication' => 'Installation von SPIP ...',
403
-	'info_installer_documents' => 'Sie können alle Dokumente im Verzeichnis @upload@ automatisch installieren.',
404
-	'info_installer_ftp' => 'Als Administrator können Sie Dateien (per FTP) direkt in das Verzeichnis <i>@upload@</i> kopieren und sie hier auswählen.',
405
-	'info_installer_images' => 'Sie können Bilder in den Formaten JPEG, GIF und PNG verwenden.',
406
-	'info_installer_images_dossier' => 'Bilder ins Verzeichnis @upload@ kopieren um sie hier auswählen zu können.',
407
-	'info_interface_complete' => 'Expertenmodus',
408
-	'info_interface_simple' => 'Standardmodus',
409
-	'info_joindre_document_article' => 'Diesem Artikel können Sie Dokumente folgendem Typs beifügen: ',
410
-	'info_joindre_document_rubrique' => 'Dieser Rubrik können Sie Dokumente folgendem Typs beifügen:',
411
-	'info_joindre_documents_article' => 'Diesem Artikel können Sie Dokumente folgendem Typs beifügen:',
412
-	'info_l_article' => 'Der Artikel',
413
-	'info_la_breve' => 'Die Meldung',
414
-	'info_la_rubrique' => 'Die Rubrik',
415
-	'info_langue_principale' => 'Hauptsprache der Website',
416
-	'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ Pixel',
417
-	'info_les_auteurs_1' => 'von @les_auteurs@ ',
418
-	'info_logo_format_interdit' => 'Nur die Logos im Format @formats@ sind zugelassen.',
419
-	'info_logo_max_poids' => 'Die Logogrösse darf nicht @maxi@ überschreiten (aktuelle Dateigrösse @actuel@).',
420
-	'info_mail_fournisseur' => '[email protected]',
421
-	'info_message_2' => 'NACHRICHT',
422
-	'info_message_supprime' => 'NACHRICHT GELÖSCHT',
423
-	'info_messages_nb' => '@nb@ Nachrichten',
424
-	'info_messages_un' => '1 Nachricht',
425
-	'info_mise_en_ligne' => 'Online seit:',
426
-	'info_modification_parametres_securite' => 'Änderung der Sicherheitseinstellungen',
427
-	'info_mois_courant' => 'Im Lauf des Monats:',
428
-	'info_mot_cle_ajoute' => 'Das folgende Wort wurde hinzugefügt zu',
429
-	'info_multi_herit' => 'Standardsprache',
430
-	'info_multi_langues_soulignees' => 'Die Texte des Interface sind in die <u>unterstrichenen Sprachen</u> ganz oder teilweise übersetzt. Wenn Sie eine von ihnen wählen, werden viele Elemente der Website automatisch übersetzt (Datumsangaben, Formulare usw.). In den nicht unterstrichenen Sprachen werden diese Elemente in der Hauptsprache der Website angezeigt.',
431
-	'info_multilinguisme' => 'Mehrsprachigkeit',
432
-	'info_nom_non_utilisateurs_connectes' => 'Ihr Name wird nicht in der Liste der zur Zeit eingelogten Nutzer angezeigt.',
433
-	'info_nom_utilisateurs_connectes' => 'Ihr Name wird in der Liste der angemeldeten Nutzer angezeigt.',
434
-	'info_nombre_en_ligne' => 'Zur Zeit online:',
435
-	'info_non_resultat' => 'Keine Fundstellen für “@cherche_mot@”',
436
-	'info_non_utilisation_messagerie' => 'Sie nehmen nicht am Nachrichtensystem der Website teil.',
437
-	'info_nouveau_message' => 'SIE HABEN EINE NEUE NACHRICHT',
438
-	'info_nouveaux_messages' => 'SIE HABEN @total_messages@ NEUE NACHRICHTEN',
439
-	'info_numero_abbreviation' => 'N° ',
440
-	'info_obligatoire' => 'Diese Information ist obligatorisch.',
441
-	'info_page_actuelle' => 'Aktuelle Seite',
442
-	'info_pense_bete' => 'MERKZETTEL',
443
-	'info_petit_ecran' => 'Kleiner Bildschirm',
444
-	'info_petition_close' => 'Petition geschlossen',
445
-	'info_pixels' => 'Pixel',
446
-	'info_plusieurs_mots_trouves' => 'Mehrere Schlagworte entsprechen Ihrem Suchkriterium “@cherche_mot@”:',
447
-	'info_portfolio_automatique' => 'automatische Mappe:',
448
-	'info_premier_resultat' => '[@debut_limit@ erste Ergebnisse von @total@]',
449
-	'info_premier_resultat_sur' => '[@debut_limit@ erste Ergebnisse von @total@]',
450
-	'info_propose_1' => '[@nom_site_spip@] vorgeschlagen : @titre@',
451
-	'info_propose_2' => 'vorgeschlagener Artikel
395
+    'info_fini' => 'Fertig!',
396
+    'info_format_image' => 'Für diese Dateiformate können Vorschaubilder erstellt werden: @gd_formats@.',
397
+    'info_format_non_defini' => 'Undefiniertes Format',
398
+    'info_grand_ecran' => 'Grosser Bildschirm',
399
+    'info_image_aide' => 'HILFE',
400
+    'info_image_process_titre' => 'Methode zum Anlegen der Miniaturbilder',
401
+    'info_impossible_lire_page' => '<b>Fehler!</b> Die Seite <tt><html>@test_proxy@</html></tt> ist nicht über den Proxy erreichbar',
402
+    'info_installation_systeme_publication' => 'Installation von SPIP ...',
403
+    'info_installer_documents' => 'Sie können alle Dokumente im Verzeichnis @upload@ automatisch installieren.',
404
+    'info_installer_ftp' => 'Als Administrator können Sie Dateien (per FTP) direkt in das Verzeichnis <i>@upload@</i> kopieren und sie hier auswählen.',
405
+    'info_installer_images' => 'Sie können Bilder in den Formaten JPEG, GIF und PNG verwenden.',
406
+    'info_installer_images_dossier' => 'Bilder ins Verzeichnis @upload@ kopieren um sie hier auswählen zu können.',
407
+    'info_interface_complete' => 'Expertenmodus',
408
+    'info_interface_simple' => 'Standardmodus',
409
+    'info_joindre_document_article' => 'Diesem Artikel können Sie Dokumente folgendem Typs beifügen: ',
410
+    'info_joindre_document_rubrique' => 'Dieser Rubrik können Sie Dokumente folgendem Typs beifügen:',
411
+    'info_joindre_documents_article' => 'Diesem Artikel können Sie Dokumente folgendem Typs beifügen:',
412
+    'info_l_article' => 'Der Artikel',
413
+    'info_la_breve' => 'Die Meldung',
414
+    'info_la_rubrique' => 'Die Rubrik',
415
+    'info_langue_principale' => 'Hauptsprache der Website',
416
+    'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ Pixel',
417
+    'info_les_auteurs_1' => 'von @les_auteurs@ ',
418
+    'info_logo_format_interdit' => 'Nur die Logos im Format @formats@ sind zugelassen.',
419
+    'info_logo_max_poids' => 'Die Logogrösse darf nicht @maxi@ überschreiten (aktuelle Dateigrösse @actuel@).',
420
+    'info_mail_fournisseur' => '[email protected]',
421
+    'info_message_2' => 'NACHRICHT',
422
+    'info_message_supprime' => 'NACHRICHT GELÖSCHT',
423
+    'info_messages_nb' => '@nb@ Nachrichten',
424
+    'info_messages_un' => '1 Nachricht',
425
+    'info_mise_en_ligne' => 'Online seit:',
426
+    'info_modification_parametres_securite' => 'Änderung der Sicherheitseinstellungen',
427
+    'info_mois_courant' => 'Im Lauf des Monats:',
428
+    'info_mot_cle_ajoute' => 'Das folgende Wort wurde hinzugefügt zu',
429
+    'info_multi_herit' => 'Standardsprache',
430
+    'info_multi_langues_soulignees' => 'Die Texte des Interface sind in die <u>unterstrichenen Sprachen</u> ganz oder teilweise übersetzt. Wenn Sie eine von ihnen wählen, werden viele Elemente der Website automatisch übersetzt (Datumsangaben, Formulare usw.). In den nicht unterstrichenen Sprachen werden diese Elemente in der Hauptsprache der Website angezeigt.',
431
+    'info_multilinguisme' => 'Mehrsprachigkeit',
432
+    'info_nom_non_utilisateurs_connectes' => 'Ihr Name wird nicht in der Liste der zur Zeit eingelogten Nutzer angezeigt.',
433
+    'info_nom_utilisateurs_connectes' => 'Ihr Name wird in der Liste der angemeldeten Nutzer angezeigt.',
434
+    'info_nombre_en_ligne' => 'Zur Zeit online:',
435
+    'info_non_resultat' => 'Keine Fundstellen für “@cherche_mot@”',
436
+    'info_non_utilisation_messagerie' => 'Sie nehmen nicht am Nachrichtensystem der Website teil.',
437
+    'info_nouveau_message' => 'SIE HABEN EINE NEUE NACHRICHT',
438
+    'info_nouveaux_messages' => 'SIE HABEN @total_messages@ NEUE NACHRICHTEN',
439
+    'info_numero_abbreviation' => 'N° ',
440
+    'info_obligatoire' => 'Diese Information ist obligatorisch.',
441
+    'info_page_actuelle' => 'Aktuelle Seite',
442
+    'info_pense_bete' => 'MERKZETTEL',
443
+    'info_petit_ecran' => 'Kleiner Bildschirm',
444
+    'info_petition_close' => 'Petition geschlossen',
445
+    'info_pixels' => 'Pixel',
446
+    'info_plusieurs_mots_trouves' => 'Mehrere Schlagworte entsprechen Ihrem Suchkriterium “@cherche_mot@”:',
447
+    'info_portfolio_automatique' => 'automatische Mappe:',
448
+    'info_premier_resultat' => '[@debut_limit@ erste Ergebnisse von @total@]',
449
+    'info_premier_resultat_sur' => '[@debut_limit@ erste Ergebnisse von @total@]',
450
+    'info_propose_1' => '[@nom_site_spip@] vorgeschlagen : @titre@',
451
+    'info_propose_2' => 'vorgeschlagener Artikel
452 452
 ---------------',
453
-	'info_propose_3' => 'Der Artikel “@titre@” ist zur Veröffentlichung vorgeschlagen.',
454
-	'info_propose_4' => 'Bitte teilen Sie den anderen Autoren Ihre Meinung zu diesem Artikel mit',
455
-	'info_propose_5' => '(im Forum des Artikels). Sie können ihn unter dieser Adresse lesen:',
456
-	'info_publie_01' => 'Der Artikel „@titre@“ wurde von @connect_nom@ freigegeben.',
457
-	'info_publie_1' => '[@nom_site_spip@] VERÖFFENTLICHT: @titre@',
458
-	'info_publie_2' => 'Artikel veröffentlicht
453
+    'info_propose_3' => 'Der Artikel “@titre@” ist zur Veröffentlichung vorgeschlagen.',
454
+    'info_propose_4' => 'Bitte teilen Sie den anderen Autoren Ihre Meinung zu diesem Artikel mit',
455
+    'info_propose_5' => '(im Forum des Artikels). Sie können ihn unter dieser Adresse lesen:',
456
+    'info_publie_01' => 'Der Artikel „@titre@“ wurde von @connect_nom@ freigegeben.',
457
+    'info_publie_1' => '[@nom_site_spip@] VERÖFFENTLICHT: @titre@',
458
+    'info_publie_2' => 'Artikel veröffentlicht
459 459
 --------------',
460
-	'info_rechercher' => 'Suchen',
461
-	'info_rechercher_02' => 'Suchen:',
462
-	'info_remplacer_vignette' => 'Ersetzen Sie das Standard-Piktogramm durch ein eigenes Logo:',
463
-	'info_rubriques_nb' => '@nb@ Rubriken',
464
-	'info_rubriques_un' => '1 Rubrik',
465
-	'info_sans_titre_2' => 'ohne Titel',
466
-	'info_selectionner_fichier' => 'Sie können eine Datei aus dem Verzeichnis @upload@ auswählen.',
467
-	'info_selectionner_fichier_2' => 'Wählen Sie eine Datei:',
468
-	'info_sites_nb' => '@nb@ Websites',
469
-	'info_sites_un' => '1 Website',
470
-	'info_supprimer_vignette' => 'Icon löschen',
471
-	'info_symbole_bleu' => 'Das <b>blaue</b> Symbol bedeutet <b>Merkzettel</b>, d.h. eine Nachricht nur zu Ihrer eigenen Verwendung.',
472
-	'info_symbole_jaune' => 'Das <b>gelbe</b> Symbol bedeutet <b>Ankündigung an alle Redakteure</b> (für alle Redakteure sichtbar, Änderung nur durch Administratoren)',
473
-	'info_symbole_vert' => 'Das <b>grüne</b> Symbol bezeichnet Nachrichten an <b>andere Benutzer</b> der Website.',
474
-	'info_telecharger_nouveau_logo' => 'Neues Logo hochladen:',
475
-	'info_telecharger_ordinateur' => 'Von Ihrem Computer hochladen:',
476
-	'info_tous_resultats_enregistres' => ' [alle Ergebnisse sind erfasst]',
477
-	'info_tout_afficher' => 'Alles zeigen',
478
-	'info_travaux_texte' => 'Diese Website ist noch nicht fertig eingerichtet. Schauen Sie später mal wieder rein ...',
479
-	'info_travaux_titre' => 'Website in Bearbeitung',
480
-	'info_trop_resultat' => 'Zu viele Ergebnisse für “@cherche_mot”. Bitte präzisieren Sie Ihre Suchbegriffe.',
481
-	'info_utilisation_messagerie_interne' => 'Sie verwenden das interne Nachrichtensystem der Website. ',
482
-	'info_valider_lien' => 'Link freigeben',
483
-	'info_verifier_image' => ', bitte prüfen Sie, ob Ihre Bilder fehlerfrei übertagen wurden.',
484
-	'info_vignette_defaut' => 'Standardsymbol',
485
-	'info_vignette_personnalisee' => 'Persönliches Icon',
486
-	'info_visite' => 'Besuch:',
487
-	'info_vos_rendez_vous' => 'Ihre kommenden Termine',
488
-	'infos_vos_pense_bete' => 'Ihre Merkzettel',
460
+    'info_rechercher' => 'Suchen',
461
+    'info_rechercher_02' => 'Suchen:',
462
+    'info_remplacer_vignette' => 'Ersetzen Sie das Standard-Piktogramm durch ein eigenes Logo:',
463
+    'info_rubriques_nb' => '@nb@ Rubriken',
464
+    'info_rubriques_un' => '1 Rubrik',
465
+    'info_sans_titre_2' => 'ohne Titel',
466
+    'info_selectionner_fichier' => 'Sie können eine Datei aus dem Verzeichnis @upload@ auswählen.',
467
+    'info_selectionner_fichier_2' => 'Wählen Sie eine Datei:',
468
+    'info_sites_nb' => '@nb@ Websites',
469
+    'info_sites_un' => '1 Website',
470
+    'info_supprimer_vignette' => 'Icon löschen',
471
+    'info_symbole_bleu' => 'Das <b>blaue</b> Symbol bedeutet <b>Merkzettel</b>, d.h. eine Nachricht nur zu Ihrer eigenen Verwendung.',
472
+    'info_symbole_jaune' => 'Das <b>gelbe</b> Symbol bedeutet <b>Ankündigung an alle Redakteure</b> (für alle Redakteure sichtbar, Änderung nur durch Administratoren)',
473
+    'info_symbole_vert' => 'Das <b>grüne</b> Symbol bezeichnet Nachrichten an <b>andere Benutzer</b> der Website.',
474
+    'info_telecharger_nouveau_logo' => 'Neues Logo hochladen:',
475
+    'info_telecharger_ordinateur' => 'Von Ihrem Computer hochladen:',
476
+    'info_tous_resultats_enregistres' => ' [alle Ergebnisse sind erfasst]',
477
+    'info_tout_afficher' => 'Alles zeigen',
478
+    'info_travaux_texte' => 'Diese Website ist noch nicht fertig eingerichtet. Schauen Sie später mal wieder rein ...',
479
+    'info_travaux_titre' => 'Website in Bearbeitung',
480
+    'info_trop_resultat' => 'Zu viele Ergebnisse für “@cherche_mot”. Bitte präzisieren Sie Ihre Suchbegriffe.',
481
+    'info_utilisation_messagerie_interne' => 'Sie verwenden das interne Nachrichtensystem der Website. ',
482
+    'info_valider_lien' => 'Link freigeben',
483
+    'info_verifier_image' => ', bitte prüfen Sie, ob Ihre Bilder fehlerfrei übertagen wurden.',
484
+    'info_vignette_defaut' => 'Standardsymbol',
485
+    'info_vignette_personnalisee' => 'Persönliches Icon',
486
+    'info_visite' => 'Besuch:',
487
+    'info_vos_rendez_vous' => 'Ihre kommenden Termine',
488
+    'infos_vos_pense_bete' => 'Ihre Merkzettel',
489 489
 
490
-	// L
491
-	'label_ajout_id_rapide' => 'schnell hinzufügen',
492
-	'label_poids_fichier' => 'Größe',
493
-	'label_ponctuer' => '@label@:',
494
-	'lien_afficher_icones_seuls' => 'Nur Piktogramme anzeigen',
495
-	'lien_afficher_texte_icones' => 'Piktogramme und Beschriftung anzeigen',
496
-	'lien_afficher_texte_seul' => 'Nur Textmenüs',
497
-	'lien_aller_a_la_derniere_page' => 'Zur letzten Seite gehen',
498
-	'lien_aller_a_la_page_nb' => 'Zu Seite @nb@ gehen',
499
-	'lien_aller_a_la_page_precedente' => 'Zur vorherigen Seite gehen',
500
-	'lien_aller_a_la_page_suivante' => 'Zur nächsten Seite gehen',
501
-	'lien_aller_a_la_premiere_page' => 'Zur ersten Seite gehen',
502
-	'lien_liberer' => 'freigeben',
503
-	'lien_liberer_tous' => 'Alle freigeben',
504
-	'lien_nouvea_pense_bete' => 'NEUER MERKZETTEL',
505
-	'lien_nouveau_message' => 'NEUE NACHRICHT',
506
-	'lien_nouvelle_annonce' => 'NEUE ANKÜNDIGUNG',
507
-	'lien_petitions' => 'PETITION',
508
-	'lien_popularite' => 'Beliebtheit: @popularite@%',
509
-	'lien_racine_site' => 'OBERSTE EBENE DER WEBSITE',
510
-	'lien_reessayer' => 'Wiederholen',
511
-	'lien_repondre_message' => 'Nachricht beantworten',
512
-	'lien_supprimer' => 'Löschen',
513
-	'lien_tout_afficher' => 'Alles zeigen',
514
-	'lien_visite_site' => 'Website anzeigen',
515
-	'lien_visites' => '@visites@ Besuche',
516
-	'lien_voir_auteur' => 'Autor anzeigen',
517
-	'ligne' => 'Zeile',
518
-	'login' => 'Login',
519
-	'login_acces_prive' => 'Login zum Redaktionssystem',
520
-	'login_autre_identifiant' => 'Unter anderem Namen anmelden',
521
-	'login_cookie_accepte' => 'Bitte stellen Sie Ihren Webbrowser so ein, dass er sie akzeptiert (zumindest für diese Website).',
522
-	'login_cookie_oblige' => 'Zu Ihrer Sicherheit muss Ihr Browser Cookies akzeptieren, wenn Sie sich bei der Website anmelden.',
523
-	'login_deconnexion_ok' => 'Abmeldung erfolgreich.',
524
-	'login_erreur_pass' => 'Passwort oder Benutzername falsch.',
525
-	'login_espace_prive' => 'Redaktionssystem',
526
-	'login_identifiant_inconnu' => 'Benutzer «@login@» unbekannt.',
527
-	'login_login' => 'Login:',
528
-	'login_login2' => 'Login-ID oder E-Mail:',
529
-	'login_login_pass_incorrect' => '(Login oder Passwort falsch.)',
530
-	'login_motpasseoublie' => 'Passwort vergessen?',
531
-	'login_non_securise' => 'Achtung, dieses Formular ist nicht abgesichert. Wenn Sie sicher stellen wollen, dass Ihr Passwort nicht im Netzwerk mitgehört werden kann, aktivieren Sie bitte Javascript und',
532
-	'login_nouvelle_tentative' => 'Erneut versuchen',
533
-	'login_par_ici' => 'Sie sind angemeldet... hier...',
534
-	'login_pass2' => 'Passwort:',
535
-	'login_preferez_refuser' => '<b>Wenn Sie keine Cookies verwenden wollen</b>, können Sie eine alternative (weniger sichere) Anmeldung nutzen:',
536
-	'login_recharger' => 'diese Seite neu laden',
537
-	'login_rester_identifie' => 'An mich erinnern',
538
-	'login_retour_public' => 'Zurück zur öffentlichen Website',
539
-	'login_retour_site' => 'Zurück zur öffentlichen Website',
540
-	'login_retoursitepublic' => 'Zurück zur öffentlichen Website',
541
-	'login_sans_cookie' => 'Login ohne Cookie',
542
-	'login_securise' => 'Sicheres Login',
543
-	'login_sinscrire' => 'anmelden',
544
-	'login_test_navigateur' => 'Test Webbrowser/Verbindung',
545
-	'login_verifiez_navigateur' => '(Überprüfen Sie, dass Ihr Webbrowser Ihr Passwort nicht gespeichert hat ...)',
490
+    // L
491
+    'label_ajout_id_rapide' => 'schnell hinzufügen',
492
+    'label_poids_fichier' => 'Größe',
493
+    'label_ponctuer' => '@label@:',
494
+    'lien_afficher_icones_seuls' => 'Nur Piktogramme anzeigen',
495
+    'lien_afficher_texte_icones' => 'Piktogramme und Beschriftung anzeigen',
496
+    'lien_afficher_texte_seul' => 'Nur Textmenüs',
497
+    'lien_aller_a_la_derniere_page' => 'Zur letzten Seite gehen',
498
+    'lien_aller_a_la_page_nb' => 'Zu Seite @nb@ gehen',
499
+    'lien_aller_a_la_page_precedente' => 'Zur vorherigen Seite gehen',
500
+    'lien_aller_a_la_page_suivante' => 'Zur nächsten Seite gehen',
501
+    'lien_aller_a_la_premiere_page' => 'Zur ersten Seite gehen',
502
+    'lien_liberer' => 'freigeben',
503
+    'lien_liberer_tous' => 'Alle freigeben',
504
+    'lien_nouvea_pense_bete' => 'NEUER MERKZETTEL',
505
+    'lien_nouveau_message' => 'NEUE NACHRICHT',
506
+    'lien_nouvelle_annonce' => 'NEUE ANKÜNDIGUNG',
507
+    'lien_petitions' => 'PETITION',
508
+    'lien_popularite' => 'Beliebtheit: @popularite@%',
509
+    'lien_racine_site' => 'OBERSTE EBENE DER WEBSITE',
510
+    'lien_reessayer' => 'Wiederholen',
511
+    'lien_repondre_message' => 'Nachricht beantworten',
512
+    'lien_supprimer' => 'Löschen',
513
+    'lien_tout_afficher' => 'Alles zeigen',
514
+    'lien_visite_site' => 'Website anzeigen',
515
+    'lien_visites' => '@visites@ Besuche',
516
+    'lien_voir_auteur' => 'Autor anzeigen',
517
+    'ligne' => 'Zeile',
518
+    'login' => 'Login',
519
+    'login_acces_prive' => 'Login zum Redaktionssystem',
520
+    'login_autre_identifiant' => 'Unter anderem Namen anmelden',
521
+    'login_cookie_accepte' => 'Bitte stellen Sie Ihren Webbrowser so ein, dass er sie akzeptiert (zumindest für diese Website).',
522
+    'login_cookie_oblige' => 'Zu Ihrer Sicherheit muss Ihr Browser Cookies akzeptieren, wenn Sie sich bei der Website anmelden.',
523
+    'login_deconnexion_ok' => 'Abmeldung erfolgreich.',
524
+    'login_erreur_pass' => 'Passwort oder Benutzername falsch.',
525
+    'login_espace_prive' => 'Redaktionssystem',
526
+    'login_identifiant_inconnu' => 'Benutzer «@login@» unbekannt.',
527
+    'login_login' => 'Login:',
528
+    'login_login2' => 'Login-ID oder E-Mail:',
529
+    'login_login_pass_incorrect' => '(Login oder Passwort falsch.)',
530
+    'login_motpasseoublie' => 'Passwort vergessen?',
531
+    'login_non_securise' => 'Achtung, dieses Formular ist nicht abgesichert. Wenn Sie sicher stellen wollen, dass Ihr Passwort nicht im Netzwerk mitgehört werden kann, aktivieren Sie bitte Javascript und',
532
+    'login_nouvelle_tentative' => 'Erneut versuchen',
533
+    'login_par_ici' => 'Sie sind angemeldet... hier...',
534
+    'login_pass2' => 'Passwort:',
535
+    'login_preferez_refuser' => '<b>Wenn Sie keine Cookies verwenden wollen</b>, können Sie eine alternative (weniger sichere) Anmeldung nutzen:',
536
+    'login_recharger' => 'diese Seite neu laden',
537
+    'login_rester_identifie' => 'An mich erinnern',
538
+    'login_retour_public' => 'Zurück zur öffentlichen Website',
539
+    'login_retour_site' => 'Zurück zur öffentlichen Website',
540
+    'login_retoursitepublic' => 'Zurück zur öffentlichen Website',
541
+    'login_sans_cookie' => 'Login ohne Cookie',
542
+    'login_securise' => 'Sicheres Login',
543
+    'login_sinscrire' => 'anmelden',
544
+    'login_test_navigateur' => 'Test Webbrowser/Verbindung',
545
+    'login_verifiez_navigateur' => '(Überprüfen Sie, dass Ihr Webbrowser Ihr Passwort nicht gespeichert hat ...)',
546 546
 
547
-	// M
548
-	'masquer_colonne' => 'Diese Spalte verbergen',
549
-	'masquer_trad' => 'Übersetzungen ausblenden',
550
-	'message_nouveaux_identifiants_echec' => 'Es können keine neuen Zugangsdaten erzeigt werden.',
551
-	'message_nouveaux_identifiants_echec_envoi' => 'Die neuen Zugangsdaten konnten nicht übermittelt werden.',
552
-	'message_nouveaux_identifiants_ok' => 'Die neuen Zugangsdaten wurden an @email@ übermittelt.',
553
-	'module_fichiers_langues' => 'Sprachdateien',
547
+    // M
548
+    'masquer_colonne' => 'Diese Spalte verbergen',
549
+    'masquer_trad' => 'Übersetzungen ausblenden',
550
+    'message_nouveaux_identifiants_echec' => 'Es können keine neuen Zugangsdaten erzeigt werden.',
551
+    'message_nouveaux_identifiants_echec_envoi' => 'Die neuen Zugangsdaten konnten nicht übermittelt werden.',
552
+    'message_nouveaux_identifiants_ok' => 'Die neuen Zugangsdaten wurden an @email@ übermittelt.',
553
+    'module_fichiers_langues' => 'Sprachdateien',
554 554
 
555
-	// N
556
-	'navigateur_pas_redirige' => 'Wenn Ihr Browser keine automatische Weiterleitung unterstützt, klicken Sie hier.',
557
-	'numero' => 'Nummer',
555
+    // N
556
+    'navigateur_pas_redirige' => 'Wenn Ihr Browser keine automatische Weiterleitung unterstützt, klicken Sie hier.',
557
+    'numero' => 'Nummer',
558 558
 
559
-	// O
560
-	'occurence' => 'Vorkommen',
561
-	'onglet_affacer_base' => 'Datenbank löschen',
562
-	'onglet_auteur' => 'Autor',
563
-	'onglet_contenu_site' => 'Inhalte der Website',
564
-	'onglet_evolution_visite_mod' => 'Entwicklung',
565
-	'onglet_fonctions_avances' => 'Erweiterte Einstellungen',
566
-	'onglet_informations_personnelles' => 'Persönliche Informationen',
567
-	'onglet_interactivite' => 'Interaktivität',
568
-	'onglet_messagerie' => 'Nachrichtensystem',
569
-	'onglet_repartition_rubrique' => 'Verteilung auf Rubriken',
570
-	'onglet_save_restaur_base' => 'Datenbank sichern/wieder herstellen',
571
-	'onglet_vider_cache' => 'Sitecache löschen',
559
+    // O
560
+    'occurence' => 'Vorkommen',
561
+    'onglet_affacer_base' => 'Datenbank löschen',
562
+    'onglet_auteur' => 'Autor',
563
+    'onglet_contenu_site' => 'Inhalte der Website',
564
+    'onglet_evolution_visite_mod' => 'Entwicklung',
565
+    'onglet_fonctions_avances' => 'Erweiterte Einstellungen',
566
+    'onglet_informations_personnelles' => 'Persönliche Informationen',
567
+    'onglet_interactivite' => 'Interaktivität',
568
+    'onglet_messagerie' => 'Nachrichtensystem',
569
+    'onglet_repartition_rubrique' => 'Verteilung auf Rubriken',
570
+    'onglet_save_restaur_base' => 'Datenbank sichern/wieder herstellen',
571
+    'onglet_vider_cache' => 'Sitecache löschen',
572 572
 
573
-	// P
574
-	'pass_choix_pass' => 'Bitte geben Sie Ihr neues Passwort ein:',
575
-	'pass_erreur' => 'Fehler',
576
-	'pass_erreur_acces_refuse' => '<b>Fehler:</b> Sie haben keinen Zugang mehr zur Website.',
577
-	'pass_erreur_code_inconnu' => '<b>Fehler:</b> Angabe entspricht keinem Benutzer mit Zugang zu dieser Website.',
578
-	'pass_erreur_non_enregistre' => '<b>Fehler:</b> Die Adresse <tt>@email_oubli@</tt> ist nicht bekannt.',
579
-	'pass_erreur_non_valide' => '<b>Fehler:</b> Diese E-Mail Adresse <tt>@email_oubli@</tt> ist ungültig!',
580
-	'pass_erreur_probleme_technique' => '<b>Fehler:</b> E-Mail kann aufgrund eines technischen Problems nicht gesendet werden.',
581
-	'pass_espace_prive_bla' => 'Das Redaktionssystem dieser Website ist für Besucher zugänglich, die sich angemeldet haben. Nach erfolgreicher Anmeldung können Sie an Artikeln mitarbeiten, eigene Artikel vorschlagen und an allen Diskussionsforen teilnehmen.',
582
-	'pass_forum_bla' => 'Sie möchten in einem Forum für eingetragene Besucher der Website schreiben.',
583
-	'pass_indiquez_cidessous' => 'Bitte geben Sie die E-Mail Adresse an, mit der Sie sich ursprünglich eingetragen haben. Sie erhalten dann eine Mail mit allen erforderlichen Schritten um wieder Zugang zu bekommen.',
584
-	'pass_mail_passcookie' => '(Diese Nachricht wurde automatisch erzeugt)
573
+    // P
574
+    'pass_choix_pass' => 'Bitte geben Sie Ihr neues Passwort ein:',
575
+    'pass_erreur' => 'Fehler',
576
+    'pass_erreur_acces_refuse' => '<b>Fehler:</b> Sie haben keinen Zugang mehr zur Website.',
577
+    'pass_erreur_code_inconnu' => '<b>Fehler:</b> Angabe entspricht keinem Benutzer mit Zugang zu dieser Website.',
578
+    'pass_erreur_non_enregistre' => '<b>Fehler:</b> Die Adresse <tt>@email_oubli@</tt> ist nicht bekannt.',
579
+    'pass_erreur_non_valide' => '<b>Fehler:</b> Diese E-Mail Adresse <tt>@email_oubli@</tt> ist ungültig!',
580
+    'pass_erreur_probleme_technique' => '<b>Fehler:</b> E-Mail kann aufgrund eines technischen Problems nicht gesendet werden.',
581
+    'pass_espace_prive_bla' => 'Das Redaktionssystem dieser Website ist für Besucher zugänglich, die sich angemeldet haben. Nach erfolgreicher Anmeldung können Sie an Artikeln mitarbeiten, eigene Artikel vorschlagen und an allen Diskussionsforen teilnehmen.',
582
+    'pass_forum_bla' => 'Sie möchten in einem Forum für eingetragene Besucher der Website schreiben.',
583
+    'pass_indiquez_cidessous' => 'Bitte geben Sie die E-Mail Adresse an, mit der Sie sich ursprünglich eingetragen haben. Sie erhalten dann eine Mail mit allen erforderlichen Schritten um wieder Zugang zu bekommen.',
584
+    'pass_mail_passcookie' => '(Diese Nachricht wurde automatisch erzeugt)
585 585
 
586 586
 Um sich wieder bei der Website
587 587
 @nom_site_spip@ (@adresse_site@)
@@ -591,135 +591,135 @@  discard block
 block discarded – undo
591 591
 
592 592
 Sie können auf dieser Seite ein neues Passwort eingeben und sich wieder bei der Website einloggen.
593 593
 ',
594
-	'pass_mot_oublie' => 'Passwort vergessen',
595
-	'pass_nouveau_enregistre' => 'Ihr neues Passwort wurde gespeichert.',
596
-	'pass_nouveau_pass' => 'Neues Passwort',
597
-	'pass_ok' => 'O.K.',
598
-	'pass_oubli_mot' => 'Passwort vergessen',
599
-	'pass_procedure_changer' => 'Um Ihr Paßwort zu ändern, geben Sie bitte die Mailadresse Ihres Accounts an.',
600
-	'pass_quitter_fenetre' => 'Dieses Fenster verlassen',
601
-	'pass_rappel_login' => 'Erinnerung: Ihr Login ist «@login@».',
602
-	'pass_recevoir_mail' => 'Ein Link zum Zurücksetzen Ihres Passworts wurde an Ihre E-Mail-Adresse geschickt (sofern diese gültig ist).',
603
-	'pass_retour_public' => 'Zurück zum öffentlichen Bereich',
604
-	'pass_rien_a_faire_ici' => 'Hier ist nichts zu tun.',
605
-	'pass_vousinscrire' => 'Bei dieser Website anmelden',
606
-	'precedent' => 'zurück',
607
-	'previsualisation' => 'Vorschau',
608
-	'previsualiser' => 'Vorschau anzeigen',
594
+    'pass_mot_oublie' => 'Passwort vergessen',
595
+    'pass_nouveau_enregistre' => 'Ihr neues Passwort wurde gespeichert.',
596
+    'pass_nouveau_pass' => 'Neues Passwort',
597
+    'pass_ok' => 'O.K.',
598
+    'pass_oubli_mot' => 'Passwort vergessen',
599
+    'pass_procedure_changer' => 'Um Ihr Paßwort zu ändern, geben Sie bitte die Mailadresse Ihres Accounts an.',
600
+    'pass_quitter_fenetre' => 'Dieses Fenster verlassen',
601
+    'pass_rappel_login' => 'Erinnerung: Ihr Login ist «@login@».',
602
+    'pass_recevoir_mail' => 'Ein Link zum Zurücksetzen Ihres Passworts wurde an Ihre E-Mail-Adresse geschickt (sofern diese gültig ist).',
603
+    'pass_retour_public' => 'Zurück zum öffentlichen Bereich',
604
+    'pass_rien_a_faire_ici' => 'Hier ist nichts zu tun.',
605
+    'pass_vousinscrire' => 'Bei dieser Website anmelden',
606
+    'precedent' => 'zurück',
607
+    'previsualisation' => 'Vorschau',
608
+    'previsualiser' => 'Vorschau anzeigen',
609 609
 
610
-	// R
611
-	'retour' => 'Zurück',
610
+    // R
611
+    'retour' => 'Zurück',
612 612
 
613
-	// S
614
-	'spip_conforme_dtd' => 'SPIP erkennt dieses Dokument als dem DOCTYPE entsprechend:',
615
-	'squelette' => 'Skelett',
616
-	'squelette_inclus_ligne' => 'eingebettetes Skelett, Zeile',
617
-	'squelette_ligne' => 'Skelett, Zeile',
618
-	'stats_visites_et_popularite' => '@visites@ Besuche; Beliebtheit: @popularite@',
619
-	'suivant' => 'weiter',
613
+    // S
614
+    'spip_conforme_dtd' => 'SPIP erkennt dieses Dokument als dem DOCTYPE entsprechend:',
615
+    'squelette' => 'Skelett',
616
+    'squelette_inclus_ligne' => 'eingebettetes Skelett, Zeile',
617
+    'squelette_ligne' => 'Skelett, Zeile',
618
+    'stats_visites_et_popularite' => '@visites@ Besuche; Beliebtheit: @popularite@',
619
+    'suivant' => 'weiter',
620 620
 
621
-	// T
622
-	'taille_go' => '@taille@ Start',
623
-	'taille_ko' => '@taille@ kB',
624
-	'taille_mo' => '@taille@ MB',
625
-	'taille_octets' => '@taille@ Byte',
626
-	'texte_actualite_site_1' => 'Wenn Sie sich mit der Oberfläche des Redaktionssystems vertraut gemacht haben, können Sie „',
627
-	'texte_actualite_site_2' => 'den Expertenmodus aktivieren,',
628
-	'texte_actualite_site_3' => 'um zusätzliche Funktionen zu nutzen.',
629
-	'texte_creation_automatique_vignette' => 'Diese Website generiert automatisch Vorschaubilder. Wenn Sie Bilder in den Formaten @gd_formats@ mit diesem Formular installieren, werden Vorschaubilder mit den maximalen Diemsionen @taille_preview@ Pixel angelegt.',
630
-	'texte_documents_associes' => 'Die folgenden Dokumente wurden dem Artikel zugeordnet jedoch nicht direkt in ihn eingefügt. Ja nach Gestaltung der öffentlichen Website können Sie alle beigeordneten Dokumente angezeigt werden (oder auch nicht).',
631
-	'texte_erreur_mise_niveau_base' => 'Datenbankfehler beim Einrichten der neuen Version. Das Bild <b>@fichier@</b> wurde nicht übernommen (Artikel @id_article@).
621
+    // T
622
+    'taille_go' => '@taille@ Start',
623
+    'taille_ko' => '@taille@ kB',
624
+    'taille_mo' => '@taille@ MB',
625
+    'taille_octets' => '@taille@ Byte',
626
+    'texte_actualite_site_1' => 'Wenn Sie sich mit der Oberfläche des Redaktionssystems vertraut gemacht haben, können Sie „',
627
+    'texte_actualite_site_2' => 'den Expertenmodus aktivieren,',
628
+    'texte_actualite_site_3' => 'um zusätzliche Funktionen zu nutzen.',
629
+    'texte_creation_automatique_vignette' => 'Diese Website generiert automatisch Vorschaubilder. Wenn Sie Bilder in den Formaten @gd_formats@ mit diesem Formular installieren, werden Vorschaubilder mit den maximalen Diemsionen @taille_preview@ Pixel angelegt.',
630
+    'texte_documents_associes' => 'Die folgenden Dokumente wurden dem Artikel zugeordnet jedoch nicht direkt in ihn eingefügt. Ja nach Gestaltung der öffentlichen Website können Sie alle beigeordneten Dokumente angezeigt werden (oder auch nicht).',
631
+    'texte_erreur_mise_niveau_base' => 'Datenbankfehler beim Einrichten der neuen Version. Das Bild <b>@fichier@</b> wurde nicht übernommen (Artikel @id_article@).
632 632
  Bitte notieren Sie diesen Hinweis, starten Sie die Aktualisierung erneut und prüfen Sie, ob die Bilder
633 633
  in den Artikeln angezeigt werden.',
634
-	'texte_erreur_visiteur' => 'Sie haben versucht, sich mit einer Identität einzuloggen, die dazu nicht berechtigt.',
635
-	'texte_inc_auth_1' => 'Sie sind angemeldet als <b>@auth_login@</b>, aber diese ID existiert nicht bzw. nicht mehr in der Datenbank.
634
+    'texte_erreur_visiteur' => 'Sie haben versucht, sich mit einer Identität einzuloggen, die dazu nicht berechtigt.',
635
+    'texte_inc_auth_1' => 'Sie sind angemeldet als <b>@auth_login@</b>, aber diese ID existiert nicht bzw. nicht mehr in der Datenbank.
636 636
  Versuchen Sie,',
637
-	'texte_inc_auth_2' => 'sich erneut anzumelden',
638
-	'texte_inc_auth_3' => ', nachdem Sie u.U. Ihren Webbrowser neu gestartet haben.',
639
-	'texte_inc_config' => 'Die hier möglichten Einstellungen beeinflussen das grundsätzliche Verhalten Ihrer Website. Wir raten dringend, sie nur zu ändern, wenn Sie vollständig mit der Funktionsweise von SPIP vertraut sind.<br /><br /><b>Es ist ebenfalls mehr als ratsam, diese Einstellungen nur von Ihrem Haupt-Administrator vornehmen zu lassen.</b>',
640
-	'texte_inc_meta_1' => 'Das System konnte die Datei <code>@fichier@</code> nicht speichern. Bitte prüfen Sie als Administrator ',
641
-	'texte_inc_meta_2' => 'die Berechtigungen',
642
-	'texte_inc_meta_3' => 'für das Verzeichnis <code>@repertoire@</code>.',
643
-	'texte_statut_en_cours_redaction' => 'in Bearbeitung',
644
-	'texte_statut_poubelle' => 'im Mülleimer',
645
-	'texte_statut_propose_evaluation' => 'vorgeschlagen',
646
-	'texte_statut_publie' => 'veröffentlicht',
647
-	'texte_statut_refuse' => 'abgelehnt',
648
-	'titre_ajouter_mot_cle' => 'SCHLAGWORT ZUORDNEN:',
649
-	'titre_cadre_raccourcis' => 'SCHNELLZUGANG:',
650
-	'titre_changer_couleur_interface' => 'Farbe der Oberfläche ändern',
651
-	'titre_image_admin_article' => 'Sie können diesen Artikel verwalten',
652
-	'titre_image_administrateur' => 'Administrator',
653
-	'titre_image_aide' => 'Hilfe zu diesem Element',
654
-	'titre_image_auteur_supprime' => 'gelöschter Autor',
655
-	'titre_image_redacteur' => 'Redakteur ohne Systemzugang',
656
-	'titre_image_redacteur_02' => 'Redakteur',
657
-	'titre_image_selecteur' => 'Liste anzeigen',
658
-	'titre_image_visiteur' => 'Besucher',
659
-	'titre_joindre_document' => 'DOKUMENT ANFÜGEN',
660
-	'titre_mots_cles' => 'SCHLAGWORTE',
661
-	'titre_probleme_technique' => 'Achtung! Ein Problem mit dem SQL Server verhindert den Zugang zu diesem Teil der Website. Danke für Ihr Verständnis.',
662
-	'titre_publier_document' => 'DOKUMENT IN DIESER RUBRIK VERÖFFENTLICHEN',
663
-	'titre_signatures_attente' => 'Nicht bestätigte Unterschriften',
664
-	'titre_signatures_confirmees' => 'Bestätigte Unterschriften',
665
-	'titre_statistiques' => 'Statistiken',
666
-	'titre_titre_document' => 'Titel des Dokuments:',
667
-	'todo' => 'demnächst',
668
-	'trad_definir_reference' => 'Wählen Sie "@titre@" als Referenz für Übersetzungen',
669
-	'trad_reference' => '(Referenzartikel)',
637
+    'texte_inc_auth_2' => 'sich erneut anzumelden',
638
+    'texte_inc_auth_3' => ', nachdem Sie u.U. Ihren Webbrowser neu gestartet haben.',
639
+    'texte_inc_config' => 'Die hier möglichten Einstellungen beeinflussen das grundsätzliche Verhalten Ihrer Website. Wir raten dringend, sie nur zu ändern, wenn Sie vollständig mit der Funktionsweise von SPIP vertraut sind.<br /><br /><b>Es ist ebenfalls mehr als ratsam, diese Einstellungen nur von Ihrem Haupt-Administrator vornehmen zu lassen.</b>',
640
+    'texte_inc_meta_1' => 'Das System konnte die Datei <code>@fichier@</code> nicht speichern. Bitte prüfen Sie als Administrator ',
641
+    'texte_inc_meta_2' => 'die Berechtigungen',
642
+    'texte_inc_meta_3' => 'für das Verzeichnis <code>@repertoire@</code>.',
643
+    'texte_statut_en_cours_redaction' => 'in Bearbeitung',
644
+    'texte_statut_poubelle' => 'im Mülleimer',
645
+    'texte_statut_propose_evaluation' => 'vorgeschlagen',
646
+    'texte_statut_publie' => 'veröffentlicht',
647
+    'texte_statut_refuse' => 'abgelehnt',
648
+    'titre_ajouter_mot_cle' => 'SCHLAGWORT ZUORDNEN:',
649
+    'titre_cadre_raccourcis' => 'SCHNELLZUGANG:',
650
+    'titre_changer_couleur_interface' => 'Farbe der Oberfläche ändern',
651
+    'titre_image_admin_article' => 'Sie können diesen Artikel verwalten',
652
+    'titre_image_administrateur' => 'Administrator',
653
+    'titre_image_aide' => 'Hilfe zu diesem Element',
654
+    'titre_image_auteur_supprime' => 'gelöschter Autor',
655
+    'titre_image_redacteur' => 'Redakteur ohne Systemzugang',
656
+    'titre_image_redacteur_02' => 'Redakteur',
657
+    'titre_image_selecteur' => 'Liste anzeigen',
658
+    'titre_image_visiteur' => 'Besucher',
659
+    'titre_joindre_document' => 'DOKUMENT ANFÜGEN',
660
+    'titre_mots_cles' => 'SCHLAGWORTE',
661
+    'titre_probleme_technique' => 'Achtung! Ein Problem mit dem SQL Server verhindert den Zugang zu diesem Teil der Website. Danke für Ihr Verständnis.',
662
+    'titre_publier_document' => 'DOKUMENT IN DIESER RUBRIK VERÖFFENTLICHEN',
663
+    'titre_signatures_attente' => 'Nicht bestätigte Unterschriften',
664
+    'titre_signatures_confirmees' => 'Bestätigte Unterschriften',
665
+    'titre_statistiques' => 'Statistiken',
666
+    'titre_titre_document' => 'Titel des Dokuments:',
667
+    'todo' => 'demnächst',
668
+    'trad_definir_reference' => 'Wählen Sie "@titre@" als Referenz für Übersetzungen',
669
+    'trad_reference' => '(Referenzartikel)',
670 670
 
671
-	// U
672
-	'upload_limit' => 'Die Datei ist zu groß für den Server; die maximal erlaubte Dateigröße für den <i>Upload</i> ist @max@.',
671
+    // U
672
+    'upload_limit' => 'Die Datei ist zu groß für den Server; die maximal erlaubte Dateigröße für den <i>Upload</i> ist @max@.',
673 673
 
674
-	// Z
675
-	'zbug_balise_b_aval' => ' : Tag B muss vor der Schleife stehen',
676
-	'zbug_balise_inexistante' => 'Fehler: Der Tag @balise@ wurde nicht richtig für  @from@ deklariert.',
677
-	'zbug_balise_sans_argument' => 'Dem Tag @balise@ fehlt ein Parameter',
678
-	'zbug_boucle' => 'Schleife',
679
-	'zbug_boucle_recursive_undef' => 'Die rekursive Schleife @nom@ ist nicht definiert',
680
-	'zbug_calcul' => 'berechnen',
681
-	'zbug_champ_hors_boucle' => 'Feld @champ@ ausserhalb einer Schleife',
682
-	'zbug_champ_hors_critere' => 'Feld @champ@ ohne Kriterium @critere@',
683
-	'zbug_champ_hors_motif' => 'Feld @champ@ befindet sich ausserhalb eines Kontexts @motif@',
684
-	'zbug_code' => 'Code',
685
-	'zbug_critere_inconnu' => 'Unbekanntes Kriterium @critere@',
686
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} für eine Tabelle ohne eindeutigen Schlüssel',
687
-	'zbug_distant_interdit' => 'Extern unzulässig',
688
-	'zbug_doublon_table_sans_cle_primaire' => 'Dublette in einer Tabelle ohne eindeutigen Primärschlüssel',
689
-	'zbug_doublon_table_sans_index' => 'Dublette in Tabelle ohne Index',
690
-	'zbug_erreur_boucle_double' => 'Schleife (BOUCLE) @id@ doppelt vorhanden',
691
-	'zbug_erreur_boucle_fermant' => 'Schleife (BOUCLE) @id@: Schluss-Tag fehlt',
692
-	'zbug_erreur_boucle_syntaxe' => 'Syntax der Schleife @id@ fehlerhaft',
693
-	'zbug_erreur_compilation' => 'Fehler beim Kompilieren',
694
-	'zbug_erreur_execution_page' => 'Fehler beim Ausführen',
695
-	'zbug_erreur_filtre' => 'Der Filter @filtre@ ist nicht definiert.',
696
-	'zbug_erreur_filtre_nbarg_min' => 'Filter @filtre@: es fehlen @nb@ Argument(e)',
697
-	'zbug_erreur_meme_parent' => 'Das Kriterium {meme_parent} funktioniert nur mit den Schleifen (FORUMS) und (RUBRIQUES).',
698
-	'zbug_erreur_squelette' => 'Fehler in Layoutvorlage (Skelett)',
699
-	'zbug_hors_compilation' => 'Außerhalb der Kompilation',
700
-	'zbug_info_erreur_squelette' => 'Irrtum auf der Seite',
701
-	'zbug_inversion_ordre_inexistant' => 'Umkehrung einer inexistenten Sortierung ',
702
-	'zbug_pagination_sans_critere' => '#PAGINATION ohne Kriterium {pagination} oder in rekursiver Schleife',
703
-	'zbug_parametres_inclus_incorrects' => 'INCLUDE-Parameter fehlerhaft: @param@',
704
-	'zbug_profile' => 'Rechenzeit: @time@',
705
-	'zbug_resultat' => 'Ergebnis',
706
-	'zbug_serveur_indefini' => 'SQL-Server nicht definiert',
707
-	'zbug_statistiques' => 'Statistik der SQL Abfragen nach Dauer',
708
-	'zbug_table_inconnue' => 'SQL-Tabelle « @table@ » unbekannt',
709
-	'zxml_connus_attributs' => 'bekannte Attribute',
710
-	'zxml_de' => 'von',
711
-	'zxml_inconnu_attribut' => 'Attribut unbekannt',
712
-	'zxml_inconnu_balise' => 'Tag unbekannt',
713
-	'zxml_inconnu_entite' => 'Entity unbekannt',
714
-	'zxml_inconnu_id' => 'ID unbekannt',
715
-	'zxml_mais_de' => 'aber',
716
-	'zxml_non_conforme' => 'entspricht nicht dem Motiv',
717
-	'zxml_non_fils' => 'ist kein Kind von',
718
-	'zxml_nonvide_balise' => 'kein leerer Tag',
719
-	'zxml_obligatoire_attribut' => 'obligatorisches Attribut fehlt in',
720
-	'zxml_succession_fils_incorrecte' => 'Objektreihenfolge inkorrekt',
721
-	'zxml_survoler' => 'Mouseover zeigt korrekte',
722
-	'zxml_valeur_attribut' => 'Attributwert',
723
-	'zxml_vide_balise' => 'leerer Tag',
724
-	'zxml_vu' => 'bereits gesehen'
674
+    // Z
675
+    'zbug_balise_b_aval' => ' : Tag B muss vor der Schleife stehen',
676
+    'zbug_balise_inexistante' => 'Fehler: Der Tag @balise@ wurde nicht richtig für  @from@ deklariert.',
677
+    'zbug_balise_sans_argument' => 'Dem Tag @balise@ fehlt ein Parameter',
678
+    'zbug_boucle' => 'Schleife',
679
+    'zbug_boucle_recursive_undef' => 'Die rekursive Schleife @nom@ ist nicht definiert',
680
+    'zbug_calcul' => 'berechnen',
681
+    'zbug_champ_hors_boucle' => 'Feld @champ@ ausserhalb einer Schleife',
682
+    'zbug_champ_hors_critere' => 'Feld @champ@ ohne Kriterium @critere@',
683
+    'zbug_champ_hors_motif' => 'Feld @champ@ befindet sich ausserhalb eines Kontexts @motif@',
684
+    'zbug_code' => 'Code',
685
+    'zbug_critere_inconnu' => 'Unbekanntes Kriterium @critere@',
686
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} für eine Tabelle ohne eindeutigen Schlüssel',
687
+    'zbug_distant_interdit' => 'Extern unzulässig',
688
+    'zbug_doublon_table_sans_cle_primaire' => 'Dublette in einer Tabelle ohne eindeutigen Primärschlüssel',
689
+    'zbug_doublon_table_sans_index' => 'Dublette in Tabelle ohne Index',
690
+    'zbug_erreur_boucle_double' => 'Schleife (BOUCLE) @id@ doppelt vorhanden',
691
+    'zbug_erreur_boucle_fermant' => 'Schleife (BOUCLE) @id@: Schluss-Tag fehlt',
692
+    'zbug_erreur_boucle_syntaxe' => 'Syntax der Schleife @id@ fehlerhaft',
693
+    'zbug_erreur_compilation' => 'Fehler beim Kompilieren',
694
+    'zbug_erreur_execution_page' => 'Fehler beim Ausführen',
695
+    'zbug_erreur_filtre' => 'Der Filter @filtre@ ist nicht definiert.',
696
+    'zbug_erreur_filtre_nbarg_min' => 'Filter @filtre@: es fehlen @nb@ Argument(e)',
697
+    'zbug_erreur_meme_parent' => 'Das Kriterium {meme_parent} funktioniert nur mit den Schleifen (FORUMS) und (RUBRIQUES).',
698
+    'zbug_erreur_squelette' => 'Fehler in Layoutvorlage (Skelett)',
699
+    'zbug_hors_compilation' => 'Außerhalb der Kompilation',
700
+    'zbug_info_erreur_squelette' => 'Irrtum auf der Seite',
701
+    'zbug_inversion_ordre_inexistant' => 'Umkehrung einer inexistenten Sortierung ',
702
+    'zbug_pagination_sans_critere' => '#PAGINATION ohne Kriterium {pagination} oder in rekursiver Schleife',
703
+    'zbug_parametres_inclus_incorrects' => 'INCLUDE-Parameter fehlerhaft: @param@',
704
+    'zbug_profile' => 'Rechenzeit: @time@',
705
+    'zbug_resultat' => 'Ergebnis',
706
+    'zbug_serveur_indefini' => 'SQL-Server nicht definiert',
707
+    'zbug_statistiques' => 'Statistik der SQL Abfragen nach Dauer',
708
+    'zbug_table_inconnue' => 'SQL-Tabelle « @table@ » unbekannt',
709
+    'zxml_connus_attributs' => 'bekannte Attribute',
710
+    'zxml_de' => 'von',
711
+    'zxml_inconnu_attribut' => 'Attribut unbekannt',
712
+    'zxml_inconnu_balise' => 'Tag unbekannt',
713
+    'zxml_inconnu_entite' => 'Entity unbekannt',
714
+    'zxml_inconnu_id' => 'ID unbekannt',
715
+    'zxml_mais_de' => 'aber',
716
+    'zxml_non_conforme' => 'entspricht nicht dem Motiv',
717
+    'zxml_non_fils' => 'ist kein Kind von',
718
+    'zxml_nonvide_balise' => 'kein leerer Tag',
719
+    'zxml_obligatoire_attribut' => 'obligatorisches Attribut fehlt in',
720
+    'zxml_succession_fils_incorrecte' => 'Objektreihenfolge inkorrekt',
721
+    'zxml_survoler' => 'Mouseover zeigt korrekte',
722
+    'zxml_valeur_attribut' => 'Attributwert',
723
+    'zxml_vide_balise' => 'leerer Tag',
724
+    'zxml_vu' => 'bereits gesehen'
725 725
 );
Please login to merge, or discard this patch.
ecrire/lang/public_de.php 1 patch
Indentation   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -4,123 +4,123 @@
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'accueil_site' => 'Startseite',
14
-	'article' => 'Artikel',
15
-	'articles' => 'Artikel',
16
-	'articles_auteur' => 'Artikel dieses Autors',
17
-	'articles_populaires' => 'Die beliebtesten Artikel',
18
-	'articles_rubrique' => 'Artikel dieser Rubrik',
19
-	'aucun_article' => 'Unter dieser Adresse gibt es keinen Artikel.',
20
-	'aucun_auteur' => 'Unter dieser Adresse gibt es keinen Autor.',
21
-	'aucun_site' => 'Unter dieser Adresse gibt es keien Website.',
22
-	'aucune_breve' => 'Unter dieser Adresse gibt es keine Meldung.',
23
-	'aucune_rubrique' => 'Unter dieser Adresse gibt es keine Rubrik.',
24
-	'auteur' => 'Autor',
25
-	'autres' => 'Andere',
26
-	'autres_breves' => 'Weitere Meldungen.',
27
-	'autres_groupes_mots_clefs' => 'Weitere Schlagwortgruppen',
28
-	'autres_sites' => 'Weitere Websites',
29
-
30
-	// B
31
-	'bonjour' => 'Hallo',
32
-
33
-	// C
34
-	'commenter_site' => 'Website kommentieren',
35
-	'contact' => 'Kontakt',
36
-	'copie_document_impossible' => 'Dokument kann nicht kopiert werden',
37
-
38
-	// D
39
-	'date' => 'Datum',
40
-	'dernier_ajout' => 'Neuester Eintrag',
41
-	'dernieres_breves' => 'Neue Meldungen',
42
-	'derniers_articles' => 'Neueste Artikel',
43
-	'derniers_commentaires' => 'Neueste Kommentare',
44
-	'derniers_messages_forum' => 'Neue Forumsbeiträge',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'Im Textmodus bearbeiten ',
48
-	'en_reponse' => 'Antwort auf:',
49
-	'en_resume' => 'Als Zusammenfassung',
50
-	'envoyer_message' => 'Nachricht senden',
51
-	'espace_prive' => 'Redaktion',
52
-
53
-	// F
54
-	'formats_acceptes' => 'Akzeptierte Formate: @formats@.',
55
-
56
-	// H
57
-	'hierarchie_site' => 'Baumstruktur der Website',
58
-
59
-	// J
60
-	'jours' => 'Tage',
61
-
62
-	// L
63
-	'lien_connecter' => 'Login',
64
-
65
-	// M
66
-	'meme_auteur' => 'Vom gleichen Autor',
67
-	'meme_rubrique' => 'In der gleichen Rubrik',
68
-	'memes_auteurs' => 'Von den gleichen Autoren',
69
-	'message' => 'Nachricht',
70
-	'messages_forum' => 'Nachrichten',
71
-	'messages_recents' => 'Neue Forumsbeiträge',
72
-	'mots_clef' => 'Schlagwort',
73
-	'mots_clefs' => 'Schlagworte',
74
-	'mots_clefs_meme_groupe' => 'Schlagworte der gleichen Kategorie',
75
-
76
-	// N
77
-	'navigation' => 'Navigation',
78
-	'nom' => 'Name',
79
-	'nouveautes' => 'Neuigkeiten',
80
-	'nouveautes_web' => 'Neues im WWW',
81
-	'nouveaux_articles' => 'Neue Artikel',
82
-	'nouvelles_breves' => 'Neue Meldungen',
83
-
84
-	// P
85
-	'page_precedente' => 'vorige Seite',
86
-	'page_suivante' => 'nächste Seite',
87
-	'par_auteur' => 'von ',
88
-	'participer_site' => 'Sie können bei dieser Website mitmachen, wenn Sie sich anmelden. Sie erhalten sofort eine E-Mail mit den Zugangsdaten zum Redaktionssystem.',
89
-	'plan_site' => 'Sitemap',
90
-	'popularite' => 'Beliebtheit',
91
-	'poster_message' => 'Nachricht senden',
92
-	'proposer_site' => 'Sie können in dieser Rubrik eine Seite vorschlagen :',
93
-
94
-	// R
95
-	'repondre_article' => 'auf diesen Artikel antworten',
96
-	'repondre_breve' => 'auf diese Meldung antworten',
97
-	'resultats_recherche' => 'Suchergebnis(se)',
98
-	'retour_debut_forums' => 'Zurück zum Beginn des Forums',
99
-	'rss_abonnement' => 'Kopieren Sie die folgende URL in Ihren Feedreader:',
100
-	'rss_abonnement_titre' => 'Abonnieren',
101
-	'rss_abonnement_titre_page' => 'Abonnieren von',
102
-	'rss_explication' => 'Ein RSS-Feed sammelt Informationen über die Aktualisierungen einer Website. Er liefert den Inhalt von Einträgen oder Kommentaren oder einen Auszug daraus sowie einen Link zu den Vollversionen und einige andere Informationen. Der Feed ist dazu gedacht, von einem RSS-Aggregator (Feedreader) gelesen zu werden',
103
-	'rss_explication_titre' => 'Was ist ein RSS-Feed ?',
104
-	'rubrique' => 'Rubrik',
105
-	'rubriques' => 'Rubriken',
106
-
107
-	// S
108
-	'signatures_petition' => 'Unterschrift',
109
-	'site_realise_avec_spip' => 'Realisiert mit SPIP',
110
-	'sites_web' => 'Websites',
111
-	'sous_rubriques' => 'Unterrubriken',
112
-	'spam' => 'SPAM',
113
-	'suite' => 'weiter',
114
-	'sur_web' => 'Im WWW',
115
-	'syndiquer_rubrique' => 'Diese Rubrik per RSS einbinden',
116
-	'syndiquer_site' => 'Die ganze Website mit RSS einbinden',
117
-
118
-	// T
119
-	'texte_lettre_information' => 'Dies ist der Newsletter der Website ',
120
-	'texte_lettre_information_2' => 'Diese Mail informiert über die Neuerscheinungen der letzten',
121
-
122
-	// V
123
-	'ver_imprimer' => 'Druckversion',
124
-	'voir_en_ligne' => 'Online ansehen',
125
-	'voir_squelette' => 'Layoutvorlage dieser Seite ansehen'
12
+    // A
13
+    'accueil_site' => 'Startseite',
14
+    'article' => 'Artikel',
15
+    'articles' => 'Artikel',
16
+    'articles_auteur' => 'Artikel dieses Autors',
17
+    'articles_populaires' => 'Die beliebtesten Artikel',
18
+    'articles_rubrique' => 'Artikel dieser Rubrik',
19
+    'aucun_article' => 'Unter dieser Adresse gibt es keinen Artikel.',
20
+    'aucun_auteur' => 'Unter dieser Adresse gibt es keinen Autor.',
21
+    'aucun_site' => 'Unter dieser Adresse gibt es keien Website.',
22
+    'aucune_breve' => 'Unter dieser Adresse gibt es keine Meldung.',
23
+    'aucune_rubrique' => 'Unter dieser Adresse gibt es keine Rubrik.',
24
+    'auteur' => 'Autor',
25
+    'autres' => 'Andere',
26
+    'autres_breves' => 'Weitere Meldungen.',
27
+    'autres_groupes_mots_clefs' => 'Weitere Schlagwortgruppen',
28
+    'autres_sites' => 'Weitere Websites',
29
+
30
+    // B
31
+    'bonjour' => 'Hallo',
32
+
33
+    // C
34
+    'commenter_site' => 'Website kommentieren',
35
+    'contact' => 'Kontakt',
36
+    'copie_document_impossible' => 'Dokument kann nicht kopiert werden',
37
+
38
+    // D
39
+    'date' => 'Datum',
40
+    'dernier_ajout' => 'Neuester Eintrag',
41
+    'dernieres_breves' => 'Neue Meldungen',
42
+    'derniers_articles' => 'Neueste Artikel',
43
+    'derniers_commentaires' => 'Neueste Kommentare',
44
+    'derniers_messages_forum' => 'Neue Forumsbeiträge',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'Im Textmodus bearbeiten ',
48
+    'en_reponse' => 'Antwort auf:',
49
+    'en_resume' => 'Als Zusammenfassung',
50
+    'envoyer_message' => 'Nachricht senden',
51
+    'espace_prive' => 'Redaktion',
52
+
53
+    // F
54
+    'formats_acceptes' => 'Akzeptierte Formate: @formats@.',
55
+
56
+    // H
57
+    'hierarchie_site' => 'Baumstruktur der Website',
58
+
59
+    // J
60
+    'jours' => 'Tage',
61
+
62
+    // L
63
+    'lien_connecter' => 'Login',
64
+
65
+    // M
66
+    'meme_auteur' => 'Vom gleichen Autor',
67
+    'meme_rubrique' => 'In der gleichen Rubrik',
68
+    'memes_auteurs' => 'Von den gleichen Autoren',
69
+    'message' => 'Nachricht',
70
+    'messages_forum' => 'Nachrichten',
71
+    'messages_recents' => 'Neue Forumsbeiträge',
72
+    'mots_clef' => 'Schlagwort',
73
+    'mots_clefs' => 'Schlagworte',
74
+    'mots_clefs_meme_groupe' => 'Schlagworte der gleichen Kategorie',
75
+
76
+    // N
77
+    'navigation' => 'Navigation',
78
+    'nom' => 'Name',
79
+    'nouveautes' => 'Neuigkeiten',
80
+    'nouveautes_web' => 'Neues im WWW',
81
+    'nouveaux_articles' => 'Neue Artikel',
82
+    'nouvelles_breves' => 'Neue Meldungen',
83
+
84
+    // P
85
+    'page_precedente' => 'vorige Seite',
86
+    'page_suivante' => 'nächste Seite',
87
+    'par_auteur' => 'von ',
88
+    'participer_site' => 'Sie können bei dieser Website mitmachen, wenn Sie sich anmelden. Sie erhalten sofort eine E-Mail mit den Zugangsdaten zum Redaktionssystem.',
89
+    'plan_site' => 'Sitemap',
90
+    'popularite' => 'Beliebtheit',
91
+    'poster_message' => 'Nachricht senden',
92
+    'proposer_site' => 'Sie können in dieser Rubrik eine Seite vorschlagen :',
93
+
94
+    // R
95
+    'repondre_article' => 'auf diesen Artikel antworten',
96
+    'repondre_breve' => 'auf diese Meldung antworten',
97
+    'resultats_recherche' => 'Suchergebnis(se)',
98
+    'retour_debut_forums' => 'Zurück zum Beginn des Forums',
99
+    'rss_abonnement' => 'Kopieren Sie die folgende URL in Ihren Feedreader:',
100
+    'rss_abonnement_titre' => 'Abonnieren',
101
+    'rss_abonnement_titre_page' => 'Abonnieren von',
102
+    'rss_explication' => 'Ein RSS-Feed sammelt Informationen über die Aktualisierungen einer Website. Er liefert den Inhalt von Einträgen oder Kommentaren oder einen Auszug daraus sowie einen Link zu den Vollversionen und einige andere Informationen. Der Feed ist dazu gedacht, von einem RSS-Aggregator (Feedreader) gelesen zu werden',
103
+    'rss_explication_titre' => 'Was ist ein RSS-Feed ?',
104
+    'rubrique' => 'Rubrik',
105
+    'rubriques' => 'Rubriken',
106
+
107
+    // S
108
+    'signatures_petition' => 'Unterschrift',
109
+    'site_realise_avec_spip' => 'Realisiert mit SPIP',
110
+    'sites_web' => 'Websites',
111
+    'sous_rubriques' => 'Unterrubriken',
112
+    'spam' => 'SPAM',
113
+    'suite' => 'weiter',
114
+    'sur_web' => 'Im WWW',
115
+    'syndiquer_rubrique' => 'Diese Rubrik per RSS einbinden',
116
+    'syndiquer_site' => 'Die ganze Website mit RSS einbinden',
117
+
118
+    // T
119
+    'texte_lettre_information' => 'Dies ist der Newsletter der Website ',
120
+    'texte_lettre_information_2' => 'Diese Mail informiert über die Neuerscheinungen der letzten',
121
+
122
+    // V
123
+    'ver_imprimer' => 'Druckversion',
124
+    'voir_en_ligne' => 'Online ansehen',
125
+    'voir_squelette' => 'Layoutvorlage dieser Seite ansehen'
126 126
 );
Please login to merge, or discard this patch.
ecrire/inc/chiffrer.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@
 block discarded – undo
11 11
  * \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 include_spip('src/Chiffrer/Chiffrement');
Please login to merge, or discard this patch.
ecrire/install/etape_3b.php 1 patch
Indentation   +161 added lines, -161 removed lines patch added patch discarded remove patch
@@ -11,173 +11,173 @@
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 include_spip('inc/headers');
18 18
 
19 19
 function install_etape_3b_dist() {
20
-	$auth_spip = null;
21
-	$session = null;
22
-	$row = null;
23
-	$login = _request('login');
24
-	$email = _request('email');
25
-	$nom = _request('nom');
26
-	$pass = _request('pass');
27
-	$pass_verif = _request('pass_verif');
28
-
29
-	$server_db = defined('_INSTALL_SERVER_DB')
30
-		? _INSTALL_SERVER_DB
31
-		: _request('server_db');
32
-
33
-	if (!defined('_PASS_LONGUEUR_MINI')) {
34
-		define('_PASS_LONGUEUR_MINI', 6);
35
-	}
36
-	if (!defined('_LOGIN_TROP_COURT')) {
37
-		define('_LOGIN_TROP_COURT', 4);
38
-	}
39
-	if ($login) {
40
-		$echec = ($pass != $pass_verif) ?
41
-			_T('info_passes_identiques')
42
-			: ((strlen($pass) < _PASS_LONGUEUR_MINI) ?
43
-				_T('info_passe_trop_court_car_pluriel', ['nb' => _PASS_LONGUEUR_MINI])
44
-				: ((strlen($login) < _LOGIN_TROP_COURT) ?
45
-					_T('info_login_trop_court')
46
-					: ''));
47
-		include_spip('inc/filtres');
48
-		if (!$echec and $email and !email_valide($email)) {
49
-			$echec = _T('form_email_non_valide');
50
-		}
51
-		if ($echec) {
52
-			echouer_etape_3b($echec);
53
-		}
54
-	}
55
-
56
-	if (@file_exists(_FILE_CHMOD_TMP)) {
57
-		include(_FILE_CHMOD_TMP);
58
-	} else {
59
-		redirige_url_ecrire('install');
60
-	}
61
-
62
-	if (!@file_exists(_FILE_CONNECT_TMP)) {
63
-		redirige_url_ecrire('install');
64
-	}
65
-
66
-	# maintenant on connait le vrai charset du site s'il est deja configure
67
-	# sinon par defaut lire_meta reglera _DEFAULT_CHARSET
68
-	# (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
69
-
70
-	lire_metas();
71
-	if ($login) {
72
-		include_spip('inc/charsets');
73
-
74
-		$nom = (importer_charset($nom, _DEFAULT_CHARSET));
75
-		$login = (importer_charset($login, _DEFAULT_CHARSET));
76
-		$email = (importer_charset($email, _DEFAULT_CHARSET));
77
-		# pour le passwd, bizarrement il faut le convertir comme s'il avait
78
-		# ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
79
-		$pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
80
-
81
-		include_spip('auth/spip');
82
-		// prelablement, creer le champ webmestre si il n'existe pas (install neuve
83
-		// sur une vieille base
84
-		$t = sql_showtable('spip_auteurs', true);
85
-		if (!isset($t['field']['webmestre'])) {
86
-			@sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");
87
-		}
88
-
89
-		// il faut avoir une cle des auth valide pour creer un nouvel auteur webmestre
90
-		include_spip('inc/chiffrer');
91
-		$cles = \Spip\Chiffrer\SpipCles::instance();
92
-		$secret = $cles->getSecretAuth();
93
-
94
-		$id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login));
95
-		if ($id_auteur !== null) {
96
-			// c'est un auteur connu : si on a pas de secret il faut absolument qu'il se reconnecte avec le meme mot de passe
97
-			// pour restaurer la copie des cles
98
-			if (!$secret and !auth_spip_initialiser_secret()) {
99
-				$row = sql_fetsel('backup_cles, pass', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
100
-				if (empty($row['backup_cles']) or !$cles->restore($row['backup_cles'], $pass, $row['pass'], $id_auteur)) {
101
-					$echec = _T('avis_connexion_erreur_fichier_cle_manquant_1');
102
-					echouer_etape_3b($echec);
103
-				}
104
-				spip_log("Les cles secretes ont ete restaurées avec le backup du webmestre #$id_auteur", 'auth' . _LOG_INFO_IMPORTANTE);
105
-				$cles->save();
106
-			}
107
-
108
-			sql_updateq('spip_auteurs', [
109
-				'nom' => $nom,
110
-				'email' => $email,
111
-				'login' => $login,
112
-				'statut' => '0minirezo'
113
-			], 'id_auteur=' . intval($id_auteur));
114
-			// le passer webmestre separement du reste, au cas ou l'alter n'aurait pas fonctionne
115
-			@sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
116
-			if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
117
-				$echec = _T('avis_erreur_creation_compte');
118
-				echouer_etape_3b($echec);
119
-			}
120
-		} else {
121
-			// Si on a pas de cle et qu'on ne sait pas la creer, on ne peut pas creer de nouveau compte :
122
-			// il faut qu'un webmestre avec un backup fasse l'install
123
-			if (!$secret and !auth_spip_initialiser_secret()) {
124
-				$echec = _T('avis_connexion_erreur_fichier_cle_manquant_2');
125
-				echouer_etape_3b($echec);
126
-			}
127
-
128
-			$id_auteur = sql_insertq('spip_auteurs', [
129
-				'nom' => $nom,
130
-				'email' => $email,
131
-				'login' => $login,
132
-				'statut' => '0minirezo'
133
-			]);
134
-			// le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
135
-			@sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
136
-			if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
137
-				$echec = _T('avis_erreur_creation_compte');
138
-				echouer_etape_3b($echec);
139
-			}
140
-		}
141
-
142
-		// inserer email comme email webmaster principal
143
-		// (sauf s'il est vide: cas de la re-installation)
144
-		if ($email) {
145
-			ecrire_meta('email_webmaster', $email);
146
-		}
147
-
148
-		// Connecter directement celui qui vient de (re)donner son login
149
-		// mais sans cookie d'admin ni connexion longue
150
-		include_spip('inc/auth');
151
-		if (
152
-			!$auteur = auth_identifier_login($login, $pass)
153
-			or !auth_loger($auteur)
154
-		) {
155
-			spip_log("login automatique impossible $auth_spip $session" . (is_countable($row) ? count($row) : 0));
156
-		}
157
-	}
158
-
159
-	// installer les metas
160
-	$config = charger_fonction('config', 'inc');
161
-	$config();
162
-
163
-	// activer les plugins
164
-	// leur installation ne peut pas se faire sur le meme hit, il faudra donc
165
-	// poursuivre au hit suivant
166
-	include_spip('inc/plugin');
167
-	actualise_plugins_actifs();
168
-
169
-
170
-	include_spip('inc/distant');
171
-	redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
20
+    $auth_spip = null;
21
+    $session = null;
22
+    $row = null;
23
+    $login = _request('login');
24
+    $email = _request('email');
25
+    $nom = _request('nom');
26
+    $pass = _request('pass');
27
+    $pass_verif = _request('pass_verif');
28
+
29
+    $server_db = defined('_INSTALL_SERVER_DB')
30
+        ? _INSTALL_SERVER_DB
31
+        : _request('server_db');
32
+
33
+    if (!defined('_PASS_LONGUEUR_MINI')) {
34
+        define('_PASS_LONGUEUR_MINI', 6);
35
+    }
36
+    if (!defined('_LOGIN_TROP_COURT')) {
37
+        define('_LOGIN_TROP_COURT', 4);
38
+    }
39
+    if ($login) {
40
+        $echec = ($pass != $pass_verif) ?
41
+            _T('info_passes_identiques')
42
+            : ((strlen($pass) < _PASS_LONGUEUR_MINI) ?
43
+                _T('info_passe_trop_court_car_pluriel', ['nb' => _PASS_LONGUEUR_MINI])
44
+                : ((strlen($login) < _LOGIN_TROP_COURT) ?
45
+                    _T('info_login_trop_court')
46
+                    : ''));
47
+        include_spip('inc/filtres');
48
+        if (!$echec and $email and !email_valide($email)) {
49
+            $echec = _T('form_email_non_valide');
50
+        }
51
+        if ($echec) {
52
+            echouer_etape_3b($echec);
53
+        }
54
+    }
55
+
56
+    if (@file_exists(_FILE_CHMOD_TMP)) {
57
+        include(_FILE_CHMOD_TMP);
58
+    } else {
59
+        redirige_url_ecrire('install');
60
+    }
61
+
62
+    if (!@file_exists(_FILE_CONNECT_TMP)) {
63
+        redirige_url_ecrire('install');
64
+    }
65
+
66
+    # maintenant on connait le vrai charset du site s'il est deja configure
67
+    # sinon par defaut lire_meta reglera _DEFAULT_CHARSET
68
+    # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
69
+
70
+    lire_metas();
71
+    if ($login) {
72
+        include_spip('inc/charsets');
73
+
74
+        $nom = (importer_charset($nom, _DEFAULT_CHARSET));
75
+        $login = (importer_charset($login, _DEFAULT_CHARSET));
76
+        $email = (importer_charset($email, _DEFAULT_CHARSET));
77
+        # pour le passwd, bizarrement il faut le convertir comme s'il avait
78
+        # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
79
+        $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
80
+
81
+        include_spip('auth/spip');
82
+        // prelablement, creer le champ webmestre si il n'existe pas (install neuve
83
+        // sur une vieille base
84
+        $t = sql_showtable('spip_auteurs', true);
85
+        if (!isset($t['field']['webmestre'])) {
86
+            @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");
87
+        }
88
+
89
+        // il faut avoir une cle des auth valide pour creer un nouvel auteur webmestre
90
+        include_spip('inc/chiffrer');
91
+        $cles = \Spip\Chiffrer\SpipCles::instance();
92
+        $secret = $cles->getSecretAuth();
93
+
94
+        $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login));
95
+        if ($id_auteur !== null) {
96
+            // c'est un auteur connu : si on a pas de secret il faut absolument qu'il se reconnecte avec le meme mot de passe
97
+            // pour restaurer la copie des cles
98
+            if (!$secret and !auth_spip_initialiser_secret()) {
99
+                $row = sql_fetsel('backup_cles, pass', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
100
+                if (empty($row['backup_cles']) or !$cles->restore($row['backup_cles'], $pass, $row['pass'], $id_auteur)) {
101
+                    $echec = _T('avis_connexion_erreur_fichier_cle_manquant_1');
102
+                    echouer_etape_3b($echec);
103
+                }
104
+                spip_log("Les cles secretes ont ete restaurées avec le backup du webmestre #$id_auteur", 'auth' . _LOG_INFO_IMPORTANTE);
105
+                $cles->save();
106
+            }
107
+
108
+            sql_updateq('spip_auteurs', [
109
+                'nom' => $nom,
110
+                'email' => $email,
111
+                'login' => $login,
112
+                'statut' => '0minirezo'
113
+            ], 'id_auteur=' . intval($id_auteur));
114
+            // le passer webmestre separement du reste, au cas ou l'alter n'aurait pas fonctionne
115
+            @sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
116
+            if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
117
+                $echec = _T('avis_erreur_creation_compte');
118
+                echouer_etape_3b($echec);
119
+            }
120
+        } else {
121
+            // Si on a pas de cle et qu'on ne sait pas la creer, on ne peut pas creer de nouveau compte :
122
+            // il faut qu'un webmestre avec un backup fasse l'install
123
+            if (!$secret and !auth_spip_initialiser_secret()) {
124
+                $echec = _T('avis_connexion_erreur_fichier_cle_manquant_2');
125
+                echouer_etape_3b($echec);
126
+            }
127
+
128
+            $id_auteur = sql_insertq('spip_auteurs', [
129
+                'nom' => $nom,
130
+                'email' => $email,
131
+                'login' => $login,
132
+                'statut' => '0minirezo'
133
+            ]);
134
+            // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
135
+            @sql_updateq('spip_auteurs', ['webmestre' => 'oui'], "id_auteur=$id_auteur");
136
+            if (!auth_spip_modifier_pass($login, $pass, $id_auteur)) {
137
+                $echec = _T('avis_erreur_creation_compte');
138
+                echouer_etape_3b($echec);
139
+            }
140
+        }
141
+
142
+        // inserer email comme email webmaster principal
143
+        // (sauf s'il est vide: cas de la re-installation)
144
+        if ($email) {
145
+            ecrire_meta('email_webmaster', $email);
146
+        }
147
+
148
+        // Connecter directement celui qui vient de (re)donner son login
149
+        // mais sans cookie d'admin ni connexion longue
150
+        include_spip('inc/auth');
151
+        if (
152
+            !$auteur = auth_identifier_login($login, $pass)
153
+            or !auth_loger($auteur)
154
+        ) {
155
+            spip_log("login automatique impossible $auth_spip $session" . (is_countable($row) ? count($row) : 0));
156
+        }
157
+    }
158
+
159
+    // installer les metas
160
+    $config = charger_fonction('config', 'inc');
161
+    $config();
162
+
163
+    // activer les plugins
164
+    // leur installation ne peut pas se faire sur le meme hit, il faudra donc
165
+    // poursuivre au hit suivant
166
+    include_spip('inc/plugin');
167
+    actualise_plugins_actifs();
168
+
169
+
170
+    include_spip('inc/distant');
171
+    redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
172 172
 }
173 173
 
174 174
 function echouer_etape_3b($echec) {
175
-	echo minipres(
176
-		'AUTO',
177
-		info_progression_etape(3, 'etape_', 'install/', true) .
178
-		"<div class='error'><h3>$echec</h3>\n" .
179
-		'<p>' . _T('avis_connexion_echec_2') . '</p>' .
180
-		'</div>'
181
-	);
182
-	exit;
175
+    echo minipres(
176
+        'AUTO',
177
+        info_progression_etape(3, 'etape_', 'install/', true) .
178
+        "<div class='error'><h3>$echec</h3>\n" .
179
+        '<p>' . _T('avis_connexion_echec_2') . '</p>' .
180
+        '</div>'
181
+    );
182
+    exit;
183 183
 }
Please login to merge, or discard this patch.
ecrire/src/Chiffrer/Password.php 1 patch
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -14,57 +14,57 @@
 block discarded – undo
14 14
 
15 15
 /** Vérification et hachage de mot de passe */
16 16
 class Password {
17
-	/**
18
-	 * verifier qu'un mot de passe en clair est correct a l'aide de son hash
19
-	 *
20
-	 * Le mot de passe est poivre via la cle secret_des_auth
21
-	 *
22
-	 * @param string $password_clair
23
-	 * @param string $password_hash
24
-	 * @param string $key
25
-	 * @return bool
26
-	 */
27
-	public static function verifier(
28
-		#[\SensitiveParameter]
29
-		string $password_clair,
30
-		#[\SensitiveParameter]
31
-		string $password_hash,
32
-		#[\SensitiveParameter]
33
-		?string $key = null
34
-	): bool {
35
-		$key ??= self::getDefaultKey();
36
-		if ($key) {
37
-			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
38
-			return password_verify($pass_poivre, $password_hash);
39
-		}
40
-		spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
41
-		return false;
42
-	}
17
+    /**
18
+     * verifier qu'un mot de passe en clair est correct a l'aide de son hash
19
+     *
20
+     * Le mot de passe est poivre via la cle secret_des_auth
21
+     *
22
+     * @param string $password_clair
23
+     * @param string $password_hash
24
+     * @param string $key
25
+     * @return bool
26
+     */
27
+    public static function verifier(
28
+        #[\SensitiveParameter]
29
+        string $password_clair,
30
+        #[\SensitiveParameter]
31
+        string $password_hash,
32
+        #[\SensitiveParameter]
33
+        ?string $key = null
34
+    ): bool {
35
+        $key ??= self::getDefaultKey();
36
+        if ($key) {
37
+            $pass_poivre = hash_hmac('sha256', $password_clair, $key);
38
+            return password_verify($pass_poivre, $password_hash);
39
+        }
40
+        spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
41
+        return false;
42
+    }
43 43
 
44
-	/**
45
-	 * Calculer un hash salé du mot de passe
46
-	 * @param string $password_clair
47
-	 * @param string $salt
48
-	 * @return string
49
-	 */
50
-	public static function hacher(
51
-		#[\SensitiveParameter]
52
-		string $password_clair,
53
-		#[\SensitiveParameter]
54
-		?string $key = null
55
-	): ?string {
56
-		$key ??= self::getDefaultKey();
57
-		// ne pas fournir un hash errone si la cle nous manque
58
-		if ($key) {
59
-			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
60
-			return password_hash($pass_poivre, PASSWORD_DEFAULT);
61
-		}
62
-		spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
63
-		return null;
64
-	}
44
+    /**
45
+     * Calculer un hash salé du mot de passe
46
+     * @param string $password_clair
47
+     * @param string $salt
48
+     * @return string
49
+     */
50
+    public static function hacher(
51
+        #[\SensitiveParameter]
52
+        string $password_clair,
53
+        #[\SensitiveParameter]
54
+        ?string $key = null
55
+    ): ?string {
56
+        $key ??= self::getDefaultKey();
57
+        // ne pas fournir un hash errone si la cle nous manque
58
+        if ($key) {
59
+            $pass_poivre = hash_hmac('sha256', $password_clair, $key);
60
+            return password_hash($pass_poivre, PASSWORD_DEFAULT);
61
+        }
62
+        spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
63
+        return null;
64
+    }
65 65
 
66
-	private static function getDefaultKey(): ?string {
67
-		$keys = SpipCles::instance();
68
-		return $keys->getSecretAuth();
69
-	}
66
+    private static function getDefaultKey(): ?string {
67
+        $keys = SpipCles::instance();
68
+        return $keys->getSecretAuth();
69
+    }
70 70
 }
Please login to merge, or discard this patch.
ecrire/maj/2021.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -19,15 +19,15 @@
 block discarded – undo
19 19
  * @package SPIP\Core\SQL\Upgrade
20 20
  **/
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	return;
22
+    return;
23 23
 }
24 24
 
25 25
 $GLOBALS['maj'][2021_02_18_00] = [
26
-	['sql_alter', "TABLE spip_auteurs CHANGE imessage imessage VARCHAR(3) DEFAULT '' NOT NULL" ],
27
-	['sql_updateq', 'spip_auteurs', ['imessage' => 'oui'], "imessage != 'non' OR imessage IS NULL" ],
26
+    ['sql_alter', "TABLE spip_auteurs CHANGE imessage imessage VARCHAR(3) DEFAULT '' NOT NULL" ],
27
+    ['sql_updateq', 'spip_auteurs', ['imessage' => 'oui'], "imessage != 'non' OR imessage IS NULL" ],
28 28
 ];
29 29
 
30 30
 $GLOBALS['maj'][2022_02_23_02] = [
31
-	['sql_alter', "TABLE spip_auteurs ADD backup_cles mediumtext DEFAULT '' NOT NULL" ],
32
-	['sql_delete', 'spip_meta', "nom='secret_du_site'" ],
31
+    ['sql_alter', "TABLE spip_auteurs ADD backup_cles mediumtext DEFAULT '' NOT NULL" ],
32
+    ['sql_delete', 'spip_meta', "nom='secret_du_site'" ],
33 33
 ];
Please login to merge, or discard this patch.
ecrire/inc/securiser_action.php 1 patch
Indentation   +188 added lines, -188 removed lines patch added patch discarded remove patch
@@ -16,10 +16,10 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Actions
17 17
  **/
18 18
 
19
- use Spip\Chiffrer\SpipCles;
19
+    use Spip\Chiffrer\SpipCles;
20 20
 
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	return;
22
+    return;
23 23
 }
24 24
 
25 25
 /**
@@ -52,19 +52,19 @@  discard block
 block discarded – undo
52 52
  * @return array|string
53 53
  */
54 54
 function inc_securiser_action_dist($action = '', $arg = '', $redirect = '', $mode = false, $att = '', $public = false) {
55
-	if ($action) {
56
-		return securiser_action_auteur($action, $arg, $redirect, $mode, $att, $public);
57
-	} else {
58
-		$arg = _request('arg');
59
-		$hash = _request('hash');
60
-		$action = _request('action') ?: _request('formulaire_action');
61
-		if ($a = verifier_action_auteur("$action-$arg", $hash)) {
62
-			return $arg;
63
-		}
64
-		include_spip('inc/minipres');
65
-		echo minipres();
66
-		exit;
67
-	}
55
+    if ($action) {
56
+        return securiser_action_auteur($action, $arg, $redirect, $mode, $att, $public);
57
+    } else {
58
+        $arg = _request('arg');
59
+        $hash = _request('hash');
60
+        $action = _request('action') ?: _request('formulaire_action');
61
+        if ($a = verifier_action_auteur("$action-$arg", $hash)) {
62
+            return $arg;
63
+        }
64
+        include_spip('inc/minipres');
65
+        echo minipres();
66
+        exit;
67
+    }
68 68
 }
69 69
 
70 70
 /**
@@ -83,29 +83,29 @@  discard block
 block discarded – undo
83 83
  */
84 84
 function demander_confirmation_avant_action($titre, $titre_bouton, $url_action = null) {
85 85
 
86
-	if (!$url_action) {
87
-		$url_action = self();
88
-		$action = _request('action');
89
-		$url_action = parametre_url($url_action, 'action', $action, '&');
90
-	}
91
-	else {
92
-		$action = parametre_url($url_action, 'action');
93
-	}
94
-
95
-	$arg = parametre_url($url_action, 'arg');
96
-	$confirm = md5("$action:$arg:" . realpath(__FILE__));
97
-	if (_request('confirm_action') === $confirm) {
98
-		return true;
99
-	}
100
-
101
-	$url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&');
102
-	include_spip('inc/filtres');
103
-	$bouton_action = bouton_action($titre_bouton, $url_confirm);
104
-	$corps = "<div style='text-align:center;'>$bouton_action</div>";
105
-
106
-	include_spip('inc/minipres');
107
-	echo minipres($titre, $corps);
108
-	exit;
86
+    if (!$url_action) {
87
+        $url_action = self();
88
+        $action = _request('action');
89
+        $url_action = parametre_url($url_action, 'action', $action, '&');
90
+    }
91
+    else {
92
+        $action = parametre_url($url_action, 'action');
93
+    }
94
+
95
+    $arg = parametre_url($url_action, 'arg');
96
+    $confirm = md5("$action:$arg:" . realpath(__FILE__));
97
+    if (_request('confirm_action') === $confirm) {
98
+        return true;
99
+    }
100
+
101
+    $url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&');
102
+    include_spip('inc/filtres');
103
+    $bouton_action = bouton_action($titre_bouton, $url_confirm);
104
+    $corps = "<div style='text-align:center;'>$bouton_action</div>";
105
+
106
+    include_spip('inc/minipres');
107
+    echo minipres($titre, $corps);
108
+    exit;
109 109
 }
110 110
 
111 111
 /**
@@ -136,34 +136,34 @@  discard block
 block discarded – undo
136 136
  */
137 137
 function securiser_action_auteur($action, $arg, $redirect = '', $mode = false, $att = '', $public = false) {
138 138
 
139
-	// mode URL ou array
140
-	if (!is_string($mode)) {
141
-		$hash = calculer_action_auteur("$action-$arg", is_numeric($att) ? $att : null);
142
-
143
-		$r = rawurlencode($redirect);
144
-		if ($mode === -1) {
145
-			return ['action' => $action, 'arg' => $arg, 'hash' => $hash];
146
-		} else {
147
-			return generer_url_action(
148
-				$action,
149
-				'arg=' . rawurlencode($arg) . "&hash=$hash" . (!$r ? '' : "&redirect=$r"),
150
-				$mode,
151
-				$public
152
-			);
153
-		}
154
-	}
155
-
156
-	// mode formulaire
157
-	$hash = calculer_action_auteur("$action-$arg");
158
-	$att .= " style='margin: 0px; border: 0px'";
159
-	if ($redirect) {
160
-		$redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", '&#39;', $redirect) . "' />";
161
-	}
162
-	$mode .= $redirect . "
139
+    // mode URL ou array
140
+    if (!is_string($mode)) {
141
+        $hash = calculer_action_auteur("$action-$arg", is_numeric($att) ? $att : null);
142
+
143
+        $r = rawurlencode($redirect);
144
+        if ($mode === -1) {
145
+            return ['action' => $action, 'arg' => $arg, 'hash' => $hash];
146
+        } else {
147
+            return generer_url_action(
148
+                $action,
149
+                'arg=' . rawurlencode($arg) . "&hash=$hash" . (!$r ? '' : "&redirect=$r"),
150
+                $mode,
151
+                $public
152
+            );
153
+        }
154
+    }
155
+
156
+    // mode formulaire
157
+    $hash = calculer_action_auteur("$action-$arg");
158
+    $att .= " style='margin: 0px; border: 0px'";
159
+    if ($redirect) {
160
+        $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", '&#39;', $redirect) . "' />";
161
+    }
162
+    $mode .= $redirect . "
163 163
 <input name='hash' type='hidden' value='$hash' />
164 164
 <input name='arg' type='hidden' value='$arg' />";
165 165
 
166
-	return generer_form_action($action, $mode, $att, $public);
166
+    return generer_form_action($action, $mode, $att, $public);
167 167
 }
168 168
 
169 169
 /**
@@ -173,48 +173,48 @@  discard block
 block discarded – undo
173 173
  * @return array
174 174
  */
175 175
 function caracteriser_auteur($id_auteur = null) {
176
-	static $caracterisation = [];
177
-
178
-	if (is_null($id_auteur) and !isset($GLOBALS['visiteur_session']['id_auteur'])) {
179
-		// si l'auteur courant n'est pas connu alors qu'il peut demander une action
180
-		// c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie.
181
-		// S'il n'avait pas le droit de realiser cette action, le hash sera faux.
182
-		if (
183
-			isset($_COOKIE['spip_session'])
184
-			and (preg_match('/^(\d+)/', $_COOKIE['spip_session'], $r))
185
-		) {
186
-			return [$r[1], ''];
187
-			// Necessaire aux forums anonymes.
188
-			// Pour le reste, ca echouera.
189
-		} else {
190
-			return ['0', ''];
191
-		}
192
-	}
193
-	// Eviter l'acces SQL si le pass est connu de PHP
194
-	if (is_null($id_auteur)) {
195
-		$id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
196
-		if (isset($GLOBALS['visiteur_session']['pass']) and $GLOBALS['visiteur_session']['pass']) {
197
-			return $caracterisation[$id_auteur] = [$id_auteur, $GLOBALS['visiteur_session']['pass']];
198
-		}
199
-	}
200
-
201
-	if (isset($caracterisation[$id_auteur])) {
202
-		return $caracterisation[$id_auteur];
203
-	}
204
-
205
-	if ($id_auteur) {
206
-		include_spip('base/abstract_sql');
207
-		$t = sql_fetsel('id_auteur, pass', 'spip_auteurs', "id_auteur=$id_auteur");
208
-		if ($t) {
209
-			return $caracterisation[$id_auteur] = [$t['id_auteur'], $t['pass']];
210
-		}
211
-		include_spip('inc/minipres');
212
-		echo minipres();
213
-		exit;
214
-	} // Visiteur anonyme, pour ls forums par exemple
215
-	else {
216
-		return ['0', ''];
217
-	}
176
+    static $caracterisation = [];
177
+
178
+    if (is_null($id_auteur) and !isset($GLOBALS['visiteur_session']['id_auteur'])) {
179
+        // si l'auteur courant n'est pas connu alors qu'il peut demander une action
180
+        // c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie.
181
+        // S'il n'avait pas le droit de realiser cette action, le hash sera faux.
182
+        if (
183
+            isset($_COOKIE['spip_session'])
184
+            and (preg_match('/^(\d+)/', $_COOKIE['spip_session'], $r))
185
+        ) {
186
+            return [$r[1], ''];
187
+            // Necessaire aux forums anonymes.
188
+            // Pour le reste, ca echouera.
189
+        } else {
190
+            return ['0', ''];
191
+        }
192
+    }
193
+    // Eviter l'acces SQL si le pass est connu de PHP
194
+    if (is_null($id_auteur)) {
195
+        $id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
196
+        if (isset($GLOBALS['visiteur_session']['pass']) and $GLOBALS['visiteur_session']['pass']) {
197
+            return $caracterisation[$id_auteur] = [$id_auteur, $GLOBALS['visiteur_session']['pass']];
198
+        }
199
+    }
200
+
201
+    if (isset($caracterisation[$id_auteur])) {
202
+        return $caracterisation[$id_auteur];
203
+    }
204
+
205
+    if ($id_auteur) {
206
+        include_spip('base/abstract_sql');
207
+        $t = sql_fetsel('id_auteur, pass', 'spip_auteurs', "id_auteur=$id_auteur");
208
+        if ($t) {
209
+            return $caracterisation[$id_auteur] = [$t['id_auteur'], $t['pass']];
210
+        }
211
+        include_spip('inc/minipres');
212
+        echo minipres();
213
+        exit;
214
+    } // Visiteur anonyme, pour ls forums par exemple
215
+    else {
216
+        return ['0', ''];
217
+    }
218 218
 }
219 219
 
220 220
 /**
@@ -229,30 +229,30 @@  discard block
 block discarded – undo
229 229
  * @return string
230 230
  */
231 231
 function _action_auteur(string $action, int $id_auteur, ?string $pass, string $alea): string {
232
-	static $sha = [];
233
-	$pass = $pass ?? '';
234
-	$entry = "$action:$id_auteur:$pass:$alea";
235
-	if (!isset($sha[$entry])) {
236
-		$sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea));
237
-	}
238
-
239
-	return $sha[$entry];
232
+    static $sha = [];
233
+    $pass = $pass ?? '';
234
+    $entry = "$action:$id_auteur:$pass:$alea";
235
+    if (!isset($sha[$entry])) {
236
+        $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea));
237
+    }
238
+
239
+    return $sha[$entry];
240 240
 }
241 241
 
242 242
 function _action_get_alea(string $alea): string {
243
-	if (!isset($GLOBALS['meta'][$alea])) {
244
-		if (!$exec = _request('exec') or !autoriser_sans_cookie($exec)) {
245
-			include_spip('inc/acces');
246
-			charger_aleas();
247
-			if (empty($GLOBALS['meta'][$alea])) {
248
-				include_spip('inc/minipres');
249
-				echo minipres();
250
-				spip_log("$alea indisponible");
251
-				exit;
252
-			}
253
-		}
254
-	}
255
-	return $GLOBALS['meta'][$alea] ?? '';
243
+    if (!isset($GLOBALS['meta'][$alea])) {
244
+        if (!$exec = _request('exec') or !autoriser_sans_cookie($exec)) {
245
+            include_spip('inc/acces');
246
+            charger_aleas();
247
+            if (empty($GLOBALS['meta'][$alea])) {
248
+                include_spip('inc/minipres');
249
+                echo minipres();
250
+                spip_log("$alea indisponible");
251
+                exit;
252
+            }
253
+        }
254
+    }
255
+    return $GLOBALS['meta'][$alea] ?? '';
256 256
 }
257 257
 
258 258
 /**
@@ -263,9 +263,9 @@  discard block
 block discarded – undo
263 263
  * @return string
264 264
  */
265 265
 function calculer_action_auteur($action, $id_auteur = null) {
266
-	[$id_auteur, $pass] = caracteriser_auteur($id_auteur);
266
+    [$id_auteur, $pass] = caracteriser_auteur($id_auteur);
267 267
 
268
-	return _action_auteur($action, $id_auteur, $pass, 'alea_ephemere');
268
+    return _action_auteur($action, $id_auteur, $pass, 'alea_ephemere');
269 269
 }
270 270
 
271 271
 
@@ -278,15 +278,15 @@  discard block
 block discarded – undo
278 278
  * @return bool
279 279
  */
280 280
 function verifier_action_auteur($action, $hash) {
281
-	[$id_auteur, $pass] = caracteriser_auteur();
282
-	if (
283
-		hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'))
284
-		or hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien'))
285
-	) {
286
-		return true;
287
-	}
288
-
289
-	return false;
281
+    [$id_auteur, $pass] = caracteriser_auteur();
282
+    if (
283
+        hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'))
284
+        or hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien'))
285
+    ) {
286
+        return true;
287
+    }
288
+
289
+    return false;
290 290
 }
291 291
 
292 292
 //
@@ -301,8 +301,8 @@  discard block
 block discarded – undo
301 301
  * @return string
302 302
  */
303 303
 function secret_du_site() {
304
-	include_spip('inc/chiffrer');
305
-	return SpipCles::secret_du_site();
304
+    include_spip('inc/chiffrer');
305
+    return SpipCles::secret_du_site();
306 306
 }
307 307
 
308 308
 /**
@@ -312,7 +312,7 @@  discard block
 block discarded – undo
312 312
  * @return string
313 313
  */
314 314
 function calculer_cle_action($action) {
315
-	return hash_hmac('sha256', $action, secret_du_site());
315
+    return hash_hmac('sha256', $action, secret_du_site());
316 316
 }
317 317
 
318 318
 /**
@@ -323,7 +323,7 @@  discard block
 block discarded – undo
323 323
  * @return bool
324 324
  */
325 325
 function verifier_cle_action($action, $cle) {
326
-	return hash_equals($cle, calculer_cle_action($action));
326
+    return hash_equals($cle, calculer_cle_action($action));
327 327
 }
328 328
 
329 329
 
@@ -340,19 +340,19 @@  discard block
 block discarded – undo
340 340
  * @return string Token, de la forme "{id}*{hash}"
341 341
  */
342 342
 function calculer_token_previsu($url, $id_auteur = null, $alea = 'alea_ephemere') {
343
-	if (is_null($id_auteur)) {
344
-		if (!empty($GLOBALS['visiteur_session']['id_auteur'])) {
345
-			$id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
346
-		}
347
-	}
348
-	if (!$id_auteur = intval($id_auteur)) {
349
-		return '';
350
-	}
351
-	// On nettoie l’URL de tous les var_.
352
-	$url = nettoyer_uri_var($url);
353
-
354
-	$token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea);
355
-	return "$id_auteur-$token";
343
+    if (is_null($id_auteur)) {
344
+        if (!empty($GLOBALS['visiteur_session']['id_auteur'])) {
345
+            $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
346
+        }
347
+    }
348
+    if (!$id_auteur = intval($id_auteur)) {
349
+        return '';
350
+    }
351
+    // On nettoie l’URL de tous les var_.
352
+    $url = nettoyer_uri_var($url);
353
+
354
+    $token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea);
355
+    return "$id_auteur-$token";
356 356
 }
357 357
 
358 358
 
@@ -370,31 +370,31 @@  discard block
 block discarded – undo
370 370
  *     + Tableau (id auteur, type d’objet, id_objet) sinon.
371 371
  */
372 372
 function verifier_token_previsu($token) {
373
-	// retrouver auteur / hash
374
-	$e = explode('-', $token, 2);
375
-	if (count($e) == 2 and is_numeric(reset($e))) {
376
-		$id_auteur = intval(reset($e));
377
-	} else {
378
-		return false;
379
-	}
380
-
381
-	// calculer le type et id de l’url actuelle
382
-	include_spip('inc/urls');
383
-	include_spip('inc/filtres_mini');
384
-	$url = url_absolue(self());
385
-
386
-	// verifier le token
387
-	$_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere');
388
-	if (!$_token or !hash_equals($token, $_token)) {
389
-		$_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere_ancien');
390
-		if (!$_token or !hash_equals($token, $_token)) {
391
-			return false;
392
-		}
393
-	}
394
-
395
-	return [
396
-		'id_auteur' => $id_auteur,
397
-	];
373
+    // retrouver auteur / hash
374
+    $e = explode('-', $token, 2);
375
+    if (count($e) == 2 and is_numeric(reset($e))) {
376
+        $id_auteur = intval(reset($e));
377
+    } else {
378
+        return false;
379
+    }
380
+
381
+    // calculer le type et id de l’url actuelle
382
+    include_spip('inc/urls');
383
+    include_spip('inc/filtres_mini');
384
+    $url = url_absolue(self());
385
+
386
+    // verifier le token
387
+    $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere');
388
+    if (!$_token or !hash_equals($token, $_token)) {
389
+        $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere_ancien');
390
+        if (!$_token or !hash_equals($token, $_token)) {
391
+            return false;
392
+        }
393
+    }
394
+
395
+    return [
396
+        'id_auteur' => $id_auteur,
397
+    ];
398 398
 }
399 399
 
400 400
 /**
@@ -403,13 +403,13 @@  discard block
 block discarded – undo
403 403
  * @return bool|array
404 404
  */
405 405
 function decrire_token_previsu() {
406
-	static $desc = null;
407
-	if (is_null($desc)) {
408
-		if ($token = _request('var_previewtoken')) {
409
-			$desc = verifier_token_previsu($token);
410
-		} else {
411
-			$desc = false;
412
-		}
413
-	}
414
-	return $desc;
406
+    static $desc = null;
407
+    if (is_null($desc)) {
408
+        if ($token = _request('var_previewtoken')) {
409
+            $desc = verifier_token_previsu($token);
410
+        } else {
411
+            $desc = false;
412
+        }
413
+    }
414
+    return $desc;
415 415
 }
Please login to merge, or discard this patch.