上传修改后的主题

This commit is contained in:
WEB许何哲\xuhez
2023-07-14 09:21:21 +08:00
parent 1c022711a1
commit a48c8b2baa
209 changed files with 18379 additions and 0 deletions

View File

@@ -0,0 +1,120 @@
<templates id="template" xml:space="preserve">
<t t-name="show_icon_pack" t-inherit="web.ListView.Buttons" t-inherit-mode="primary" owl="1" >
<xpath expr="//div[hasclass('o_list_buttons')]" position="inside">
<a class="btn btn-primary open_wizard_action" href="https://www.bizople.com/remix-icons" target="_blank">
Show Icon Pack
</a>
</xpath>
</t>
<t t-name="spiffy_theme_backend.UserMenuInherit" t-inherit="web.UserMenu" t-inherit-mode="extension" owl="1">
<xpath expr="//Dropdown" position="replace">
<div class="o_user_menu d-none d-lg-block">
<Dropdown class="'user-image-style d-none d-md-block pe-0'">
<t t-set-slot="toggler">
<img class="rounded-circle o_user_avatar oe_topbar_avatar" t-att-src="source" alt="User"/>
<div class="user-info">
<span class="oe_topbar_name text-truncate"><t t-esc="user.name"/><t t-if="env.debug" t-esc="' (' + user.db.name + ')'"/></span>
<span class="greeting">
<t t-if="greeting">
<t t-esc="greeting"/>
</t>
</span>
</div>
</t>
<t t-foreach="getElements()" t-as="element" t-key="element_index">
<t t-if="!element.hide">
<DropdownItem
t-if="element.type == 'item' || element.type == 'switch'"
href="element.href"
dataset="{ menu: element.id }"
onSelected="element.callback"
>
<CheckBox
t-if="element.type == 'switch'"
value="element.isChecked"
className="'form-switch d-flex flex-row-reverse justify-content-between p-0'"
onChange="element.callback"
>
<t t-out="element.description"/>
</CheckBox>
<t t-else="" t-out="element.description"/>
</DropdownItem>
<div t-if="element.type == 'separator'" role="separator" class="dropdown-divider"/>
</t>
</t>
</Dropdown>
</div>
</xpath>
</t>
<t t-name="spiffy_theme_backend.BurgerUserMenuInherit" t-inherit="web.BurgerUserMenu" t-inherit-mode="extension" owl="1">
<xpath expr="//a" position="replace">
<a t-if="element.type == 'item'" class="dropdown-item py-3 fs-4" t-att-href="element.href or ''" t-out="element.description" t-on-click.stop.prevent="() => this._onItemClicked(element.callback)"/>
</xpath>
</t>
<t t-inherit="web.SwitchCompanyMenu" t-inherit-mode="extension" owl="1">
<xpath expr="//Dropdown" position="replace">
<div class="o_switch_company_menu">
<div class="o_user_lang position-relative d-none">
<a role="button" class="dropdown-toggle lang_selector" data-bs-toggle="dropdown" data-display="static" aria-expanded="false" title="Languages">
<i class="ri ri-translate-2" role="img" aria-label="Activities" />
</a>
<div class="dropdown-menu" role="menu">
<div class="align-items-center active_lang">
</div>
</div>
</div>
<div class="company_selections d-inline-block position-relative">
<a role="button" class="dropdown-toggle o-no-caret" data-bs-toggle="dropdown" data-display="static" aria-expanded="false" href="#" title="Company">
<span t-attf-class="{{env.isSmall ? 'ri ri-building-2-line' : 'oe_topbar_name'}}">
<t t-if="!env.isSmall"><i class="ri ri-building-2-line" /></t>
</span>
</a>
<div class="dropdown-menu" role="menu">
<t t-foreach="Object.values(companyService.availableCompanies).sort((c1, c2) => c1.sequence - c2.sequence)" t-as="company" t-key="company.id">
<t t-call="web.SwitchCompanyItem">
<t t-set="company" t-value="company" />
</t>
</t>
</div>
</div>
<div class="debug_activator">
<a t-attf-class="activate_debug {{isDebug ? 'toggle' : ''}}" title="Debug">
<span class="ri ri-code-box-line" style="font-size: 18px;"/>
</a>
</div>
<div class="theme_selector list-unstyled ms-3">
<a class="theme-edit" title="Theme Setting">
<span aria-label="Themes Configuration" class="ri ri-paint-brush-line" />
</a>
</div>
<div class="vertical_sidemenu_behaviour d-none ms-3">
<a class="pin_sidebar" title="Pin Sidebar">
<span class="ri ri-lock-unlock-line" style="font-size: 18px;"/>
</a>
</div>
<div class="header_to_do_list list-unstyled ms-3">
<a class="to_do_list" title="Notes">
<span aria-label="Notes" class="ri ri-sticky-note-line" />
</a>
</div>
<div class="dark_mode list-unstyled ms-3">
<div class="dark-light-mode-button-design">
<input id="dark_mod" type="checkbox" class="checkbox custom-control-input d-none" role="switch" />
<label for="dark_mod" class="label mb-0" title="Light/Dark Mode">
<i class='bulb-on ri ri-lightbulb-flash-fill'></i>
</label>
</div>
</div>
</div>
</xpath>
</t>
<t t-inherit="web.OwlDialog" t-inherit-mode="extension" owl="1">
<xpath expr="//div[hasclass('o_dialog')]" position="attributes">
<attribute name="t-att-data-bs-backdrop">'' + props.backdrop</attribute>
</xpath>
</t>
</templates>

View File

@@ -0,0 +1,23 @@
<templates id="template" xml:space="preserve">
<t t-name="BookmarkOptions">
<div class="bookmark_options py-2 px-3 d-flex flex-column shadow" t-att-bookmark_id="bookmark_id">
<a class="rename_bookmark d-block me-0 px-0 py-1">Rename</a>
<a class="remove_bookmark d-block me-0 px-0 py-1">Remove</a>
</div>
</t>
<t t-name="BookmarkRename">
<div class="bookmark_rename_section px-3 py-2 shadow" t-att-bookmark_id="bookmark_id">
<p class="">Rename</p>
<div class="form-group">
<input type="text" class="form-control" name="bookmark_rename" t-att-value="bookmark_name"
id="bookmark_rename" />
</div>
<div class="dropdown-divider"></div>
<div class="d-flex">
<a class="btn btn-primary bookmark_rename">Rename</a>
<a class="btn btn-secondary me-0 bookmark_rename_cancel">Cancel</a>
</div>
</div>
</t>
</templates>

View File

@@ -0,0 +1,19 @@
<templates id="template" xml:space="preserve">
<t t-inherit="web.FormStatusIndicator" t-inherit-mode="extension" owl="1">
<xpath expr="//div[hasclass('o_form_status_indicator_buttons')]" position="after">
<span
t-if="displayAutoSavePrevent and (props.model.root.isVirtual or displayButtons)"
class="text-danger small disble-auto-save ms-2">
<i class="fa fa-warning me-2"/>
<span t-esc="prevent_auto_save_warning_msg">
Autosave is disabled, Click on save button.
</span>
</span>
</xpath>
<xpath expr="//button[hasclass('o_form_button_save')]/i" position="attributes">
<attribute name="class" add="ri ri-save-3-line" remove="fa fa-cloud-upload" separator=" "></attribute>
</xpath>
</t>
</templates>

View File

@@ -0,0 +1,39 @@
<templates id="template" xml:space="preserve">
<t t-inherit="web.ListRenderer.RecordRow" t-inherit-mode="extension" owl="1">
<xpath expr="//tr[hasclass('o_data_row')]" position="attributes">
<attribute name="t-att-resId">record.resId</attribute>
</xpath>
<xpath expr="//tr[hasclass('o_data_row')]" position="after">
<t t-if="biz_attachment_data and showattachment">
<t t-if="biz_attachment_data[0][record.resId]">
<div class="attachment_div">
<section class="biz_attachment_section d-flex align-items-center justify-content-center w-100 position-absolute flex-wrap" t-att-id="record.id">
<t t-set="counter" t-value="0"/>
<t t-set="extra_length" t-value="biz_attachment_data[0][record.resId].length - 5"/>
<t t-foreach="biz_attachment_data[0][record.resId]" t-as="attachment" t-key="attachment.attachment_id">
<t t-if="counter &lt; 5">
<div class="attachment_box border d-flex align-items-center mx-2" t-att-data-id="attachment.attachment_id" t-att-data-name="attachment.attachment_name" t-att-data-mimetype="attachment.attachment_mimetype" t-att-data-rec_id="record.resId" t-on-click="(ev) => this._loadattachmentviewer(ev)">
<span class="o_image me-2" t-att-data-mimetype="attachment.attachment_mimetype"/>
<div class="attachment-name text-nowrap">
<span><t t-esc="attachment.attachment_name"/></span>
</div>
</div>
<t t-set="counter" t-value="counter + 1"/>
</t>
</t>
<t t-if="extra_length >= 1">
<t t-set="attachment" t-value="biz_attachment_data[0][record.resId][5]"/>
<div class="attachment_box border d-flex align-items-center mx-2 attachment_box_counter " t-att-data-id="attachment.attachment_id" t-att-data-name="attachment.attachment_name" t-att-data-mimetype="attachment.attachment_mimetype" t-att-data-rec_id="record.resId" t-on-click="(ev) => this._loadattachmentviewer(ev)">
<div class="attachment-name text-nowrap">
<span>+<t t-esc="extra_length"/></span>
</div>
</div>
</t>
</section>
</div>
</t>
</t>
</xpath>
</t>
</template>

View File

@@ -0,0 +1,408 @@
<templates id="template" xml:space="preserve">
<t t-name="SearchModalPopup" owl="1">
<div class="modal" id="search_bar_modal">
<div class="modal-dialog modal-dialog-scrollable">
<div class="modal-content p-0">
<!-- Modal Header -->
<div class="modal-header d-block">
<div class="d-flex px-3 align-items-center justify-content-between">
<h4 class="modal-title">Search..</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal">
<!-- <span class="ri ri-close-line align-middle"></span> -->
</button>
</div>
</div>
<div class="modal-body px-0">
<div class="d-flex align-items-center mb-4 px-3">
<div class="load-active-menu-selector w-25">
<t t-call="seletor-acvtive-menu-items"/>
</div>
<input type="text" id="searchPagesInput"
class="form-control form-control-size borderless auto-complete" autocomplete="off"
placeholder="Search here..." value="" />
</div>
<ul id="searchPagesResults" class="auto-complete-result mb-0 px-3">
</ul>
<div class="searchNoResult px-3 d-none">
<h3>No Results Found!</h3>
</div>
</div>
<div class="flex-row-reverse modal-footer px-0">
<div class="pb-3 px-3">
<span class="text-alternate d-inline-block m-0 me-3">
<span class="ri ri-arrow-up-down-line align-middle"></span>
<span class="align-middle text-medium">Navigate</span>
</span>
<span class="text-alternate d-inline-block m-0">
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="cs-icon arrow-bottom-left text-alternate align-middle me-1"><path d="M7 8L2.35355 12.6464C2.15829 12.8417 2.15829 13.1583 2.35355 13.3536L7 18"></path><path d="M17.5 2V9C17.5 10.0609 17.0786 11.0783 16.3284 11.8284C15.5783 12.5786 14.5609 13 13.5 13H2"></path></svg>
<span class="align-middle text-medium">Select</span>
</span>
</div>
</div>
</div>
</div>
</div>
</t>
<t t-name="seletor-acvtive-menu-items" owl="1">
<div class="form-group mb-0">
<select class="form-control border-0 border-bottom p-0 text-truncate" id="active-menu-categories">
<option id="0" value="all">All</option>
<t t-foreach="menuService.getApps()" t-as="menu" t-key="menu.name">
<option t-att-id="menu.id" t-att-value="menu.name"><t t-esc="menu.name"/></option>
</t>
</select>
</div>
</t>
<!-- A search result -->
<t t-name="spiffy_theme_backend.MenuSearchResults">
<t t-foreach="results" t-as="result" t-key="result.id">
<t t-set="menu" t-value="widget._menuInfo(result)" />
<li class="search_list_content list-unstyled">
<a
t-attf-class="autoComplete_highlighted text-small text-muted mb-0"
t-attf-href="#menu_id={{menu.id}}&amp;action={{menu.actionID}}"
t-att-data-menu-id="menu.id"
t-att-data-action-id="menu.actionID"
t-esc="result"
role="menuitem"
/>
</li>
</t>
</t>
<t t-inherit="web.NavBar" t-inherit-mode="extension" owl="1">
<xpath expr="//nav[hasclass('o_main_navbar')]" position="before">
<!-- SPIFFY MULTI TAB START -->
<div class="multi_tab_section"/>
<!-- SPIFFY MULTI TAB END -->
<div class="fav_app_island d-none">
<span class="ri ri-apps-2-line fav_app_island_btn"/>
<div class="fav_apps d-flex alige-items-center justify-content-center">
</div>
</div>
<div class="float-end d-flex align-items-center header_menu_right_content flex-wrap">
<li class="bookmark_list list-unstyled"></li>
<li class="bookmark_section list-unstyled">
<div class="dropdown">
<button type="button" class="btn btn-light dropdown-toggle demo_btn" data-bs-toggle="dropdown" title="Add Bookmark">
<span class="fa fa-bookmark-o" />
</button>
<div class="dropdown-menu bookmark_page_add">
<p class="">Add Bookmark</p>
<div class="form-group">
<input type="text" class="form-control" name="bookmark_page_name" id="bookmark_page_name" />
</div>
<div class="dropdown-divider"></div>
<div class="d-flex">
<a class="btn btn-primary add_bookmark">Add</a>
<a class="btn btn-secondary me-0 cancel_bookmark">Cancel</a>
</div>
</div>
</div>
</li>
<li class="fav_app_drawer list-unstyled">
<button type="button" class="btn btn-light fav_app_drawer_btn" title="Favourite Apps">
<span class="ri ri-star-line"/>
</button>
</li>
<li class="magnifier_section list-unstyled">
<div class="">
<button type="button" class="btn btn-light magnifier_btn demo_btn" data-bs-target="#magnifier" data-bs-toggle="collapse" title="Magnifier">
<span class="fa fa-search-plus" />
</button>
<div id="magnifier" class="collapse position-absolute bg-white zoom-style-box">
<div class="d-flex align-items-center">
<span class="zoom_value ps-2">100</span>
<span>%</span>
<div class="zoom-style d-flex align-items-center mx-2">
<a class="btn btn-small minus">-</a>
<a class="btn btn-small plus">+</a>
</div>
<a class="fa fa-repeat zoom-reset btn btn-secondary reset"></a>
</div>
</div>
</div>
</li>
<li class="search_view list-unstyled">
<button type="button" class="btn btn-light search_bar demo_btn" accesskey="H" title="Search">
<span class="fa fa-search" />
</button>
</li>
<li class="fullscreen_section list-unstyled">
<a class="btn btn-light full_screen demo_btn" accesskey="F" title="FullScreen">
<span class="fa fa-expand" />
</a>
</li>
</div>
<!-- SEARCH MODAL -->
<t t-call="SearchModalPopup"/>
<div class="dynamic_data" />
<div class="navbar_to_do_list_data" />
</xpath>
<xpath expr="//nav[hasclass('o_main_navbar')]" position="replace">
<nav class="o_main_navbar" t-on-dropdown-item-selected="onNavBarDropdownItemSelection" data-command-category="navbar">
<div class="o_app_drawer">
<li class="list-unstyled">
<a class="appDrawerToggle me-3" accesskey="A">
<span class="ri ri-apps-2-line"/>
</a>
</li>
</div>
<div class="o_company_logo">
<t t-if="currentCompany">
<h1 class="jikimo">JIKIMO</h1>
<img class="img img-fluid company_logo_icon d-none" t-attf-src="/web/image?model=res.company&amp;field=backend_menubar_logo_icon&amp;id={{currentCompany.id}}"/>
</t>
</div>
<!-- Systray -->
<div class="o_menu_systray" role="menu">
<t t-foreach="systrayItems" t-as="item" t-key="item.key">
<!-- This ensures the correct order of the systray items -->
<div t-att-data-index="item.index"/>
<ErrorHandler onError="error => this.handleItemError(error, item)">
<t t-component="item.Component" t-props="item.props"/>
</ErrorHandler>
</t>
</div>
<!-- Apps Menu -->
<t t-call="web.NavBar.AppsMenu">
<t t-set="apps" t-value="menuService.getApps()" />
</t>
<div class="favorite_apps_section d-none"></div>
<!-- <div class="mobile-header-toggle d-lg-none d-block">
<a id="mobileMenuToggleBtn" class="menu-button">
<span class="ri ri-menu-line align-middle"></span>
</a>
</div> -->
<!-- App Brand -->
<DropdownItem
t-if="currentApp"
href="getMenuItemHref(currentApp)"
t-esc="currentApp.name"
class="'o_menu_brand d-none d-md-block'"
dataset="{ menuXmlid: currentApp.xmlid, section: currentApp.id }"
onSelected="() => this.onNavBarDropdownItemSelection(currentApp)"
/>
<!-- Current App Sections -->
<t t-if="currentAppSections.length and !env.isSmall and !isIpad" t-call="web.NavBar.SectionsMenu">
<t t-set="sections" t-value="currentAppSections" />
</t>
<!-- Mobile App sections -->
<t t-call="spiffy.Mobile.SectionsMenu">
<t t-set="sections" t-value="currentAppSections" />
</t>
</nav>
</xpath>
</t>
<t t-name="spiffy.Mobile.SectionsMenu" owl="1">
<div class="o_menu_sections d-none">
<a id="mobileMenuclose" class="menu-button" style="display: none;">
<span class="ri ri-close-line align-middle"></span>
</a>
<t t-foreach="sections" t-as="first_level_menu" t-key="first_level_menu.id">
<t t-if="!first_level_menu.childrenTree.length">
<t t-call="spiffy.Menu.link">
<t t-set="inNavbar" t-value="true"/>
<t t-set="menu" t-value="first_level_menu"/>
</t>
</t>
<t t-else="">
<li class="list-unstyled">
<a href="#" class="dropdown-toggle o-no-caret o_menu_header_lvl_1" t-att-data-menu-xmlid="first_level_menu.xmlid" data-bs-toggle="dropdown" data-display="static" role="button" aria-expanded="false">
<t t-esc="first_level_menu.name"/>
</a>
<div class="dropdown-menu" role="menu">
<t t-foreach="first_level_menu.childrenTree" t-as="second_level_menu" t-key="second_level_menu.id">
<t t-call="spiffy.Menu.link">
<t t-set="depth" t-value="1"/>
<t t-set="menu" t-value="second_level_menu"/>
</t>
</t>
</div>
</li>
</t>
</t>
</div>
</t>
<t t-name="spiffy.Menu.link" owl="1">
<t t-set="depth" t-value="(depth || 0) + 1"/>
<t t-if="!menu.childrenTree.length">
<a role="menuitem" t-attf-href="#menu_id={{menu.id}}&amp;action={{menu.actionID ? menu.actionID : ''}}"
t-att-data-menu="menu.id"
t-att-data-action-model="menu.actionModel"
t-att-data-action-id="menu.actionID"
t-att-data-menu-xmlid="menu.xmlid"
t-attf-class="{{inNavbar ? '' : 'dropdown-item '}}o_menu_entry_lvl_{{depth}}"
>
<span><t t-esc="menu.name"/></span>
</a>
</t>
<t t-else="">
<div t-attf-class="dropdown-header o_menu_header_lvl_{{depth}}">
<span><t t-esc="menu.name"/></span>
</div>
<t t-foreach="menu.childrenTree" t-as="menu" t-key="menu.id">
<t t-call="spiffy.Menu.link"/>
</t>
</t>
</t>
<t t-inherit="web.NavBar.AppsMenu" t-inherit-mode="extension" owl="1">
<xpath expr="//Dropdown" position="replace">
<div class="o_navbar_apps_menu">
<t t-call="AllAppsMenus"/>
<div class="appdrawer_section">
<div class="top_navbar_section mb-3 mb-md-5">
<a class="close_fav_app_btn d-none">
<span class="ri ri-arrow-left-s-line"/>
</a>
</div>
<div class="container">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="ri ri-search-line"></i>
</span>
</div>
<input type="text" id="app_menu_search" class="form-control" placeholder="Search"/>
</div>
<div class="apps-list mt-3 mt-md-5">
<div class="row m-0">
<t t-foreach="menuService.getApps()" t-as="app" t-key="app.id">
<div class="app-box mb16">
<a role="menuitem" t-attf-href="#menu_id={{app.id}}" class="d-block o_app text-center text-center" t-att-data-menu-id="app.id" t-att-data-menu-xmlid="app.xmlID" t-att-data-action-id="app.actionID">
<div class="app-image mb8">
</div>
<div class="app-name">
<t t-esc="app.name" />
</div>
</a>
<div class="fav_app_select d-none ">
<span class="ri ri-check-line"/>
</div>
</div>
</t>
</div>
<div id="searched_main_apps" class="d-none flex-wrap"></div>
<div id="search_result"></div>
</div>
</div>
</div>
</div>
</xpath>
</t>
<t t-inherit="web.NavBar.SectionsMenu.Dropdown.MenuSlot" t-inherit-mode="extension" owl="1">
<!-- code commented for website module HTML editor and other link not working -->
<!-- <xpath expr="//t[@t-foreach='items']" position="replace">
<t t-foreach="items" t-as="item" t-key="item.id">
<a t-if="!item.childrenTree.length" role="menuitem" t-att-data-menu="item.id" t-att-data-action-id="item.actionID" t-attf-href="#menu_id={{item.id}}&amp;action_id={{item.actionID}}" t-att-data-menu-xmlid="item.xmlid" class="dropdown-item o_menu_entry_lvl_2" t-esc="item.name"/>
<t t-else="">
<div class="dropdown-header" t-esc="item.name" />
<a t-foreach="item.childrenTree" t-as="subItem" t-key="subItem.id" role="menuitem" t-att-data-menu="subItem.id" t-att-data-action-id="subItem.actionID" t-attf-href="#menu_id={{subItem.id}}&amp;action_id={{subItem.actionID}}" t-att-data-menu-xmlid="subItem.xmlid" class="dropdown-item o_menu_entry_lvl_2" t-esc="subItem.name"
/>
</t>
</t>
</xpath> -->
</t>
<t t-name="AllmenuRecursive" owl="1">
<li class="nav-item">
<t t-if="menu.childrenTree.length">
<p class="bg-muted">
<a class="d-flex align-items-center w-100" data-bs-toggle="collapse" t-attf-data-bs-target="#child_menu_{{menu.id}}" t-att-data-menu-xmlid="menu.xmlid">
<span><t t-esc="menu.name"/></span>
<span class="ri ri-arrow-right-s-line ms-auto"/>
</a>
</p>
</t>
<t t-else="">
<a t-att-data-menu="menu.id" t-attf-class="child_menus" t-attf-href="#menu_id={{menu.id}}&amp;action={{menu.actionID ? menu.actionID : ''}}" t-att-data-menu-xmlid="menu.xmlid" t-attf-data-action-id="{{menu.actionID ? menu.actionID : ''}}">
<span class="app_name">
<t t-esc="menu.name" />
</span>
</a>
</t>
<div t-attf-id="child_menu_{{menu.id}}" class="collapse" >
<ul t-if="menu.childrenTree.length" class="show">
<t t-foreach="menu.children" t-as="menuid" t-key="menuid">
<t t-set="menu" t-value="menuService.getMenuAsTree(menuid)"/>
<t t-call="AllmenuRecursive" />
</t>
</ul>
</div>
</li>
</t>
<t t-name="AllAppsMenus" owl="1">
<ul id="accordion">
<!-- <t t-if="currentApp"> -->
<t t-foreach="menuService.getApps()" t-as="menu" t-key="menu.name">
<t t-if="!menu.childrenTree.length">
<li>
<!-- t-attf-class="main_link {{currentApp.name == menu.name ? 'active':''}}" -->
<a t-attf-href="#menu_id={{menu.id}}&amp;action={{menu.actionID ? menu.actionID : ''}}"
t-att-data-menu="menu.id"
t-attf-data-action-model="{{menu.actionModel ? menu.actionModel : ''}}"
t-attf-data-action-id="{{menu.actionID ? menu.actionID : ''}}"
t-att-data-menu-xmlid="menu.xmlid" t-attf-class="main_link">
<span class="app_icon"></span>
<span>
<t t-esc="menu.name" />
</span>
</a>
</li>
</t>
<t t-else="">
<li>
<!-- t-attf-class="main_link {{currentApp.name == menu.name ? 'active':''}}" -->
<a t-attf-href="#menu_id={{menu.id}}&amp;action={{menu.actionID ? menu.actionID : ''}}" t-att-data-menu="menu.id"
t-attf-data-action-model="{{menu.actionModel ? menu.actionModel : ''}}"
t-attf-data-action-id="{{menu.actionID ? menu.actionID : ''}}"
t-att-data-menu-xmlid="menu.xmlid" t-attf-class="main_link dropdown-btn">
<span class="app_icon"></span>
<span>
<t t-esc="menu.name" />
</span>
<span class="ri ri-arrow-right-s-line ms-auto" />
</a>
<!-- <ul t-attf-class="{{currentApp.name == menu.name ? 'show':''}}"> -->
<ul t-attf-class="header-sub-menus">
<t t-set="parent_menu_id" t-value="menu.id" />
<t t-foreach="menu.children" t-as="menuid" t-key="menuid">
<t t-set="menu" t-value="menuService.getMenuAsTree(menuid)"/>
<t t-call="AllmenuRecursive">
</t>
</t>
</ul>
</li>
</t>
</t>
<!-- </t> -->
</ul>
</t>
<t t-inherit="web.BurgerMenu" t-inherit-mode="extension" owl="1">
<xpath expr="//button[hasclass('o_mobile_menu_toggle')]" position="attributes">
<attribute name="class" add="d-lg-none" remove="d-md-none" separator=" "/>
</xpath>
<xpath expr="//button[hasclass('o_mobile_menu_toggle')]/i[hasclass('oi')]" position="replace">
<i class="ri ri-menu-line align-middle"/>
</xpath>
</t>
</templates>

View File

@@ -0,0 +1,102 @@
<templates id="template" xml:space="preserve">
<t t-name="spiffy_theme_backend.icon_button">
<span t-attf-class="fa fa-#{icon} align-middle" t-att-title="label" />
<span class="d-none d-xl-inline" t-esc="label" />
</t>
<t t-name="spiffy_theme_backend.MenuStatusbarButtons">
<div class="dropdown">
<button
class="o_statusbar_buttons_dropdown btn btn-secondary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'cogs'" />
<t t-set="label">Quick actions</t>
</t>
</button>
</div>
</t>
<t t-extend="FormView.buttons">
<t t-jquery=".o_form_button_edit" t-operation="attributes">
<attribute name="accesskey">e</attribute>
</t>
<t t-jquery=".o_form_button_cancel" t-operation="attributes">
<attribute name="accesskey">d</attribute>
</t>
<t t-jquery=".o_form_button_edit" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'pencil'" />
<t t-set="label">Edit</t>
</t>
</t>
<t t-jquery=".o_form_button_create" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'plus'" />
<t t-set="label">Create</t>
</t>
</t>
<t t-jquery=".o_form_button_save" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'check'" />
<t t-set="label">Save</t>
</t>
</t>
<t t-jquery=".o_form_button_cancel" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'times'" />
<t t-set="label">Discard</t>
</t>
</t>
</t>
<t t-extend="KanbanView.buttons">
<t t-jquery="button" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'plus'" />
<t t-set="label" t-value="create_text || _t('Create')" />
</t>
</t>
</t>
<t t-extend="ListView.buttons">
<!-- Change "Discard" button hotkey to "D" -->
<t t-jquery=".o_list_button_discard" t-operation="attributes">
<attribute name="accesskey">d</attribute>
</t>
<t t-jquery=".o_list_button_add" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'plus'" />
<t t-set="label">Create</t>
</t>
</t>
<t t-jquery=".o_list_button_save" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'check'" />
<t t-set="label">Save</t>
</t>
</t>
<t t-jquery=".o_list_button_discard" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'times'" />
<t t-set="label">Discard</t>
</t>
</t>
<t t-jquery=".o_list_export_xlsx" t-operation="replace">
<button type="button" class="btn btn-secondary o_list_export_xlsx">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'download'" />
<t t-set="label">Export All</t>
</t>
</button>
</t>
</t>
<t t-extend="CalendarView.navigation_buttons">
<t t-jquery=".o_calendar_button_today" t-operation="inner">
<t t-call="spiffy_theme_backend.icon_button">
<t t-set="icon" t-value="'calendar-check-o'" />
<t t-set="label">Today</t>
</t>
</t>
</t>
</templates>

View File

@@ -0,0 +1,89 @@
<templates id="template" xml:space="preserve">
<!-- View Refresh -->
<t t-name="spiffy_theme_backend.view_refresher" t-inherit="web.Pager" t-inherit-mode="extension" owl="1">
<xpath expr="//span[hasclass('o_pager_counter')]" position="before">
<span class="btn-group">
<button type="button" class="reload_view btn btn-primary ri ri-refresh-line" t-on-click.stop="() => this.navigate(0)" />
</span>
</xpath>
</t>
<t t-name="FavoriteApps">
<div class="app-box">
<a role="menuitem" t-attf-href="#menu_id=#{app_id}" class="d-block o_app text-center text-center"
t-att-data-menu-id="app_id" t-att-data-menu-xmlid="app_xmlid" t-att-data-action-id="app_actionid" t-att-title="app_name">
<div class="app-image">
<t t-if="use_icon">
<t t-if="icon_class_name">
<span t-attf-class="ri #{icon_class_name}"/>
</t>
<t t-elif="icon_img">
<img class='img img-fluid o_image_64_max' t-attf-src='/web/image/ir.ui.menu/#{app_id}/icon_img' />
</t>
<t t-else="">
<t t-if="web_icon_ext == 'false'">
<img class='img img-fluid o_image_64_max' src='/spiffy_theme_backend/static/description/bizople-icon.png' />
</t>
<t t-elif="web_icon_ext === 'svg'">
<img class='img img-fluid o_image_64_max' t-attf-src='#{web_svg_src}' />
</t>
<t t-else="">
<img class='img img-fluid o_image_64_max' t-attf-src='data:image/png;base64,#{web_icon_data}' />
</t>
</t>
</t>
<t t-else="">
<t t-if="icon_img">
<img class='img img-fluid o_image_64_max' t-attf-src='/web/image/ir.ui.menu/#{app_id}/icon_img' />
</t>
<t t-else="">
<t t-if="web_icon_ext == 'false'">
<img class='img img-fluid o_image_64_max' src='/spiffy_theme_backend/static/description/bizople-icon.png' />
</t>
<t t-elif="web_icon_ext === 'svg'">
<img class='img img-fluid o_image_64_max' t-attf-src='#{web_svg_src}' />
</t>
<t t-else="">
<img class='img img-fluid o_image_64_max' t-attf-src='data:image/png;base64,#{web_icon_data}' />
</t>
</t>
</t>
</div>
</a>
</div>
</t>
<t t-name="SearchedApps">
<div class="app-box mb16">
<a role="menuitem" t-attf-href="#menu_id=#{app_id}" class="d-block o_app text-center text-center"
t-att-data-menu-id="app_id" t-att-data-menu-xmlid="app_xmlid" t-att-data-action-id="app_actionid">
<div class="app-image mb8">
</div>
<div class="app-name">
<t t-esc="app_name" />
</div>
</a>
<div class="fav_app_select d-none">
<span class="ri ri-check-line"/>
</div>
</div>
</t>
<t t-name="Searchedlang">
<div class="dispalay_lang">
<div role="button" t-att-lang="lang_code" class="d-block biz_lang_btn">
<div t-attf-class="lang-name #{lang_code == active_lang ? 'active':''}">
<t t-esc="lang_name" />
</div>
</div>
</div>
</t>
<t t-name="MblStatusbarDropdownBtns">
<div class="dropdown">
<button class="mbl_statusbar_dropdown_btn btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
<span class="ri ri-list-settings-line"/>
</button>
</div>
</t>
</templates>