unfiltered ??= DesignRights::unfilteredHtml(); } public function area(): string { return 'presets'; } public function designArea(): DesignArea { return new PresetArea($this->writer); } public function rights(): ?WP_Error { return DesignRights::presets($this->writer); } /** Writes the presets (PresetWrite), reading them first (DesignRead). */ public function features(): array { return [DiviFeature::DesignRead, DiviFeature::PresetWrite]; } public function plan(array $current, array $snapshot, string $snapshotId): DesignPlan|WP_Error { $before = PresetBook::fromDivi($current); $after = PresetBook::fromDivi($snapshot); $refusal = DesignRights::markup( $this->unfiltered, array_merge($before->markupOutside([]), $after->markupOutside([])), self::MARKUP ); if ($refusal !== null) { return $refusal; } $diff = PresetDiff::between($before, $after); return new DesignPlan( $after->data(), $diff, sprintf('Snapshot %s wiederherstellen – %s', $snapshotId, PresetDiff::summary($diff)), null, ['Seiten, die Presets verwenden, die es im Snapshot nicht gibt, behalten den Verweis; das Modul fällt ' . 'dann auf das Standard-Preset zurück.'], true ); } }