@model EasyStoryModel

@{
    Layout = "_AdminLayout";
    var isNew = Model.Id == 0;
    ViewBag.Title = isNew
        ? T("Plugins.CRS.EasyCreator.Story.Create").Value
        : T("Plugins.CRS.EasyCreator.Story.Edit").Value;
}

<form asp-action="@(isNew ? "Create" : "Edit")" method="post" id="cc-story-form">
    @if (!isNew)
    {
        <input type="hidden" asp-for="Id" />
    }

    <div class="section-header">
        <div class="title">
            <i class="fa fa-cog"></i>
            @ViewBag.Title
        </div>
        <div class="options">
            <button type="submit" name="save" class="btn btn-primary">
                <i class="fa fa-check"></i> @T("Admin.Common.Save")
            </button>
            <a asp-action="List" class="btn btn-secondary">
                @T("Common.Back")
            </a>
        </div>
    </div>

    <div class="card">
        <div class="card-body">
            <div class="adminContent">
                <div class="adminRow">
                    <div class="adminTitle"><smart-label asp-for="SystemName" /></div>
                    <div class="adminData">
                        <input asp-for="SystemName" class="form-control" />
                        <span asp-validation-for="SystemName"></span>
                        <span class="form-text cc-systemname-hint" data-cc-show-for="Page">
                            @T("Plugins.CRS.EasyCreator.Story.SystemName.PageHint")
                        </span>
                    </div>
                </div>
                <div class="adminRow">
                    <div class="adminTitle"><smart-label asp-for="Title" /></div>
                    <div class="adminData">
                        <input asp-for="Title" class="form-control" />
                    </div>
                </div>
                <div class="adminRow">
                    <div class="adminTitle"><smart-label asp-for="StoryType" /></div>
                    <div class="adminData">
                        @* Blog vorerst ausgeblendet (kommt in ein separates Blog-Plugin). *@
                        <select asp-for="StoryType" class="form-control" id="cc-story-type">
                            @foreach (var st in Enum.GetValues<CRS.EasyCreator.Domain.StoryType>())
                            {
                                if (st == CRS.EasyCreator.Domain.StoryType.Blog) { continue; }
                                <option value="@((int)st)" selected="@(Model.StoryType == st)">@T("Plugins.CRS.EasyCreator.Enums.StoryType." + st)</option>
                            }
                        </select>
                    </div>
                </div>

                @* ---- Widget-Zonen-Block ----
                   Sichtbar bei: StoryType=Widget IMMER, StoryType=Slider IMMER, StoryType=Page nur wenn RenderAsWidget=true. *@
                <div class="cc-section" data-cc-show-for="Widget,Slider,Page-asWidget">
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="WidgetZones" /></div>
                        <div class="adminData">
                            @* Editor-Template "WidgetZone" rendert ein Multi-Select mit allen bekannten
                               Zonen aus widgetzones.json + Tag-Eingabe fuer benutzerdef. Zonen. *@
                            <editor asp-for="WidgetZones" />
                            <span class="form-text">@T("Plugins.CRS.EasyCreator.Story.WidgetZones.Hint")</span>
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="Priority" /></div>
                        <div class="adminData">
                            <input asp-for="Priority" type="number" class="form-control" />
                        </div>
                    </div>
                </div>

                @* ---- Page-spezifischer Block ---- *@
                <div class="cc-section" data-cc-show-for="Page">
                    <div class="adminRow">
                        <div class="admin-config-group">
                            <div class="head">@T("Plugins.CRS.EasyCreator.Story.PageGroup.Url")</div>
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="SeName" /></div>
                        <div class="adminData">
                            <input asp-for="SeName" class="form-control" placeholder="@Model.SystemName" />
                            <span class="form-text">@T("Plugins.CRS.EasyCreator.Story.SeName.Hint")</span>
                        </div>
                    </div>

                    <div class="adminRow">
                        <div class="admin-config-group">
                            <div class="head">@T("Plugins.CRS.EasyCreator.Story.PageGroup.SEO")</div>
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="MetaTitle" /></div>
                        <div class="adminData">
                            <input asp-for="MetaTitle" class="form-control" />
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="MetaDescription" /></div>
                        <div class="adminData">
                            <textarea asp-for="MetaDescription" class="form-control" rows="3"></textarea>
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="MetaKeywords" /></div>
                        <div class="adminData">
                            <input asp-for="MetaKeywords" class="form-control" />
                        </div>
                    </div>

                    <div class="adminRow">
                        <div class="admin-config-group">
                            <div class="head">@T("Plugins.CRS.EasyCreator.Story.PageGroup.Layout")</div>
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="HtmlId" /></div>
                        <div class="adminData">
                            <input asp-for="HtmlId" class="form-control" />
                            <span class="form-text">@T("Plugins.CRS.EasyCreator.Story.HtmlId.Hint")</span>
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="BodyCssClass" /></div>
                        <div class="adminData">
                            <input asp-for="BodyCssClass" class="form-control" />
                            <span class="form-text">@T("Plugins.CRS.EasyCreator.Story.BodyCssClass.Hint")</span>
                        </div>
                    </div>

                    <div class="adminRow">
                        <div class="admin-config-group">
                            <div class="head">@T("Plugins.CRS.EasyCreator.Story.PageGroup.Behavior")</div>
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="IncludeInSitemap" /></div>
                        <div class="adminData">
                            <input asp-for="IncludeInSitemap" type="checkbox" />
                        </div>
                    </div>
                    <div class="adminRow">
                        <div class="adminTitle"><smart-label asp-for="RenderAsWidget" /></div>
                        <div class="adminData">
                            <input asp-for="RenderAsWidget" type="checkbox" id="cc-render-as-widget" />
                            <span class="form-text">@T("Plugins.CRS.EasyCreator.Story.RenderAsWidget.Hint")</span>
                        </div>
                    </div>
                </div>

                @* ---- Allgemeine Publish/Store/ACL — bei jedem StoryType sichtbar ---- *@
                <div class="adminRow">
                    <div class="adminTitle"><smart-label asp-for="IsPublished" /></div>
                    <div class="adminData">
                        <input asp-for="IsPublished" type="checkbox" />
                    </div>
                </div>
                <div class="adminRow">
                    <div class="adminTitle"><smart-label asp-for="PublishFromUtc" /></div>
                    <div class="adminData">
                        <editor asp-for="PublishFromUtc" />
                    </div>
                </div>
                <div class="adminRow">
                    <div class="adminTitle"><smart-label asp-for="PublishUntilUtc" /></div>
                    <div class="adminData">
                        <editor asp-for="PublishUntilUtc" />
                    </div>
                </div>
                <div class="adminRow">
                    <div class="adminTitle"><smart-label asp-for="LimitedToStores" /></div>
                    <div class="adminData">
                        <input asp-for="LimitedToStores" type="checkbox" />
                    </div>
                </div>
                <div class="adminRow">
                    <div class="adminTitle"><smart-label asp-for="SubjectToAcl" /></div>
                    <div class="adminData">
                        <input asp-for="SubjectToAcl" type="checkbox" />
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>

<script>
    // Conditional visibility per StoryType. Markup-Konvention:
    //   data-cc-show-for="Widget"             — nur bei StoryType=Widget
    //   data-cc-show-for="Page"               — nur bei StoryType=Page
    //   data-cc-show-for="Widget,Page-asWidget" — bei Widget IMMER + bei Page wenn RenderAsWidget=true
    (function () {
        var typeSel = document.getElementById('cc-story-type');
        var renderAsWidget = document.getElementById('cc-render-as-widget');
        if (!typeSel) return;

        // Enum-Werte: Widget=0, Blog=1, Slider=2, Page=3 (siehe StoryType.cs).
        // GetEnumSelectList rendert die Numeric-Values als <option value=...>.
        var ENUM_VALUE_TO_NAME = { '0': 'Widget', '1': 'Blog', '2': 'Slider', '3': 'Page' };

        function currentTypeName() {
            return ENUM_VALUE_TO_NAME[typeSel.value] || 'Widget';
        }

        function shouldShow(rule, typeName, raw) {
            // rule = CSV-Liste aus data-cc-show-for
            var tokens = rule.split(',').map(function (s) { return s.trim(); });
            for (var i = 0; i < tokens.length; i++) {
                var t = tokens[i];
                if (t === typeName) return true;
                if (t === 'Page-asWidget' && typeName === 'Page' && raw) return true;
            }
            return false;
        }

        function update() {
            var typeName = currentTypeName();
            var raw = renderAsWidget ? renderAsWidget.checked : false;
            document.querySelectorAll('[data-cc-show-for]').forEach(function (el) {
                el.style.display = shouldShow(el.getAttribute('data-cc-show-for'), typeName, raw) ? '' : 'none';
            });
        }

        typeSel.addEventListener('change', update);
        if (renderAsWidget) renderAsWidget.addEventListener('change', update);
        update();
    })();
</script>
