Расставил все блоки и таблички по феншую, но хотелось бы чтоб он был теперь вместо стандартного для всех. Каждый раз делать Импорт каждому пользователю не вариант. Где-то натыкался где и какой конфиг нужно править, но теперь найти не могу. Может ткнете где его менять?
Посмотри тип DashboardMenuNode здесь:
https://wiki.openitop.org/doku.php?id=2_1_0:customization:xml_reference#menus
Предполагаю, что можно экспортом вытащить настроенный дашборд, а затем в своем модуле переопределить <menu id="WelcomeMenuPage" xsi:type="DashboardMenuNode" _delta="redefine">
, указав в теге <definition_file>
экспортированный xml-файл.
Так получилось или нет? этот вопрос меня тоже интересует
Пытался создать свой модуль( в extensions) модуль получилось создать, а вот когда дорисовываешь новую менюшку ругается, что не знает что такое WelcomeMenuPage.
Как правильно прописать родительские менюшки/модули?
С ошибками вроде разобрался.
Менюшки вставил в код.
Теперь менюшки не отображаются у пользователей.
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<constants>
</constants>
<classes>
</classes>
<menus>
<menu id="HDMenu" xsi:type="DashboardMenuNode" _delta="define">
<rank>0</rank>
<parent>ServiceManagement</parent>
<definition>
<layout>DashboardLayoutOneCol</layout>
<title/>
<auto_reload>
<enabled>true</enabled>
<interval>60</interval>
</auto_reload>
<cells>
<cell id="0">
<rank>0</rank>
<dashlets>
<dashlet id="8" xsi:type="DashletObjectList">
<rank>0</rank>
<title>Новые обращения</title>
<query>SELECT UserRequest WHERE status = 'new' OR agent_id=0</query>
<menu>false</menu>
</dashlet>
</dashlets>
</cell>
<cell id="1">
<rank>1</rank>
<dashlets>
<dashlet id="9" xsi:type="DashletObjectList">
<rank>0</rank>
<title>Обращения принятые в работу</title>
<query>SELECT UserRequest WHERE agent_id!=0 AND status NOT IN ('closed', '')</query>
<menu>false</menu>
</dashlet>
</dashlets>
</cell>
</cells>
</definition>
</menu>
</menus>
<user_rights>
<groups>
</groups>
<profiles>
</profiles>
</user_rights>
</itop_design>
Раньше отображались? Где они их ищут?
Я неправильно выразился.
Все, что раньше отображалось и сейчас отображается.
А те менюшки, которые я дорисовал в новом модуле не отображаются
Либо у меня проблемы с пониманием, либо у тебя с объяснением)
Давай ещё раз. Что и куда ты хочешь добавить, какой конечный результат нужен?
Твой код меню почти верный, у меня работает, пункт HDMenu появляется.
Хочу сделать отдельный пункт меню с моими дашлетами, которые бы отображались у всех пользователей по умолчанию( без импорта).
У меня меня пункт HDMenu не появился. Все делал по инструкции(Папку с модулем положил в itop/extensions, после чего запустил setup, отменил свой модуль и обновил конфигурацию)
Где ты его ищешь?
Эта строка задаёт родительский пункт меню, в данном случае Управление услугами.
И доступен этот пункт будет только пользователям с ролью Service Manager.
ни в одном меню ни под каким пользователем HDMenu не появляется (
может проблема в module.hd.php ?
<?php
//
// iTop module definition file
//
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'HD/',
array(
// Identification
//
'label' => 'REQUEST MANAGER UI',
'category' => 'business',
// Setup
//
'dependencies' => array(
),
'mandatory' => false,
'visible' => true,
// Components
//
'datamodel' => array(
'model.hd.php'
),
'webservice' => array(
),
'data.struct' => array(
// add your 'structure' definition XML files here,
),
'data.sample' => array(
// add your sample data XML files here,
),
// Documentation
//
'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any
'doc.more_information' => '', // hyperlink to more information, if any
// Default settings
//
'settings' => array(
// Module specific settings go here, if any
),
)
);
?>
Может кому-то пригодится…
Решение моей проблемы: Под линуксом нельзя использовать заглавные буквы в названиях создаваемых модулей.
В боевой папке создается model.HD.php а в конфиге прописывается model.hd.php
, при этом в тестовой среде все нормально.
Если работаете с другими модулями в module.хххххх.php обязательно надо заполнять раздел
'dependencies' => array(
),
Друзья!
Нашел более быстрый и простой способ, как применить один дашбоард на всех пользователей!
Как я делал:
1.Под своим пользователем построил себе нужный дашбоард со всеми значками и графиками.
2.Далее захожу в базу данных, нахожу таблицу priv_app_dashboards
3.Копирую данные из столбца contents моего пользователя по user_id. и вставляю в столбцы других пользователей.
4.Если нужного пользователя нет, то инсертим новую строку. user_id пользователя берем из таблицы priv_user
и теперь у всех пользователей, будет один дашбоард
Ручная правка базы данных – дело небезопасное. Не известно как поведут себя твои правки, если разработчики при очередном обновлении решат изменить структуру таблиц.
В iTop есть отличный инструмент разработки дополнений, обратная совместимость которых обеспечивается при обновлении. В сообщении 2 написано, как им воспользоваться. В этом случае новый дашборд становится стандартным, пользователь может его изменить, а затем отменить изменения. В случае же с правкой базы, отменив изменения, пользователь получит стандартный дашборд, а не тот, который вы настроили ему в базе.
Привет, вы знаете как создать новую MenuGroup? Я создал новый модуль с 2 файлами:
- “datamodel.add-button.xml” с кодом:
90 1 NewRequestManagement
- “en.dict.add-button.php” с кодом:
Dict::Add(‘EN US’, ‘English’, ‘English’, array(
‘Menu:NewRequestManagement’ => ‘New Requests’,
‘Menu:NewRequestManagement+’ => ‘New Requests’,
‘Menu:NewMyRequests’ => ‘New My Requests’,
‘Menu:NewMyRequests+’ => ‘New My Requests’,
Плюс положил в папку модуля файлы module и model. Но новое меню не создалось.
В чем проблема?
Не правильно отобразился код 1-ого файла, он такой:
menus>
menu id=“NewRequestManagement” xsi:type=“MenuGroup” _delta=“define”>
rank>90 /rank>
enable_stimulus/>
/menu>
menu id=“NewMyRequests” xsi:type=“OQLMenuNode” _delta=“define”>
rank>1 /rank>
parent>NewRequestManagement /parent>
oql>![CDATA[SELECT UserRequest WHERE agent_id = :current_contact_id AND status NOT IN (“closed”,“resolved”)]] /oql>
menu>
/menus>
****Открывающие скобки в коде есть, здесь на правильно)