- 字体颜色:s_color 改为 varchar,发消息时保存颜色,进入聊天室自动恢复 - 等级体系:maxlevel 15→99,superlevel 16→100,99级经验阶梯(幂次曲线) - 管理权限等级按比例调整:禁言50、踢人60、设公告60、封号80、封IP90 - 钓鱼小游戏:FishingController(抛竿扣金币+收竿随机结果+广播) - 补充6个缺失的 sysparam 参数 + 4个钓鱼参数 - 用户列表点击用户名后自动聚焦输入框 - Pint 格式化
103 lines
4.8 KiB
PHP
103 lines
4.8 KiB
PHP
{{--
|
|
文件功能:聊天室底部输入工具栏(两行结构)
|
|
第一行:发送对象、动作、字色、悄悄话、滚屏、分屏、管理操作
|
|
第二行:输入框 + 发送按钮
|
|
从 frame.blade.php 拆分,便于独立维护
|
|
|
|
依赖变量:$user, $room, $levelKick, $levelMute, $levelBan, $levelBanip
|
|
--}}
|
|
|
|
<div class="input-bar">
|
|
<form id="chat-form" onsubmit="sendMessage(event)">
|
|
{{-- 第一行:工具选项 --}}
|
|
<div class="input-row">
|
|
<label>对
|
|
<select id="to_user" name="to_user" style="color: #224466;">
|
|
<option value="大家" selected>大家</option>
|
|
</select>
|
|
说:
|
|
</label>
|
|
|
|
<label>动作:
|
|
<select id="action" name="action">
|
|
<option value="">无</option>
|
|
<option value="微笑">微笑</option>
|
|
<option value="大笑">大笑</option>
|
|
<option value="愤怒">愤怒</option>
|
|
<option value="哭泣">哭泣</option>
|
|
<option value="害羞">害羞</option>
|
|
<option value="鄙视">鄙视</option>
|
|
<option value="得意">得意</option>
|
|
<option value="疑惑">疑惑</option>
|
|
<option value="同情">同情</option>
|
|
<option value="无奈">无奈</option>
|
|
<option value="拳打">拳打</option>
|
|
<option value="飞吻">飞吻</option>
|
|
<option value="偷看">偷看</option>
|
|
</select>
|
|
</label>
|
|
|
|
<label>字色:
|
|
<input type="color" id="font_color" name="font_color" value="{{ $user->s_color ?? '#000000' }}"
|
|
style="width: 22px; height: 18px; padding: 0; border: 1px solid navy; cursor: pointer;">
|
|
</label>
|
|
|
|
<label title="仅对方和自己可见">
|
|
<input type="checkbox" id="is_secret" name="is_secret" value="1">
|
|
悄悄话
|
|
</label>
|
|
|
|
<label title="自动滚屏到最新消息">
|
|
<input type="checkbox" id="auto_scroll" checked>
|
|
滚屏
|
|
</label>
|
|
|
|
<label>分屏:
|
|
<select id="split_screen" onchange="changeSplitScreen(this.value)">
|
|
<option value="0">单窗</option>
|
|
<option value="1">上下分</option>
|
|
</select>
|
|
</label>
|
|
{{-- 管理操作(根据权限显示) --}}
|
|
@if ($user->user_level >= $levelKick || $room->master == $user->username)
|
|
<select id="admin-action-select"
|
|
style="font-size: 11px; padding: 1px 2px; border: 1px solid #8ab; border-radius: 2px; color: #c00;">
|
|
<option value="">管理操作 ▾</option>
|
|
@if ($user->user_level >= $levelKick || $room->master == $user->username)
|
|
<option value="kick">踢出房间</option>
|
|
@endif
|
|
@if ($user->user_level >= $levelMute || $room->master == $user->username)
|
|
<option value="mute">禁言</option>
|
|
@endif
|
|
@if ($user->user_level >= $levelBan)
|
|
<option value="ban">封号</option>
|
|
@endif
|
|
@if ($user->user_level >= $levelBanip)
|
|
<option value="banip">封IP</option>
|
|
@endif
|
|
</select>
|
|
<button type="button" onclick="executeAdminAction()"
|
|
style="font-size: 11px; padding: 1px 6px; background: #c44; color: #fff; border: none; border-radius: 2px; cursor: pointer;">执行</button>
|
|
@endif
|
|
|
|
@if (
|
|
$user->user_level >= (int) \App\Models\Sysparam::getValue('level_announcement', '10') ||
|
|
$room->master == $user->username)
|
|
<button type="button" onclick="promptAnnouncement()"
|
|
style="font-size: 11px; padding: 1px 6px; background: #4a9; color: #fff; border: none; border-radius: 2px; cursor: pointer;">设公告</button>
|
|
@endif
|
|
|
|
<button type="button" id="fishing-btn" onclick="startFishing()"
|
|
style="font-size: 11px; padding: 1px 6px; background: #2563eb; color: #fff; border: none; border-radius: 2px; cursor: pointer;">🎣
|
|
钓鱼</button>
|
|
</div>
|
|
|
|
{{-- 第二行:输入框 + 发送 --}}
|
|
<div class="input-row">
|
|
<input type="text" id="content" name="content" class="say-input" placeholder="在这里输入聊天内容,按 Enter 发送..."
|
|
autocomplete="off">
|
|
<button type="submit" id="send-btn" class="send-btn">发送</button>
|
|
</div>
|
|
</form>
|
|
</div>
|