Verbesserung
Top-Thema
Wichtig
Kleinigkeit
Wichtig
Alternativ zur aktuellen Umsetzung in WebfolderComponent soll das manuelle Sperren eines Dokuments vor dem Hochladen einer neuen Version durch automatische Sperren konfiguriert werden können.
Wird die Anwendungskonfiguration auf "automatische Dokumentensperre" gesetzt, so entfällt der "Dokument sperren"-Button und der "Dokument aktualisieren..."-Button ist aktiv. Beim Klick auf den "Dokument aktualisieren..."-Button wird die Dokumentensperre gesetzt, der Nutzer wählt das neue Dokument und klickt auf "Aktualisieren". Die neue Version wird hochgeladen und gespeichert und die Dokumentensperre wieder freigegeben. Die Dokumentensperre wird auch dann wieder freigegeben, wenn der Dialog geschlossen wird oder die Benutzersession in den Timeout läuft. Schlägt die Dokumentensperre fehl, weil ein anderer Nutzer gerade dasselbe versucht, so wird eine Fehlernachricht angezeigt, die diesen Sachverhalt mitteilt.
Abgrenzung
Fehler und fragwürdiges Verhalten des WebFolders wurden nicht behoben, wenn es bereits vor diesem Ticket existierte. Der WebFolder wurde nur //erweitert// und nicht generell //überarbeitet//.
Code Migration
Feature an- und abschalten
- Das hier gewünschte Verhalten ist der neue Top-Logic Standard. Wer den nicht möchte, kann das alte Verhalten, also das manuelle Locken, per Konfiguration anwendungsweit einschalten:
{{{#!xml <?xml version="1.0" encoding="utf-8" ?> <application xmlns:config="http://www.top-logic.com/ns/config/6.0">
<services>
...
<config service-class="com.top_logic.common.webfolder.ui.WebFolderUIFactory">
<instance manual-locking="true" />
</config>
...
</services>
</application> }}}
- Für TL 6.4:
{{{#!xml <?xml version="1.0" encoding="utf-8" ?> <root>
<properties>
...
<section name="WebFolderUIConfig">
<entry name="manual-locking" value="true"/>
</section>
...
</properties>
</root> }}}
- Das Verhalten kann auch pro Sicht (WebFolderComponent) konfiguriert werden:
{{{#!xml <component class="com.top_logic.common.webfolder.ui.WebFolderComponent"
manual-locking="true" />
</component> }}}
Geänderte APIs
- Folgende Methoden haben den zusätzlichen Parameter manualLocking : boolean bekommen. Dieser kommt aus der umschließenden WebFolderComponent aus getManualLocking(). Falls es keine gibt, kommt der Wert von WebFolderUIFactory.getManualLocking().
- WebFolderColumnDescriptionBuilder.WebFolderColumnDescriptionBuilder(...)
- WebFolderFieldProvider.WebFolderFieldProvider(...)
- UpdateDialog.UpdateDialog(...)
- UpdateExecutable.UpdateExecutable(...)
- Verwendungen von WebFolderColumnDescriptionBuilder.FULL_ACCESS_INSTANCE müssen statt dieser Konstante den Konstruktor verwenden und den korrekten Wert für manualLocking mitgeben. Außer, man kann in dem WebFolder keine Dateien hochladen. (Das kommt in der Basis an zwei Stellen vor, die daher weiterhin diese Konstante verwenden: Anzeige der Versionen eines Dokumentes sowie Anzeige ähnlicher Dokumente.)
Test
TestWebFolderAutomaticLocking.script.xml