game/addons/game_base/views/game_base_views.xml
李鹏宇 d9269e0f56 feat: 论坛/公告/剧情打通 Odoo —— 新增小说模型与阅读器
- 新增 game.story.volume / game.story.chapter 模型 + 后台菜单视图
- 新增 /game/api/story(目录) 与 /game/api/story/chapter/<id>(正文) 接口
- 三块补充 Odoo 默认种子数据(剧情 2 卷 5 章、论坛 5 帖、公告 4 条)
- 前端:剧情改造为左目录 + 右正文的小说阅读器;论坛改为登录后可见(auth-only);论坛/公告调整为竖排阅读布局
2026-07-24 15:56:42 +08:00

262 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- ============ 顶层菜单(带品牌 logo ============ -->
<menuitem id="menu_game_root" name="宇森游戏" sequence="10"
web_icon="game_base,static/description/icon.png"/>
<!-- ============ 图鉴(按分类 + 子级分组) ============ -->
<record id="action_game_codex" model="ir.actions.act_window">
<field name="name">图鉴</field>
<field name="res_model">game.codex.entry</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_codex" name="图鉴" parent="menu_game_root" action="action_game_codex" sequence="10"/>
<record id="view_game_codex_list" model="ir.ui.view">
<field name="name">game.codex.entry.list</field>
<field name="model">game.codex.entry</field>
<field name="arch" type="xml">
<list>
<field name="cat"/><field name="sub"/><field name="name"/><field name="tier"/><field name="image"/>
</list>
</field>
</record>
<record id="view_game_codex_form" model="ir.ui.view">
<field name="name">game.codex.entry.form</field>
<field name="model">game.codex.entry</field>
<field name="arch" type="xml">
<form>
<group>
<field name="cat"/><field name="sub"/><field name="tier"/>
</group>
<group>
<field name="name"/>
</group>
<field name="image" widget="image"/>
<field name="desc"/>
</form>
</field>
</record>
<!-- ============ 规则(菜单仅保留「规则」二字,按类别分组) ============ -->
<record id="action_game_rule" model="ir.actions.act_window">
<field name="name">规则</field>
<field name="res_model">game.rule</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_rule" name="规则" parent="menu_game_root" action="action_game_rule" sequence="20"/>
<record id="view_game_rule_list" model="ir.ui.view">
<field name="name">game.rule.list</field>
<field name="model">game.rule</field>
<field name="arch" type="xml">
<list><field name="type"/><field name="level"/><field name="name"/></list>
</field>
</record>
<record id="view_game_rule_form" model="ir.ui.view">
<field name="name">game.rule.form</field>
<field name="model">game.rule</field>
<field name="arch" type="xml">
<form><group><field name="type"/><field name="level"/><field name="name"/></group><field name="desc"/></form>
</field>
</record>
<!-- ============ 货币等级 ============ -->
<record id="action_game_currency" model="ir.actions.act_window">
<field name="name">货币等级</field>
<field name="res_model">game.currency</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_currency" name="货币等级" parent="menu_game_root" action="action_game_currency" sequence="25"/>
<record id="view_game_currency_list" model="ir.ui.view">
<field name="name">game.currency.list</field>
<field name="model">game.currency</field>
<field name="arch" type="xml">
<list><field name="level"/><field name="name"/><field name="rate"/></list>
</field>
</record>
<record id="view_game_currency_form" model="ir.ui.view">
<field name="name">game.currency.form</field>
<field name="model">game.currency</field>
<field name="arch" type="xml">
<form><group><field name="level"/><field name="name"/><field name="rate"/></group><field name="desc"/></form>
</field>
</record>
<!-- ============ 页面板块 ============ -->
<record id="action_game_page" model="ir.actions.act_window">
<field name="name">页面板块</field>
<field name="res_model">game.page</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_page" name="页面板块" parent="menu_game_root" action="action_game_page" sequence="27"/>
<record id="view_game_page_list" model="ir.ui.view">
<field name="name">game.page.list</field>
<field name="model">game.page</field>
<field name="arch" type="xml">
<list>
<field name="sequence"/><field name="key"/><field name="title"/><field name="subtitle"/><field name="active"/>
</list>
</field>
</record>
<record id="view_game_page_form" model="ir.ui.view">
<field name="name">game.page.form</field>
<field name="model">game.page</field>
<field name="arch" type="xml">
<form>
<group>
<field name="key"/><field name="title"/><field name="subtitle"/><field name="sequence"/><field name="active"/>
</group>
<notebook>
<page string="正文" name="body">
<field name="body_html" widget="html" options="{'collaborative': true}"/>
</page>
<page string="条目" name="items">
<field name="item_ids">
<list editable="bottom">
<field name="sequence" widget="handle"/><field name="icon"/><field name="title"/><field name="desc"/>
</list>
</field>
</page>
</notebook>
</form>
</field>
</record>
<!-- ============ 论坛(放后面) ============ -->
<menuitem id="menu_game_forum" name="论坛" parent="menu_game_root" sequence="30"/>
<record id="action_game_forum_thread" model="ir.actions.act_window">
<field name="name">主题</field>
<field name="res_model">game.forum.thread</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_forum_thread" name="主题" parent="menu_game_forum" action="action_game_forum_thread" sequence="31"/>
<record id="action_game_forum_post" model="ir.actions.act_window">
<field name="name">回复</field>
<field name="res_model">game.forum.post</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_forum_post" name="回复" parent="menu_game_forum" action="action_game_forum_post" sequence="32"/>
<record id="view_game_forum_thread_list" model="ir.ui.view">
<field name="name">game.forum.thread.list</field>
<field name="model">game.forum.thread</field>
<field name="arch" type="xml">
<list>
<field name="pinned"/><field name="name"/><field name="category"/><field name="author_name"/><field name="create_date"/>
</list>
</field>
</record>
<record id="view_game_forum_thread_form" model="ir.ui.view">
<field name="name">game.forum.thread.form</field>
<field name="model">game.forum.thread</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/><field name="category"/><field name="author_name"/><field name="pinned"/>
</group>
<field name="body_html"/>
<field name="post_ids">
<tree><field name="author_name"/><field name="create_date"/></tree>
<form><field name="author_name"/><field name="body_html"/></form>
</field>
</form>
</field>
</record>
<record id="view_game_forum_post_list" model="ir.ui.view">
<field name="name">game.forum.post.list</field>
<field name="model">game.forum.post</field>
<field name="arch" type="xml">
<list><field name="thread_id"/><field name="author_name"/><field name="create_date"/></list>
</field>
</record>
<record id="view_game_forum_post_form" model="ir.ui.view">
<field name="name">game.forum.post.form</field>
<field name="model">game.forum.post</field>
<field name="arch" type="xml">
<form><field name="thread_id"/><field name="author_name"/><field name="body_html"/></form>
</field>
</record>
<!-- ============ 公告(放最后) ============ -->
<record id="action_game_announcement" model="ir.actions.act_window">
<field name="name">公告</field>
<field name="res_model">game.announcement</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_announcement" name="公告" parent="menu_game_root" action="action_game_announcement" sequence="40"/>
<record id="view_game_announcement_list" model="ir.ui.view">
<field name="name">game.announcement.list</field>
<field name="model">game.announcement</field>
<field name="arch" type="xml">
<list><field name="name"/><field name="date"/><field name="priority"/><field name="active"/></list>
</field>
</record>
<record id="view_game_announcement_form" model="ir.ui.view">
<field name="name">game.announcement.form</field>
<field name="model">game.announcement</field>
<field name="arch" type="xml">
<form>
<group><field name="name"/><field name="date"/><field name="priority"/><field name="active"/></group>
<field name="body_html"/>
</form>
</field>
</record>
<!-- ============ 小说(剧情) ============ -->
<menuitem id="menu_game_story" name="小说" parent="menu_game_root" sequence="35"/>
<record id="action_game_story_volume" model="ir.actions.act_window">
<field name="name"></field>
<field name="res_model">game.story.volume</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_story_volume" name="卷" parent="menu_game_story" action="action_game_story_volume" sequence="36"/>
<record id="action_game_story_chapter" model="ir.actions.act_window">
<field name="name">章节</field>
<field name="res_model">game.story.chapter</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_game_story_chapter" name="章节" parent="menu_game_story" action="action_game_story_chapter" sequence="37"/>
<record id="view_game_story_volume_list" model="ir.ui.view">
<field name="name">game.story.volume.list</field>
<field name="model">game.story.volume</field>
<field name="arch" type="xml">
<list><field name="sequence"/><field name="name"/><field name="chapter_ids"/></list>
</field>
</record>
<record id="view_game_story_volume_form" model="ir.ui.view">
<field name="name">game.story.volume.form</field>
<field name="model">game.story.volume</field>
<field name="arch" type="xml">
<form>
<group><field name="name"/><field name="sequence"/></group>
<field name="intro"/>
<field name="chapter_ids">
<list editable="bottom">
<field name="sequence" widget="handle"/><field name="name"/><field name="body_html"/>
</list>
</field>
</form>
</field>
</record>
<record id="view_game_story_chapter_list" model="ir.ui.view">
<field name="name">game.story.chapter.list</field>
<field name="model">game.story.chapter</field>
<field name="arch" type="xml">
<list><field name="volume_id"/><field name="sequence"/><field name="name"/></list>
</field>
</record>
<record id="view_game_story_chapter_form" model="ir.ui.view">
<field name="name">game.story.chapter.form</field>
<field name="model">game.story.chapter</field>
<field name="arch" type="xml">
<form>
<group><field name="volume_id"/><field name="sequence"/><field name="name"/></group>
<field name="body_html"/>
</form>
</field>
</record>
</odoo>