Как убрать меню действий «Экспорт»?

Я хотел бы удалить «Экспорт» в меню действий в Odoo 14 Community Edition.

Я хочу удалить его для всех представлений сразу, если это возможно; в противном случае, по одному для каждой требуемой модели или вида было бы хорошо.

Я пытался:

<xpath expr = "//tree" position = "attributes">
  <attribute name = "export_xlsx">false</attribute>
</xpath>

в индивидуальной модели. Не работает.

Также попытался перезаписать боковую панель в javascript. Не работает.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
51
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Odoo покажет опцию Export только в том случае, если пользователь принадлежит к группе Доступ к функции экспорта.

Чтобы скрыть опцию экспорта, просто удалите пользователя из списка

Переопределение меню действий (ранее называвшегося боковой панелью) или контроллера списка сделает группу экспорта устаревшей.

У вас есть решение без удаления пользователя из группы, потому что мне нужна группа, но я не хочу, чтобы пользователь видел эту опцию?

holydragon 25.07.2023 17:05

Вы можете переопределить _getActionMenuItems, как вы это сделали, но перед вызовом super установите isExportEnable на false, чтобы Odoo не добавлял параметр Export к другим элементам действия.

Kenly 26.07.2023 09:36

Итак, обновленная часть от aekis.dev — моя лучшая версия, верно?

holydragon 26.07.2023 09:40
Ответ принят как подходящий

Сделайте это, используя этот код js

odoo.define('disable_export', function (require) {
"use strict";

const ListView = require('web.ListView');
const ListController = require('web.ListController');

ListView.include({
  init: function (viewInfo, params) {
    this._super.apply(this, arguments);
    this.controllerParams.activeActions.export_xlsx = false;
  }
})

ListController.include({
  _getActionMenuItems: function (state) {
    this.isExportEnable = false;
    return this._super.apply(this, arguments);
  }
})

})

Я попробовал ваш код как есть. Кнопка «Экспорт» в меню действий все еще отображается.

holydragon 26.07.2023 04:45

извините за задержку, я обновил свой ответ уже протестированной рабочей частью. Я вижу, что вы нашли похожее решение

aekis.dev 26.07.2023 08:33

Наконец-то я нашел решение этой проблемы.

odoo.define('remove_export_button', function (require) {
  "use strict";
  
  var core = require('web.core');
  var ListController = require('web.ListController');
  ListController.include({
    /**
     * @override
     * @private
     */
    _getActionMenuItems: function (state) {
      let actionMenus = this._super.apply(this, arguments);
      if (actionMenus?.items){
        actionMenus.items.other = actionMenus?.items?.other.filter(menu => menu.description !== 'Export');
      }
      return actionMenus;
    },
  });
});

Это работает для всех представлений одновременно.

Другие вопросы по теме

Похожие вопросы

Ответный запрос. Как получить ответ на запрос? Я получаю только после второй отправки
Next.js 13 Группировка маршрутов каталога приложений выдает «Несоответствующий путь (), предоставленный для / (общедоступного)»
Перетаскивание, ввод с помощью мыши срабатывает на другом элементе
Ошибка запуска сеанса PHP
Как запустить 60-секундный таймер обратного отсчета или открыть countdown.php, когда новые данные вставляются в базу данных, и я использую отображение данных в реальном времени?
Как получить ключ объекта, если его значение совпало с нашей переменной в JavaScript?
Я пытаюсь проверить, находится ли каждый элемент одного массива в другом массиве
TypeError: не удается прочитать свойства undefined (чтение «заголовков») с помощью нового маршрутизатора приложений next.js
Получение неопределенных данных и ошибка «Данные запроса не могут быть неопределенными»
Фильтровать массив объектов на основе другого массива объектов