Użytkownik przyzwyczajony jest zazwyczaj, że po instalacji nowego modułu pojawi się menu związane z nową funkcjonalnością, która wykorzystuje właśnie nasz nowy moduł.
Przed dystrybucją takiego modułu, programista musi zadbać o poprawnie skonfigurowane menu.
W tym poście przedstawię sposób budowania menu od strony użytkownika. W kolejnych postach będę po kolei przedstawiał informacje, które będą tworzyły menu dla konfiguracji takiego modułu.
Gdy programista staje przed koniecznością utworzenia menu w OpenERP dla napisanego modułu, staje przed koniecznością stworzenia dwóch typów elementów:
menuitem - element menu mający bezpośredni skutek w samym menu OpenERP,
record - element odwołujący się do modelu ir.action.act_window, tworzący akcję, która "mówi" co OpenERP ma wyświetlić, gdy zostanie kliknięte menuitem odwołujące się do danej akcji.
W chwili obecnej może wydawać się to trochę zawiłe ale myślę, że przedstawiony przykład powinien rozwiać te obawy.
Niech nasz przykładowy moduł nazywa się "Students" i chcielibyśmy, żeby był dostępny poprzez przejście przez menu Sales -> After Sale Services -> Students.
Kilka uwag:
A. Menu Sales instalowane jest domyślnie dla modułów CRM i/lub Sales
B. Menu After Sale Services domyślnie instalowane jest przez moduł crm_helpdesk
C. Menu Students jest elementem "aktywnym" odwołującym się do widoku tree naszego modułu - innymi słowy - kliknięcie w pozycję Students - umożliwia pracę z naszym nowo powstałym modułem.
Cały nasz kod związany z obsługą menu w pliku xml modułu wygląda tak:
<menuitem id="menu_sprzedaz" name="Sales" /> <menuitem id="menu_after_sale_services" name="After Sale Services" parent="menu_sprzedaz" />; <menuitem id="menu_students" name="Students" parent="menu_after_sale_services" />;
Pierwsza linia odwołuje się do menu najwyższego poziomu- Sales. Dla naszego menu jest to root menu. Pytanie jakie nasuwa się w tym miejscu - skąd programista ma wiedzieć jakie nazwy (atrybut name) są przypisane do menu głównego?
Odpowiedź jest bardzo prosta - należy spojrzeć w katalogu Addons na źródła głównego modułu dla menu (w tym przypadku Sales lub crm). W tych plikach konfiguracyjnych odnajdziemy prawidłową nazwę root menu.
W drugiej linii w naszym testowym przypadku podmenu After Sale Services pochodzi już z modułu crm_heldpesk i tam należy odszukać definicję tego menu (prawidłowy parametr name) .
Każde menu bez podpiętej akcji pod to menu jest "nieklikalne". Oznacza to, że możemy rozwijać daną podgałąź ale do niej samej nie jest podpięta żadna czynność wyświetlenia listy elementów.