Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 5a925d70

Von Jan Büren vor mehr als 12 Jahren hinzugefügt

  • ID 5a925d70b2984371dc5b652412c532966e0bb612
  • Vorgänger 5cf44d1d
  • Nachfolger db911739

Dokumentation.xml ergänzt / geändert | doc/Makefile entfernt

Ein paar Rechtschreibfehler korrigiert und insbesondere Svens Ausführungen
über die globale und nicht globale Datenstrukturen in LxO durch Beispiele
erweitert oder 'leicht' geändert (@sven: Schau mal, ob du das so akzeptieren kannst ...).
Den Parameter ignore für Pg-Upgrade2-Skripte ferner aufgenommen.
Hoffentlich doc/Makefile gelöscht, da dieser nicht mehr benötigt wird.
Ggf., wäre ein kurzes README, wie bei sql/Pg-Upgrade2/README sinnvoll (auch
wenn die Zusammnenhänge dann sowieso in der dokument.pdf stehen)

Unterschiede anzeigen:

doc/dokumentation.xml
4216 4216

  
4217 4217
        <para><productname>SQL-Ledger</productname> hat fast alles im globalen
4218 4218
        namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
4219
        Unter <productname>FCGI</productname> müssen diese Sachen auch wieder
4219
        Unter <productname>FCGI</productname> müssen diese Sachen aber wieder
4220 4220
        aufgeräumt werden, damit sie nicht in den nächsten Request kommen.
4221 4221
        Einige Sachen wiederum sollen nicht gelöscht werden, wie zum Beispiel
4222
        Datenbankverbindungen, weil die ne Ewigkeit zum initialisieren
4222
        Datenbankverbindungen, weil die sehr lange zum Initialisieren
4223 4223
        brauchen.</para>
4224 4224

  
4225 4225
        <para>Das zweite Problem ist <function>strict</function>. Unter
4226 4226
        <function>strict</function> werden alle Variablen die nicht explizit
4227 4227
        mit <function>Package</function>, <function>my</function> oder
4228 4228
        <function>our</function> angegeben werden als Tippfehler angemarkert,
4229
        was einen vor so mancher Stunde suchen nach einem Bug erspart. Da
4230
        globale Variablen aber implizit mit Package angegeben werden, werden
4231
        die nicht geprüft, und ein Tippfehler da fällt niemandem auf.</para>
4229
        dies hat, seit der Einführung, u.a. schon so manche langwierige Bug-Suche verkürzt.
4230
        Da globale Variablen aber implizit mit Package angegeben werden, werden
4231
        die nicht geprüft, und somit kann sich schnell ein Tippfehler einschleichen.</para>
4232 4232
      </sect2>
4233 4233

  
4234 4234
      <sect2>
4235 4235
        <title>Kanonische globale Variablen</title>
4236 4236

  
4237 4237
        <para>Um dieses Problem im Griff zu halten gibt es einige wenige
4238
        globale Variablen, die kanonisch sind, und alles andere sollte
4239
        anderweitig umhergereicht werden.</para>
4238
        globale Variablen, die kanonisch sind, d.h. sie haben bestimmte vorgegebenen Eigenschaften,
4239
        und alles andere sollte anderweitig umhergereicht werden.</para>
4240 4240

  
4241 4241
        <para>Diese Variablen sind im Moment die folgenden neun:</para>
4242 4242

  
......
4278 4278
          </listitem>
4279 4279
        </itemizedlist>
4280 4280

  
4281
        <para>Damit diese nicht als Müllhalde misbrauch werden, im Folgenden
4282
        eine kurze Erläuterung was man von denn erwarten kann.</para>
4281
        <para>Damit diese nicht erneut als Müllhalde missbraucht werden, im Folgenden
4282
        eine kurze Erläuterung der bestimmten vorgegebenen Eigenschaften (Konventionen):</para>
4283 4283

  
4284 4284
        <sect3>
4285 4285
          <title>$::form</title>
......
4313 4313
          <para><varname>$::form</varname> wurde unter <productname>SQL
4314 4314
          Ledger</productname> als Gottobjekt für alles misbraucht. Sämtliche
4315 4315
          alten Funktionen unter SL/ mutieren <varname>$::form</varname>, das
4316
          heißt, alles was einem lieb ist, sollte man vor einem Aufruf von zum
4316
          heißt, alles was einem lieb ist (alle Variablen die einem ans Herz
4317
          gewachsen sind), sollte man vor einem Aufruf (!) von zum
4317 4318
          Beispiel <function>IS-&gt;retrieve_customer()</function> in
4318
          Sicherheit bringen.</para>
4319

  
4319
          Sicherheit bringen. </para>
4320
          Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
4321
          bestimmten Format durchführt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
4322
          dies hinterher wieder auf den richtigen Wert zu setzen:
4323
          <programlisting>
4324
            my $saved_numberformat    = $::myconfig{numberformat};
4325
            $::myconfig{numberformat} = $numberformat;
4326
            # (...) div Berechnungen
4327
            $::myconfig{numberformat} = $saved_numberformat;
4328
          </programlisting>
4320 4329
          <para>Das Objekt der Klasse Form hat leider im Moment noch viele
4321
          zentrale Funktionen Gdie vom internen Zustand abhängen, deshalb
4322
          bitte nie einfach zerstören oder überschreiben. Es geht ziemlich
4323
          sicher etwas kaputt.</para>
4330
          zentrale Funktionen die vom internen Zustand abhängen, deshalb
4331
          bitte nie einfach zerstören oder überschreiben (zumindestens nicht kurz
4332
          vor einem Release oder in Absprache über bspw. die devel-Liste ;-).
4333
          Es geht ziemlich sicher etwas kaputt.</para>
4324 4334

  
4325 4335
          <para><varname>$::form</varname> ist gleichzeitig der Standard Scope
4326 4336
          in den <productname>Template::Toolkit</productname> Templates
......
4330 4340
          Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
4331 4341
          normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h.
4332 4342
          <function>&lt;%var%&gt;</function> zeigt auf
4333
          <varname>$::form-&gt;{var}</varname>. Innerhalb von Schleifen wird
4343
          <varname>$::form-&gt;{var}</varname>.
4344
          Nochmal von der anderen Seite erläutert, innerhalb von (Web-)Templates sieht
4345
          man häufiger solche Konstrukte:
4346
          <programlisting>
4347
            [%- IF business %]
4348
            # (... Zeig die Auswahlliste Kunden-/Lieferantentyp an
4349
            [%- END %]
4350
         </programlisting>
4351
        Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion
4352
        <function>$form->parse_html_template</function> wird explizit noch ein zusätzlicher Hash
4353
        übergeben, der dann auch in den (Web-)Templates zu Verfügung steht, bspw. so:
4354
          <function>$form->parse_html_template("is/form_header", \%TMPL_VAR);</function>
4355

  
4356
          Innerhalb von Schleifen wird
4334 4357
          <varname>$::form-&gt;{TEMPLATE_ARRAYS}{var}[$index]</varname>
4335 4358
          bevorzugt, wenn vorhanden.</para>
4336
        </sect3>
4359
          Zum Beispiel in SL/DO.pm welche über alle Positionen eines Lieferscheins
4360
          in Schleife läuft:
4361
          <programlisting>
4362
            for $i (1 .. $form->{rowcount}) {
4363
              (...)
4364
              push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} },   $position;
4365
              push @{ $form->{TEMPLATE_ARRAYS}{number} },          $form->{"partnumber_$i"};
4366
              push @{ $form->{TEMPLATE_ARRAYS}{description} },     $form->{"description_$i"};
4367
         </programlisting>
4368
                 </sect3>
4337 4369

  
4338 4370
        <sect3>
4339 4371
          <title>%::myconfig</title>
......
4359 4391
            <listitem>
4360 4392
              <para>Sollte nicht ohne Filterung irgendwo gedumpt werden oder
4361 4393
              extern serialisiert werden, weil da auch der Datenbankzugriff
4362
              für diesenuser drinsteht.</para>
4394
              für diesen user drinsteht.</para>
4363 4395
            </listitem>
4364 4396

  
4365 4397
            <listitem>
......
4375 4407
          <para><varname>%::myconfig</varname> ist im Moment der Ersatz für
4376 4408
          ein Userobjekt. Die meisten Funktionen, die etwas anhand des
4377 4409
          aktuellen Users entscheiden müssen, befragen
4378
          <varname>%::myconfig</varname>.</para>
4410
          <varname>%::myconfig</varname>.
4411
          Innerhalb der Anwendungen sind dies überwiegend die Daten, die sich
4412
          unter Programm->Einstellungen befinden, bzw. die Informationen über den
4413
          Benutzer die über die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
4414
        </para>
4379 4415
        </sect3>
4380 4416

  
4381 4417
        <sect3>
......
4429 4465
          brauchbares Tracing gebaut ist, "<function>log_time</function>", mit
4430 4466
          der man die Wallclockzeit seit Requeststart loggen kann, sowie
4431 4467
          "<function>message</function>" und "<function>dump</function>" mit
4432
          denen man flott Informationen ins Log packen kann.</para>
4468
          denen man flott Informationen ins Log (tmp/lx-office-debug.log) packen kann.</para>
4469
          Beispielsweise so:
4470
          <programlisting>
4471
            $main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
4472
            $main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});
4473

  
4474
          </programlisting>
4433 4475
        </sect3>
4434 4476

  
4435 4477
        <sect3>
......
4479 4521
            </listitem>
4480 4522
          </itemizedlist>
4481 4523

  
4482
          <para>Globale Konfiguration. Configdateien werden zum Start gelesen,
4483
          und nicht mehr angefasst. Es ist derzeit nicht geplant, dass das
4524
          <para>Globale Konfiguration. Configdateien werden zum Start gelesen
4525
          und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass das
4484 4526
          Programm die Konfiguration ändern kann oder sollte.</para>
4485 4527

  
4486
          <para>Für die folgende Konfigurationsdatei:</para>
4528
          <para>Beispielsweise ist über den Konfigurationseintrag [debug]
4529
                die Debug- und Trace-Log-Datei wie folgt konfiguriert und verfügbar:</para>
4487 4530

  
4488 4531
          <programlisting>[debug]
4489
file = /tmp/lxoffice_debug_log.txt</programlisting>
4532
file = /tmp/lx-office-debug.log</programlisting>
4490 4533

  
4491 4534
          <para>ist der Key <varname>file</varname> im Programm als
4492 4535
          <varname>$::lx_office_conf-&gt;{debug}{file}</varname>
......
4514 4557

  
4515 4558
          <para>Funktioniert wie <varname>$::lx_office_conf</varname>,
4516 4559
          speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
4517
          ist hier eine Mandantendatenbank. Prominentestes Datum ist "eur",
4518
          die Information ob Bilanz oder Einnahmenüberschussrechnung gemacht
4519
          wird.</para>
4560
          ist hier eine Mandantendatenbank.
4561
          Beispielsweise überprüft
4562
          <programlisting>$::instance_conf->get_inventory_system eq 'perpetual'</programlisting>
4563
          ob die berüchtigte Bestandsmethode zur Anwendung kommt.</para>
4520 4564
        </sect3>
4521 4565

  
4522 4566
        <sect3>
......
4887 4931
         </para>
4888 4932
        </listitem>
4889 4933
       </varlistentry>
4934
       <varlistentry>
4935
        <term><varname>ignore</varname></term>
4936
        <listitem>
4937
         <para>
4938
          Optional. Falls der Wert auf 1 (true) steht, wird das Skript bei der Anmeldung ignoriert und entsprechend nicht ausgeführt.
4939
         </para>
4940
        </listitem>
4941
       </varlistentry>
4890 4942
      </variablelist>
4891 4943
     </sect2>
4892 4944

  
......
5360 5412

  
5361 5413
       <listitem>
5362 5414
        <para>
5363
         Die maximale Zeilenlänge ist nicht bescränkt. Zeilenlängen unterhalb von 79 Zeichen helfen unter bestimmten Bedingungen, aber
5415
         Die maximale Zeilenlänge ist nicht beschränkt. Zeilenlängen unterhalb von 79 Zeichen helfen unter bestimmten Bedingungen, aber
5364 5416
         wenn die Lesbarkeit unter kurzen Zeilen leidet (wie zum Biespiel in grossen Tabellen), dann ist Lesbarkeit vorzuziehen.
5365 5417
        </para>
5366 5418

  

Auch abrufbar als: Unified diff