# Как применить отредактированный Дашборд для всех и навсегда?

**URL:** <https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119>\
**Category:** Кастомизация\
**Created:** [26.Февраль.2015 12:16:55 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119 "2015-02-26T12:16:55Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Evgenij\_Glavatskih](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/e/bc79bd/32.png) [@Evgenij\_Glavatskih](https://community.itop-itsm.ru/u/Evgenij_Glavatskih)\
**Post date:** [26.Февраль.2015 12:16:56 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/1 "2015-02-26T12:16:56Z")

</div>

Расставил все блоки и таблички по феншую, но хотелось бы чтоб он был теперь вместо стандартного для всех. Каждый раз делать Импорт каждому пользователю не вариант. Где-то натыкался где и какой конфиг нужно править, но теперь найти не могу. Может ткнете где его менять?

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [05.Март.2015 21:23:11 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/2 "2015-03-05T21:23:11Z")

</div>

Посмотри тип DashboardMenuNode здесь:  
[https://wiki.openitop.org/doku.php?id=2\_1\_0:customization:xml\_reference#menus](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-файл.

---

<div class="post-metadata">

**Author:** ![igsao10](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/igsao10/32/102_2.png) [@igsao10](https://community.itop-itsm.ru/u/igsao10)\
**Post date:** [28.Март.2015 12:30:49 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/3 "2015-03-28T12:30:49Z")

</div>

Так получилось или нет? этот вопрос меня тоже интересует

---

<div class="post-metadata">

**Author:** ![sv16](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@sv16](https://community.itop-itsm.ru/u/sv16)\
**Post date:** [17.Апрель.2015 12:08:55 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/4 "2015-04-17T12:08:55Z")

</div>

Пытался создать свой модуль( в extensions) модуль получилось создать, а вот когда дорисовываешь новую менюшку ругается, что не знает что такое WelcomeMenuPage.  
Как правильно прописать родительские менюшки/модули?

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [18.Апрель.2015 16:07:30 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/5 "2015-04-18T16:07:30Z")

</div>

@sv16, код модуля и текст ошибки выложи.

---

<div class="post-metadata">

**Author:** ![sv16](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@sv16](https://community.itop-itsm.ru/u/sv16)\
**Post date:** [21.Апрель.2015 09:28:08 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/6 "2015-04-21T09:28:08Z")

</div>

С ошибками вроде разобрался.  
Менюшки вставил в код.  
Теперь менюшки не отображаются у пользователей.

```
     <?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>&#x41D;&#x43E;&#x432;&#x44B;&#x435; &#x43E;&#x431;&#x440;&#x430;&#x449;&#x435;&#x43D;&#x438;&#x44F;</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>&#x41E;&#x431;&#x440;&#x430;&#x449;&#x435;&#x43D;&#x438;&#x44F; &#x43F;&#x440;&#x438;&#x43D;&#x44F;&#x442;&#x44B;&#x435; &#x432; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x443;</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>
```

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [22.Апрель.2015 21:17:52 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/7 "2015-04-22T21:17:52Z")

</div>

> [@sv16](#):
>
> Теперь менюшки не отображаются у пользователей.

Раньше отображались? Где они их ищут?

---

<div class="post-metadata">

**Author:** ![sv16](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@sv16](https://community.itop-itsm.ru/u/sv16)\
**Post date:** [23.Апрель.2015 08:51:59 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/8 "2015-04-23T08:51:59Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [23.Апрель.2015 09:40:18 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/9 "2015-04-23T09:40:18Z")

</div>

Либо у меня проблемы с пониманием, либо у тебя с объяснением)  
Давай ещё раз. Что и куда ты хочешь добавить, какой конечный результат нужен?

Твой код меню почти верный, у меня работает, пункт **HDMenu** появляется.

---

<div class="post-metadata">

**Author:** ![sv16](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@sv16](https://community.itop-itsm.ru/u/sv16)\
**Post date:** [23.Апрель.2015 10:51:36 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/10 "2015-04-23T10:51:36Z")

</div>

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

У меня меня пункт HDMenu не появился. Все делал по инструкции(Папку с модулем положил в itop/extensions, после чего запустил setup, отменил свой модуль и обновил конфигурацию)

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [23.Апрель.2015 13:03:41 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/11 "2015-04-23T13:03:41Z")

</div>

Где ты его ищешь?

> [@sv16](#):
>
> \<parent\>ServiceManagement\</parent\>

Эта строка задаёт родительский пункт меню, в данном случае **Управление услугами**.

![](https://community.itop-itsm.ru/uploads/default/27/c787ebfc3394b536.png)

И доступен этот пункт будет только пользователям с ролью Service Manager.

---

<div class="post-metadata">

**Author:** ![sv16](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@sv16](https://community.itop-itsm.ru/u/sv16)\
**Post date:** [23.Апрель.2015 13:43:43 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/12 "2015-04-23T13:43:43Z")

</div>

ни в одном меню ни под каким пользователем HDMenu не появляется (

---

<div class="post-metadata">

**Author:** ![sv16](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@sv16](https://community.itop-itsm.ru/u/sv16)\
**Post date:** [23.Апрель.2015 13:48:24 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/13 "2015-04-23T13:48:24Z")

</div>

может проблема в 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
		),
	)
);

?>
```

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [23.Апрель.2015 14:52:05 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/14 "2015-04-23T14:52:05Z")

</div>

Попробуй этот [https://github.com/vbkunin/add-new-menu-item-for-itop](https://github.com/vbkunin/add-new-menu-item-for-itop).

---

<div class="post-metadata">

**Author:** ![sv16](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@sv16](https://community.itop-itsm.ru/u/sv16)\
**Post date:** [27.Апрель.2015 14:10:24 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/15 "2015-04-27T14:10:24Z")

</div>

Может кому-то пригодится…  
Решение моей проблемы: Под линуксом нельзя использовать заглавные буквы в названиях создаваемых модулей.  
В боевой папке создается model.HD.php а в конфиге прописывается model.hd.php  
, при этом в тестовой среде все нормально.

---

<div class="post-metadata">

**Author:** ![sv16](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@sv16](https://community.itop-itsm.ru/u/sv16)\
**Post date:** [30.Апрель.2015 08:48:14 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/16 "2015-04-30T08:48:14Z")

</div>

Если работаете с другими модулями в module.хххххх.php обязательно надо заполнять раздел

```
 'dependencies' => array( 						
		),
```

---

<div class="post-metadata">

**Author:** ![igsao10](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/igsao10/32/102_2.png) [@igsao10](https://community.itop-itsm.ru/u/igsao10)\
**Post date:** [03.Август.2015 05:58:13 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/17 "2015-08-03T05:58:13Z")

</div>

Друзья!  
Нашел более быстрый и простой способ, как применить один дашбоард на всех пользователей!  
Как я делал:

```
1.Под своим пользователем построил себе нужный дашбоард со всеми значками и графиками.
2.Далее захожу в базу данных, нахожу таблицу priv_app_dashboards
3.Копирую данные из столбца contents моего пользователя по user_id. и вставляю в столбцы других пользователей.
4.Если нужного пользователя нет, то инсертим новую строку. user_id пользователя берем из таблицы priv_user

```

и теперь у всех пользователей, будет один дашбоард

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [09.Август.2015 16:19:31 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/18 "2015-08-09T16:19:31Z")

</div>

Ручная правка базы данных – дело небезопасное. Не известно как поведут себя твои правки, если разработчики при очередном обновлении решат изменить структуру таблиц.  
В iTop есть отличный инструмент разработки дополнений, обратная совместимость которых обеспечивается при обновлении. В сообщении 2 написано, как им воспользоваться. В этом случае новый дашборд становится стандартным, пользователь может его изменить, а затем отменить изменения. В случае же с правкой базы, отменив изменения, пользователь получит стандартный дашборд, а не тот, который вы настроили ему в базе.

---

<div class="post-metadata">

**Author:** ![Epic](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/e/e274bd/32.png) [@Epic](https://community.itop-itsm.ru/u/Epic)\
**Post date:** [12.Апрель.2018 12:21:22 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/19 "2018-04-12T12:21:22Z")

</div>

Привет, вы знаете как создать новую MenuGroup? Я создал новый модуль с 2 файлами:

1. “datamodel.add-button.xml” с кодом:

> 90 1 NewRequestManagement

1. “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. Но новое меню не создалось.  
> В чем проблема?

---

<div class="post-metadata">

**Author:** ![Epic](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/e/e274bd/32.png) [@Epic](https://community.itop-itsm.ru/u/Epic)\
**Post date:** [12.Апрель.2018 12:37:49 UTC](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119/20 "2018-04-12T12:37:49Z")

</div>

Не правильно отобразился код 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\>  
\*\*\*\*Открывающие скобки в коде есть, здесь на правильно)

[Следующая страница](https://community.itop-itsm.ru/t/kak-primenit-otredaktirovannyj-dashbord-dlya-vseh-i-navsegda/119.md?page=2)
