@extends('layouts.app') @section('title', ($lesson ? 'レッスン編集' : 'レッスン追加') . ' — ' . $course->name) @section('page-title', $course->name . ' — ' . ($lesson ? 'レッスン編集' : 'レッスン追加')) @section('page-subtitle-heading', '【この画面でできること】') @section('page-subtitle') グループ「{{ $group->name }}」のレッスンを設定します。基本情報・本文・動画・公開条件を保存すると、付与済みの受講生に反映されます(結合未付与の会員には表示されません)。 @endsection @section('content') @php $isEdit = $lesson !== null; $commentsMode = $commentsMode ?? 'disabled'; $commentsPerLesson = $commentsMode === 'per_lesson'; $slugCustomize = $slugCustomize ?? (bool) old('slug_customize', false); $currentSlug = old('slug', $lesson?->slug ?? ''); $status = old('status', $lesson?->status ?? ($defaultLessonStatus ?? 'published')); $publishedAt = old('published_at', $lesson?->published_at?->format('Y-m-d\TH:i')); $lessonDefaultsSettingsUrl = $lessonDefaultsSettingsUrl ?? route('site.course.workspace.show', [$site, $course, 'settings']).'#lesson-defaults-settings'; $courseListButtonLabel = $courseListButtonLabel ?? '受講する'; $courseSettingsUrl = $courseSettingsUrl ?? route('site.course.workspace.show', [$site, $course, 'settings']); $automation = $courseSettings['automation'] ?? []; $learningStyle = (string) ($automation['learning_style'] ?? 'all_unlocked'); $audienceMode = \App\Support\BundleCourseSettings::resolveAudienceMode($automation); $commentsRequireApproval = \App\Support\BundleCourseSettings::commentsRequireApproval($courseSettings ?? []); $lessonType = $lessonType ?? old('lesson_type', $lesson?->lesson_type ?? \App\Models\Lesson::TYPE_NORMAL); $testSettings = $testSettings ?? \App\Support\LessonTestSettings::defaults(); @endphp @include('site.course.partials._workspace_toolbar')
← レッスン一覧へ戻る @if($isEdit)
@csrf @method('DELETE')
@endif
@csrf @if($isEdit) @method('PUT') @endif
基本設定
テストは合格点以上で受講完了になります。順番受講のときは合格後に次のレッスンが解放されます。会員画面ではアイキャッチの下にテストのみ表示されます(本文・動画は出しません)。
コース内のレッスン一覧・会員画面の見出しに使います。
slug
ページ名から自動で決まります(半角英数字・ハイフン・アンダースコア)。会員の閲覧URLは現状レッスンIDです。スラッグは管理・将来のURL用に保存します。
このレッスン単体の表示。新規時の初期値は レッスン基本設定 で変更できます。
空欄で追加時は末尾。小さいほど上に表示。
@include('site.course.partials._lesson_test_builder', ['testSettings' => $testSettings])
コンテンツ
動画の表示オプション

コース基本設定の「動画オプションを会員画面に反映」がオンのときだけ適用されます。

@include('site.partials._tinymce_field', [ 'editorId' => 'lesson_content_editor', 'inputName' => 'content', 'value' => old('content', $lesson?->content), 'minHeight' => 360, ])
本文下のボタン(任意)

レッスン本文のに表示するボタンです(レッスン基本設定の受講完了ボタンとは別)。 コース一覧の「{{ $courseListButtonLabel }}」も 基本設定のコース一覧ボタンです。 文言とリンク先URLの両方を入れたときだけ会員画面に表示されます。

クリックで別タブが開きます(申込フォーム・外部サイトなど)。
資料ダウンロード・関連リンク(任意)

会員画面では本文の下にリスト表示されます。「資料ダウンロードを表示」がオフのときは出ません。

@include('partials._lesson_attachment_upload', [ 'inputId' => 'lesson-attachment-file', 'previewId' => 'lesson-attachment-preview', 'currentUrl' => $lesson?->attachment_url, 'showRemove' => (bool) $lesson?->attachment_url, 'removeCheckboxId' => 'lesson-attachment-remove', ])
空欄のときは「添付ファイル」と表示します。
空欄のときは「関連リンク」と表示します。
資料とは別の、参考サイト・補足ページなどへのリンクです。
@include('partials._image_file_upload', [ 'inputId' => 'lesson-thumbnail-file', 'previewId' => 'lesson-thumbnail-preview', 'label' => 'アイキャッチ画像', 'layout' => 'featured', 'previewHint' => '16:9の比率でプレビューします(コース画像と同じ見え方)。任意・png / jpg / gif / webp・5MB以下。', 'currentUrl' => old('thumbnail_media_url') ?: $lesson?->thumbnail_url, 'showRemove' => (bool) $lesson?->thumbnail_url, 'removeCheckboxId' => 'lesson-thumbnail-remove', ])
このレッスンだけの公開タイミング
コース全体のルール(受講対象者・コース開放日・締切・順番受講など)は コース基本設定 → 自動化で決めます。 ここで設定するのはレッスンごとの追加条件だけです。
  • 受講対象者: @if($audienceMode === 'none') 付与済みは全員 @elseif($audienceMode === 'after_days') 付与から{{ (int) ($automation['audience_days_after_grant'] ?? 0) }}日後 @else 指定ラベル付き会員のみ @endif
  • 受講スタイル: {{ $learningStyle === 'sequential_completion' ? '受講完了にすると次のレッスンが受講可能' : '最初から開放済み(ドリップ・公開日時のみ)' }}
コースの結合を付与した日から数えます。0=付与直後から(コース開放日など他条件を満たせば)閲覧可。
この日時より前は会員に表示しません。空欄=日時による制限なし。

サイト全体のレッスン下部案内文・前後レッスン導線は ページ設定 → レッスンページです。

@if($commentsPerLesson)
コメント
@if($commentsRequireApproval)

このコースはコメント承認制です。投稿は管理者が承認するまで会員に表示されません。

@endif
@elseif($commentsMode === 'enabled')
このコースではすべてのレッスンでコメントが有効です(コース基本設定)。 @if($commentsRequireApproval) 承認制のため、投稿は管理者の承認後に表示されます。 @endif
@endif
キャンセル
@include('partials.monaka_image_picker') @endsection @push('scripts') @endpush