itsulu-blog-publisher/addons/itsulu_blog_publisher/views/blog_post_social_views.xml
Nicholas Riegel 6c51b11b27 Implement wizard and complete UI views for Blog Publisher addon
Create wizard package and complete view layer:

Wizard implementation:
- Create wizards/__init__.py with generate_now_wizard import
- Wizard already fully implemented in generate_now_wizard.py
- Update main addon __init__.py to import wizards

Menu structure:
- Create menu_views.xml with main menu and submenu structure
- Organize menus: Generation, Configuration, Output, Settings

View files (split from consolidated views):
- Create blog_schedule_views.xml (schedule slot tree/form/action)
- Create blog_generation_log_views.xml (log tree/form/action with retry)
- Create blog_post_social_views.xml (social copy tree/form/action)
- Create generate_now_wizard_views.xml (wizard form/action)
- Update blog_topic_views.xml to contain only topic views

Features included:
- Schedule slot management with LLM provider/model selection
- Social media platform toggles per schedule
- Generation log viewer with retry capability
- Wizard for on-demand blog generation
- Complete navigation menu structure
- Dark mode and responsive design support

All views ready for Odoo 14+ deployment.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 12:35:49 -04:00

84 lines
4.2 KiB
XML
Raw Permalink 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>
<!-- ================================================================
SOCIAL MEDIA COPY VIEWS
================================================================ -->
<record id="view_blog_post_social_tree" model="ir.ui.view">
<field name="name">itsulu.blog.post.social.tree</field>
<field name="model">itsulu.blog.post.social</field>
<field name="arch" type="xml">
<tree string="Social Media Copy">
<field name="blog_post_id"/>
<field name="twitter_enabled" widget="boolean_toggle" optional="show"/>
<field name="bluesky_enabled" widget="boolean_toggle" optional="show"/>
<field name="mastodon_enabled" widget="boolean_toggle" optional="show"/>
<field name="linkedin_enabled" widget="boolean_toggle" optional="show"/>
</tree>
</field>
</record>
<record id="view_blog_post_social_form" model="ir.ui.view">
<field name="name">itsulu.blog.post.social.form</field>
<field name="model">itsulu.blog.post.social</field>
<field name="arch" type="xml">
<form string="Social Media Copy">
<sheet>
<group>
<field name="blog_post_id" readonly="1"/>
</group>
<notebook>
<page string="🐦 X / Twitter">
<group>
<field name="twitter_enabled" widget="toggle_button"/>
</group>
<separator string="Post A"/>
<field name="twitter_post_a" data-test-id="twitter-post-a"
placeholder="X/Twitter Post A (max 280 chars)"/>
<separator string="Post B"/>
<field name="twitter_post_b" data-test-id="twitter-post-b"
placeholder="X/Twitter Post B (max 280 chars)"/>
</page>
<page string="🌐 BlueSky">
<group>
<field name="bluesky_enabled" widget="toggle_button"/>
</group>
<separator string="Post A"/>
<field name="bluesky_post_a" data-test-id="bluesky-post-a"
placeholder="BlueSky Post A (max 300 chars)"/>
<separator string="Post B"/>
<field name="bluesky_post_b" data-test-id="bluesky-post-b"
placeholder="BlueSky Post B (max 300 chars)"/>
</page>
<page string="🦣 Mastodon">
<group>
<field name="mastodon_enabled" widget="toggle_button"/>
</group>
<field name="mastodon_post" data-test-id="mastodon-post"
placeholder="Mastodon/Fediverse post (max 500 chars)"/>
</page>
<page string="💼 LinkedIn">
<group>
<field name="linkedin_enabled" widget="toggle_button"/>
</group>
<field name="linkedin_post" data-test-id="linkedin-post"
placeholder="LinkedIn post (1503000 chars)"/>
</page>
<page string="Sources Referenced">
<field name="sources_referenced" data-test-id="sources-referenced"
placeholder="Title — https://url.com"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_blog_post_social_list" model="ir.actions.act_window">
<field name="name">Social Media Copy</field>
<field name="res_model">itsulu.blog.post.social</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>