7529d16b创建于 2023年12月21日历史提交
<div class="line" id="{{$id}}">
    <div class="label">
        {!! in_array('required',$rules)?'<span class="ub-text-danger ub-text-bold">*</span>':'' !!}
        {{$label}}:
    </div>
    <div class="field">
        <div id="{{$id}}Selector">
            <input type="hidden" name="{{$name}}" value="{{\ModStart\Core\Util\SerializeUtil::jsonEncode($value,JSON_UNESCAPED_UNICODE)}}"/>
            @if(!\Module\Vendor\Provider\VideoStream\VideoStreamProvider::first())
                <span class="ub-text-warning">请先安装视频点播模块</span>
            @else
                <select data-driver>
                    @foreach(\Module\Vendor\Provider\VideoStream\VideoStreamProvider::all() as $provider)
                        <option value="{{$provider->name()}}"
                                data-server="{{$provider->dialogUrl($scope)}}">{{$provider->title()}}</option>
                    @endforeach
                </select>
                <div class="ub-file-selector" style="display:inline-block;">
                    <div class="ub-file-selector__value" data-value>
                        {{empty($value['name'])?L('None'):$value['name']}}
                    </div>
                    <div class="ub-file-selector__close {{empty($value['name'])?'hidden':''}}" data-close>
                        <i class="iconfont icon-close"></i>
                    </div>
                    <div class="ub-file-selector__action {{empty($value['name'])?'':'hidden'}}" data-gallery>
                        <a href="javascript:;" class="btn">
                            <i class="iconfont icon-category"></i>
                            上传/选择视频
                        </a>
                    </div>
                </div>
            @endif
        </div>

        <script>
            $(function () {
                var $selector = $('#{{$id}}Selector');

                function setValue(driver, name, path) {
                    $selector.find('[name={{$name}}]').val(JSON.stringify({driver: driver, name: name, path: path}));
                    if (name) {
                        $selector.find('[data-value]').html(name);
                        $selector.find('.ub-file-selector__action').addClass('hidden');
                        $selector.find('.ub-file-selector__close').removeClass('hidden');
                    } else {
                        $selector.find('[data-value]').html("{{L('None')}}");
                        $selector.find('.ub-file-selector__action').removeClass('hidden');
                        $selector.find('.ub-file-selector__close').addClass('hidden');
                    }
                }

                $selector.find('[data-gallery]').on('click', function () {
                    new MS.selectorDialog({
                        server: $selector.find('[data-driver] option:selected').attr('data-server'),
                        callback: function (items) {
                            if (items.length > 0) {
                                setValue($selector.find('[data-driver]').val(), items[0].name.trim(), items[0].path.trim());
                            }
                        }
                    }).show();
                });
                $selector.find('[data-driver]').on('change', function () {
                    setValue('', '', '');
                });
                $selector.find('[data-close]').on('click', function () {
                    setValue('', '', '');
                });
            });
        </script>
    </div>
</div>