Aller au contenu

Points d'extension

phil/edit-lock-bundle

Ce qu'une application implémente, configure ou utilise. Les blocs sont lus dans des documents UJO (Universal JSON Output).

Ports écrits par l'application

Chacun est nommé par son identifiant de service dans la configuration — voir Configuration. Les points de terminaison répondent 404 tant que holder_provider et policy ne sont pas tous deux définis.

HolderProvider

Phil\EditLockBundle\Application\HolderProvider — qui écrit dans la requête courante (holder_provider).

MéthodeContrat
holder(): ?HolderLe rédacteur courant, un identifiant et le nom montré aux autres, ou null pour personne

EditPolicy

Phil\EditLockBundle\Application\EditPolicy — ce qu'un rédacteur peut modifier et reprendre (policy). Sans politique, EditLocks utilise DefaultEditPolicy — tout le monde peut modifier, personne ne peut reprendre — pour le propre code de l'application. Voir Baux.

MéthodeContrat
mayEdit(Holder $holder, string $resource): boolProtège la prise, la reprise, les pulsations, l'écriture des blocs et la lecture de la présence
mayTakeOver(Holder $holder, Lease $lease): boolInterrogée pour chaque bail qu'une reprise retirerait

BlockStore

Phil\EditLockBundle\Application\BlockStore — l'endroit où les blocs enregistrés sont conservés (block_store). Sans magasin, les enregistrements sont seulement communiqués aux autres rédacteurs. Voir Blocs.

MéthodeContrat
save(string $resource, Block $block, string $list, ?string $after, Holder $holder): voidPlace le bloc dans le brouillon de la ressource, à la place de sa copie ou après $after dans $list ; appelée avant que l'enregistrement soit communiqué aux autres
remove(string $resource, string $blockId, Holder $holder): voidRetire le bloc du brouillon

Ports avec des adaptateurs fournis

Broadcaster

Phil\EditLockBundle\Application\Broadcaster — communique aux autres rédacteurs ce qui a changé. MercureBroadcaster avec MercureBundle, NullBroadcaster sans lui ; une application fait pointer l'alias vers le sien — un autre service de poussée.

MéthodeContrat
presence(string $resource, list<Lease> $leases, DateTimeImmutable $now): voidLes baux actifs sur la ressource, après la modification de l'un d'eux
saved(string $resource, Holder $holder, Document $block, string $list, ?string $after): voidUn bloc enregistré, sous forme de document de ce seul bloc
removed(string $resource, Holder $holder, string $blockId): voidUn bloc retiré

LeaseRepository

Phil\EditLockBundle\Domain\Repository\LeaseRepository — les baux ; Doctrine ou mémoire, selon store. Un magasin propre à l'application conserve les garanties de chaque méthode : exclusively() exécute une revendication pendant qu'aucune autre revendication sur la ressource ne s'exécute, insert() conserve un bail seulement si aucun n'est sur sa clé, replace() seulement si la version lue est encore celle qui est conservée, delete() seulement pour le détenteur qui le détient.

Configuration

OptionCe qu'elle étend
secondsLa durée d'un bail depuis sa dernière pulsation
mercure.hub, topic_prefix, privateLe hub, les sujets et la confidentialité qu'utilisent les mises à jour — voir Mercure

Le navigateur

PointComment
Les libellésmessages dans la configuration du contrôleur, par clé : presence, editing, takeOver et les autres
L'apparenceassets/styles/edit-lock.css sous .phil-edit-lock-roster, avec --pel-text, --pel-accent et les autres
L'éditeur de blocsLe contrôleur répartit phil-block-editor:apply, phil-block-editor:remove et phil-block-editor:lock sur l'élément de l'éditeur ; tout éditeur qui les écoute fonctionne avec lui

Voir JavaScript.