Merge remote-tracking branch 'origin/develop' into feature/4517-from-dev

# Conflicts:
#	CONTRIBUTING.md
#	composer.lock
#	core/designdocument.class.inc.php
#	lib/composer/installed.json
#	lib/composer/installed.php
This commit is contained in:
Molkobain
2022-07-28 10:30:25 +02:00
246 changed files with 19028 additions and 20326 deletions

View File

@@ -1,13 +1,13 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2013 XXXXX
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'CAS:Error:UserNotAllowed' => 'Użytkownik niedozwolony',
'CAS:Login:SignIn' => 'Zaloguj się za pomocą CAS',
'CAS:Login:SignInTooltip' => 'Kliknij tutaj, aby uwierzytelnić się na serwerze CAS',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2013 XXXXX
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'CAS:Error:UserNotAllowed' => 'Użytkownik niedozwolony',
'CAS:Login:SignIn' => 'Zaloguj się za pomocą CAS',
'CAS:Login:SignInTooltip' => 'Kliknij tutaj, aby uwierzytelnić się na serwerze CAS',
));

View File

@@ -1,41 +1,41 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserLDAP
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:UserLDAP' => 'Użytkownik LDAP',
'Class:UserLDAP+' => 'Użytkownik uwierzytelniony przez LDAP',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserLDAP
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:UserLDAP' => 'Użytkownik LDAP',
'Class:UserLDAP+' => 'Użytkownik uwierzytelniony przez LDAP',
));

View File

@@ -1,294 +1,294 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ChangeManagement' => 'Zarządzanie zmianami',
'Menu:Change:Overview' => 'Przegląd',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => 'Nowa zmiana',
'Menu:NewChange+' => 'Utwórz nowe zgłoszenie zmiany',
'Menu:SearchChanges' => 'Szukaj zmian',
'Menu:SearchChanges+' => 'Szukaj zgłoszeń zmian',
'Menu:Change:Shortcuts' => 'Skróty',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => 'Zmiany do akceptacji',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => 'Zmiany do zatwierdzenia',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => 'Otwarte zmiany',
'Menu:Changes+' => 'Wszystkie otwarte zmiany',
'Menu:MyChanges' => 'Zmiany przypisane do mnie',
'Menu:MyChanges+' => 'Zmiany przypisane do mnie (jako Agent)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Zmiany według kategorii w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-Last-7-days' => 'Liczba zmian w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Zmiany według domeny w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Zmiany według statusu z ostatnich 7 dni',
'Tickets:Related:OpenChanges' => 'Otwarte zmiany',
'Tickets:Related:RecentChanges' => 'Ostatnie zmiany (72h)',
));
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Change
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Change' => 'Zmiana',
'Class:Change+' => '',
'Class:Change/Attribute:status' => 'Status',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:new' => 'Nowa',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:validated' => 'Sprawdzona',
'Class:Change/Attribute:status/Value:validated+' => '',
'Class:Change/Attribute:status/Value:rejected' => 'Odrzucona',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:assigned' => 'Przydzielona',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:plannedscheduled' => 'Planowana i odłożona',
'Class:Change/Attribute:status/Value:plannedscheduled+' => '',
'Class:Change/Attribute:status/Value:approved' => 'Zatwierdzona',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:notapproved' => 'Nie zatwierdzona',
'Class:Change/Attribute:status/Value:notapproved+' => '',
'Class:Change/Attribute:status/Value:implemented' => 'Wdrożona',
'Class:Change/Attribute:status/Value:implemented+' => '',
'Class:Change/Attribute:status/Value:monitored' => 'Monitorowana',
'Class:Change/Attribute:status/Value:monitored+' => '',
'Class:Change/Attribute:status/Value:closed' => 'Zamknięta',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:reason' => 'Powód odrzucenia',
'Class:Change/Attribute:reason+' => '',
'Class:Change/Attribute:requestor_id' => 'Zgłaszający',
'Class:Change/Attribute:requestor_id+' => '',
'Class:Change/Attribute:requestor_email' => 'E-mail zgłaszającego',
'Class:Change/Attribute:requestor_email+' => '',
'Class:Change/Attribute:creation_date' => 'Data utworzenia',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:impact' => 'Wpływ',
'Class:Change/Attribute:impact+' => '',
'Class:Change/Attribute:supervisor_group_id' => 'Zespół nadzorujący',
'Class:Change/Attribute:supervisor_group_id+' => '',
'Class:Change/Attribute:supervisor_group_name' => 'Nazwa zespołu nadzorującego',
'Class:Change/Attribute:supervisor_group_name+' => '',
'Class:Change/Attribute:supervisor_id' => 'Kierownik',
'Class:Change/Attribute:supervisor_id+' => '',
'Class:Change/Attribute:supervisor_email' => 'E-mail kierownika',
'Class:Change/Attribute:supervisor_email+' => '',
'Class:Change/Attribute:manager_group_id' => 'Zespół menedżerów',
'Class:Change/Attribute:manager_group_id+' => '',
'Class:Change/Attribute:manager_group_name' => 'Nazwa zespołu menedżerskiego',
'Class:Change/Attribute:manager_group_name+' => '',
'Class:Change/Attribute:manager_id' => 'Menedżer',
'Class:Change/Attribute:manager_id+' => '',
'Class:Change/Attribute:manager_email' => 'E-mail menedżera',
'Class:Change/Attribute:manager_email+' => '',
'Class:Change/Attribute:outage' => 'Awaria',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => 'Nie',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => 'Tak',
'Class:Change/Attribute:outage/Value:yes+' => '',
'Class:Change/Attribute:fallback' => 'Plan awaryjny',
'Class:Change/Attribute:fallback+' => '',
'Class:Change/Attribute:parent_id' => 'Zmiana źródłowa',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_name' => 'Zmiana źródłowa',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:related_request_list' => 'Powiązane wnioski',
'Class:Change/Attribute:related_request_list+' => 'Wszystkie prośby użytkowników powiązane z tą zmianą',
'Class:Change/Attribute:related_problems_list' => 'Powiązane problemy',
'Class:Change/Attribute:related_problems_list+' => 'Wszystkie problemy związane z tą zmianą',
'Class:Change/Attribute:related_incident_list' => 'Powiązane incydenty',
'Class:Change/Attribute:related_incident_list+' => 'Wszystkie incydenty związane z tą zmianą',
'Class:Change/Attribute:child_changes_list' => 'Zmiany zależne',
'Class:Change/Attribute:child_changes_list+' => 'Wszystkie zmiany podrzędne powiązane z tą zmianą',
'Class:Change/Attribute:parent_id_friendlyname' => 'Przyjazna nazwa zmiany źródłowej',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Attribute:parent_id_finalclass_recall' => 'Typ zmiany',
'Class:Change/Attribute:parent_id_finalclass_recall+' => '',
'Class:Change/Stimulus:ev_validate' => 'Sprawdzona',
'Class:Change/Stimulus:ev_validate+' => '',
'Class:Change/Stimulus:ev_reject' => 'Odrzucona',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_assign' => 'Przydzielona',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_reopen' => 'Wznowiona',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_plan' => 'Zaplanowana',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_approve' => 'Zatwierdona',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_replan' => 'Przeplanowana',
'Class:Change/Stimulus:ev_replan+' => '',
'Class:Change/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:Change/Stimulus:ev_notapprove+' => '',
'Class:Change/Stimulus:ev_implement' => 'Wdrożona',
'Class:Change/Stimulus:ev_implement+' => '',
'Class:Change/Stimulus:ev_monitor' => 'Monitorowana',
'Class:Change/Stimulus:ev_monitor+' => '',
'Class:Change/Stimulus:ev_finish' => 'Zakończona',
'Class:Change/Stimulus:ev_finish+' => '',
));
//
// Class: RoutineChange
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:RoutineChange' => 'Rutynowa zmiana',
'Class:RoutineChange+' => '',
'Class:RoutineChange/Stimulus:ev_validate' => 'Sprawdzona',
'Class:RoutineChange/Stimulus:ev_validate+' => '',
'Class:RoutineChange/Stimulus:ev_reject' => 'Odrzucona',
'Class:RoutineChange/Stimulus:ev_reject+' => '',
'Class:RoutineChange/Stimulus:ev_assign' => 'Przydzielona',
'Class:RoutineChange/Stimulus:ev_assign+' => '',
'Class:RoutineChange/Stimulus:ev_reopen' => 'Wznowiona',
'Class:RoutineChange/Stimulus:ev_reopen+' => '',
'Class:RoutineChange/Stimulus:ev_plan' => 'Planowana',
'Class:RoutineChange/Stimulus:ev_plan+' => '',
'Class:RoutineChange/Stimulus:ev_approve' => 'Zatwierdzona',
'Class:RoutineChange/Stimulus:ev_approve+' => '',
'Class:RoutineChange/Stimulus:ev_replan' => 'Przeplanowana',
'Class:RoutineChange/Stimulus:ev_replan+' => '',
'Class:RoutineChange/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:RoutineChange/Stimulus:ev_notapprove+' => '',
'Class:RoutineChange/Stimulus:ev_implement' => 'Wdrożona',
'Class:RoutineChange/Stimulus:ev_implement+' => '',
'Class:RoutineChange/Stimulus:ev_monitor' => 'Monitorowana',
'Class:RoutineChange/Stimulus:ev_monitor+' => '',
'Class:RoutineChange/Stimulus:ev_finish' => 'Zakończona',
'Class:RoutineChange/Stimulus:ev_finish+' => '',
));
//
// Class: ApprovedChange
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ApprovedChange' => 'Zatwierdzone zmiany',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_date' => 'Data zatwierdzenia',
'Class:ApprovedChange/Attribute:approval_date+' => '',
'Class:ApprovedChange/Attribute:approval_comment' => 'Komentarz do zatwierdzenia',
'Class:ApprovedChange/Attribute:approval_comment+' => '',
'Class:ApprovedChange/Stimulus:ev_validate' => 'Sprawdzona',
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
'Class:ApprovedChange/Stimulus:ev_reject' => 'Odrzucona',
'Class:ApprovedChange/Stimulus:ev_reject+' => '',
'Class:ApprovedChange/Stimulus:ev_assign' => 'Przydzielona',
'Class:ApprovedChange/Stimulus:ev_assign+' => '',
'Class:ApprovedChange/Stimulus:ev_reopen' => 'Wznowiona',
'Class:ApprovedChange/Stimulus:ev_reopen+' => '',
'Class:ApprovedChange/Stimulus:ev_plan' => 'Planowana',
'Class:ApprovedChange/Stimulus:ev_plan+' => '',
'Class:ApprovedChange/Stimulus:ev_approve' => 'Zatwierdzona',
'Class:ApprovedChange/Stimulus:ev_approve+' => '',
'Class:ApprovedChange/Stimulus:ev_replan' => 'Przeplanowana',
'Class:ApprovedChange/Stimulus:ev_replan+' => '',
'Class:ApprovedChange/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '',
'Class:ApprovedChange/Stimulus:ev_implement' => 'Wdrożona',
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
'Class:ApprovedChange/Stimulus:ev_monitor' => 'Monitorowana',
'Class:ApprovedChange/Stimulus:ev_monitor+' => '',
'Class:ApprovedChange/Stimulus:ev_finish' => 'Zakończona',
'Class:ApprovedChange/Stimulus:ev_finish+' => '',
));
//
// Class: NormalChange
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:NormalChange' => 'Normalna zmiana',
'Class:NormalChange+' => '',
'Class:NormalChange/Attribute:acceptance_date' => 'Data akceptacji',
'Class:NormalChange/Attribute:acceptance_date+' => '',
'Class:NormalChange/Attribute:acceptance_comment' => 'Komentarz dotyczący akceptacji',
'Class:NormalChange/Attribute:acceptance_comment+' => '',
'Class:NormalChange/Stimulus:ev_validate' => 'Sprawdzona',
'Class:NormalChange/Stimulus:ev_validate+' => '',
'Class:NormalChange/Stimulus:ev_reject' => 'Odrzucona',
'Class:NormalChange/Stimulus:ev_reject+' => '',
'Class:NormalChange/Stimulus:ev_assign' => 'Przydzielona',
'Class:NormalChange/Stimulus:ev_assign+' => '',
'Class:NormalChange/Stimulus:ev_reopen' => 'Wznowiona',
'Class:NormalChange/Stimulus:ev_reopen+' => '',
'Class:NormalChange/Stimulus:ev_plan' => 'Planowana',
'Class:NormalChange/Stimulus:ev_plan+' => '',
'Class:NormalChange/Stimulus:ev_approve' => 'Zatwierdzona',
'Class:NormalChange/Stimulus:ev_approve+' => '',
'Class:NormalChange/Stimulus:ev_replan' => 'Przeplanowana',
'Class:NormalChange/Stimulus:ev_replan+' => '',
'Class:NormalChange/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:NormalChange/Stimulus:ev_notapprove+' => '',
'Class:NormalChange/Stimulus:ev_implement' => 'Wdrożona',
'Class:NormalChange/Stimulus:ev_implement+' => '',
'Class:NormalChange/Stimulus:ev_monitor' => 'Monitorowana',
'Class:NormalChange/Stimulus:ev_monitor+' => '',
'Class:NormalChange/Stimulus:ev_finish' => 'Zakończona',
'Class:NormalChange/Stimulus:ev_finish+' => '',
));
//
// Class: EmergencyChange
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:EmergencyChange' => 'Awaryjna zmiana',
'Class:EmergencyChange+' => '',
'Class:EmergencyChange/Stimulus:ev_validate' => 'Sprawdzona',
'Class:EmergencyChange/Stimulus:ev_validate+' => '',
'Class:EmergencyChange/Stimulus:ev_reject' => 'Odrzucona',
'Class:EmergencyChange/Stimulus:ev_reject+' => '',
'Class:EmergencyChange/Stimulus:ev_assign' => 'Przydzielona',
'Class:EmergencyChange/Stimulus:ev_assign+' => '',
'Class:EmergencyChange/Stimulus:ev_reopen' => 'Wznowiona',
'Class:EmergencyChange/Stimulus:ev_reopen+' => '',
'Class:EmergencyChange/Stimulus:ev_plan' => 'Planowana',
'Class:EmergencyChange/Stimulus:ev_plan+' => '',
'Class:EmergencyChange/Stimulus:ev_approve' => 'Zatwierdzona',
'Class:EmergencyChange/Stimulus:ev_approve+' => '',
'Class:EmergencyChange/Stimulus:ev_replan' => 'Przeplanowana',
'Class:EmergencyChange/Stimulus:ev_replan+' => '',
'Class:EmergencyChange/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '',
'Class:EmergencyChange/Stimulus:ev_implement' => 'Wdrożona',
'Class:EmergencyChange/Stimulus:ev_implement+' => '',
'Class:EmergencyChange/Stimulus:ev_monitor' => 'Monitorowana',
'Class:EmergencyChange/Stimulus:ev_monitor+' => '',
'Class:EmergencyChange/Stimulus:ev_finish' => 'Zakończona',
'Class:EmergencyChange/Stimulus:ev_finish+' => '',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ChangeManagement' => 'Zarządzanie zmianami',
'Menu:Change:Overview' => 'Przegląd',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => 'Nowa zmiana',
'Menu:NewChange+' => 'Utwórz nowe zgłoszenie zmiany',
'Menu:SearchChanges' => 'Szukaj zmian',
'Menu:SearchChanges+' => 'Szukaj zgłoszeń zmian',
'Menu:Change:Shortcuts' => 'Skróty',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => 'Zmiany do akceptacji',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => 'Zmiany do zatwierdzenia',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => 'Otwarte zmiany',
'Menu:Changes+' => 'Wszystkie otwarte zmiany',
'Menu:MyChanges' => 'Zmiany przypisane do mnie',
'Menu:MyChanges+' => 'Zmiany przypisane do mnie (jako Agent)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Zmiany według kategorii w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-Last-7-days' => 'Liczba zmian w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Zmiany według domeny w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Zmiany według statusu z ostatnich 7 dni',
'Tickets:Related:OpenChanges' => 'Otwarte zmiany',
'Tickets:Related:RecentChanges' => 'Ostatnie zmiany (72h)',
));
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Change
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Change' => 'Zmiana',
'Class:Change+' => '',
'Class:Change/Attribute:status' => 'Status',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:new' => 'Nowa',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:validated' => 'Sprawdzona',
'Class:Change/Attribute:status/Value:validated+' => '',
'Class:Change/Attribute:status/Value:rejected' => 'Odrzucona',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:assigned' => 'Przydzielona',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:plannedscheduled' => 'Planowana i odłożona',
'Class:Change/Attribute:status/Value:plannedscheduled+' => '',
'Class:Change/Attribute:status/Value:approved' => 'Zatwierdzona',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:notapproved' => 'Nie zatwierdzona',
'Class:Change/Attribute:status/Value:notapproved+' => '',
'Class:Change/Attribute:status/Value:implemented' => 'Wdrożona',
'Class:Change/Attribute:status/Value:implemented+' => '',
'Class:Change/Attribute:status/Value:monitored' => 'Monitorowana',
'Class:Change/Attribute:status/Value:monitored+' => '',
'Class:Change/Attribute:status/Value:closed' => 'Zamknięta',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:reason' => 'Powód odrzucenia',
'Class:Change/Attribute:reason+' => '',
'Class:Change/Attribute:requestor_id' => 'Zgłaszający',
'Class:Change/Attribute:requestor_id+' => '',
'Class:Change/Attribute:requestor_email' => 'E-mail zgłaszającego',
'Class:Change/Attribute:requestor_email+' => '',
'Class:Change/Attribute:creation_date' => 'Data utworzenia',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:impact' => 'Wpływ',
'Class:Change/Attribute:impact+' => '',
'Class:Change/Attribute:supervisor_group_id' => 'Zespół nadzorujący',
'Class:Change/Attribute:supervisor_group_id+' => '',
'Class:Change/Attribute:supervisor_group_name' => 'Nazwa zespołu nadzorującego',
'Class:Change/Attribute:supervisor_group_name+' => '',
'Class:Change/Attribute:supervisor_id' => 'Kierownik',
'Class:Change/Attribute:supervisor_id+' => '',
'Class:Change/Attribute:supervisor_email' => 'E-mail kierownika',
'Class:Change/Attribute:supervisor_email+' => '',
'Class:Change/Attribute:manager_group_id' => 'Zespół menedżerów',
'Class:Change/Attribute:manager_group_id+' => '',
'Class:Change/Attribute:manager_group_name' => 'Nazwa zespołu menedżerskiego',
'Class:Change/Attribute:manager_group_name+' => '',
'Class:Change/Attribute:manager_id' => 'Menedżer',
'Class:Change/Attribute:manager_id+' => '',
'Class:Change/Attribute:manager_email' => 'E-mail menedżera',
'Class:Change/Attribute:manager_email+' => '',
'Class:Change/Attribute:outage' => 'Awaria',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => 'Nie',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => 'Tak',
'Class:Change/Attribute:outage/Value:yes+' => '',
'Class:Change/Attribute:fallback' => 'Plan awaryjny',
'Class:Change/Attribute:fallback+' => '',
'Class:Change/Attribute:parent_id' => 'Zmiana źródłowa',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_name' => 'Zmiana źródłowa',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:related_request_list' => 'Powiązane wnioski',
'Class:Change/Attribute:related_request_list+' => 'Wszystkie prośby użytkowników powiązane z tą zmianą',
'Class:Change/Attribute:related_problems_list' => 'Powiązane problemy',
'Class:Change/Attribute:related_problems_list+' => 'Wszystkie problemy związane z tą zmianą',
'Class:Change/Attribute:related_incident_list' => 'Powiązane incydenty',
'Class:Change/Attribute:related_incident_list+' => 'Wszystkie incydenty związane z tą zmianą',
'Class:Change/Attribute:child_changes_list' => 'Zmiany zależne',
'Class:Change/Attribute:child_changes_list+' => 'Wszystkie zmiany podrzędne powiązane z tą zmianą',
'Class:Change/Attribute:parent_id_friendlyname' => 'Przyjazna nazwa zmiany źródłowej',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Attribute:parent_id_finalclass_recall' => 'Typ zmiany',
'Class:Change/Attribute:parent_id_finalclass_recall+' => '',
'Class:Change/Stimulus:ev_validate' => 'Sprawdzona',
'Class:Change/Stimulus:ev_validate+' => '',
'Class:Change/Stimulus:ev_reject' => 'Odrzucona',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_assign' => 'Przydzielona',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_reopen' => 'Wznowiona',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_plan' => 'Zaplanowana',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_approve' => 'Zatwierdona',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_replan' => 'Przeplanowana',
'Class:Change/Stimulus:ev_replan+' => '',
'Class:Change/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:Change/Stimulus:ev_notapprove+' => '',
'Class:Change/Stimulus:ev_implement' => 'Wdrożona',
'Class:Change/Stimulus:ev_implement+' => '',
'Class:Change/Stimulus:ev_monitor' => 'Monitorowana',
'Class:Change/Stimulus:ev_monitor+' => '',
'Class:Change/Stimulus:ev_finish' => 'Zakończona',
'Class:Change/Stimulus:ev_finish+' => '',
));
//
// Class: RoutineChange
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:RoutineChange' => 'Rutynowa zmiana',
'Class:RoutineChange+' => '',
'Class:RoutineChange/Stimulus:ev_validate' => 'Sprawdzona',
'Class:RoutineChange/Stimulus:ev_validate+' => '',
'Class:RoutineChange/Stimulus:ev_reject' => 'Odrzucona',
'Class:RoutineChange/Stimulus:ev_reject+' => '',
'Class:RoutineChange/Stimulus:ev_assign' => 'Przydzielona',
'Class:RoutineChange/Stimulus:ev_assign+' => '',
'Class:RoutineChange/Stimulus:ev_reopen' => 'Wznowiona',
'Class:RoutineChange/Stimulus:ev_reopen+' => '',
'Class:RoutineChange/Stimulus:ev_plan' => 'Planowana',
'Class:RoutineChange/Stimulus:ev_plan+' => '',
'Class:RoutineChange/Stimulus:ev_approve' => 'Zatwierdzona',
'Class:RoutineChange/Stimulus:ev_approve+' => '',
'Class:RoutineChange/Stimulus:ev_replan' => 'Przeplanowana',
'Class:RoutineChange/Stimulus:ev_replan+' => '',
'Class:RoutineChange/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:RoutineChange/Stimulus:ev_notapprove+' => '',
'Class:RoutineChange/Stimulus:ev_implement' => 'Wdrożona',
'Class:RoutineChange/Stimulus:ev_implement+' => '',
'Class:RoutineChange/Stimulus:ev_monitor' => 'Monitorowana',
'Class:RoutineChange/Stimulus:ev_monitor+' => '',
'Class:RoutineChange/Stimulus:ev_finish' => 'Zakończona',
'Class:RoutineChange/Stimulus:ev_finish+' => '',
));
//
// Class: ApprovedChange
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ApprovedChange' => 'Zatwierdzone zmiany',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_date' => 'Data zatwierdzenia',
'Class:ApprovedChange/Attribute:approval_date+' => '',
'Class:ApprovedChange/Attribute:approval_comment' => 'Komentarz do zatwierdzenia',
'Class:ApprovedChange/Attribute:approval_comment+' => '',
'Class:ApprovedChange/Stimulus:ev_validate' => 'Sprawdzona',
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
'Class:ApprovedChange/Stimulus:ev_reject' => 'Odrzucona',
'Class:ApprovedChange/Stimulus:ev_reject+' => '',
'Class:ApprovedChange/Stimulus:ev_assign' => 'Przydzielona',
'Class:ApprovedChange/Stimulus:ev_assign+' => '',
'Class:ApprovedChange/Stimulus:ev_reopen' => 'Wznowiona',
'Class:ApprovedChange/Stimulus:ev_reopen+' => '',
'Class:ApprovedChange/Stimulus:ev_plan' => 'Planowana',
'Class:ApprovedChange/Stimulus:ev_plan+' => '',
'Class:ApprovedChange/Stimulus:ev_approve' => 'Zatwierdzona',
'Class:ApprovedChange/Stimulus:ev_approve+' => '',
'Class:ApprovedChange/Stimulus:ev_replan' => 'Przeplanowana',
'Class:ApprovedChange/Stimulus:ev_replan+' => '',
'Class:ApprovedChange/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '',
'Class:ApprovedChange/Stimulus:ev_implement' => 'Wdrożona',
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
'Class:ApprovedChange/Stimulus:ev_monitor' => 'Monitorowana',
'Class:ApprovedChange/Stimulus:ev_monitor+' => '',
'Class:ApprovedChange/Stimulus:ev_finish' => 'Zakończona',
'Class:ApprovedChange/Stimulus:ev_finish+' => '',
));
//
// Class: NormalChange
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:NormalChange' => 'Normalna zmiana',
'Class:NormalChange+' => '',
'Class:NormalChange/Attribute:acceptance_date' => 'Data akceptacji',
'Class:NormalChange/Attribute:acceptance_date+' => '',
'Class:NormalChange/Attribute:acceptance_comment' => 'Komentarz dotyczący akceptacji',
'Class:NormalChange/Attribute:acceptance_comment+' => '',
'Class:NormalChange/Stimulus:ev_validate' => 'Sprawdzona',
'Class:NormalChange/Stimulus:ev_validate+' => '',
'Class:NormalChange/Stimulus:ev_reject' => 'Odrzucona',
'Class:NormalChange/Stimulus:ev_reject+' => '',
'Class:NormalChange/Stimulus:ev_assign' => 'Przydzielona',
'Class:NormalChange/Stimulus:ev_assign+' => '',
'Class:NormalChange/Stimulus:ev_reopen' => 'Wznowiona',
'Class:NormalChange/Stimulus:ev_reopen+' => '',
'Class:NormalChange/Stimulus:ev_plan' => 'Planowana',
'Class:NormalChange/Stimulus:ev_plan+' => '',
'Class:NormalChange/Stimulus:ev_approve' => 'Zatwierdzona',
'Class:NormalChange/Stimulus:ev_approve+' => '',
'Class:NormalChange/Stimulus:ev_replan' => 'Przeplanowana',
'Class:NormalChange/Stimulus:ev_replan+' => '',
'Class:NormalChange/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:NormalChange/Stimulus:ev_notapprove+' => '',
'Class:NormalChange/Stimulus:ev_implement' => 'Wdrożona',
'Class:NormalChange/Stimulus:ev_implement+' => '',
'Class:NormalChange/Stimulus:ev_monitor' => 'Monitorowana',
'Class:NormalChange/Stimulus:ev_monitor+' => '',
'Class:NormalChange/Stimulus:ev_finish' => 'Zakończona',
'Class:NormalChange/Stimulus:ev_finish+' => '',
));
//
// Class: EmergencyChange
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:EmergencyChange' => 'Awaryjna zmiana',
'Class:EmergencyChange+' => '',
'Class:EmergencyChange/Stimulus:ev_validate' => 'Sprawdzona',
'Class:EmergencyChange/Stimulus:ev_validate+' => '',
'Class:EmergencyChange/Stimulus:ev_reject' => 'Odrzucona',
'Class:EmergencyChange/Stimulus:ev_reject+' => '',
'Class:EmergencyChange/Stimulus:ev_assign' => 'Przydzielona',
'Class:EmergencyChange/Stimulus:ev_assign+' => '',
'Class:EmergencyChange/Stimulus:ev_reopen' => 'Wznowiona',
'Class:EmergencyChange/Stimulus:ev_reopen+' => '',
'Class:EmergencyChange/Stimulus:ev_plan' => 'Planowana',
'Class:EmergencyChange/Stimulus:ev_plan+' => '',
'Class:EmergencyChange/Stimulus:ev_approve' => 'Zatwierdzona',
'Class:EmergencyChange/Stimulus:ev_approve+' => '',
'Class:EmergencyChange/Stimulus:ev_replan' => 'Przeplanowana',
'Class:EmergencyChange/Stimulus:ev_replan+' => '',
'Class:EmergencyChange/Stimulus:ev_notapprove' => 'Nie zatwierdzona',
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '',
'Class:EmergencyChange/Stimulus:ev_implement' => 'Wdrożona',
'Class:EmergencyChange/Stimulus:ev_implement+' => '',
'Class:EmergencyChange/Stimulus:ev_monitor' => 'Monitorowana',
'Class:EmergencyChange/Stimulus:ev_monitor+' => '',
'Class:EmergencyChange/Stimulus:ev_finish' => 'Zakończona',
'Class:EmergencyChange/Stimulus:ev_finish+' => '',
));

View File

@@ -1,140 +1,140 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ChangeManagement' => 'Zarządzanie zmianami',
'Menu:Change:Overview' => 'Przegląd',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => 'Nowa zmiana',
'Menu:NewChange+' => 'Utwórz nowe zgłoszenie zmiany',
'Menu:SearchChanges' => 'Szukaj zmian',
'Menu:SearchChanges+' => 'Szukaj zgłoszeń zmian',
'Menu:Change:Shortcuts' => 'Skróty',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => 'Zmiany do akceptacji',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => 'Zmiany do zatwierdzenia',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => 'Otwarte zmiany',
'Menu:Changes+' => 'Wszystkie otwarte zmiany',
'Menu:MyChanges' => 'Zmiany przypisane do mnie',
'Menu:MyChanges+' => 'Zmiany przypisane do mnie (jako Agent)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Zmiany według kategorii w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-Last-7-days' => 'Liczba zmian w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Zmiany według domeny w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Zmiany według statusu z ostatnich 7 dni',
'Tickets:Related:OpenChanges' => 'Otwarte zmiany',
'Tickets:Related:RecentChanges' => 'Ostatnie zmiany (72h)',
));
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Change
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Change' => 'Zmiana',
'Class:Change+' => '',
'Class:Change/Attribute:status' => 'Status',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:new' => 'Nowa',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:assigned' => 'Przydzielona',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:planned' => 'Planowana',
'Class:Change/Attribute:status/Value:planned+' => '',
'Class:Change/Attribute:status/Value:rejected' => 'Odrzucona',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:approved' => 'Zatwierdzona',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:closed' => 'Zamknięta',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:category' => 'Category',
'Class:Change/Attribute:category+' => '',
'Class:Change/Attribute:category/Value:application' => 'aplikacja',
'Class:Change/Attribute:category/Value:application+' => 'aplikacja',
'Class:Change/Attribute:category/Value:hardware' => 'sprzęt komputerowy',
'Class:Change/Attribute:category/Value:hardware+' => 'sprzęt komputerowy',
'Class:Change/Attribute:category/Value:network' => 'sieć',
'Class:Change/Attribute:category/Value:network+' => 'sieć',
'Class:Change/Attribute:category/Value:other' => 'inne',
'Class:Change/Attribute:category/Value:other+' => 'inne',
'Class:Change/Attribute:category/Value:software' => 'oprogramowanie',
'Class:Change/Attribute:category/Value:software+' => 'oprogramowanie',
'Class:Change/Attribute:category/Value:system' => 'system',
'Class:Change/Attribute:category/Value:system+' => 'system',
'Class:Change/Attribute:reject_reason' => 'Powód odrzucenia',
'Class:Change/Attribute:reject_reason+' => '',
'Class:Change/Attribute:changemanager_id' => 'Menedżer zmiany',
'Class:Change/Attribute:changemanager_id+' => '',
'Class:Change/Attribute:changemanager_email' => 'E-mail menedżera zmiany',
'Class:Change/Attribute:changemanager_email+' => '',
'Class:Change/Attribute:parent_id' => 'Zmiana źródłowa',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_name' => 'Zmiana źródłowa',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:creation_date' => 'Data utworzenia',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:approval_date' => 'Data zatwierdzenia',
'Class:Change/Attribute:approval_date+' => '',
'Class:Change/Attribute:fallback_plan' => 'Plan awaryjny',
'Class:Change/Attribute:fallback_plan+' => '',
'Class:Change/Attribute:related_request_list' => 'Powiązane wnioski',
'Class:Change/Attribute:related_request_list+' => 'Wszystkie prośby użytkowników powiązane z tą zmianą',
'Class:Change/Attribute:related_incident_list' => 'Powiązane incydenty',
'Class:Change/Attribute:related_incident_list+' => 'Wszystkie incydenty związane z tą zmianą',
'Class:Change/Attribute:related_problems_list' => 'Powiązane problemy',
'Class:Change/Attribute:related_problems_list+' => 'Wszystkie problemy związane z tą zmianą',
'Class:Change/Attribute:child_changes_list' => 'Zmiany zależne',
'Class:Change/Attribute:child_changes_list+' => 'Wszystkie zmiany podrzędne powiązane z tą zmianą',
'Class:Change/Attribute:parent_id_friendlyname' => 'Przyjazna nazwa zmiany źródłowej',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Stimulus:ev_assign' => 'Przydzielona',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_plan' => 'Zaplanowana',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_reject' => 'Odrzuona',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_reopen' => 'Wznowiona',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_approve' => 'Zatwierdona',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_finish' => 'Zamknięta',
'Class:Change/Stimulus:ev_finish+' => '',
'Class:Change/Attribute:outage' => 'Awaria',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => 'Nie',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => 'Tak',
'Class:Change/Attribute:outage/Value:yes+' => '',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ChangeManagement' => 'Zarządzanie zmianami',
'Menu:Change:Overview' => 'Przegląd',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => 'Nowa zmiana',
'Menu:NewChange+' => 'Utwórz nowe zgłoszenie zmiany',
'Menu:SearchChanges' => 'Szukaj zmian',
'Menu:SearchChanges+' => 'Szukaj zgłoszeń zmian',
'Menu:Change:Shortcuts' => 'Skróty',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => 'Zmiany do akceptacji',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => 'Zmiany do zatwierdzenia',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => 'Otwarte zmiany',
'Menu:Changes+' => 'Wszystkie otwarte zmiany',
'Menu:MyChanges' => 'Zmiany przypisane do mnie',
'Menu:MyChanges+' => 'Zmiany przypisane do mnie (jako Agent)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Zmiany według kategorii w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-Last-7-days' => 'Liczba zmian w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Zmiany według domeny w ciągu ostatnich 7 dni',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Zmiany według statusu z ostatnich 7 dni',
'Tickets:Related:OpenChanges' => 'Otwarte zmiany',
'Tickets:Related:RecentChanges' => 'Ostatnie zmiany (72h)',
));
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Change
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Change' => 'Zmiana',
'Class:Change+' => '',
'Class:Change/Attribute:status' => 'Status',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:new' => 'Nowa',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:assigned' => 'Przydzielona',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:planned' => 'Planowana',
'Class:Change/Attribute:status/Value:planned+' => '',
'Class:Change/Attribute:status/Value:rejected' => 'Odrzucona',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:approved' => 'Zatwierdzona',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:closed' => 'Zamknięta',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:category' => 'Category',
'Class:Change/Attribute:category+' => '',
'Class:Change/Attribute:category/Value:application' => 'aplikacja',
'Class:Change/Attribute:category/Value:application+' => 'aplikacja',
'Class:Change/Attribute:category/Value:hardware' => 'sprzęt komputerowy',
'Class:Change/Attribute:category/Value:hardware+' => 'sprzęt komputerowy',
'Class:Change/Attribute:category/Value:network' => 'sieć',
'Class:Change/Attribute:category/Value:network+' => 'sieć',
'Class:Change/Attribute:category/Value:other' => 'inne',
'Class:Change/Attribute:category/Value:other+' => 'inne',
'Class:Change/Attribute:category/Value:software' => 'oprogramowanie',
'Class:Change/Attribute:category/Value:software+' => 'oprogramowanie',
'Class:Change/Attribute:category/Value:system' => 'system',
'Class:Change/Attribute:category/Value:system+' => 'system',
'Class:Change/Attribute:reject_reason' => 'Powód odrzucenia',
'Class:Change/Attribute:reject_reason+' => '',
'Class:Change/Attribute:changemanager_id' => 'Menedżer zmiany',
'Class:Change/Attribute:changemanager_id+' => '',
'Class:Change/Attribute:changemanager_email' => 'E-mail menedżera zmiany',
'Class:Change/Attribute:changemanager_email+' => '',
'Class:Change/Attribute:parent_id' => 'Zmiana źródłowa',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_name' => 'Zmiana źródłowa',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:creation_date' => 'Data utworzenia',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:approval_date' => 'Data zatwierdzenia',
'Class:Change/Attribute:approval_date+' => '',
'Class:Change/Attribute:fallback_plan' => 'Plan awaryjny',
'Class:Change/Attribute:fallback_plan+' => '',
'Class:Change/Attribute:related_request_list' => 'Powiązane wnioski',
'Class:Change/Attribute:related_request_list+' => 'Wszystkie prośby użytkowników powiązane z tą zmianą',
'Class:Change/Attribute:related_incident_list' => 'Powiązane incydenty',
'Class:Change/Attribute:related_incident_list+' => 'Wszystkie incydenty związane z tą zmianą',
'Class:Change/Attribute:related_problems_list' => 'Powiązane problemy',
'Class:Change/Attribute:related_problems_list+' => 'Wszystkie problemy związane z tą zmianą',
'Class:Change/Attribute:child_changes_list' => 'Zmiany zależne',
'Class:Change/Attribute:child_changes_list+' => 'Wszystkie zmiany podrzędne powiązane z tą zmianą',
'Class:Change/Attribute:parent_id_friendlyname' => 'Przyjazna nazwa zmiany źródłowej',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Stimulus:ev_assign' => 'Przydzielona',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_plan' => 'Zaplanowana',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_reject' => 'Odrzuona',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_reopen' => 'Wznowiona',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_approve' => 'Zatwierdona',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_finish' => 'Zamknięta',
'Class:Change/Stimulus:ev_finish+' => '',
'Class:Change/Attribute:outage' => 'Awaria',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => 'Nie',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => 'Tak',
'Class:Change/Attribute:outage/Value:yes+' => '',
));

View File

@@ -1,24 +1,24 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
//////////////////////////////////////////////////////////////////////
// Relations

View File

@@ -1,39 +1,39 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ConfigEditor' => 'Konfiguracja ogólna',
'config-edit-title' => 'Edycja pliku konfiguracyjnego',
'config-edit-intro' => 'Zachowaj ostrożność podczas edycji pliku konfiguracyjnego.',
'config-apply' => 'Zastosuj',
'config-apply-title' => 'Zastosuj (Ctrl+S)',
'config-cancel' => 'Reset',
'config-saved' => 'Zapisano pomyślnie.',
'config-confirm-cancel' => 'Twoje zmiany zostaną utracone.',
'config-no-change' => 'Brak zmian: plik pozostał niezmieniony.',
'config-reverted' => 'Konfiguracja została przywrócona.',
'config-parse-error' => 'Linia %2$d: %1$s.<br/>Plik NIE został zaktualizowany.',
'config-current-line' => 'Edycja linii: %1$s',
'config-saved-warning-db-password' => 'Zapisano pomyślnie, ale kopia zapasowa nie działa z powodu nieobsługiwanych znaków w haśle bazy danych.',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ConfigEditor' => 'Konfiguracja ogólna',
'config-edit-title' => 'Edycja pliku konfiguracyjnego',
'config-edit-intro' => 'Zachowaj ostrożność podczas edycji pliku konfiguracyjnego.',
'config-apply' => 'Zastosuj',
'config-apply-title' => 'Zastosuj (Ctrl+S)',
'config-cancel' => 'Reset',
'config-saved' => 'Zapisano pomyślnie.',
'config-confirm-cancel' => 'Twoje zmiany zostaną utracone.',
'config-no-change' => 'Brak zmian: plik pozostał niezmieniony.',
'config-reverted' => 'Konfiguracja została przywrócona.',
'config-parse-error' => 'Linia %2$d: %1$s.<br/>Plik NIE został zaktualizowany.',
'config-current-line' => 'Edycja linii: %1$s',
'config-saved-warning-db-password' => 'Zapisano pomyślnie, ale kopia zapasowa nie działa z powodu nieobsługiwanych znaków w haśle bazy danych.',
));

View File

@@ -1,96 +1,96 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: FAQ
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:FAQ' => 'Pytania FAQ',
'Class:FAQ+' => 'Często Zadawane Pytania',
'Class:FAQ/Attribute:title' => 'Tytuł',
'Class:FAQ/Attribute:title+' => '',
'Class:FAQ/Attribute:summary' => 'Podsumowanie',
'Class:FAQ/Attribute:summary+' => '',
'Class:FAQ/Attribute:description' => 'Opis',
'Class:FAQ/Attribute:description+' => '',
'Class:FAQ/Attribute:category_id' => 'Kategoria',
'Class:FAQ/Attribute:category_id+' => '',
'Class:FAQ/Attribute:category_name' => 'Nazwa kategorii',
'Class:FAQ/Attribute:category_name+' => '',
'Class:FAQ/Attribute:error_code' => 'Kod błędu',
'Class:FAQ/Attribute:error_code+' => '',
'Class:FAQ/Attribute:key_words' => 'Słowa kluczowe',
'Class:FAQ/Attribute:key_words+' => '',
'Class:FAQ/Attribute:domains' => 'Domeny',
));
//
// Class: FAQCategory
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:FAQCategory' => 'Kategoria FAQ',
'Class:FAQCategory+' => 'Kategoria FAQ',
'Class:FAQCategory/Attribute:name' => 'Nazwa',
'Class:FAQCategory/Attribute:name+' => '',
'Class:FAQCategory/Attribute:faq_list' => 'Pytania FAQ',
'Class:FAQCategory/Attribute:faq_list+' => 'Wszystkie najczęściej zadawane pytania związane z tą kategorią',
));
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ProblemManagement' => 'Zarządzanie problemami',
'Menu:ProblemManagement+' => 'Zarządzanie problemami',
'Menu:Problem:Shortcuts' => 'Skróty',
'Menu:FAQCategory' => 'Kategorie pytań FAQ',
'Menu:FAQCategory+' => 'Wszystkie kategorie pytań FAQ',
'Menu:FAQ' => 'Pytania FAQ',
'Menu:FAQ+' => 'Wszystkie pytania FAQ',
'Brick:Portal:FAQ:Menu' => 'Pytania FAQ',
'Brick:Portal:FAQ:Title' => 'Często Zadawane Pytania',
'Brick:Portal:FAQ:Title+' => '<p>W pośpiechu?</p><p>Sprawdź listę najczęściej zadawanych pytań i (być może) od razu znajdź oczekiwaną odpowiedź.</p>',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: FAQ
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:FAQ' => 'Pytania FAQ',
'Class:FAQ+' => 'Często Zadawane Pytania',
'Class:FAQ/Attribute:title' => 'Tytuł',
'Class:FAQ/Attribute:title+' => '',
'Class:FAQ/Attribute:summary' => 'Podsumowanie',
'Class:FAQ/Attribute:summary+' => '',
'Class:FAQ/Attribute:description' => 'Opis',
'Class:FAQ/Attribute:description+' => '',
'Class:FAQ/Attribute:category_id' => 'Kategoria',
'Class:FAQ/Attribute:category_id+' => '',
'Class:FAQ/Attribute:category_name' => 'Nazwa kategorii',
'Class:FAQ/Attribute:category_name+' => '',
'Class:FAQ/Attribute:error_code' => 'Kod błędu',
'Class:FAQ/Attribute:error_code+' => '',
'Class:FAQ/Attribute:key_words' => 'Słowa kluczowe',
'Class:FAQ/Attribute:key_words+' => '',
'Class:FAQ/Attribute:domains' => 'Domeny',
));
//
// Class: FAQCategory
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:FAQCategory' => 'Kategoria FAQ',
'Class:FAQCategory+' => 'Kategoria FAQ',
'Class:FAQCategory/Attribute:name' => 'Nazwa',
'Class:FAQCategory/Attribute:name+' => '',
'Class:FAQCategory/Attribute:faq_list' => 'Pytania FAQ',
'Class:FAQCategory/Attribute:faq_list+' => 'Wszystkie najczęściej zadawane pytania związane z tą kategorią',
));
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ProblemManagement' => 'Zarządzanie problemami',
'Menu:ProblemManagement+' => 'Zarządzanie problemami',
'Menu:Problem:Shortcuts' => 'Skróty',
'Menu:FAQCategory' => 'Kategorie pytań FAQ',
'Menu:FAQCategory+' => 'Wszystkie kategorie pytań FAQ',
'Menu:FAQ' => 'Pytania FAQ',
'Menu:FAQ+' => 'Wszystkie pytania FAQ',
'Brick:Portal:FAQ:Menu' => 'Pytania FAQ',
'Brick:Portal:FAQ:Title' => 'Często Zadawane Pytania',
'Brick:Portal:FAQ:Title+' => '<p>W pośpiechu?</p><p>Sprawdź listę najczęściej zadawanych pytań i (być może) od razu znajdź oczekiwaną odpowiedź.</p>',
));

View File

@@ -1,239 +1,239 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:IncidentManagement' => 'Zarządzanie incydentami',
'Menu:IncidentManagement+' => 'Zarządzanie incydentami',
'Menu:Incident:Overview' => 'Przegląd',
'Menu:Incident:Overview+' => 'Przegląd',
'Menu:NewIncident' => 'Nowy incydent',
'Menu:NewIncident+' => 'Utwórz nowe zgłoszenie incydentu',
'Menu:SearchIncidents' => 'Szukaj incydentów',
'Menu:SearchIncidents+' => 'Szukaj zgłoszeń incydentów',
'Menu:Incident:Shortcuts' => 'Skróty',
'Menu:Incident:Shortcuts+' => '',
'Menu:Incident:MyIncidents' => 'Incydenty przypisane do mnie',
'Menu:Incident:MyIncidents+' => 'Incydenty przypisane do mnie (jako Agent)',
'Menu:Incident:EscalatedIncidents' => 'Pilne incydenty',
'Menu:Incident:EscalatedIncidents+' => 'Pilne incydenty',
'Menu:Incident:OpenIncidents' => 'Wszystkie otwarte incydenty',
'Menu:Incident:OpenIncidents+' => 'Wszystkie otwarte incydenty',
'UI-IncidentManagementOverview-IncidentByPriority-last-14-days' => 'Incydenty z ostatnich 14 dni według priorytetu',
'UI-IncidentManagementOverview-Last-14-days' => 'Liczba incydentów z ostatnich 14 dni',
'UI-IncidentManagementOverview-OpenIncidentByStatus' => 'Otwarte incydenty według statusu',
'UI-IncidentManagementOverview-OpenIncidentByAgent' => 'Otwarte incydenty według agenta',
'UI-IncidentManagementOverview-OpenIncidentByCustomer' => 'Otwarte incydenty według klienta',
));
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Incident
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Incident' => 'Incydent',
'Class:Incident+' => '',
'Class:Incident/Attribute:status' => 'Status',
'Class:Incident/Attribute:status+' => '',
'Class:Incident/Attribute:status/Value:new' => 'Nowy',
'Class:Incident/Attribute:status/Value:new+' => '',
'Class:Incident/Attribute:status/Value:escalated_tto' => 'Pilny czas podjęcia',
'Class:Incident/Attribute:status/Value:escalated_tto+' => '',
'Class:Incident/Attribute:status/Value:assigned' => 'Przypisany',
'Class:Incident/Attribute:status/Value:assigned+' => '',
'Class:Incident/Attribute:status/Value:escalated_ttr' => 'Pilny czas rozwiązania',
'Class:Incident/Attribute:status/Value:escalated_ttr+' => '',
'Class:Incident/Attribute:status/Value:waiting_for_approval' => 'Oczekujący',
'Class:Incident/Attribute:status/Value:waiting_for_approval+' => '',
'Class:Incident/Attribute:status/Value:pending' => 'Trwający',
'Class:Incident/Attribute:status/Value:pending+' => '',
'Class:Incident/Attribute:status/Value:resolved' => 'Rozwiązany',
'Class:Incident/Attribute:status/Value:resolved+' => '',
'Class:Incident/Attribute:status/Value:closed' => 'Zamknięty',
'Class:Incident/Attribute:status/Value:closed+' => '',
'Class:Incident/Attribute:impact' => 'Wpływ',
'Class:Incident/Attribute:impact+' => '',
'Class:Incident/Attribute:impact/Value:1' => 'Wydział',
'Class:Incident/Attribute:impact/Value:1+' => '',
'Class:Incident/Attribute:impact/Value:2' => 'Usługa',
'Class:Incident/Attribute:impact/Value:2+' => '',
'Class:Incident/Attribute:impact/Value:3' => 'Osoba',
'Class:Incident/Attribute:impact/Value:3+' => '',
'Class:Incident/Attribute:priority' => 'Priorytet',
'Class:Incident/Attribute:priority+' => '',
'Class:Incident/Attribute:priority/Value:1' => 'krytyczny',
'Class:Incident/Attribute:priority/Value:1+' => 'krytyczny',
'Class:Incident/Attribute:priority/Value:2' => 'wysoki',
'Class:Incident/Attribute:priority/Value:2+' => 'wysoki',
'Class:Incident/Attribute:priority/Value:3' => 'średni',
'Class:Incident/Attribute:priority/Value:3+' => 'średni',
'Class:Incident/Attribute:priority/Value:4' => 'niski',
'Class:Incident/Attribute:priority/Value:4+' => 'niski',
'Class:Incident/Attribute:urgency' => 'Pilność',
'Class:Incident/Attribute:urgency+' => '',
'Class:Incident/Attribute:urgency/Value:1' => 'krytyczna',
'Class:Incident/Attribute:urgency/Value:1+' => 'krytyczna',
'Class:Incident/Attribute:urgency/Value:2' => 'wysoka',
'Class:Incident/Attribute:urgency/Value:2+' => 'wysoka',
'Class:Incident/Attribute:urgency/Value:3' => 'średnia',
'Class:Incident/Attribute:urgency/Value:3+' => 'średnia',
'Class:Incident/Attribute:urgency/Value:4' => 'niska',
'Class:Incident/Attribute:urgency/Value:4+' => 'niska',
'Class:Incident/Attribute:origin' => 'Pochodzenie',
'Class:Incident/Attribute:origin+' => '',
'Class:Incident/Attribute:origin/Value:mail' => 'e-mail',
'Class:Incident/Attribute:origin/Value:mail+' => 'e-mail',
'Class:Incident/Attribute:origin/Value:monitoring' => 'monitoring',
'Class:Incident/Attribute:origin/Value:monitoring+' => 'monitoring',
'Class:Incident/Attribute:origin/Value:phone' => 'telefon',
'Class:Incident/Attribute:origin/Value:phone+' => 'telefon',
'Class:Incident/Attribute:origin/Value:portal' => 'portal',
'Class:Incident/Attribute:origin/Value:portal+' => 'portal',
'Class:Incident/Attribute:service_id' => 'Usługa',
'Class:Incident/Attribute:service_id+' => '',
'Class:Incident/Attribute:service_name' => 'Nazwa usługi',
'Class:Incident/Attribute:service_name+' => '',
'Class:Incident/Attribute:servicesubcategory_id' => 'Podkategoria usługi',
'Class:Incident/Attribute:servicesubcategory_id+' => '',
'Class:Incident/Attribute:servicesubcategory_name' => 'Nazwa podkategorii usługi',
'Class:Incident/Attribute:servicesubcategory_name+' => '',
'Class:Incident/Attribute:escalation_flag' => 'Flaga - Ważny',
'Class:Incident/Attribute:escalation_flag+' => '',
'Class:Incident/Attribute:escalation_flag/Value:no' => 'Nie',
'Class:Incident/Attribute:escalation_flag/Value:no+' => 'Nie',
'Class:Incident/Attribute:escalation_flag/Value:yes' => 'Tak',
'Class:Incident/Attribute:escalation_flag/Value:yes+' => 'Tak',
'Class:Incident/Attribute:escalation_reason' => 'Powód - Ważny',
'Class:Incident/Attribute:escalation_reason+' => '',
'Class:Incident/Attribute:assignment_date' => 'Data przydziału',
'Class:Incident/Attribute:assignment_date+' => '',
'Class:Incident/Attribute:resolution_date' => 'Data rozwiązania',
'Class:Incident/Attribute:resolution_date+' => '',
'Class:Incident/Attribute:last_pending_date' => 'Ostatnia data trwania',
'Class:Incident/Attribute:last_pending_date+' => '',
'Class:Incident/Attribute:cumulatedpending' => 'Skumulowany czas trwania',
'Class:Incident/Attribute:cumulatedpending+' => '',
'Class:Incident/Attribute:tto' => 'czas na podjęcie (TTO)',
'Class:Incident/Attribute:tto+' => '',
'Class:Incident/Attribute:ttr' => 'czas na rozwiązanie (TTR)',
'Class:Incident/Attribute:ttr+' => '',
'Class:Incident/Attribute:tto_escalation_deadline' => 'Ostateczny termin podjęcia (TTO)',
'Class:Incident/Attribute:tto_escalation_deadline+' => '',
'Class:Incident/Attribute:sla_tto_passed' => 'Gwarantowany czas podjęcia (SLA tto) zaliczony',
'Class:Incident/Attribute:sla_tto_passed+' => '',
'Class:Incident/Attribute:sla_tto_over' => 'Gwarantowany czas podjęcia (SLA tto) skończył się',
'Class:Incident/Attribute:sla_tto_over+' => '',
'Class:Incident/Attribute:ttr_escalation_deadline' => 'Ostateczny termin rozwiązania TTR',
'Class:Incident/Attribute:ttr_escalation_deadline+' => '',
'Class:Incident/Attribute:sla_ttr_passed' => 'Gwarantowany czas rozwiązania (SLA ttr) zaliczony',
'Class:Incident/Attribute:sla_ttr_passed+' => '',
'Class:Incident/Attribute:sla_ttr_over' => 'Gwarantowany czas rozwiązania (SLA ttr) skończył się',
'Class:Incident/Attribute:sla_ttr_over+' => '',
'Class:Incident/Attribute:time_spent' => 'Opóźnienie rozwiązania',
'Class:Incident/Attribute:time_spent+' => '',
'Class:Incident/Attribute:resolution_code' => 'Kod rozwiązania',
'Class:Incident/Attribute:resolution_code+' => '',
'Class:Incident/Attribute:resolution_code/Value:assistance' => 'wsparcie',
'Class:Incident/Attribute:resolution_code/Value:assistance+' => 'wsparcie',
'Class:Incident/Attribute:resolution_code/Value:bug fixed' => 'usterka naprawiona',
'Class:Incident/Attribute:resolution_code/Value:bug fixed+' => 'usterka naprawiona',
'Class:Incident/Attribute:resolution_code/Value:hardware repair' => 'naprawa sprzętu',
'Class:Incident/Attribute:resolution_code/Value:hardware repair+' => 'naprawa sprzętu',
'Class:Incident/Attribute:resolution_code/Value:other' => 'inne',
'Class:Incident/Attribute:resolution_code/Value:other+' => 'inne',
'Class:Incident/Attribute:resolution_code/Value:software patch' => 'poprawka oprogramowania',
'Class:Incident/Attribute:resolution_code/Value:software patch+' => 'poprawka oprogramowania',
'Class:Incident/Attribute:resolution_code/Value:system update' => 'aktualizacja systemu',
'Class:Incident/Attribute:resolution_code/Value:system update+' => 'aktualizacja systemu',
'Class:Incident/Attribute:resolution_code/Value:training' => 'szkolenie',
'Class:Incident/Attribute:resolution_code/Value:training+' => 'szkolenie',
'Class:Incident/Attribute:solution' => 'Rozwiązanie',
'Class:Incident/Attribute:solution+' => '',
'Class:Incident/Attribute:pending_reason' => 'Powód oczekiwania',
'Class:Incident/Attribute:pending_reason+' => '',
'Class:Incident/Attribute:parent_incident_id' => 'Źródłowy incydent',
'Class:Incident/Attribute:parent_incident_id+' => '',
'Class:Incident/Attribute:parent_incident_ref' => 'Powiązany źródłowy incydent',
'Class:Incident/Attribute:parent_incident_ref+' => '',
'Class:Incident/Attribute:parent_change_id' => 'Źródłowa zmiana',
'Class:Incident/Attribute:parent_change_id+' => '',
'Class:Incident/Attribute:parent_change_ref' => 'Powiązana źródłowa zmiana',
'Class:Incident/Attribute:parent_change_ref+' => '',
'Class:Incident/Attribute:parent_problem_id' => 'Źródłowy problem',
'Class:Incident/Attribute:parent_problem_id+' => '',
'Class:Incident/Attribute:parent_problem_ref' => 'Powiązany źródłowy problem',
'Class:Incident/Attribute:parent_problem_ref+' => '',
'Class:Incident/Attribute:related_request_list' => 'Zależne zgłoszenia',
'Class:Incident/Attribute:related_request_list+' => '',
'Class:Incident/Attribute:child_incidents_list' => 'Zależne incydenty',
'Class:Incident/Attribute:child_incidents_list+' => 'Wszystkie podrzędne incydenty związane z tym incydentem',
'Class:Incident/Attribute:public_log' => 'Dziennik publiczny',
'Class:Incident/Attribute:public_log+' => '',
'Class:Incident/Attribute:user_satisfaction' => 'Zadowolenie użytkownika',
'Class:Incident/Attribute:user_satisfaction+' => '',
'Class:Incident/Attribute:user_satisfaction/Value:1' => 'Bardzo zadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:1+' => 'Bardzo zadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Dość zadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:2+' => 'Dość zadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Raczej niezadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:3+' => 'Raczej niezadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:4' => 'Bardzo niezadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:4+' => 'Bardzo niezadowolony',
'Class:Incident/Attribute:user_comment' => 'Komentarz użytkownika',
'Class:Incident/Attribute:user_comment+' => '',
'Class:Incident/Attribute:parent_incident_id_friendlyname' => 'parent_incident_id_friendlyname',
'Class:Incident/Attribute:parent_incident_id_friendlyname+' => '',
'Class:Incident/Stimulus:ev_assign' => 'Przydzielony',
'Class:Incident/Stimulus:ev_assign+' => '',
'Class:Incident/Stimulus:ev_reassign' => 'Przydzielony ponownie',
'Class:Incident/Stimulus:ev_reassign+' => '',
'Class:Incident/Stimulus:ev_pending' => 'Trwający',
'Class:Incident/Stimulus:ev_pending+' => '',
'Class:Incident/Stimulus:ev_timeout' => 'Po czasie',
'Class:Incident/Stimulus:ev_timeout+' => '',
'Class:Incident/Stimulus:ev_autoresolve' => 'Automatyczne rozwiązanie',
'Class:Incident/Stimulus:ev_autoresolve+' => '',
'Class:Incident/Stimulus:ev_autoclose' => 'Automatyczne zamknięcie',
'Class:Incident/Stimulus:ev_autoclose+' => '',
'Class:Incident/Stimulus:ev_resolve' => 'Oznacz jako rozwiązany',
'Class:Incident/Stimulus:ev_resolve+' => '',
'Class:Incident/Stimulus:ev_close' => 'Zamknij to zgłoszenie',
'Class:Incident/Stimulus:ev_close+' => '',
'Class:Incident/Stimulus:ev_reopen' => 'Otwórz ponownie',
'Class:Incident/Stimulus:ev_reopen+' => '',
'Class:Incident/Error:CannotAssignParentIncidentIdToSelf' => 'Nie można przypisać zdarzenia nadrzędnego do samego zdarzenia',
'Class:Incident/Method:ResolveChildTickets' => 'Rozpatrz zgłoszenia podrzędne',
'Class:Incident/Method:ResolveChildTickets+' => 'Połącz rozwiązanie kaskadowo ze zgłoszeniem podrzędnym (ev_autoresolve) i dopasuj następujące cechy: usługa, zespół, agent, informacje o rozwiązaniu',
'Tickets:Related:OpenIncidents' => 'Otwarte incydenty',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:IncidentManagement' => 'Zarządzanie incydentami',
'Menu:IncidentManagement+' => 'Zarządzanie incydentami',
'Menu:Incident:Overview' => 'Przegląd',
'Menu:Incident:Overview+' => 'Przegląd',
'Menu:NewIncident' => 'Nowy incydent',
'Menu:NewIncident+' => 'Utwórz nowe zgłoszenie incydentu',
'Menu:SearchIncidents' => 'Szukaj incydentów',
'Menu:SearchIncidents+' => 'Szukaj zgłoszeń incydentów',
'Menu:Incident:Shortcuts' => 'Skróty',
'Menu:Incident:Shortcuts+' => '',
'Menu:Incident:MyIncidents' => 'Incydenty przypisane do mnie',
'Menu:Incident:MyIncidents+' => 'Incydenty przypisane do mnie (jako Agent)',
'Menu:Incident:EscalatedIncidents' => 'Pilne incydenty',
'Menu:Incident:EscalatedIncidents+' => 'Pilne incydenty',
'Menu:Incident:OpenIncidents' => 'Wszystkie otwarte incydenty',
'Menu:Incident:OpenIncidents+' => 'Wszystkie otwarte incydenty',
'UI-IncidentManagementOverview-IncidentByPriority-last-14-days' => 'Incydenty z ostatnich 14 dni według priorytetu',
'UI-IncidentManagementOverview-Last-14-days' => 'Liczba incydentów z ostatnich 14 dni',
'UI-IncidentManagementOverview-OpenIncidentByStatus' => 'Otwarte incydenty według statusu',
'UI-IncidentManagementOverview-OpenIncidentByAgent' => 'Otwarte incydenty według agenta',
'UI-IncidentManagementOverview-OpenIncidentByCustomer' => 'Otwarte incydenty według klienta',
));
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Incident
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Incident' => 'Incydent',
'Class:Incident+' => '',
'Class:Incident/Attribute:status' => 'Status',
'Class:Incident/Attribute:status+' => '',
'Class:Incident/Attribute:status/Value:new' => 'Nowy',
'Class:Incident/Attribute:status/Value:new+' => '',
'Class:Incident/Attribute:status/Value:escalated_tto' => 'Pilny czas podjęcia',
'Class:Incident/Attribute:status/Value:escalated_tto+' => '',
'Class:Incident/Attribute:status/Value:assigned' => 'Przypisany',
'Class:Incident/Attribute:status/Value:assigned+' => '',
'Class:Incident/Attribute:status/Value:escalated_ttr' => 'Pilny czas rozwiązania',
'Class:Incident/Attribute:status/Value:escalated_ttr+' => '',
'Class:Incident/Attribute:status/Value:waiting_for_approval' => 'Oczekujący',
'Class:Incident/Attribute:status/Value:waiting_for_approval+' => '',
'Class:Incident/Attribute:status/Value:pending' => 'Trwający',
'Class:Incident/Attribute:status/Value:pending+' => '',
'Class:Incident/Attribute:status/Value:resolved' => 'Rozwiązany',
'Class:Incident/Attribute:status/Value:resolved+' => '',
'Class:Incident/Attribute:status/Value:closed' => 'Zamknięty',
'Class:Incident/Attribute:status/Value:closed+' => '',
'Class:Incident/Attribute:impact' => 'Wpływ',
'Class:Incident/Attribute:impact+' => '',
'Class:Incident/Attribute:impact/Value:1' => 'Wydział',
'Class:Incident/Attribute:impact/Value:1+' => '',
'Class:Incident/Attribute:impact/Value:2' => 'Usługa',
'Class:Incident/Attribute:impact/Value:2+' => '',
'Class:Incident/Attribute:impact/Value:3' => 'Osoba',
'Class:Incident/Attribute:impact/Value:3+' => '',
'Class:Incident/Attribute:priority' => 'Priorytet',
'Class:Incident/Attribute:priority+' => '',
'Class:Incident/Attribute:priority/Value:1' => 'krytyczny',
'Class:Incident/Attribute:priority/Value:1+' => 'krytyczny',
'Class:Incident/Attribute:priority/Value:2' => 'wysoki',
'Class:Incident/Attribute:priority/Value:2+' => 'wysoki',
'Class:Incident/Attribute:priority/Value:3' => 'średni',
'Class:Incident/Attribute:priority/Value:3+' => 'średni',
'Class:Incident/Attribute:priority/Value:4' => 'niski',
'Class:Incident/Attribute:priority/Value:4+' => 'niski',
'Class:Incident/Attribute:urgency' => 'Pilność',
'Class:Incident/Attribute:urgency+' => '',
'Class:Incident/Attribute:urgency/Value:1' => 'krytyczna',
'Class:Incident/Attribute:urgency/Value:1+' => 'krytyczna',
'Class:Incident/Attribute:urgency/Value:2' => 'wysoka',
'Class:Incident/Attribute:urgency/Value:2+' => 'wysoka',
'Class:Incident/Attribute:urgency/Value:3' => 'średnia',
'Class:Incident/Attribute:urgency/Value:3+' => 'średnia',
'Class:Incident/Attribute:urgency/Value:4' => 'niska',
'Class:Incident/Attribute:urgency/Value:4+' => 'niska',
'Class:Incident/Attribute:origin' => 'Pochodzenie',
'Class:Incident/Attribute:origin+' => '',
'Class:Incident/Attribute:origin/Value:mail' => 'e-mail',
'Class:Incident/Attribute:origin/Value:mail+' => 'e-mail',
'Class:Incident/Attribute:origin/Value:monitoring' => 'monitoring',
'Class:Incident/Attribute:origin/Value:monitoring+' => 'monitoring',
'Class:Incident/Attribute:origin/Value:phone' => 'telefon',
'Class:Incident/Attribute:origin/Value:phone+' => 'telefon',
'Class:Incident/Attribute:origin/Value:portal' => 'portal',
'Class:Incident/Attribute:origin/Value:portal+' => 'portal',
'Class:Incident/Attribute:service_id' => 'Usługa',
'Class:Incident/Attribute:service_id+' => '',
'Class:Incident/Attribute:service_name' => 'Nazwa usługi',
'Class:Incident/Attribute:service_name+' => '',
'Class:Incident/Attribute:servicesubcategory_id' => 'Podkategoria usługi',
'Class:Incident/Attribute:servicesubcategory_id+' => '',
'Class:Incident/Attribute:servicesubcategory_name' => 'Nazwa podkategorii usługi',
'Class:Incident/Attribute:servicesubcategory_name+' => '',
'Class:Incident/Attribute:escalation_flag' => 'Flaga - Ważny',
'Class:Incident/Attribute:escalation_flag+' => '',
'Class:Incident/Attribute:escalation_flag/Value:no' => 'Nie',
'Class:Incident/Attribute:escalation_flag/Value:no+' => 'Nie',
'Class:Incident/Attribute:escalation_flag/Value:yes' => 'Tak',
'Class:Incident/Attribute:escalation_flag/Value:yes+' => 'Tak',
'Class:Incident/Attribute:escalation_reason' => 'Powód - Ważny',
'Class:Incident/Attribute:escalation_reason+' => '',
'Class:Incident/Attribute:assignment_date' => 'Data przydziału',
'Class:Incident/Attribute:assignment_date+' => '',
'Class:Incident/Attribute:resolution_date' => 'Data rozwiązania',
'Class:Incident/Attribute:resolution_date+' => '',
'Class:Incident/Attribute:last_pending_date' => 'Ostatnia data trwania',
'Class:Incident/Attribute:last_pending_date+' => '',
'Class:Incident/Attribute:cumulatedpending' => 'Skumulowany czas trwania',
'Class:Incident/Attribute:cumulatedpending+' => '',
'Class:Incident/Attribute:tto' => 'czas na podjęcie (TTO)',
'Class:Incident/Attribute:tto+' => '',
'Class:Incident/Attribute:ttr' => 'czas na rozwiązanie (TTR)',
'Class:Incident/Attribute:ttr+' => '',
'Class:Incident/Attribute:tto_escalation_deadline' => 'Ostateczny termin podjęcia (TTO)',
'Class:Incident/Attribute:tto_escalation_deadline+' => '',
'Class:Incident/Attribute:sla_tto_passed' => 'Gwarantowany czas podjęcia (SLA tto) zaliczony',
'Class:Incident/Attribute:sla_tto_passed+' => '',
'Class:Incident/Attribute:sla_tto_over' => 'Gwarantowany czas podjęcia (SLA tto) skończył się',
'Class:Incident/Attribute:sla_tto_over+' => '',
'Class:Incident/Attribute:ttr_escalation_deadline' => 'Ostateczny termin rozwiązania TTR',
'Class:Incident/Attribute:ttr_escalation_deadline+' => '',
'Class:Incident/Attribute:sla_ttr_passed' => 'Gwarantowany czas rozwiązania (SLA ttr) zaliczony',
'Class:Incident/Attribute:sla_ttr_passed+' => '',
'Class:Incident/Attribute:sla_ttr_over' => 'Gwarantowany czas rozwiązania (SLA ttr) skończył się',
'Class:Incident/Attribute:sla_ttr_over+' => '',
'Class:Incident/Attribute:time_spent' => 'Opóźnienie rozwiązania',
'Class:Incident/Attribute:time_spent+' => '',
'Class:Incident/Attribute:resolution_code' => 'Kod rozwiązania',
'Class:Incident/Attribute:resolution_code+' => '',
'Class:Incident/Attribute:resolution_code/Value:assistance' => 'wsparcie',
'Class:Incident/Attribute:resolution_code/Value:assistance+' => 'wsparcie',
'Class:Incident/Attribute:resolution_code/Value:bug fixed' => 'usterka naprawiona',
'Class:Incident/Attribute:resolution_code/Value:bug fixed+' => 'usterka naprawiona',
'Class:Incident/Attribute:resolution_code/Value:hardware repair' => 'naprawa sprzętu',
'Class:Incident/Attribute:resolution_code/Value:hardware repair+' => 'naprawa sprzętu',
'Class:Incident/Attribute:resolution_code/Value:other' => 'inne',
'Class:Incident/Attribute:resolution_code/Value:other+' => 'inne',
'Class:Incident/Attribute:resolution_code/Value:software patch' => 'poprawka oprogramowania',
'Class:Incident/Attribute:resolution_code/Value:software patch+' => 'poprawka oprogramowania',
'Class:Incident/Attribute:resolution_code/Value:system update' => 'aktualizacja systemu',
'Class:Incident/Attribute:resolution_code/Value:system update+' => 'aktualizacja systemu',
'Class:Incident/Attribute:resolution_code/Value:training' => 'szkolenie',
'Class:Incident/Attribute:resolution_code/Value:training+' => 'szkolenie',
'Class:Incident/Attribute:solution' => 'Rozwiązanie',
'Class:Incident/Attribute:solution+' => '',
'Class:Incident/Attribute:pending_reason' => 'Powód oczekiwania',
'Class:Incident/Attribute:pending_reason+' => '',
'Class:Incident/Attribute:parent_incident_id' => 'Źródłowy incydent',
'Class:Incident/Attribute:parent_incident_id+' => '',
'Class:Incident/Attribute:parent_incident_ref' => 'Powiązany źródłowy incydent',
'Class:Incident/Attribute:parent_incident_ref+' => '',
'Class:Incident/Attribute:parent_change_id' => 'Źródłowa zmiana',
'Class:Incident/Attribute:parent_change_id+' => '',
'Class:Incident/Attribute:parent_change_ref' => 'Powiązana źródłowa zmiana',
'Class:Incident/Attribute:parent_change_ref+' => '',
'Class:Incident/Attribute:parent_problem_id' => 'Źródłowy problem',
'Class:Incident/Attribute:parent_problem_id+' => '',
'Class:Incident/Attribute:parent_problem_ref' => 'Powiązany źródłowy problem',
'Class:Incident/Attribute:parent_problem_ref+' => '',
'Class:Incident/Attribute:related_request_list' => 'Zależne zgłoszenia',
'Class:Incident/Attribute:related_request_list+' => '',
'Class:Incident/Attribute:child_incidents_list' => 'Zależne incydenty',
'Class:Incident/Attribute:child_incidents_list+' => 'Wszystkie podrzędne incydenty związane z tym incydentem',
'Class:Incident/Attribute:public_log' => 'Dziennik publiczny',
'Class:Incident/Attribute:public_log+' => '',
'Class:Incident/Attribute:user_satisfaction' => 'Zadowolenie użytkownika',
'Class:Incident/Attribute:user_satisfaction+' => '',
'Class:Incident/Attribute:user_satisfaction/Value:1' => 'Bardzo zadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:1+' => 'Bardzo zadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Dość zadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:2+' => 'Dość zadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Raczej niezadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:3+' => 'Raczej niezadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:4' => 'Bardzo niezadowolony',
'Class:Incident/Attribute:user_satisfaction/Value:4+' => 'Bardzo niezadowolony',
'Class:Incident/Attribute:user_comment' => 'Komentarz użytkownika',
'Class:Incident/Attribute:user_comment+' => '',
'Class:Incident/Attribute:parent_incident_id_friendlyname' => 'parent_incident_id_friendlyname',
'Class:Incident/Attribute:parent_incident_id_friendlyname+' => '',
'Class:Incident/Stimulus:ev_assign' => 'Przydzielony',
'Class:Incident/Stimulus:ev_assign+' => '',
'Class:Incident/Stimulus:ev_reassign' => 'Przydzielony ponownie',
'Class:Incident/Stimulus:ev_reassign+' => '',
'Class:Incident/Stimulus:ev_pending' => 'Trwający',
'Class:Incident/Stimulus:ev_pending+' => '',
'Class:Incident/Stimulus:ev_timeout' => 'Po czasie',
'Class:Incident/Stimulus:ev_timeout+' => '',
'Class:Incident/Stimulus:ev_autoresolve' => 'Automatyczne rozwiązanie',
'Class:Incident/Stimulus:ev_autoresolve+' => '',
'Class:Incident/Stimulus:ev_autoclose' => 'Automatyczne zamknięcie',
'Class:Incident/Stimulus:ev_autoclose+' => '',
'Class:Incident/Stimulus:ev_resolve' => 'Oznacz jako rozwiązany',
'Class:Incident/Stimulus:ev_resolve+' => '',
'Class:Incident/Stimulus:ev_close' => 'Zamknij to zgłoszenie',
'Class:Incident/Stimulus:ev_close+' => '',
'Class:Incident/Stimulus:ev_reopen' => 'Otwórz ponownie',
'Class:Incident/Stimulus:ev_reopen+' => '',
'Class:Incident/Error:CannotAssignParentIncidentIdToSelf' => 'Nie można przypisać zdarzenia nadrzędnego do samego zdarzenia',
'Class:Incident/Method:ResolveChildTickets' => 'Rozpatrz zgłoszenia podrzędne',
'Class:Incident/Method:ResolveChildTickets+' => 'Połącz rozwiązanie kaskadowo ze zgłoszeniem podrzędnym (ev_autoresolve) i dopasuj następujące cechy: usługa, zespół, agent, informacje o rozwiązaniu',
'Tickets:Related:OpenIncidents' => 'Otwarte incydenty',
));

View File

@@ -1,146 +1,146 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: KnownError
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:KnownError' => 'Znany błąd',
'Class:KnownError+' => 'Udokumentowano błąd dotyczący znanego problemu',
'Class:KnownError/Attribute:name' => 'Nazwa',
'Class:KnownError/Attribute:name+' => '',
'Class:KnownError/Attribute:org_id' => 'Klient',
'Class:KnownError/Attribute:org_id+' => '',
'Class:KnownError/Attribute:cust_name' => 'Nazwa klienta',
'Class:KnownError/Attribute:cust_name+' => '',
'Class:KnownError/Attribute:problem_id' => 'Powiązany problem',
'Class:KnownError/Attribute:problem_id+' => '',
'Class:KnownError/Attribute:problem_ref' => 'Powiązane informacje o problemie',
'Class:KnownError/Attribute:problem_ref+' => '',
'Class:KnownError/Attribute:symptom' => 'Symptom (objaw)',
'Class:KnownError/Attribute:symptom+' => '',
'Class:KnownError/Attribute:root_cause' => 'Przyczyna',
'Class:KnownError/Attribute:root_cause+' => '',
'Class:KnownError/Attribute:workaround' => 'Obejście',
'Class:KnownError/Attribute:workaround+' => '',
'Class:KnownError/Attribute:solution' => 'Rozwiązanie',
'Class:KnownError/Attribute:solution+' => '',
'Class:KnownError/Attribute:error_code' => 'Kod błędu',
'Class:KnownError/Attribute:error_code+' => '',
'Class:KnownError/Attribute:domain' => 'Domena',
'Class:KnownError/Attribute:domain+' => '',
'Class:KnownError/Attribute:domain/Value:Application' => 'Aplikacja',
'Class:KnownError/Attribute:domain/Value:Application+' => 'Aplikacja',
'Class:KnownError/Attribute:domain/Value:Desktop' => 'Desktop',
'Class:KnownError/Attribute:domain/Value:Desktop+' => 'Desktop',
'Class:KnownError/Attribute:domain/Value:Network' => 'Sieć',
'Class:KnownError/Attribute:domain/Value:Network+' => 'Sieć',
'Class:KnownError/Attribute:domain/Value:Server' => 'Serwer',
'Class:KnownError/Attribute:domain/Value:Server+' => 'Serwer',
'Class:KnownError/Attribute:vendor' => 'Sprzedawca',
'Class:KnownError/Attribute:vendor+' => '',
'Class:KnownError/Attribute:model' => 'Model',
'Class:KnownError/Attribute:model+' => '',
'Class:KnownError/Attribute:version' => 'Wersja',
'Class:KnownError/Attribute:version+' => '',
'Class:KnownError/Attribute:ci_list' => 'Konfiguracje',
'Class:KnownError/Attribute:ci_list+' => 'Wszystkie elementy konfiguracji związane z tym znanym błędem',
'Class:KnownError/Attribute:document_list' => 'Dokumenty',
'Class:KnownError/Attribute:document_list+' => 'Wszystkie dokumenty związane z tym znanym błędem',
));
//
// Class: lnkErrorToFunctionalCI
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkErrorToFunctionalCI' => 'Połączenie Błąd / Konfiguracja',
'Class:lnkErrorToFunctionalCI+' => 'Konfiguracje związane ze znanym błędem',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => 'Konfiguracja',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name' => 'Nazwa konfiguracji',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:error_id' => 'Błąd',
'Class:lnkErrorToFunctionalCI/Attribute:error_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:error_name' => 'Nazwa błędu',
'Class:lnkErrorToFunctionalCI/Attribute:error_name+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:reason' => 'Powód',
'Class:lnkErrorToFunctionalCI/Attribute:reason+' => '',
));
//
// Class: lnkDocumentToError
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkDocumentToError' => 'Połączenie Dokumenty / Błędy',
'Class:lnkDocumentToError+' => 'Łącze między dokumentem a znanym błędem',
'Class:lnkDocumentToError/Attribute:document_id' => 'Dokument',
'Class:lnkDocumentToError/Attribute:document_id+' => '',
'Class:lnkDocumentToError/Attribute:document_name' => 'Nazwa dokumentu',
'Class:lnkDocumentToError/Attribute:document_name+' => '',
'Class:lnkDocumentToError/Attribute:error_id' => 'Błąd',
'Class:lnkDocumentToError/Attribute:error_id+' => '',
'Class:lnkDocumentToError/Attribute:error_name' => 'Nazwa błędu',
'Class:lnkDocumentToError/Attribute:error_name+' => '',
'Class:lnkDocumentToError/Attribute:link_type' => 'link_type',
'Class:lnkDocumentToError/Attribute:link_type+' => '',
));
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ProblemManagement' => 'Zarządzanie problemami',
'Menu:ProblemManagement+' => 'Zarządzanie problemami',
'Menu:Problem:Shortcuts' => 'Skróty',
'Menu:NewError' => 'Nowy znany błąd',
'Menu:NewError+' => 'Utworzenie nowego znanego błędu',
'Menu:SearchError' => 'Wyszukaj znane błędy',
'Menu:SearchError+' => 'Wyszukaj znane błędy',
'Menu:Problem:KnownErrors' => 'Wszystkie znane błędy',
'Menu:Problem:KnownErrors+' => 'Wszystkie znane błędy',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: KnownError
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:KnownError' => 'Znany błąd',
'Class:KnownError+' => 'Udokumentowano błąd dotyczący znanego problemu',
'Class:KnownError/Attribute:name' => 'Nazwa',
'Class:KnownError/Attribute:name+' => '',
'Class:KnownError/Attribute:org_id' => 'Klient',
'Class:KnownError/Attribute:org_id+' => '',
'Class:KnownError/Attribute:cust_name' => 'Nazwa klienta',
'Class:KnownError/Attribute:cust_name+' => '',
'Class:KnownError/Attribute:problem_id' => 'Powiązany problem',
'Class:KnownError/Attribute:problem_id+' => '',
'Class:KnownError/Attribute:problem_ref' => 'Powiązane informacje o problemie',
'Class:KnownError/Attribute:problem_ref+' => '',
'Class:KnownError/Attribute:symptom' => 'Symptom (objaw)',
'Class:KnownError/Attribute:symptom+' => '',
'Class:KnownError/Attribute:root_cause' => 'Przyczyna',
'Class:KnownError/Attribute:root_cause+' => '',
'Class:KnownError/Attribute:workaround' => 'Obejście',
'Class:KnownError/Attribute:workaround+' => '',
'Class:KnownError/Attribute:solution' => 'Rozwiązanie',
'Class:KnownError/Attribute:solution+' => '',
'Class:KnownError/Attribute:error_code' => 'Kod błędu',
'Class:KnownError/Attribute:error_code+' => '',
'Class:KnownError/Attribute:domain' => 'Domena',
'Class:KnownError/Attribute:domain+' => '',
'Class:KnownError/Attribute:domain/Value:Application' => 'Aplikacja',
'Class:KnownError/Attribute:domain/Value:Application+' => 'Aplikacja',
'Class:KnownError/Attribute:domain/Value:Desktop' => 'Desktop',
'Class:KnownError/Attribute:domain/Value:Desktop+' => 'Desktop',
'Class:KnownError/Attribute:domain/Value:Network' => 'Sieć',
'Class:KnownError/Attribute:domain/Value:Network+' => 'Sieć',
'Class:KnownError/Attribute:domain/Value:Server' => 'Serwer',
'Class:KnownError/Attribute:domain/Value:Server+' => 'Serwer',
'Class:KnownError/Attribute:vendor' => 'Sprzedawca',
'Class:KnownError/Attribute:vendor+' => '',
'Class:KnownError/Attribute:model' => 'Model',
'Class:KnownError/Attribute:model+' => '',
'Class:KnownError/Attribute:version' => 'Wersja',
'Class:KnownError/Attribute:version+' => '',
'Class:KnownError/Attribute:ci_list' => 'Konfiguracje',
'Class:KnownError/Attribute:ci_list+' => 'Wszystkie elementy konfiguracji związane z tym znanym błędem',
'Class:KnownError/Attribute:document_list' => 'Dokumenty',
'Class:KnownError/Attribute:document_list+' => 'Wszystkie dokumenty związane z tym znanym błędem',
));
//
// Class: lnkErrorToFunctionalCI
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkErrorToFunctionalCI' => 'Połączenie Błąd / Konfiguracja',
'Class:lnkErrorToFunctionalCI+' => 'Konfiguracje związane ze znanym błędem',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => 'Konfiguracja',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name' => 'Nazwa konfiguracji',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:error_id' => 'Błąd',
'Class:lnkErrorToFunctionalCI/Attribute:error_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:error_name' => 'Nazwa błędu',
'Class:lnkErrorToFunctionalCI/Attribute:error_name+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:reason' => 'Powód',
'Class:lnkErrorToFunctionalCI/Attribute:reason+' => '',
));
//
// Class: lnkDocumentToError
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkDocumentToError' => 'Połączenie Dokumenty / Błędy',
'Class:lnkDocumentToError+' => 'Łącze między dokumentem a znanym błędem',
'Class:lnkDocumentToError/Attribute:document_id' => 'Dokument',
'Class:lnkDocumentToError/Attribute:document_id+' => '',
'Class:lnkDocumentToError/Attribute:document_name' => 'Nazwa dokumentu',
'Class:lnkDocumentToError/Attribute:document_name+' => '',
'Class:lnkDocumentToError/Attribute:error_id' => 'Błąd',
'Class:lnkDocumentToError/Attribute:error_id+' => '',
'Class:lnkDocumentToError/Attribute:error_name' => 'Nazwa błędu',
'Class:lnkDocumentToError/Attribute:error_name+' => '',
'Class:lnkDocumentToError/Attribute:link_type' => 'link_type',
'Class:lnkDocumentToError/Attribute:link_type+' => '',
));
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ProblemManagement' => 'Zarządzanie problemami',
'Menu:ProblemManagement+' => 'Zarządzanie problemami',
'Menu:Problem:Shortcuts' => 'Skróty',
'Menu:NewError' => 'Nowy znany błąd',
'Menu:NewError+' => 'Utworzenie nowego znanego błędu',
'Menu:SearchError' => 'Wyszukaj znane błędy',
'Menu:SearchError+' => 'Wyszukaj znane błędy',
'Menu:Problem:KnownErrors' => 'Wszystkie znane błędy',
'Menu:Problem:KnownErrors+' => 'Wszystkie znane błędy',
));

View File

@@ -1,2 +1,5 @@
# Extension OAuth 2.0 client
## GMail
If the account is in test, after 7 days the tokens are no longer valid, you have to renew the tokens manually.

View File

@@ -17,8 +17,7 @@ if (version_compare(ITOP_DESIGN_LATEST_VERSION , '3.0') >= 0) {
}
$oUpdateController = new AjaxOauthClientController($sTemplates, 'itop-oauth-client');
$oUpdateController->AllowOnlyAdmin();
$oUpdateController->SetDefaultOperation('CreateMailbox');
$oUpdateController->SetMenuId('OAuthClient');
$oUpdateController->HandleOperation();

View File

@@ -5,7 +5,7 @@
<class id="OAuthClient" _delta="define">
<parent>cmdbAbstractObject</parent>
<properties>
<category>cloud,searchable</category>
<category>grant_by_profile,application</category>
<abstract>true</abstract>
<key_type>autoincrement</key_type>
<db_table>priv_oauth_client</db_table>
@@ -17,14 +17,15 @@
<attribute id="name"/>
</attributes>
</naming>
<display_template/>
<icon/>
<reconciliation>
<attributes>
<attribute id="provider"/>
<attribute id="name"/>
</attributes>
</reconciliation>
<style>
<icon/>
</style>
</properties>
<fields>
<field id="provider" xsi:type="AttributeString">
@@ -119,22 +120,35 @@
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function DisplayBareHeader(WebPage $oPage, $bEditMode = false)
{
parent::DisplayBareHeader($oPage, $bEditMode);
if (!$bEditMode) {
$oConfig = utils::GetConfig();
$sScope = $this->Get('scope');
if ($this->Get('status') == 'inactive') {
$oPage->p('<b>'.Dict::S('itop-oauth-client:Message:MissingToken').'</b>');
} elseif (($sScope == 'SMTP' || $sScope == 'EMail') && $oConfig->Get('email_transport_smtp.username') == $this->Get('name')) {
$sLabel = Dict::S('itop-oauth-client:UsedForSMTP');
$sTestLabel = Dict::S('itop-oauth-client:TestSMTP');
$sTestURL = utils::GetAbsoluteUrlAppRoot().'setup/email.test.php';
$oPage->p("<b>$sLabel</b>&nbsp;<a href='$sTestURL' target='_blank'>$sTestLabel</a>");
}
}
}
public function DisplayBareHeader(WebPage $oPage, $bEditMode = false)
{
$aHeaderBlocks = parent::DisplayBareHeader($oPage, $bEditMode);
$aTags = [];
if (!$bEditMode) {
$oConfig = utils::GetConfig();
if ($this->Get('status') == 'inactive') {
$sLabel = Dict::S('itop-oauth-client:Message:MissingToken');
$sTitle = '';
$aTags['oauth-message'] = ['title' => $sTitle, 'css_classes' => 'ibo-object-details--tag--oauth-message', 'decoration_classes' => 'fas fa-exclamation-triangle', 'label' => $sLabel];
} elseif ($this->Get('used_for_smtp') == 'yes' && $oConfig->Get('email_transport_smtp.username') == $this->Get('name')) {
$sLabel = Dict::S('itop-oauth-client:UsedForSMTP');
$sTestLabel = Dict::S('itop-oauth-client:TestSMTP');
$sTestURL = utils::GetAbsoluteUrlAppRoot().'setup/email.test.php';
$sLabel = Dict::S('itop-oauth-client:UsedForSMTP')."&nbsp;<a href='$sTestURL' target='_blank'>$sTestLabel</a>";
$sTitle = '';
$aTags['oauth-message'] = ['title' => $sTitle, 'css_classes' => 'ibo-object-details--tag--oauth-message', 'decoration_classes' => 'far fa-envelope', 'label' => $sLabel];
}
}
foreach ($aTags as $sIconId => $aIconData) {
$sTagTooltipContent = utils::EscapeHtml($aIconData['title']);
$aHeaderBlocks['subtitle'][static::HEADER_BLOCKS_SUBTITLE_TAG_PREFIX.$sIconId] = new Combodo\iTop\Application\UI\Base\Component\Html\Html(<<<HTML
<span id="{$sIconId}" class="ibo-object-details--tag {$aIconData['css_classes']}" data-tooltip-content="{$sTagTooltipContent}" data-tooltip-html-enabled="true"><span class="ibo-object-details--tag-icon"><span class="{$aIconData['decoration_classes']}"></span></span>{$aIconData['label']}</span>
HTML
);
}
return $aHeaderBlocks;
}
]]></code>
</method>
<method id="GetAttributeFlags">
@@ -142,14 +156,14 @@
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
if ($sAttCode == 'status') {
return OPT_ATT_READONLY;
}
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
if ($sAttCode == 'status') {
return OPT_ATT_READONLY;
}
return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}
return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}
]]></code>
</method>
<method id="GetInitialStateAttributeFlags">
@@ -157,68 +171,68 @@
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
{
if ($sAttCode == 'status') {
return OPT_ATT_READONLY;
}
public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
{
if ($sAttCode == 'status') {
return OPT_ATT_READONLY;
}
return parent::GetInitialStateAttributeFlags($sAttCode, $aReasons);
}
return parent::GetInitialStateAttributeFlags($sAttCode, $aReasons);
}
]]></code>
</method>
<method id="GetDefaultMailServer">
<static>false</static>
<access>public</access>
<code><![CDATA[
public function GetDefaultMailServer()
{
return 'imap.'.$this->Get('provider').'.com';
}
public function GetDefaultMailServer()
{
return 'imap.'.$this->Get('provider').'.com';
}
]]></code>
</method>
<method id="GetDefaultMailServerPort">
<static>false</static>
<access>public</access>
<code><![CDATA[
public function GetDefaultMailServerPort()
{
return 993;
}
public function GetDefaultMailServerPort()
{
return 993;
}
]]></code>
</method>
<method id="GetAccessToken">
<static>false</static>
<access>public</access>
<code><![CDATA[
public function GetAccessToken()
{
if ($this->Get('status') == 'active') {
return new \League\OAuth2\Client\Token\AccessToken([
'access_token' => $this->Get('token'),
'expires_in' => date_format(new DateTime($this->Get('token_expiration')), 'U') - time(),
'refresh_token' => $this->Get('refresh_token'),
'token_type' => 'Bearer',
]);
}
return null;
}
public function GetAccessToken()
{
if ($this->Get('status') == 'active') {
return new \League\OAuth2\Client\Token\AccessToken([
'access_token' => $this->Get('token'),
'expires_in' => date_format(new DateTime($this->Get('token_expiration')), 'U') - time(),
'refresh_token' => $this->Get('refresh_token'),
'token_type' => 'Bearer',
]);
}
return null;
}
]]></code>
</method>
<method id="SetAccessToken">
<static>false</static>
<access>public</access>
<code><![CDATA[
public function SetAccessToken(\League\OAuth2\Client\Token\AccessTokenInterface $oAccessToken)
{
$this->Set('token', $oAccessToken->getToken());
$this->Set('token_expiration', date(AttributeDateTime::GetSQLFormat(), $oAccessToken->getExpires()));
if (!empty($oAccessToken->getRefreshToken())) {
$this->Set('refresh_token', $oAccessToken->getRefreshToken());
}
$this->Set('status', 'active');
$this->DBUpdate();
}
public function SetAccessToken(\League\OAuth2\Client\Token\AccessTokenInterface $oAccessToken)
{
$this->Set('token', $oAccessToken->getToken());
$this->Set('token_expiration', date(AttributeDateTime::GetSQLFormat(), $oAccessToken->getExpires()));
if (!empty($oAccessToken->getRefreshToken())) {
$this->Set('refresh_token', $oAccessToken->getRefreshToken());
}
$this->Set('status', 'active');
$this->DBUpdate();
}
]]></code>
</method>
</methods>
@@ -280,6 +294,632 @@
</default_search>
</presentation>
</class>
<class id="OAuthClientAzure" _delta="define">
<parent>OAuthClient</parent>
<properties>
<category>grant_by_profile,application</category>
<abstract>false</abstract>
<key_type>autoincrement</key_type>
<db_table>priv_oauth_client_azure</db_table>
<db_key_field>id</db_key_field>
<db_final_class_field/>
<naming>
<attributes>
<attribute id="provider"/>
<attribute id="name"/>
</attributes>
</naming>
<reconciliation>
<attributes>
<attribute id="provider"/>
<attribute id="name"/>
</attributes>
</reconciliation>
<uniqueness_rules>
<rule id="server">
<attributes>
<attribute id="provider"/>
<attribute id="client_id"/>
<attribute id="client_secret"/>
</attributes>
<is_blocking>true</is_blocking>
</rule>
</uniqueness_rules>
<style>
<icon/>
</style>
</properties>
<fields>
<field id="scope" xsi:type="AttributeEnumSet">
<always_load_in_tables>true</always_load_in_tables>
<values>
<value id="SMTP">
<code>SMTP</code>
</value>
<value id="IMAP">
<code>IMAP</code>
</value>
</values>
<sql>scope</sql>
<default_value>SMTP,IMAP</default_value>
<is_null_allowed>true</is_null_allowed>
</field>
<field id="advanced_scope" xsi:type="AttributeString">
<sql>advanced_scope</sql>
<default_value/>
<is_null_allowed>true</is_null_allowed>
</field>
<field id="used_scope" xsi:type="AttributeEnum">
<always_load_in_tables>true</always_load_in_tables>
<values>
<value id="simple">
<code>simple</code>
</value>
<value id="advanced">
<code>advanced</code>
</value>
</values>
<sql>used_scope</sql>
<default_value>simple</default_value>
<is_null_allowed>false</is_null_allowed>
<dependencies>
<attribute id="scope"/>
<attribute id="advanced_scope"/>
</dependencies>
</field>
<field id="used_for_smtp" xsi:type="AttributeEnum">
<always_load_in_tables>true</always_load_in_tables>
<values>
<value id="yes">
<code>yes</code>
</value>
<value id="no">
<code>no</code>
</value>
</values>
<sql>used_for_smtp</sql>
<default_value>no</default_value>
<is_null_allowed>true</is_null_allowed>
</field>
</fields>
<presentation>
<details>
<items>
<item id="col:col1">
<rank>10</rank>
<items>
<item id="fieldset:OAuthClient:baseinfo">
<rank>10</rank>
<items>
<item id="name">
<rank>10</rank>
</item>
<item id="status">
<rank>20</rank>
</item>
<item id="description">
<rank>30</rank>
</item>
<item id="provider">
<rank>40</rank>
</item>
<item id="redirect_url">
<rank>50</rank>
</item>
<item id="client_id">
<rank>60</rank>
</item>
<item id="client_secret">
<rank>70</rank>
</item>
<item id="mailbox_list">
<rank>80</rank>
</item>
</items>
</item>
</items>
</item>
<item id="col:col2">
<rank>20</rank>
<items>
<item id="fieldset:OAuthClient:scope">
<rank>10</rank>
<items>
<item id="used_scope">
<rank>10</rank>
</item>
<item id="scope">
<rank>20</rank>
</item>
<item id="advanced_scope">
<rank>30</rank>
</item>
<item id="used_for_smtp">
<rank>40</rank>
</item>
</items>
</item>
</items>
</item>
</items>
</details>
<list>
<items>
<item id="provider">
<rank>10</rank>
</item>
<item id="status">
<rank>10</rank>
</item>
</items>
</list>
<standard_search>
<items>
<item id="name">
<rank>10</rank>
</item>
<item id="provider">
<rank>10</rank>
</item>
<item id="status">
<rank>10</rank>
</item>
</items>
</standard_search>
</presentation>
<methods>
<method id="PrefillCreationForm">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function PrefillCreationForm(&$aContextParam)
{
$this->Set('provider', 'Azure');
$this->Set('redirect_url', Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory::GetRedirectUri());
$this->Set('scope', 'SMTP, IMAP');
parent::PrefillCreationForm($aContextParam);
}
]]></code>
</method>
<method id="DoCheckToWrite">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[ public function DoCheckToWrite()
{
parent::DoCheckToWrite();
$aChanges = $this->ListChanges();
if (array_key_exists('name', $aChanges) || array_key_exists('used_for_smtp', $aChanges))
{
$sNewName = $this->Get('name');
$sNewUseForSMTP = $this->Get('used_for_smtp');
if ($sNewUseForSMTP == 'yes') {
$oSearch = DBObjectSearch::FromOQL_AllData("SELECT OAuthClientGoogle WHERE name = :newname AND used_for_smtp = :newuseforsmtp AND id != :id UNION SELECT OAuthClientAzure WHERE name = :newname AND used_for_smtp = :newuseforsmtp AND id != :id");
$oSet = new DBObjectSet($oSearch, array(), ['id' => $this->GetKey(), 'newname' => $sNewName, 'newuseforsmtp' => $sNewUseForSMTP]);
if ($oSet->Count() > 0)
{
$this->m_aCheckIssues[] = Dict::Format('OAuthClient:Name/UseForSMTPMustBeUnique', $sNewName, $sNewUseForSMTP);
}
}
}
} ]]></code>
</method>
<method id="ComputeValues">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function ComputeValues()
{
parent::ComputeValues();
if (empty($this->Get('provider'))) {
$this->Set('provider', 'Azure');
}
if (empty($this->Get('redirect_url'))) {
$this->Set('redirect_url', Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory::GetRedirectUri());
}
if (empty($this->Get('advanced_scope'))) {
$this->Set('used_scope', 'simple');
if (count($this->Get('scope')->GetValues()) == 0) {
$this->Set('scope', 'SMTP, IMAP');
}
} else {
$this->Set('used_scope', 'advanced');
$this->Set('scope', '');
}
}
]]></code>
</method>
<method id="GetAttributeFlags">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
switch ($sAttCode) {
case 'provider':
case 'redirect_url':
case 'used_scope':
return OPT_ATT_READONLY;
}
return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}
]]></code>
</method>
<method id="GetInitialStateAttributeFlags">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
{
switch ($sAttCode) {
case 'provider':
case 'redirect_url':
case 'used_scope':
return OPT_ATT_READONLY;
}
return parent::GetInitialStateAttributeFlags($sAttCode, $aReasons);
}
]]></code>
</method>
<method id="GetDefaultMailServer">
<static>false</static>
<access>public</access>
<code><![CDATA[
public function GetDefaultMailServer()
{
return 'outlook.office365.com';
}
]]></code>
</method>
<method id="GetScope">
<static>false</static>
<access>public</access>
<code><![CDATA[
public function GetScope()
{
if (!empty($this->Get('advanced_scope'))) {
return $this->Get('advanced_scope');
}
$aScopes = $this->Get('scope')->GetValues();
$aRawScopes = ['offline_access'];
foreach ($aScopes as $sScope) {
switch ($sScope) {
case 'SMTP':
$aRawScopes[] = 'https://outlook.office.com/SMTP.Send';
break;
case 'IMAP':
$aRawScopes[] = 'https://outlook.office.com/IMAP.AccessAsUser.All';
break;
}
}
return implode(' ', $aRawScopes);
}
]]></code>
</method>
</methods>
</class>
<class id="OAuthClientGoogle" _delta="define">
<parent>OAuthClient</parent>
<properties>
<category>grant_by_profile,application</category>
<abstract>false</abstract>
<key_type>autoincrement</key_type>
<db_table>priv_oauth_client_google</db_table>
<db_key_field>id</db_key_field>
<db_final_class_field/>
<naming>
<attributes>
<attribute id="provider"/>
<attribute id="name"/>
</attributes>
</naming>
<reconciliation>
<attributes>
<attribute id="provider"/>
<attribute id="name"/>
</attributes>
</reconciliation>
<uniqueness_rules>
<rule id="server">
<attributes>
<attribute id="provider"/>
<attribute id="client_id"/>
<attribute id="client_secret"/>
</attributes>
<is_blocking>true</is_blocking>
</rule>
</uniqueness_rules>
<style>
<icon/>
</style>
</properties>
<fields>
<field id="scope" xsi:type="AttributeEnumSet">
<always_load_in_tables>true</always_load_in_tables>
<values>
<value id="SMTP">
<code>SMTP</code>
</value>
<value id="IMAP">
<code>IMAP</code>
</value>
</values>
<sql>scope</sql>
<default_value>SMTP,IMAP</default_value>
<is_null_allowed>true</is_null_allowed>
</field>
<field id="advanced_scope" xsi:type="AttributeString">
<sql>advanced_scope</sql>
<default_value/>
<is_null_allowed>true</is_null_allowed>
</field>
<field id="used_scope" xsi:type="AttributeEnum">
<always_load_in_tables>true</always_load_in_tables>
<values>
<value id="simple">
<code>simple</code>
</value>
<value id="advanced">
<code>advanced</code>
</value>
</values>
<sql>used_scope</sql>
<default_value>simple</default_value>
<is_null_allowed>false</is_null_allowed>
<dependencies>
<attribute id="scope"/>
<attribute id="advanced_scope"/>
</dependencies>
</field>
<field id="used_for_smtp" xsi:type="AttributeEnum">
<always_load_in_tables>true</always_load_in_tables>
<values>
<value id="yes">
<code>yes</code>
</value>
<value id="no">
<code>no</code>
</value>
</values>
<sql>used_for_smtp</sql>
<default_value>no</default_value>
<is_null_allowed>true</is_null_allowed>
</field>
</fields>
<presentation>
<details>
<items>
<item id="col:col1">
<rank>10</rank>
<items>
<item id="fieldset:OAuthClient:baseinfo">
<rank>10</rank>
<items>
<item id="name">
<rank>10</rank>
</item>
<item id="status">
<rank>20</rank>
</item>
<item id="description">
<rank>30</rank>
</item>
<item id="provider">
<rank>40</rank>
</item>
<item id="redirect_url">
<rank>50</rank>
</item>
<item id="client_id">
<rank>60</rank>
</item>
<item id="client_secret">
<rank>70</rank>
</item>
<item id="mailbox_list">
<rank>80</rank>
</item>
</items>
</item>
</items>
</item>
<item id="col:col2">
<rank>20</rank>
<items>
<item id="fieldset:OAuthClient:scope">
<rank>10</rank>
<items>
<item id="used_scope">
<rank>10</rank>
</item>
<item id="scope">
<rank>20</rank>
</item>
<item id="advanced_scope">
<rank>30</rank>
</item>
<item id="used_for_smtp">
<rank>40</rank>
</item>
</items>
</item>
</items>
</item>
</items>
</details>
<list>
<items>
<item id="provider">
<rank>10</rank>
</item>
<item id="status">
<rank>10</rank>
</item>
</items>
</list>
<standard_search>
<items>
<item id="name">
<rank>10</rank>
</item>
<item id="provider">
<rank>10</rank>
</item>
<item id="status">
<rank>10</rank>
</item>
</items>
</standard_search>
</presentation>
<methods>
<method id="PrefillCreationForm">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function PrefillCreationForm(&$aContextParam)
{
$this->Set('provider', 'Google');
$this->Set('redirect_url', Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory::GetRedirectUri());
$this->Set('scope', 'SMTP, IMAP');
parent::PrefillCreationForm($aContextParam);
}
]]></code>
</method>
<method id="DoCheckToWrite">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[ public function DoCheckToWrite()
{
parent::DoCheckToWrite();
$aChanges = $this->ListChanges();
if (array_key_exists('name', $aChanges) || array_key_exists('used_for_smtp', $aChanges))
{
$sNewName = $this->Get('name');
$sNewUseForSMTP = $this->Get('used_for_smtp');
if ($sNewUseForSMTP == 'yes') {
$oSearch = DBObjectSearch::FromOQL_AllData("SELECT OAuthClientGoogle WHERE name = :newname AND used_for_smtp = :newuseforsmtp AND id != :id UNION SELECT OAuthClientAzure WHERE name = :newname AND used_for_smtp = :newuseforsmtp AND id != :id");
$oSet = new DBObjectSet($oSearch, array(), ['id' => $this->GetKey(), 'newname' => $sNewName, 'newuseforsmtp' => $sNewUseForSMTP]);
if ($oSet->Count() > 0)
{
$this->m_aCheckIssues[] = Dict::Format('OAuthClient:Name/UseForSMTPMustBeUnique', $sNewName, $sNewUseForSMTP);
}
}
}
} ]]></code>
</method>
<method id="ComputeValues">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function ComputeValues()
{
parent::ComputeValues();
if (empty($this->Get('provider'))) {
$this->Set('provider', 'Google');
}
if (empty($this->Get('redirect_url'))) {
$this->Set('redirect_url', Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory::GetRedirectUri());
}
if (empty($this->Get('advanced_scope'))) {
$this->Set('used_scope', 'simple');
if (count($this->Get('scope')->GetValues()) == 0) {
$this->Set('scope', 'SMTP, IMAP');
}
} else {
$this->Set('used_scope', 'advanced');
$this->Set('scope', '');
}
}
]]></code>
</method>
<method id="GetAttributeFlags">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
switch ($sAttCode) {
case 'provider':
case 'redirect_url':
case 'used_scope':
return OPT_ATT_READONLY;
}
return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}
]]></code>
</method>
<method id="GetInitialStateAttributeFlags">
<static>false</static>
<access>public</access>
<type>Overload-DBObject</type>
<code><![CDATA[
public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
{
switch ($sAttCode) {
case 'provider':
case 'redirect_url':
case 'used_scope':
return OPT_ATT_READONLY;
}
return parent::GetInitialStateAttributeFlags($sAttCode, $aReasons);
}
]]></code>
</method>
<method id="GetDefaultMailServer">
<static>false</static>
<access>public</access>
<code><![CDATA[
public function GetDefaultMailServer()
{
return 'imap.gmail.com';
}
]]></code>
</method>
<method id="GetScope">
<static>false</static>
<access>public</access>
<code><![CDATA[
public function GetScope()
{
if (!empty($this->Get('advanced_scope'))) {
return $this->Get('advanced_scope');
}
$aScopes = $this->Get('scope')->GetValues();
$aRawScopes = [];
foreach ($aScopes as $sScope) {
switch ($sScope) {
case 'SMTP':
$aRawScopes['https://mail.google.com/'] = 'https://mail.google.com/';
break;
case 'IMAP':
$aRawScopes['https://mail.google.com/'] = 'https://mail.google.com/';
break;
}
}
return implode(' ', $aRawScopes);
}
]]></code>
</method>
</methods>
</class>
</classes>
<menus>
<menu id="OAuthClient" xsi:type="OQLMenuNode" _delta="define">
@@ -289,13 +929,16 @@
<do_search>1</do_search>
<enable_admin_only>0</enable_admin_only>
<enable_class>OAuthClient</enable_class>
<enable_action>UR_ACTION_READ</enable_action>
<enable_action>UR_ACTION_MODIFY</enable_action>
</menu>
</menus>
<user_rights>
<groups>
<group id="OauthConnection" _delta="define">
<classes>
<class id="OAuthClient"/>
</classes>
</group>
</groups>
<profiles>
</profiles>
</user_rights>
</itop_design>

View File

@@ -21,6 +21,11 @@ Dict::Add('EN US', 'English', 'English', [
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client',
'itop-oauth-client:Message:TokenCreated' => 'Access token created',
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated',
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client',
'OAuthClient:baseinfo' => 'Base Information',
'OAuthClient:scope' => 'Scope',
]);
//
@@ -32,19 +37,17 @@ Dict::Add('EN US', 'English', 'English', [
'Class:OAuthClient/Attribute:provider' => 'Provider',
'Class:OAuthClient/Attribute:provider+' => '',
'Class:OAuthClient/Attribute:name' => 'Login',
'Class:OAuthClient/Attribute:name+' => '',
'Class:OAuthClient/Attribute:scope' => 'Scope',
'Class:OAuthClient/Attribute:scope+' => '',
'Class:OAuthClient/Attribute:name+' => 'In general, this is your email address',
'Class:OAuthClient/Attribute:status' => 'Status',
'Class:OAuthClient/Attribute:status+' => '',
'Class:OAuthClient/Attribute:status+' => 'After creation, use the action “Generate access token” to be able to use this OAuth client',
'Class:OAuthClient/Attribute:status/Value:active' => 'Access token generated',
'Class:OAuthClient/Attribute:status/Value:inactive' => 'No Access token',
'Class:OAuthClient/Attribute:description' => 'Description',
'Class:OAuthClient/Attribute:description+' => '',
'Class:OAuthClient/Attribute:client_id' => 'Client id',
'Class:OAuthClient/Attribute:client_id+' => '',
'Class:OAuthClient/Attribute:client_id+' => 'A long string of characters provided by your OAuth2 provider',
'Class:OAuthClient/Attribute:client_secret' => 'Client secret',
'Class:OAuthClient/Attribute:client_secret+' => '',
'Class:OAuthClient/Attribute:client_secret+' => 'Another long string of characters provided by your OAuth2 provider',
'Class:OAuthClient/Attribute:refresh_token' => 'Refresh token',
'Class:OAuthClient/Attribute:refresh_token+' => '',
'Class:OAuthClient/Attribute:refresh_token_expiration' => 'Refresh token expiration',
@@ -54,7 +57,7 @@ Dict::Add('EN US', 'English', 'English', [
'Class:OAuthClient/Attribute:token_expiration' => 'Access token expiration',
'Class:OAuthClient/Attribute:token_expiration+' => '',
'Class:OAuthClient/Attribute:redirect_url' => 'Redirect url',
'Class:OAuthClient/Attribute:redirect_url+' => '',
'Class:OAuthClient/Attribute:redirect_url+' => 'This url must be copied in the OAuth2 configuration of the provider',
'Class:OAuthClient/Attribute:mailbox_list' => 'Mailbox list',
'Class:OAuthClient/Attribute:mailbox_list+' => '',
]);
@@ -62,17 +65,53 @@ Dict::Add('EN US', 'English', 'English', [
//
// Class: OAuthClientAzure
//
Dict::Add('EN US', 'English', 'English', [
Dict::Add('EN US', 'English', 'English', array(
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure',
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)',
]);
'Class:OAuthClientAzure/Attribute:scope' => 'Scope',
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP' => 'SMTP',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP+' => '',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP+' => '',
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope',
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored',
'Class:OAuthClientAzure/Attribute:used_scope' => 'Used scope',
'Class:OAuthClientAzure/Attribute:used_scope+' => '',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple' => 'Simple',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple+' => '',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced' => 'Advanced',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced+' => '',
'Class:OAuthClientAzure/Attribute:used_for_smtp' => 'Used for SMTP',
'Class:OAuthClientAzure/Attribute:used_for_smtp+' => 'At least one OAuth client must have this flag to “Yes”, if you want iTop to use it for sending mails',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:yes' => 'Yes',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:no' => 'No',
));
//
// Class: OAuthClientGoogle
//
Dict::Add('EN US', 'English', 'English', [
Dict::Add('EN US', 'English', 'English', array(
'Class:OAuthClientGoogle' => 'OAuth client for Google',
'Class:OAuthClientGoogle/Name' => '%1$s (%2$s)',
]);
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope',
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP' => 'SMTP',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP+' => '',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP+' => '',
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope',
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored',
'Class:OAuthClientGoogle/Attribute:used_scope' => 'Used scope',
'Class:OAuthClientGoogle/Attribute:used_scope+' => '',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple' => 'Simple',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple+' => '',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced' => 'Advanced',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced+' => '',
'Class:OAuthClientGoogle/Attribute:used_for_smtp' => 'Used for SMTP',
'Class:OAuthClientGoogle/Attribute:used_for_smtp+' => 'At least one OAuth client must have this flag to “Yes”, if you want iTop to use it for sending mails',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:yes' => 'Yes',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:no' => 'No',
));

View File

@@ -5,6 +5,7 @@
* @copyright Copyright (C) 2013 XXXXX
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('FR FR', 'French', 'Français', [
'Menu:CreateMailbox' => 'Créer une boite mail...',
'Menu:OAuthClient' => 'Client OAuth',
@@ -20,6 +21,11 @@ Dict::Add('FR FR', 'French', 'Français', [
'itop-oauth-client:Message:MissingToken' => 'Générez le jeton d\'accès avant d\'utiliser ce client OAuth',
'itop-oauth-client:Message:TokenCreated' => 'Le jeton d\'accès à été créé',
'itop-oauth-client:Message:TokenRecreated' => 'Le jeton d\'accès à été renouvelé',
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'La combinaison Login (%1$s) and Utilisé pour SMTP (%2$s) a déjà été utilisée pour OAuth Client',
'OAuthClient:baseinfo' => 'Information',
'OAuthClient:scope' => 'Scope',
]);
//
@@ -31,15 +37,17 @@ Dict::Add('FR FR', 'French', 'Français', [
'Class:OAuthClient/Attribute:provider' => 'Fournisseur',
'Class:OAuthClient/Attribute:provider+' => '',
'Class:OAuthClient/Attribute:name' => 'Login',
'Class:OAuthClient/Attribute:name+' => '',
'Class:OAuthClient/Attribute:scope' => 'Niveaux d\'accès',
'Class:OAuthClient/Attribute:scope+' => '',
'Class:OAuthClient/Attribute:name+' => 'L\'adresse email à utiliser chez ce fournisseur',
'Class:OAuthClient/Attribute:status' => 'Statut',
'Class:OAuthClient/Attribute:status+' => 'Après la création, effectuer l\'action \'Créer un jeton d\'accès...\' pour activer ce client OAuth',
'Class:OAuthClient/Attribute:status/Value:active' => 'Jeton d\'accès créé',
'Class:OAuthClient/Attribute:status/Value:inactive' => 'Pas de jeton d\'accès',
'Class:OAuthClient/Attribute:description' => 'Description',
'Class:OAuthClient/Attribute:description+' => '',
'Class:OAuthClient/Attribute:client_id' => 'ID Client',
'Class:OAuthClient/Attribute:client_id+' => '',
'Class:OAuthClient/Attribute:client_id+' => 'Recopier la chaine fournie par votre fournisseur OAuth2',
'Class:OAuthClient/Attribute:client_secret' => 'Code secret du client',
'Class:OAuthClient/Attribute:client_secret+' => '',
'Class:OAuthClient/Attribute:client_secret+' => 'Recopier l\'information fournie par votre fournisseur OAuth2',
'Class:OAuthClient/Attribute:refresh_token' => 'Jeton de renouvellement',
'Class:OAuthClient/Attribute:refresh_token+' => '',
'Class:OAuthClient/Attribute:refresh_token_expiration' => 'Date d\'expiration du jeton de renouvellement',
@@ -49,7 +57,7 @@ Dict::Add('FR FR', 'French', 'Français', [
'Class:OAuthClient/Attribute:token_expiration' => 'Date d\'expiration du jeton d\'accès',
'Class:OAuthClient/Attribute:token_expiration+' => '',
'Class:OAuthClient/Attribute:redirect_url' => 'URL de redirection',
'Class:OAuthClient/Attribute:redirect_url+' => '',
'Class:OAuthClient/Attribute:redirect_url+' => 'Cet URL doit être recopié dans la configuration OAuth2 de votre fournisseur',
'Class:OAuthClient/Attribute:mailbox_list' => 'Mailbox list',
'Class:OAuthClient/Attribute:mailbox_list+' => '',
]);
@@ -57,22 +65,52 @@ Dict::Add('FR FR', 'French', 'Français', [
//
// Class: OAuthClientAzure
//
Dict::Add('FR FR', 'French', 'Français', [
Dict::Add('FR FR', 'French', 'Français', array(
'Class:OAuthClientAzure' => 'Client OAuth pour Microsoft Azure',
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)',
]);
'Class:OAuthClientAzure/Attribute:scope' => 'Niveaux d\'accès',
'Class:OAuthClientAzure/Attribute:scope+' => 'Les niveaux par défaut sont les plus souvent suffisants',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP' => 'SMTP',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP+' => '',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP+' => '',
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Niveaux d\'accès avancé',
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'A saisir, lorsque les niveaux prédéfinis ne suffisent pas',
'Class:OAuthClientAzure/Attribute:used_scope' => 'Niveaux d\'accès utilisés',
'Class:OAuthClientAzure/Attribute:used_scope+' => '',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple' => 'Simple',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple+' => '',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced' => 'Avancé',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced+' => '',
'Class:OAuthClientAzure/Attribute:used_for_smtp' => 'Utilisé pour SMTP',
'Class:OAuthClientAzure/Attribute:used_for_smtp+' => 'Le Client OAuth utilisé pour l\'envoi d\'emails doit être à \'Oui\'',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:yes' => 'Oui',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:no' => 'Non',
));
//
// Class: OAuthClientGoogle
//
Dict::Add('FR FR', 'French', 'Français', [
Dict::Add('FR FR', 'French', 'Français', array(
'Class:OAuthClientGoogle' => 'Client OAuth pour Google',
'Class:OAuthClientGoogle/Name' => '%1$s (%2$s)',
]);
// Additional language entries not present in English dict
Dict::Add('FR FR', 'French', 'Français', array(
'Class:OAuthClient/Name' => '%1$s-%%2$~',
'Class:OAuthClientGoogle/Attribute:scope' => 'Niveaux d\'accès',
'Class:OAuthClientGoogle/Attribute:scope+' => 'Les niveaux par défaut sont les plus souvent suffisants',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP' => 'SMTP',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP+' => '',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP+' => '',
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Niveaux d\'accès avancé',
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'A saisir, lorsque les niveaux prédéfinis ne suffisent pas',
'Class:OAuthClientGoogle/Attribute:used_scope' => 'Niveaux d\'accès utilisés',
'Class:OAuthClientGoogle/Attribute:used_scope+' => '',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple' => 'Simple',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced' => 'Avancé',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced+' => '',
'Class:OAuthClientGoogle/Attribute:used_for_smtp' => 'Utilisé pour SMTP',
'Class:OAuthClientGoogle/Attribute:used_for_smtp+' => 'Le Client OAuth utilisé pour l\'envoi d\'emails doit être à \'Oui\'',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:yes' => 'Oui',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:no' => 'Non',
));

View File

@@ -25,9 +25,8 @@ SetupWebPage::AddModule(
'datamodel' => array(
'vendor/autoload.php',
'model.itop-oauth-client.php', // Contains the PHP code generated by the "compilation" of datamodel.remote-authent-oauth.xml
'src/Model/OAuthClientGoogle.php',
'src/Model/OAuthClientAzure.php',
'src/Service/PopupMenuExtension.php',
'src/Service/ApplicationUIExtension.php',
),
'webservice' => array(

View File

@@ -1,128 +0,0 @@
<?php
/**
* @copyright Copyright (C) 2010-2022 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory;
class OAuthClientAzure extends OAuthClient
{
public static function Init()
{
$aParams = [
'category' => 'cloud',
'key_type' => 'autoincrement',
'name_attcode' => ['name', 'scope'],
'state_attcode' => '',
'reconc_keys' => ['provider', 'name'],
'db_table' => 'priv_oauth_client_azure',
'db_key_field' => 'id',
'icon' => utils::GetAbsoluteUrlModulesRoot().'itop-oauth-client/assets/img/icons8-azure.svg',
'db_finalclass_field' => '',
'uniqueness_rules' => [
'Username for scope' =>
[
'attributes' => ['name', 'scope'],
'filter' => null,
'disabled' => false,
'is_blocking' => true,
],
'OAuth Server' =>
[
'attributes' => ['provider', 'scope', 'client_id', 'client_secret'],
'filter' => null,
'disabled' => false,
'is_blocking' => true,
],
],
];
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeEnum('scope', [
'allowed_values' => new ValueSetEnum('EMail'),
'display_style' => 'list',
'sql' => 'scope',
'default_value' => 'EMail',
'is_null_allowed' => false,
'depends_on' => [],
'always_load_in_tables' => true,
]));
MetaModel::Init_SetZListItems('details', [
'name',
'status',
'description',
'provider',
'scope',
'redirect_url',
'client_id',
'client_secret',
'mailbox_list',
]);
MetaModel::Init_SetZListItems('standard_search', [
'name',
'provider',
'status',
]);
MetaModel::Init_SetZListItems('list', [
'status',
'provider',
]);
}
public function PrefillCreationForm(&$aContextParam)
{
$this->Set('provider', 'Azure');
$this->Set('redirect_url', OAuthClientProviderFactory::GetRedirectUri());
parent::PrefillCreationForm($aContextParam);
}
/**
* Compute read-only values
*
* @return void
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
*/
public function ComputeValues()
{
parent::ComputeValues();
if (empty($this->Get('provider'))) {
$this->Set('provider', 'Azure');
}
if (empty($this->Get('redirect_url'))) {
$this->Set('redirect_url', OAuthClientProviderFactory::GetRedirectUri());
}
}
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
if ($sAttCode == 'provider' || $sAttCode == 'redirect_url') {
return OPT_ATT_READONLY;
}
return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}
public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
{
if ($sAttCode == 'provider' || $sAttCode == 'redirect_url') {
return OPT_ATT_READONLY;
}
return parent::GetInitialStateAttributeFlags($sAttCode, $aReasons);
}
public function GetDefaultMailServer()
{
return 'outlook.office365.com';
}
public function GetScope()
{
return 'https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/SMTP.Send offline_access';
}
}

View File

@@ -1,134 +0,0 @@
<?php
/**
* @copyright Copyright (C) 2010-2022 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory;
class OAuthClientGoogle extends OAuthClient
{
public static function Init()
{
$aParams = array
(
'category' => 'cloud',
'key_type' => 'autoincrement',
'name_attcode' => ['name', 'scope'],
'state_attcode' => '',
'reconc_keys' => ['provider', 'name'],
'db_table' => 'priv_oauth_client_google',
'db_key_field' => 'id',
'icon' => utils::GetAbsoluteUrlModulesRoot().'itop-oauth-client/assets/img/icons8-google.svg',
'db_finalclass_field' => '',
'uniqueness_rules' => [
'Username for scope' =>
[
'attributes' => ['name', 'scope'],
'filter' => null,
'disabled' => false,
'is_blocking' => true,
],
'OAuth Server' =>
[
'attributes' => ['provider', 'scope', 'client_id', 'client_secret'],
'filter' => null,
'disabled' => false,
'is_blocking' => true,
],
],
);
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeEnum('scope', [
'allowed_values' => new ValueSetEnum('EMail'),
'display_style' => 'list',
'sql' => 'scope',
'default_value' => 'EMail',
'is_null_allowed' => false,
'depends_on' => [],
'always_load_in_tables' => true,
]));
MetaModel::Init_SetZListItems('details', [
'name',
'status',
'description',
'provider',
'scope',
'redirect_url',
'client_id',
'client_secret',
'mailbox_list',
]);
MetaModel::Init_SetZListItems('standard_search', [
'name',
'provider',
'status',
]);
MetaModel::Init_SetZListItems('list', [
'status',
'provider',
]);
}
public function PrefillCreationForm(&$aContextParam)
{
$this->Set('provider', 'Google');
$this->Set('scope', 'EMail');
$this->Set('redirect_url', OAuthClientProviderFactory::GetRedirectUri());
parent::PrefillCreationForm($aContextParam);
}
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
if ($sAttCode == 'provider' || $sAttCode == 'scope' || $sAttCode == 'redirect_url') {
return OPT_ATT_READONLY;
}
return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}
public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
{
if ($sAttCode == 'provider' || $sAttCode == 'scope' || $sAttCode == 'redirect_url') {
return OPT_ATT_READONLY;
}
return parent::GetInitialStateAttributeFlags($sAttCode, $aReasons);
}
/**
* Compute read-only values
*
* @return void
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
*/
public function ComputeValues()
{
parent::ComputeValues();
if (empty($this->Get('provider'))) {
$this->Set('provider', 'Google');
}
if (empty($this->Get('redirect_url'))) {
$this->Set('redirect_url', OAuthClientProviderFactory::GetRedirectUri());
}
if (empty($this->Get('scope'))) {
$this->Set('scope', 'EMail');
}
}
public function GetDefaultMailServer()
{
return 'imap.gmail.com';
}
public function GetScope()
{
return 'https://mail.google.com/';
}
}

View File

@@ -0,0 +1,31 @@
<?php
/**
* @copyright Copyright (C) 2010-2022 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
namespace Combodo\iTop\OAuthClient\Service;
use AbstractApplicationUIExtension;
use OAuthClient;
use utils;
class ApplicationUIExtension extends AbstractApplicationUIExtension
{
public function GetHilightClass($oObject)
{
if ($oObject instanceof OAuthClient) {
// Possible return values are:
// HILIGHT_CLASS_CRITICAL, HILIGHT_CLASS_WARNING, HILIGHT_CLASS_OK, HILIGHT_CLASS_NONE
$oConfig = utils::GetConfig();
if ($oObject->Get('status') == 'inactive') {
return HILIGHT_CLASS_WARNING;
} elseif ($oObject->Get('used_for_smtp') == 'yes' && $oConfig->Get('email_transport_smtp.username') == $oObject->Get('name')) {
return HILIGHT_CLASS_OK;
}
}
return HILIGHT_CLASS_NONE;
}
}

View File

@@ -41,7 +41,7 @@ class PopupMenuExtension implements \iPopupMenuExtension
$sId = $oObj->GetKey();
$sAjaxUri = utils::GetAbsoluteUrlModulePage(static::MODULE_CODE, 'ajax.php');
// Add a new menu item that triggers a custom JS function defined in our own javascript file: js/sample.js
$sJSFileUrl = utils::GetAbsoluteUrlModulesRoot().static::MODULE_CODE.'/assets/js/oauth_connect.js';
$sJSFileUrl = 'env-'.utils::GetCurrentEnvironment().'/'.static::MODULE_CODE.'/assets/js/oauth_connect.js';
$sRedirectUri = OAuthClientProviderFactory::GetRedirectUri();
$aResult[] = new JSPopupMenuItem(
$sMenu.' from '.$sObjClass,
@@ -51,8 +51,8 @@ class PopupMenuExtension implements \iPopupMenuExtension
);
if ($bHasToken) {
$sScope = $oObj->Get('scope');
if ($sScope == 'EMail') {
$aScopes = $oObj->Get('scope')->GetValues();
if (in_array('IMAP', $aScopes)) {
$aParams = $oAppContext->GetAsHash();
$sMenu = 'Menu:CreateMailbox';
$sObjClass = get_class($oObj);

View File

@@ -0,0 +1,3 @@
{# @copyright Copyright (C) 2010-2022 Combodo SARL #}
{# @license http://opensource.org/licenses/AGPL-3.0 #}

View File

@@ -0,0 +1,4 @@
{# @copyright Copyright (C) 2010-2022 Combodo SARL #}
{# @license http://opensource.org/licenses/AGPL-3.0 #}
window.location.href = '{{ sURL|raw }}'

View File

@@ -0,0 +1,48 @@
<?php
/**
* Copyright (C) 2013-2022 Combodo SARL
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Combodo\iTop\Portal\Routing\ItopExtensionsExtraRoutes;
/**
* Extensions controllers registration.
*
* @author Benjamin Dalsass
* @since 3.1.0
* @package Symfony\Component\DependencyInjection\Loader\Configurator
*/
return static function (ContainerConfigurator $oContainer) {
// retrieve extension controller classes
$aControllersClasses = ItopExtensionsExtraRoutes::GetControllersClasses();
// iterate throw extensions controller classes...
foreach ($aControllersClasses as $sController) {
// register as service
$oContainer->services()->set($sController, $sController)
->public()
->tag('controller.service_arguments')
->tag('container.service_suscriber')
->autowire()
->autoconfigure();
}
};

View File

@@ -589,6 +589,8 @@ class ObjectController extends BrickController
$oSecurityHelper = $this->get('security_helper');
/** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */
$oScopeValidator = $this->get('scope_validator');
/** @var \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oFormHandlerHelper */
$oFormHandlerHelper = $this->get('object_form_handler');
$aData = array(
'results' => array(
@@ -640,16 +642,14 @@ class ObjectController extends BrickController
// Updating host object with form data / values
$sFormManagerClass = $aRequestContent['formmanager_class'];
$sFormManagerData = $aRequestContent['formmanager_data'];
if (!empty($sFormManagerClass) && !empty($sFormManagerData))
{
if (!empty($sFormManagerClass) && !empty($sFormManagerData)) {
/** @var \Combodo\iTop\Portal\Form\ObjectFormManager $oFormManager */
$oFormManager = $sFormManagerClass::FromJSON($sFormManagerData);
$oFormManager->SetContainer($this->container);
$oFormManager->SetObjectFormHandlerHelper($oFormHandlerHelper);
$oFormManager->SetObject($oHostObject);
// Applying action rules if present
if (($oFormManager->GetActionRulesToken() !== null) && ($oFormManager->GetActionRulesToken() !== ''))
{
if (($oFormManager->GetActionRulesToken() !== null) && ($oFormManager->GetActionRulesToken() !== '')) {
$aActionRules = ContextManipulatorHelper::DecodeRulesToken($oFormManager->GetActionRulesToken());
$oObj = $oFormManager->GetObject();
$oContextManipulator->PrepareObject($aActionRules, $oObj);
@@ -769,13 +769,14 @@ class ObjectController extends BrickController
$oSecurityHelper = $this->get('security_helper');
/** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */
$oScopeValidator = $this->get('scope_validator');
/** @var \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oFormHandlerHelper */
$oFormHandlerHelper = $this->get('object_form_handler');
$aData = array(
'sMode' => 'search_regular',
'sTargetAttCode' => $sTargetAttCode,
'sHostObjectClass' => $sHostObjectClass,
'sHostObjectId' => $sHostObjectId,
'sMode' => 'search_regular',
'sTargetAttCode' => $sTargetAttCode,
'sHostObjectClass' => $sHostObjectClass,
'sHostObjectId' => $sHostObjectId,
'sActionRulesToken' => $oRequestManipulator->ReadParam('ar_token', ''),
);
@@ -807,16 +808,14 @@ class ObjectController extends BrickController
// Updating host object with form data / values
$sFormManagerClass = $oRequestManipulator->ReadParam('formmanager_class', '', FILTER_UNSAFE_RAW);
$sFormManagerData = $oRequestManipulator->ReadParam('formmanager_data', '', FILTER_UNSAFE_RAW);
if (!empty($sFormManagerClass) && !empty($sFormManagerData))
{
if (!empty($sFormManagerClass) && !empty($sFormManagerData)) {
/** @var \Combodo\iTop\Portal\Form\ObjectFormManager $oFormManager */
$oFormManager = $sFormManagerClass::FromJSON($sFormManagerData);
$oFormManager->SetContainer($this->container);
$oFormManager->SetObjectFormHandlerHelper($oFormHandlerHelper);
$oFormManager->SetObject($oHostObject);
// Applying action rules if present
if (($oFormManager->GetActionRulesToken() !== null) && ($oFormManager->GetActionRulesToken() !== ''))
{
if (($oFormManager->GetActionRulesToken() !== null) && ($oFormManager->GetActionRulesToken() !== '')) {
$aActionRules = ContextManipulatorHelper::DecodeRulesToken($oFormManager->GetActionRulesToken());
$oObj = $oFormManager->GetObject();
$oContextManipulator->PrepareObject($aActionRules, $oObj);

View File

@@ -117,11 +117,15 @@ class ExceptionListener implements ContainerAwareInterface
$oResponse->setStatusCode($iStatusCode);
// HttpExceptionInterface is a special type of exception that holds status code and header details
if ($oException instanceof HttpExceptionInterface)
{
if ($oException instanceof HttpExceptionInterface) {
$oResponse->headers->replace($oException->getHeaders());
}
// display original error page when app debug is on
if (($_SERVER['APP_DEBUG'] == 1)) {
return;
}
// Send the modified response object to the event
$oEvent->setResponse($oResponse);
}

View File

@@ -31,6 +31,7 @@ use Combodo\iTop\Form\Field\LabelField;
use Combodo\iTop\Form\Form;
use Combodo\iTop\Form\FormManager;
use Combodo\iTop\Portal\Helper\ApplicationHelper;
use Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper;
use DBObject;
use DBObjectSearch;
use DBObjectSet;
@@ -42,7 +43,6 @@ use Exception;
use InlineImage;
use IssueLog;
use MetaModel;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
use UserRights;
@@ -65,8 +65,6 @@ class ObjectFormManager extends FormManager
/** @var string ENUM_MODE_APPLY_STIMULUS */
const ENUM_MODE_APPLY_STIMULUS = 'apply_stimulus';
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $oContainer */
protected $oContainer;
/** @var \cmdbAbstractObject $oObject */
protected $oObject;
/** @var string $sMode */
@@ -85,6 +83,13 @@ class ObjectFormManager extends FormManager
*/
protected $aHiddenFieldsId = array();
/**
* @var ObjectFormHandlerHelper $oFormHandlerHelper
* @since 3.1.0 Replace container. Allow access to others applications services.
*/
private $oFormHandlerHelper;
/**
* @param string|array $formManagerData value of the formmanager_data portal parameter, either JSON or object
*
@@ -93,7 +98,7 @@ class ObjectFormManager extends FormManager
* @since 2.7.6 3.0.0 N°4384 method creation : factorize as this is used twice now
* @since 2.7.7 3.0.1 N°4867 now only used once, but we decided to keep this method anyway
*/
protected static function DecodeFormManagerData($formManagerData)
public static function DecodeFormManagerData($formManagerData)
{
if (is_array($formManagerData)) {
return $formManagerData;
@@ -172,23 +177,15 @@ class ObjectFormManager extends FormManager
}
/**
*
* @return \Symfony\Component\DependencyInjection\ContainerInterface
*/
public function GetContainer()
{
return $this->oContainer;
}
/**
*
* @param \Symfony\Component\DependencyInjection\ContainerInterface $oContainer
* @param \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oFormHandlerHelper
*
* @return $this
* @since 3.1.0
*
*/
public function SetContainer(ContainerInterface $oContainer)
public function SetObjectFormHandlerHelper(ObjectFormHandlerHelper $oFormHandlerHelper)
{
$this->oContainer = $oContainer;
$this->oFormHandlerHelper = $oFormHandlerHelper;
return $this;
}
@@ -429,28 +426,21 @@ class ObjectFormManager extends FormManager
break;
}
// - The layout
if ($this->aFormProperties['layout'] !== null)
{
if ($this->aFormProperties['layout'] !== null) {
// Checking if we need to render the template from twig to html in order to parse the fields
if ($this->aFormProperties['layout']['type'] === 'twig')
{
if ($this->oContainer !== null)
{
if ($this->aFormProperties['layout']['type'] === 'twig') {
if ($this->oFormHandlerHelper !== null) {
/** @var \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oObjectFormHandler */
$oObjectFormHandler = $this->oContainer->get('object_form_handler');
$sRendered = $oObjectFormHandler->RenderFormFromTwig(
$sRendered = $this->oFormHandlerHelper->RenderFormFromTwig(
$oForm->GetId(),
$this->aFormProperties['layout']['content'],
array('oRenderer' => $this->oRenderer, 'oObject' => $this->oObject)
);
}
else
{
} else {
$sRendered = 'Form not rendered because of missing container';
}
}
else
{
} else {
$sRendered = $this->aFormProperties['layout']['content'];
}
@@ -742,42 +732,36 @@ class ObjectFormManager extends FormManager
}
// - Field that require a search endpoint
if (in_array(get_class($oField),
array('Combodo\\iTop\\Form\\Field\\SelectObjectField', 'Combodo\\iTop\\Form\\Field\\LinkedSetField')))
{
array('Combodo\\iTop\\Form\\Field\\SelectObjectField', 'Combodo\\iTop\\Form\\Field\\LinkedSetField'))) {
/** @var \Combodo\iTop\Form\Field\SelectObjectField|\Combodo\iTop\Form\Field\LinkedSetField $oField */
if ($this->oContainer !== null)
{
$sSearchEndpoint = $this->oContainer->get('url_generator')->generate('p_object_search_generic', array(
'sTargetAttCode' => $oAttDef->GetCode(),
if ($this->oFormHandlerHelper !== null) {
$sSearchEndpoint = $this->oFormHandlerHelper->GetUrlGenerator()->generate('p_object_search_generic', array(
'sTargetAttCode' => $oAttDef->GetCode(),
'sHostObjectClass' => get_class($this->oObject),
'sHostObjectId' => ($this->oObject->IsNew()) ? null : $this->oObject->GetKey(),
'ar_token' => $this->GetActionRulesToken(),
'sHostObjectId' => ($this->oObject->IsNew()) ? null : $this->oObject->GetKey(),
'ar_token' => $this->GetActionRulesToken(),
));
$oField->SetSearchEndpoint($sSearchEndpoint);
}
}
// - Field that require an information endpoint
if (in_array(get_class($oField), array('Combodo\\iTop\\Form\\Field\\LinkedSetField')))
{
if (in_array(get_class($oField), array('Combodo\\iTop\\Form\\Field\\LinkedSetField'))) {
/** @var \Combodo\iTop\Form\Field\LinkedSetField $oField */
if ($this->oContainer !== null)
{
$oField->SetInformationEndpoint($this->oContainer->get('url_generator')->generate('p_object_get_information_json'));
if ($this->oFormHandlerHelper !== null) {
$oField->SetInformationEndpoint($this->oFormHandlerHelper->GetUrlGenerator()->generate('p_object_get_information_json'));
}
}
// - Field that require to apply scope on its DM OQL
if (in_array(get_class($oField), array('Combodo\\iTop\\Form\\Field\\SelectObjectField')))
{
/** @var \Combodo\iTop\Form\Field\SelectObjectField $oField */
if ($this->oContainer !== null)
{
if ($this->oFormHandlerHelper !== null) {
$oScopeOriginal = ($oField->GetSearch() !== null) ? $oField->GetSearch() : DBSearch::FromOQL($oAttDef->GetValuesDef()->GetFilterExpression());
/** @var \DBSearch $oScopeSearch */
$oScopeSearch = $this->oContainer->get('scope_validator')->GetScopeFilterForProfiles(UserRights::ListProfiles(),
$oScopeSearch = $this->oFormHandlerHelper->GetScopeValidator()->GetScopeFilterForProfiles(UserRights::ListProfiles(),
$oScopeOriginal->GetClass(), UR_ACTION_READ);
if ($oScopeSearch === null)
{
if ($oScopeSearch === null) {
IssueLog::Info(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' has no scope query for '.$oScopeOriginal->GetClass().' class.');
throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist'));
}
@@ -817,15 +801,14 @@ class ObjectFormManager extends FormManager
if (in_array(get_class($oCustomField), array('Combodo\\iTop\\Form\\Field\\SelectObjectField')))
{
/** @var \Combodo\iTop\Form\Field\SelectObjectField $oCustomField */
if ($this->oContainer !== null)
{
if ($this->oFormHandlerHelper->getUrlGenerator() !== null) {
$sSearchEndpoint = $this->oContainer->get('url_generator')->generate('p_object_search_generic',
$sSearchEndpoint = $this->oFormHandlerHelper->GetUrlGenerator()->generate('p_object_search_generic',
array(
'sTargetAttCode' => $oAttDef->GetCode(),
'sTargetAttCode' => $oAttDef->GetCode(),
'sHostObjectClass' => get_class($this->oObject),
'sHostObjectId' => ($this->oObject->IsNew()) ? null : $this->oObject->GetKey(),
'ar_token' => $this->GetActionRulesToken(),
'sHostObjectId' => ($this->oObject->IsNew()) ? null : $this->oObject->GetKey(),
'ar_token' => $this->GetActionRulesToken(),
));
$oCustomField->SetSearchEndpoint($sSearchEndpoint);
}
@@ -860,15 +843,13 @@ class ObjectFormManager extends FormManager
/** @var \Combodo\iTop\Form\Field\LinkedSetField $oField */
/** @var \AttributeLinkedSetIndirect $oAttDef */
// - Overriding attributes to display
if ($this->oContainer !== null)
{
if ($this->oFormHandlerHelper !== null) {
// Note : This snippet is inspired from AttributeLinkedSet::MakeFormField()
$aAttCodesToDisplay = ApplicationHelper::GetLoadedListFromClass($this->oContainer->getParameter('combodo.portal.instance.conf')['lists'],
$aAttCodesToDisplay = ApplicationHelper::GetLoadedListFromClass($this->oFormHandlerHelper->getCombodoPortalConf()['lists'],
$oField->GetTargetClass(), 'list');
// - Adding friendlyname attribute to the list is not already in it
$sTitleAttCode = 'friendlyname';
if (($sTitleAttCode !== null) && !in_array($sTitleAttCode, $aAttCodesToDisplay))
{
if (($sTitleAttCode !== null) && !in_array($sTitleAttCode, $aAttCodesToDisplay)) {
$aAttCodesToDisplay = array_merge(array($sTitleAttCode), $aAttCodesToDisplay);
}
// - Adding attribute labels
@@ -881,25 +862,19 @@ class ObjectFormManager extends FormManager
$oField->SetAttributesToDisplay($aAttributesToDisplay);
}
// - Filtering links regarding scopes
if ($this->oContainer !== null)
{
if ($this->oFormHandlerHelper !== null) {
$aLimitedAccessItemIDs = array();
/** @var \ormLinkSet $oFieldOriginalSet */
$oFieldOriginalSet = $oField->GetCurrentValue();
while ($oLink = $oFieldOriginalSet->Fetch())
{
if ($oField->IsIndirect())
{
while ($oLink = $oFieldOriginalSet->Fetch()) {
if ($oField->IsIndirect()) {
$iRemoteKey = $oLink->Get($oAttDef->GetExtKeyToRemote());
}
else
{
} else {
$iRemoteKey = $oLink->GetKey();
}
if (!$this->oContainer->get('security_helper')->IsActionAllowed(UR_ACTION_READ, $oField->GetTargetClass(), $iRemoteKey))
{
if (!$this->oFormHandlerHelper->getSecurityHelper()->IsActionAllowed(UR_ACTION_READ, $oField->GetTargetClass(), $iRemoteKey)) {
$aLimitedAccessItemIDs[] = $iRemoteKey;
}
}
@@ -921,23 +896,22 @@ class ObjectFormManager extends FormManager
if (in_array(get_class($oField), array('Combodo\\iTop\\Form\\Field\\BlobField', 'Combodo\\iTop\\Form\\Field\\ImageField')))
{
// - Overriding attributes to display
if ($this->oContainer !== null)
{
if ($this->oFormHandlerHelper !== null) {
// Override hardcoded URLs in ormDocument pointing to back office console
$oOrmDoc = $this->oObject->Get($sAttCode);
$sDisplayUrl = $this->oContainer->get('url_generator')->generate('p_object_document_display', [
$sDisplayUrl = $this->oFormHandlerHelper->getUrlGenerator()->generate('p_object_document_display', [
'sObjectClass' => get_class($this->oObject),
'sObjectId' => $this->oObject->GetKey(),
'sObjectId' => $this->oObject->GetKey(),
'sObjectField' => $sAttCode,
'cache' => 86400,
's' => $oOrmDoc->GetSignature(),
]);
$sDownloadUrl = $this->oContainer->get('url_generator')->generate('p_object_document_download', [
'cache' => 86400,
's' => $oOrmDoc->GetSignature(),
]);
$sDownloadUrl = $this->oFormHandlerHelper->getUrlGenerator()->generate('p_object_document_download', [
'sObjectClass' => get_class($this->oObject),
'sObjectId' => $this->oObject->GetKey(),
'sObjectId' => $this->oObject->GetKey(),
'sObjectField' => $sAttCode,
'cache' => 86400,
's' => $oOrmDoc->GetSignature(),
'cache' => 86400,
's' => $oOrmDoc->GetSignature(),
]);
/** @var \Combodo\iTop\Form\Field\BlobField $oField */
$oField->SetDisplayUrl($sDisplayUrl)
@@ -1024,11 +998,11 @@ class ObjectFormManager extends FormManager
// set id to a unique key - avoid collisions with another attribute that could exist with the name 'attachments'
$oField = new FileUploadField('attachments_plugin');
$oField->SetLabel(Dict::S('Portal:Attachments'))
->SetUploadEndpoint($this->oContainer->get('url_generator')->generate('p_object_attachment_add'))
->SetDownloadEndpoint($this->oContainer->get('url_generator')->generate('p_object_attachment_download',
->SetUploadEndpoint($this->oFormHandlerHelper->getUrlGenerator()->generate('p_object_attachment_add'))
->SetDownloadEndpoint($this->oFormHandlerHelper->getUrlGenerator()->generate('p_object_attachment_download',
array('sAttachmentId' => '-sAttachmentId-')))
->SetTransactionId($oForm->GetTransactionId())
->SetAllowDelete($this->oContainer->getParameter('combodo.portal.instance.conf')['properties']['attachments']['allow_delete'])
->SetAllowDelete($this->oFormHandlerHelper->getCombodoPortalConf()['properties']['attachments']['allow_delete'])
->SetObject($this->oObject);
// Checking if we can edit attachments in the current state
@@ -1148,7 +1122,7 @@ class ObjectFormManager extends FormManager
$bActivateTriggers = (!$bIsNew && $bWasModified);
// Forcing allowed writing on the object if necessary. This is used in some particular cases.
$bAllowWrite = $this->oContainer->get('security_helper')->IsActionAllowed($bIsNew ? UR_ACTION_CREATE : UR_ACTION_MODIFY, $sObjectClass, $this->oObject->GetKey());
$bAllowWrite = $this->oFormHandlerHelper->getSecurityHelper()->IsActionAllowed($bIsNew ? UR_ACTION_CREATE : UR_ACTION_MODIFY, $sObjectClass, $this->oObject->GetKey());
if ($bAllowWrite) {
$this->oObject->AllowWrite(true);
}
@@ -1181,7 +1155,7 @@ class ObjectFormManager extends FormManager
// Activating triggers only on update
if ($bActivateTriggers)
{
$sTriggersQuery = $this->oContainer->getParameter('combodo.portal.instance.conf')['properties']['triggers_query'];
$sTriggersQuery = $this->oFormHandlerHelper->getCombodoPortalConf()['properties']['triggers_query'];
if ($sTriggersQuery !== null)
{
$aParentClasses = MetaModel::EnumParentClasses($sObjectClass, ENUM_PARENT_CLASSES_ALL);

View File

@@ -81,8 +81,6 @@ class ObjectFormHandlerHelper
private $sPortalId;
/** @var \Combodo\iTop\Portal\Twig\AppExtension $oAppExtension */
private $oAppExtension;
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $oContainer */
private $oContainer;
/**
* ObjectFormHandlerHelper constructor.
@@ -96,9 +94,11 @@ class ObjectFormHandlerHelper
* @param array $aCombodoPortalInstanceConf
* @param string $sPortalId
* @param \Combodo\iTop\Portal\Twig\AppExtension $oAppExtension
* @param \Symfony\Component\DependencyInjection\ContainerInterface $oContainer
*/
public function __construct(RequestManipulatorHelper $oRequestManipulator, ContextManipulatorHelper $oContextManipulator, NavigationRuleHelper $oNavigationRuleHelper, ScopeValidatorHelper $oScopeValidator, SecurityHelper $oSecurityHelper, UrlGeneratorInterface $oUrlGenerator, $aCombodoPortalInstanceConf, $sPortalId, AppExtension $oAppExtension, ContainerInterface $oContainer)
public function __construct(
RequestManipulatorHelper $oRequestManipulator, ContextManipulatorHelper $oContextManipulator, NavigationRuleHelper $oNavigationRuleHelper, ScopeValidatorHelper $oScopeValidator, SecurityHelper $oSecurityHelper, UrlGeneratorInterface $oUrlGenerator, $aCombodoPortalInstanceConf, $sPortalId,
AppExtension $oAppExtension
)
{
$this->oRequestManipulator = $oRequestManipulator;
$this->oContextManipulator = $oContextManipulator;
@@ -109,7 +109,6 @@ class ObjectFormHandlerHelper
$this->aCombodoPortalInstanceConf = $aCombodoPortalInstanceConf;
$this->sPortalId = $sPortalId;
$this->oAppExtension = $oAppExtension;
$this->oContainer = $oContainer;
}
/**
@@ -271,13 +270,13 @@ class ObjectFormHandlerHelper
}
$oFormRenderer = new BsFormRenderer();
if($sFormEndpoint !== null)
{
if ($sFormEndpoint !== null) {
$oFormRenderer->SetEndpoint($sFormEndpoint);
}
$oFormManager = new ObjectFormManager();
$oFormManager->SetContainer($this->oContainer)
$oFormManager
->SetObjectFormHandlerHelper($this)
->SetObject($oObject)
->SetMode($sMode)
->SetActionRulesToken($sActionRulesToken)
@@ -301,7 +300,7 @@ class ObjectFormHandlerHelper
$this->CheckReadFormDataAllowed($sFormManagerData);
$oFormManager = $sFormManagerClass::FromJSON($sFormManagerData);
$oFormManager->SetContainer($this->oContainer);
$oFormManager->SetObjectFormHandlerHelper($this);
// Applying action rules if present
if (($oFormManager->GetActionRulesToken() !== null) && ($oFormManager->GetActionRulesToken() !== '')) {
@@ -441,9 +440,9 @@ class ObjectFormHandlerHelper
/**
* Check if read object include in form data is allowed, throw an exception otherwise.
*
* @since 2.7.7
* @since 2.7.7 3.0.2 3.1.0
*
* @param $sFormManagerData form data to check
* @param string $sFormManagerData form data to check
*
* @return void
* @throws \CoreException
@@ -452,8 +451,9 @@ class ObjectFormHandlerHelper
* @throws \MySQLHasGoneAwayException
* @throws \OQLException
*/
public function CheckReadFormDataAllowed($sFormManagerData){
$aJsonFromData = json_decode($sFormManagerData, true);
public function CheckReadFormDataAllowed($sFormManagerData)
{
$aJsonFromData = ObjectFormManager::DecodeFormManagerData($sFormManagerData);
if(isset($aJsonFromData['formobject_class'])
&& isset($aJsonFromData['formobject_id'])
&& !$this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $aJsonFromData['formobject_class'], $aJsonFromData['formobject_id'])){
@@ -475,4 +475,44 @@ class ObjectFormHandlerHelper
static::ENUM_MODE_CREATE,
);
}
/**
* @return \Combodo\iTop\Portal\Routing\UrlGenerator|\Symfony\Component\Routing\Generator\UrlGeneratorInterface
* @since 3.1
*
*/
public function getUrlGenerator()
{
return $this->oUrlGenerator;
}
/**
* @return \Combodo\iTop\Portal\Helper\SecurityHelper
* @since 3.1
*
*/
public function getSecurityHelper(): SecurityHelper
{
return $this->oSecurityHelper;
}
/**
* @return \Combodo\iTop\Portal\Helper\ScopeValidatorHelper
* @since 3.1.0
*
*/
public function GetScopeValidator(): ScopeValidatorHelper
{
return $this->oScopeValidator;
}
/**
* @return array
* @since 3.1.0
*
*/
public function GetCombodoPortalConf(): array
{
return $this->aCombodoPortalInstanceConf;
}
}

View File

@@ -34,6 +34,12 @@ class ItopExtensionsExtraRoutes
/** @var array $aRoutes */
static private $aRoutes = array();
/**
* @var array $aControllersClasses
* @since 3.1.0
*/
static private $aControllersClasses = array();
/**
* @param array $extraRoutes
*
@@ -41,8 +47,7 @@ class ItopExtensionsExtraRoutes
*/
public static function AddRoutes($extraRoutes)
{
if (!is_array($extraRoutes))
{
if (!is_array($extraRoutes)) {
throw new Exception('Only array are allowed as parameter to '.__METHOD__);
}
@@ -56,4 +61,28 @@ class ItopExtensionsExtraRoutes
{
return self::$aRoutes;
}
/**
* @param array $extraControllersClasses
*
* @throws Exception
* @since 3.1.0
*/
public static function AddControllersClasses($extraControllersClasses)
{
if (!is_array($extraControllersClasses)) {
throw new Exception('Only array are allowed as parameter to '.__METHOD__);
}
self::$aControllersClasses = array_merge(self::$aControllersClasses, $extraControllersClasses);
}
/**
* @return array
* @since 3.1.0
*/
public static function GetControllersClasses()
{
return self::$aControllersClasses;
}
}

View File

@@ -151,8 +151,7 @@
</module_designs>
<module_parameters>
<parameters id="itop-portal" _delta="define">
<lazy_loading_threshold>500</lazy_loading_threshold><!-- Will be placed in the conf/<env>/config-itop.php file under the itop-portal module's settings -->
<enable_formmanager_content_check type="boolean">true</enable_formmanager_content_check>
<lazy_loading_threshold>500</lazy_loading_threshold><!-- Will be placed in the conf/<env>/config-itop.php file under the itop-portal module's settings -->
</parameters>
</module_parameters>
</itop_design>

View File

@@ -1,151 +1,151 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ProblemManagement' => 'Zarządzanie problemami',
'Menu:ProblemManagement+' => 'Zarządzanie problemami',
'Menu:Problem:Overview' => 'Przegląd',
'Menu:Problem:Overview+' => 'Przegląd',
'Menu:NewProblem' => 'Nowy problem',
'Menu:NewProblem+' => 'Nowy problem',
'Menu:SearchProblems' => 'Wyszukaj problemy',
'Menu:SearchProblems+' => 'Wyszukaj problemy',
'Menu:Problem:Shortcuts' => 'Skróty',
'Menu:Problem:MyProblems' => 'Moje problemy',
'Menu:Problem:MyProblems+' => 'Moje problemy',
'Menu:Problem:OpenProblems' => 'Wszystkie otwarte problemy',
'Menu:Problem:OpenProblems+' => 'Wszystkie otwarte problemy',
'UI-ProblemManagementOverview-ProblemByService' => 'Problemy według usług',
'UI-ProblemManagementOverview-ProblemByService+' => 'Problemy według usług',
'UI-ProblemManagementOverview-ProblemByPriority' => 'Problemy według priorytetu',
'UI-ProblemManagementOverview-ProblemByPriority+' => 'Problemy według priorytetu',
'UI-ProblemManagementOverview-ProblemUnassigned' => 'Nieprzypisane problemy',
'UI-ProblemManagementOverview-ProblemUnassigned+' => 'Nieprzypisane problemy',
'UI:ProblemMgmtMenuOverview:Title' => 'Pulpit do zarządzania problemami',
'UI:ProblemMgmtMenuOverview:Title+' => 'Pulpit do zarządzania problemami',
));
//
// Class: Problem
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Problem' => 'Problem',
'Class:Problem+' => '',
'Class:Problem/Attribute:status' => 'Status',
'Class:Problem/Attribute:status+' => '',
'Class:Problem/Attribute:status/Value:new' => 'Nowy',
'Class:Problem/Attribute:status/Value:new+' => '',
'Class:Problem/Attribute:status/Value:assigned' => 'Przydzielony',
'Class:Problem/Attribute:status/Value:assigned+' => '',
'Class:Problem/Attribute:status/Value:resolved' => 'Rozwiązany',
'Class:Problem/Attribute:status/Value:resolved+' => '',
'Class:Problem/Attribute:status/Value:closed' => 'Zamknięty',
'Class:Problem/Attribute:status/Value:closed+' => '',
'Class:Problem/Attribute:service_id' => 'Usługa',
'Class:Problem/Attribute:service_id+' => '',
'Class:Problem/Attribute:service_name' => 'Nazwa usługi',
'Class:Problem/Attribute:service_name+' => '',
'Class:Problem/Attribute:servicesubcategory_id' => 'Podkategoria usług',
'Class:Problem/Attribute:servicesubcategory_id+' => '',
'Class:Problem/Attribute:servicesubcategory_name' => 'Podkategoria usług',
'Class:Problem/Attribute:servicesubcategory_name+' => '',
'Class:Problem/Attribute:product' => 'Produkt',
'Class:Problem/Attribute:product+' => '',
'Class:Problem/Attribute:impact' => 'Wpływ',
'Class:Problem/Attribute:impact+' => '',
'Class:Problem/Attribute:impact/Value:1' => 'Wydział',
'Class:Problem/Attribute:impact/Value:1+' => '',
'Class:Problem/Attribute:impact/Value:2' => 'Usługa',
'Class:Problem/Attribute:impact/Value:2+' => '',
'Class:Problem/Attribute:impact/Value:3' => 'Osoba',
'Class:Problem/Attribute:impact/Value:3+' => '',
'Class:Problem/Attribute:urgency' => 'Pilność',
'Class:Problem/Attribute:urgency+' => '',
'Class:Problem/Attribute:urgency/Value:1' => 'krytyczna',
'Class:Problem/Attribute:urgency/Value:1+' => 'krytyczna',
'Class:Problem/Attribute:urgency/Value:2' => 'wysoka',
'Class:Problem/Attribute:urgency/Value:2+' => 'wysoka',
'Class:Problem/Attribute:urgency/Value:3' => 'średnia',
'Class:Problem/Attribute:urgency/Value:3+' => 'średnia',
'Class:Problem/Attribute:urgency/Value:4' => 'niska',
'Class:Problem/Attribute:urgency/Value:4+' => 'niska',
'Class:Problem/Attribute:priority' => 'Priorytet',
'Class:Problem/Attribute:priority+' => '',
'Class:Problem/Attribute:priority/Value:1' => 'krytyczny',
'Class:Problem/Attribute:priority/Value:1+' => 'krytyczny',
'Class:Problem/Attribute:priority/Value:2' => 'wysoki',
'Class:Problem/Attribute:priority/Value:2+' => 'wysoki',
'Class:Problem/Attribute:priority/Value:3' => 'średni',
'Class:Problem/Attribute:priority/Value:3+' => 'średni',
'Class:Problem/Attribute:priority/Value:4' => 'niski',
'Class:Problem/Attribute:priority/Value:4+' => 'niski',
'Class:Problem/Attribute:related_change_id' => 'Powiązana zmiana',
'Class:Problem/Attribute:related_change_id+' => '',
'Class:Problem/Attribute:related_change_ref' => 'Odniesienie do powiązanej zmiany',
'Class:Problem/Attribute:related_change_ref+' => '',
'Class:Problem/Attribute:assignment_date' => 'Data przydziału',
'Class:Problem/Attribute:assignment_date+' => '',
'Class:Problem/Attribute:resolution_date' => 'Data rozwiązania',
'Class:Problem/Attribute:resolution_date+' => '',
'Class:Problem/Attribute:knownerrors_list' => 'Znane błędy',
'Class:Problem/Attribute:knownerrors_list+' => 'Wszystkie znane błędy związane z tym problemem',
'Class:Problem/Attribute:related_request_list' => 'Powiązane zgłoszenia',
'Class:Problem/Attribute:related_request_list+' => 'Wszystkie zgłoszenia, które są związane z tym problemem',
'Class:Problem/Attribute:related_incident_list' => 'Powiązane incydenty',
'Class:Problem/Attribute:related_incident_list+' => 'Wszystkie incydenty związane z tym problemem',
'Class:Problem/Stimulus:ev_assign' => 'Przydziel',
'Class:Problem/Stimulus:ev_assign+' => '',
'Class:Problem/Stimulus:ev_reassign' => 'Przydziel ponownie',
'Class:Problem/Stimulus:ev_reassign+' => '',
'Class:Problem/Stimulus:ev_resolve' => 'Rozwiąż',
'Class:Problem/Stimulus:ev_resolve+' => '',
'Class:Problem/Stimulus:ev_close' => 'Zamknij',
'Class:Problem/Stimulus:ev_close+' => '',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ProblemManagement' => 'Zarządzanie problemami',
'Menu:ProblemManagement+' => 'Zarządzanie problemami',
'Menu:Problem:Overview' => 'Przegląd',
'Menu:Problem:Overview+' => 'Przegląd',
'Menu:NewProblem' => 'Nowy problem',
'Menu:NewProblem+' => 'Nowy problem',
'Menu:SearchProblems' => 'Wyszukaj problemy',
'Menu:SearchProblems+' => 'Wyszukaj problemy',
'Menu:Problem:Shortcuts' => 'Skróty',
'Menu:Problem:MyProblems' => 'Moje problemy',
'Menu:Problem:MyProblems+' => 'Moje problemy',
'Menu:Problem:OpenProblems' => 'Wszystkie otwarte problemy',
'Menu:Problem:OpenProblems+' => 'Wszystkie otwarte problemy',
'UI-ProblemManagementOverview-ProblemByService' => 'Problemy według usług',
'UI-ProblemManagementOverview-ProblemByService+' => 'Problemy według usług',
'UI-ProblemManagementOverview-ProblemByPriority' => 'Problemy według priorytetu',
'UI-ProblemManagementOverview-ProblemByPriority+' => 'Problemy według priorytetu',
'UI-ProblemManagementOverview-ProblemUnassigned' => 'Nieprzypisane problemy',
'UI-ProblemManagementOverview-ProblemUnassigned+' => 'Nieprzypisane problemy',
'UI:ProblemMgmtMenuOverview:Title' => 'Pulpit do zarządzania problemami',
'UI:ProblemMgmtMenuOverview:Title+' => 'Pulpit do zarządzania problemami',
));
//
// Class: Problem
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Problem' => 'Problem',
'Class:Problem+' => '',
'Class:Problem/Attribute:status' => 'Status',
'Class:Problem/Attribute:status+' => '',
'Class:Problem/Attribute:status/Value:new' => 'Nowy',
'Class:Problem/Attribute:status/Value:new+' => '',
'Class:Problem/Attribute:status/Value:assigned' => 'Przydzielony',
'Class:Problem/Attribute:status/Value:assigned+' => '',
'Class:Problem/Attribute:status/Value:resolved' => 'Rozwiązany',
'Class:Problem/Attribute:status/Value:resolved+' => '',
'Class:Problem/Attribute:status/Value:closed' => 'Zamknięty',
'Class:Problem/Attribute:status/Value:closed+' => '',
'Class:Problem/Attribute:service_id' => 'Usługa',
'Class:Problem/Attribute:service_id+' => '',
'Class:Problem/Attribute:service_name' => 'Nazwa usługi',
'Class:Problem/Attribute:service_name+' => '',
'Class:Problem/Attribute:servicesubcategory_id' => 'Podkategoria usług',
'Class:Problem/Attribute:servicesubcategory_id+' => '',
'Class:Problem/Attribute:servicesubcategory_name' => 'Podkategoria usług',
'Class:Problem/Attribute:servicesubcategory_name+' => '',
'Class:Problem/Attribute:product' => 'Produkt',
'Class:Problem/Attribute:product+' => '',
'Class:Problem/Attribute:impact' => 'Wpływ',
'Class:Problem/Attribute:impact+' => '',
'Class:Problem/Attribute:impact/Value:1' => 'Wydział',
'Class:Problem/Attribute:impact/Value:1+' => '',
'Class:Problem/Attribute:impact/Value:2' => 'Usługa',
'Class:Problem/Attribute:impact/Value:2+' => '',
'Class:Problem/Attribute:impact/Value:3' => 'Osoba',
'Class:Problem/Attribute:impact/Value:3+' => '',
'Class:Problem/Attribute:urgency' => 'Pilność',
'Class:Problem/Attribute:urgency+' => '',
'Class:Problem/Attribute:urgency/Value:1' => 'krytyczna',
'Class:Problem/Attribute:urgency/Value:1+' => 'krytyczna',
'Class:Problem/Attribute:urgency/Value:2' => 'wysoka',
'Class:Problem/Attribute:urgency/Value:2+' => 'wysoka',
'Class:Problem/Attribute:urgency/Value:3' => 'średnia',
'Class:Problem/Attribute:urgency/Value:3+' => 'średnia',
'Class:Problem/Attribute:urgency/Value:4' => 'niska',
'Class:Problem/Attribute:urgency/Value:4+' => 'niska',
'Class:Problem/Attribute:priority' => 'Priorytet',
'Class:Problem/Attribute:priority+' => '',
'Class:Problem/Attribute:priority/Value:1' => 'krytyczny',
'Class:Problem/Attribute:priority/Value:1+' => 'krytyczny',
'Class:Problem/Attribute:priority/Value:2' => 'wysoki',
'Class:Problem/Attribute:priority/Value:2+' => 'wysoki',
'Class:Problem/Attribute:priority/Value:3' => 'średni',
'Class:Problem/Attribute:priority/Value:3+' => 'średni',
'Class:Problem/Attribute:priority/Value:4' => 'niski',
'Class:Problem/Attribute:priority/Value:4+' => 'niski',
'Class:Problem/Attribute:related_change_id' => 'Powiązana zmiana',
'Class:Problem/Attribute:related_change_id+' => '',
'Class:Problem/Attribute:related_change_ref' => 'Odniesienie do powiązanej zmiany',
'Class:Problem/Attribute:related_change_ref+' => '',
'Class:Problem/Attribute:assignment_date' => 'Data przydziału',
'Class:Problem/Attribute:assignment_date+' => '',
'Class:Problem/Attribute:resolution_date' => 'Data rozwiązania',
'Class:Problem/Attribute:resolution_date+' => '',
'Class:Problem/Attribute:knownerrors_list' => 'Znane błędy',
'Class:Problem/Attribute:knownerrors_list+' => 'Wszystkie znane błędy związane z tym problemem',
'Class:Problem/Attribute:related_request_list' => 'Powiązane zgłoszenia',
'Class:Problem/Attribute:related_request_list+' => 'Wszystkie zgłoszenia, które są związane z tym problemem',
'Class:Problem/Attribute:related_incident_list' => 'Powiązane incydenty',
'Class:Problem/Attribute:related_incident_list+' => 'Wszystkie incydenty związane z tym problemem',
'Class:Problem/Stimulus:ev_assign' => 'Przydziel',
'Class:Problem/Stimulus:ev_assign+' => '',
'Class:Problem/Stimulus:ev_reassign' => 'Przydziel ponownie',
'Class:Problem/Stimulus:ev_reassign+' => '',
'Class:Problem/Stimulus:ev_resolve' => 'Rozwiąż',
'Class:Problem/Stimulus:ev_resolve+' => '',
'Class:Problem/Stimulus:ev_close' => 'Zamknij',
'Class:Problem/Stimulus:ev_close+' => '',
));

View File

@@ -1,494 +1,494 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2019 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ServiceManagement' => 'Zarządzanie usługami',
'Menu:ServiceManagement+' => 'Omówienie zarządzania usługami',
'Menu:Service:Overview' => 'Przegląd',
'Menu:Service:Overview+' => '',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Umowy według poziomu usług',
'UI-ServiceManagementMenu-ContractsByStatus' => 'Umowy według statusu',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Umowy kończące się za mniej niż 30 dni',
'Menu:ProviderContract' => 'Umowy z dostawcami',
'Menu:ProviderContract+' => 'Umowy z dostawcami',
'Menu:CustomerContract' => 'Umowy z klientami',
'Menu:CustomerContract+' => 'Umowy z klientami',
'Menu:ServiceSubcategory' => 'Podkategorie usług',
'Menu:ServiceSubcategory+' => 'Podkategorie usług',
'Menu:Service' => 'Usługi',
'Menu:Service+' => 'Usługi',
'Menu:ServiceElement' => 'Elementy usługi',
'Menu:ServiceElement+' => 'Elementy usługi',
'Menu:SLA' => 'Umowy SLA',
'Menu:SLA+' => 'Umowy gwarantowanych poziomów usług',
'Menu:SLT' => 'SLTs',
'Menu:SLT+' => 'Docelowe poziomy usług',
'Menu:DeliveryModel' => 'Modele obsługi',
'Menu:DeliveryModel+' => 'Modele obsługi',
'Menu:ServiceFamily' => 'Rodziny usług',
'Menu:ServiceFamily+' => 'Rodziny usług',
'Menu:Procedure' => 'Katalog procedur',
'Menu:Procedure+' => 'Katalog wszystkich procedur',
));
//
// Class: Organization
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Organization/Attribute:deliverymodel_id' => 'Model obsługi',
'Class:Organization/Attribute:deliverymodel_id+' => '',
'Class:Organization/Attribute:deliverymodel_name' => 'Nazwa modelu obsługi',
));
//
// Class: ContractType
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ContractType' => 'Typ umowy',
'Class:ContractType+' => '',
));
//
// Class: Contract
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Contract' => 'Umowa',
'Class:Contract+' => '',
'Class:Contract/Attribute:name' => 'Nazwa',
'Class:Contract/Attribute:name+' => '',
'Class:Contract/Attribute:org_id' => 'Klient',
'Class:Contract/Attribute:org_id+' => '',
'Class:Contract/Attribute:organization_name' => 'Nazwa klienta',
'Class:Contract/Attribute:organization_name+' => 'Nazwa zwyczajowa',
'Class:Contract/Attribute:contacts_list' => 'Kontakty',
'Class:Contract/Attribute:contacts_list+' => 'Wszystkie kontakty do tej umowy z klientem',
'Class:Contract/Attribute:documents_list' => 'Dokumenty',
'Class:Contract/Attribute:documents_list+' => 'Wszystkie dokumenty dotyczące tej umowy z klientem',
'Class:Contract/Attribute:description' => 'Opis',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => 'Data rozpoczęcia',
'Class:Contract/Attribute:start_date+' => '',
'Class:Contract/Attribute:end_date' => 'Data zakończenia',
'Class:Contract/Attribute:end_date+' => '',
'Class:Contract/Attribute:cost' => 'Koszt',
'Class:Contract/Attribute:cost+' => '',
'Class:Contract/Attribute:cost_currency' => 'Waluta kosztu',
'Class:Contract/Attribute:cost_currency+' => '',
'Class:Contract/Attribute:cost_currency/Value:dollars' => 'Dolar',
'Class:Contract/Attribute:cost_currency/Value:dollars+' => '',
'Class:Contract/Attribute:cost_currency/Value:euros' => 'Euro',
'Class:Contract/Attribute:cost_currency/Value:euros+' => '',
'Class:Contract/Attribute:contracttype_id' => 'Typ umowy',
'Class:Contract/Attribute:contracttype_id+' => '',
'Class:Contract/Attribute:contracttype_name' => 'Nazwa typu umowy',
'Class:Contract/Attribute:contracttype_name+' => '',
'Class:Contract/Attribute:billing_frequency' => 'Częstotliwość rozliczeń',
'Class:Contract/Attribute:billing_frequency+' => '',
'Class:Contract/Attribute:cost_unit' => 'Jednostka kosztu',
'Class:Contract/Attribute:cost_unit+' => '',
'Class:Contract/Attribute:provider_id' => 'Dostawca',
'Class:Contract/Attribute:provider_id+' => '',
'Class:Contract/Attribute:provider_name' => 'Nazwa dostawcy',
'Class:Contract/Attribute:provider_name+' => 'Nazwa zwyczajowa',
'Class:Contract/Attribute:status' => 'Status',
'Class:Contract/Attribute:status+' => '',
'Class:Contract/Attribute:status/Value:implementation' => 'wdrażane',
'Class:Contract/Attribute:status/Value:implementation+' => 'wdrażane',
'Class:Contract/Attribute:status/Value:obsolete' => 'wycofane',
'Class:Contract/Attribute:status/Value:obsolete+' => 'wycofane',
'Class:Contract/Attribute:status/Value:production' => 'użytkowane',
'Class:Contract/Attribute:status/Value:production+' => 'użytkowane',
'Class:Contract/Attribute:finalclass' => 'Podklasa umowy',
'Class:Contract/Attribute:finalclass+' => 'Nazwa ostatniej klasy',
));
//
// Class: CustomerContract
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:CustomerContract' => 'Umowa z klientem',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:services_list' => 'Usługi',
'Class:CustomerContract/Attribute:services_list+' => 'Wszystkie usługi zakupione w ramach tej umowy',
));
//
// Class: ProviderContract
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ProviderContract' => 'Umowa z dostawcą',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => 'Konfiguracje',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'Wszystkie elementy konfiguracji objęte niniejszą umową z dostawcą',
'Class:ProviderContract/Attribute:sla' => 'Umowa SLA',
'Class:ProviderContract/Attribute:sla+' => 'Umowa dotycząca poziomu usług',
'Class:ProviderContract/Attribute:coverage' => 'Godziny usługi',
'Class:ProviderContract/Attribute:coverage+' => '',
'Class:ProviderContract/Attribute:contracttype_id' => 'Typ umowy',
'Class:ProviderContract/Attribute:contracttype_id+' => '',
'Class:ProviderContract/Attribute:contracttype_name' => 'Nazwa typu umowy',
'Class:ProviderContract/Attribute:contracttype_name+' => '',
));
//
// Class: lnkContactToContract
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkContactToContract' => 'Połączenie Kontakt / Umowa',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Attribute:contract_id' => 'Umowa',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => 'Nazwa umowy',
'Class:lnkContactToContract/Attribute:contract_name+' => '',
'Class:lnkContactToContract/Attribute:contact_id' => 'Kontakt',
'Class:lnkContactToContract/Attribute:contact_id+' => '',
'Class:lnkContactToContract/Attribute:contact_name' => 'Nazwa kontaktu',
'Class:lnkContactToContract/Attribute:contact_name+' => '',
));
//
// Class: lnkContractToDocument
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkContractToDocument' => 'Połączenie Umowa / Dokument',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Attribute:contract_id' => 'Umowa',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => 'Nazwa umowy',
'Class:lnkContractToDocument/Attribute:contract_name+' => '',
'Class:lnkContractToDocument/Attribute:document_id' => 'Dokument',
'Class:lnkContractToDocument/Attribute:document_id+' => '',
'Class:lnkContractToDocument/Attribute:document_name' => 'Nazwa dokumentu',
'Class:lnkContractToDocument/Attribute:document_name+' => '',
));
//
// Class: ServiceFamily
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ServiceFamily' => 'Rodzina usług',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => 'Nazwa',
'Class:ServiceFamily/Attribute:name+' => '',
'Class:ServiceFamily/Attribute:icon' => 'Ikona',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:services_list' => 'Usługi',
'Class:ServiceFamily/Attribute:services_list+' => 'Wszystkie usługi w tej kategorii',
));
//
// Class: Service
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Service' => 'Usługa',
'Class:Service+' => '',
'Class:Service/Attribute:name' => 'Nazwa',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => 'Dostawca',
'Class:Service/Attribute:org_id+' => '',
'Class:Service/Attribute:organization_name' => 'Nazwa dostawcy',
'Class:Service/Attribute:organization_name+' => '',
'Class:Service/Attribute:servicefamily_id' => 'Rodzina usług',
'Class:Service/Attribute:servicefamily_id+' => '',
'Class:Service/Attribute:servicefamily_name' => 'Nazwa rodziny usług',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:description' => 'Opis',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:documents_list' => 'Dokumenty',
'Class:Service/Attribute:documents_list+' => 'Wszystkie dokumenty związane z usługą',
'Class:Service/Attribute:contacts_list' => 'Kontakty',
'Class:Service/Attribute:contacts_list+' => 'Wszystkie kontakty do tej usługi',
'Class:Service/Attribute:status' => 'Status',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => 'wdrażane',
'Class:Service/Attribute:status/Value:implementation+' => 'wdrażane',
'Class:Service/Attribute:status/Value:obsolete' => 'wycofane',
'Class:Service/Attribute:status/Value:obsolete+' => '',
'Class:Service/Attribute:status/Value:production' => 'użytkowane',
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/Attribute:icon' => 'Ikona',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:customercontracts_list' => 'Umowy z klientami',
'Class:Service/Attribute:customercontracts_list+' => 'Wszystkie umowy z klientami, którzy kupili tę usługę',
'Class:Service/Attribute:providercontracts_list' => 'Umowy z dostawcami',
'Class:Service/Attribute:providercontracts_list+' => 'Wszystkie umowy z dostawcami na obsługę tej usługi',
'Class:Service/Attribute:functionalcis_list' => 'Zależy od konfiguracji',
'Class:Service/Attribute:functionalcis_list+' => 'Wszystkie elementy konfiguracji, które są używane do świadczenia tej usługi',
'Class:Service/Attribute:servicesubcategories_list' => 'Podkategorie usług',
'Class:Service/Attribute:servicesubcategories_list+' => 'Wszystkie podkategorie tej usługi',
));
//
// Class: lnkDocumentToService
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkDocumentToService' => 'Połączenie Dokument / Usługa',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Attribute:service_id' => 'Usługa',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => 'Nazwa usługi',
'Class:lnkDocumentToService/Attribute:service_name+' => '',
'Class:lnkDocumentToService/Attribute:document_id' => 'Dokument',
'Class:lnkDocumentToService/Attribute:document_id+' => '',
'Class:lnkDocumentToService/Attribute:document_name' => 'Nazwa dokumentu',
'Class:lnkDocumentToService/Attribute:document_name+' => '',
));
//
// Class: lnkContactToService
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkContactToService' => 'Połączenie Kontakt / Usługa',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Attribute:service_id' => 'Usługa',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => 'Nazwa usługi',
'Class:lnkContactToService/Attribute:service_name+' => '',
'Class:lnkContactToService/Attribute:contact_id' => 'Kontakt',
'Class:lnkContactToService/Attribute:contact_id+' => '',
'Class:lnkContactToService/Attribute:contact_name' => 'Nazwa kontaktu',
'Class:lnkContactToService/Attribute:contact_name+' => '',
));
//
// Class: ServiceSubcategory
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ServiceSubcategory' => 'Podkategoria usługi',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/Attribute:name' => 'Nazwa',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => 'Opis',
'Class:ServiceSubcategory/Attribute:description+' => '',
'Class:ServiceSubcategory/Attribute:service_id' => 'Usługa',
'Class:ServiceSubcategory/Attribute:service_id+' => '',
'Class:ServiceSubcategory/Attribute:service_name' => 'Nazwa usługi',
'Class:ServiceSubcategory/Attribute:service_name+' => '',
'Class:ServiceSubcategory/Attribute:request_type' => 'Typ zgłoszenia',
'Class:ServiceSubcategory/Attribute:request_type+' => '',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident' => 'incydent',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident+' => 'incydent',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request' => 'zgłoszenie serwisowe',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request+' => 'zgłoszenie serwisowe',
'Class:ServiceSubcategory/Attribute:status' => 'Status',
'Class:ServiceSubcategory/Attribute:status+' => '',
'Class:ServiceSubcategory/Attribute:status/Value:implementation' => 'wdrażane',
'Class:ServiceSubcategory/Attribute:status/Value:implementation+' => 'wdrażane',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete' => 'wycofane',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete+' => 'wycofane',
'Class:ServiceSubcategory/Attribute:status/Value:production' => 'użytkowane',
'Class:ServiceSubcategory/Attribute:status/Value:production+' => 'użytkowane',
));
//
// Class: SLA
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:SLA' => 'Umowa SLA',
'Class:SLA+' => '',
'Class:SLA/Attribute:name' => 'Nazwa',
'Class:SLA/Attribute:name+' => '',
'Class:SLA/Attribute:description' => 'Opis',
'Class:SLA/Attribute:description+' => '',
'Class:SLA/Attribute:org_id' => 'Dostawca',
'Class:SLA/Attribute:org_id+' => '',
'Class:SLA/Attribute:organization_name' => 'Nazwa dostawcy',
'Class:SLA/Attribute:organization_name+' => 'Nazwa zwyczajowa',
'Class:SLA/Attribute:slts_list' => 'Poziomy usług (SLT)',
'Class:SLA/Attribute:slts_list+' => 'Wszystkie docelowe poziomy usług dla tej umowy SLA',
'Class:SLA/Attribute:customercontracts_list' => 'Umowy z klientami',
'Class:SLA/Attribute:customercontracts_list+' => 'Wszystkie umowy z klientami korzystające z tej umowy SLA',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Nie udało się zapisać połączenia z umową klienta %1$s i usługą %2$s : Umowa SLA już istnieje',
));
//
// Class: SLT
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:SLT' => 'Poziom usług SLT',
'Class:SLT+' => '',
'Class:SLT/Attribute:name' => 'Nazwa',
'Class:SLT/Attribute:name+' => '',
'Class:SLT/Attribute:priority' => 'Priorytet',
'Class:SLT/Attribute:priority+' => '',
'Class:SLT/Attribute:priority/Value:1' => 'krytyczny',
'Class:SLT/Attribute:priority/Value:1+' => 'krytyczny',
'Class:SLT/Attribute:priority/Value:2' => 'wysoki',
'Class:SLT/Attribute:priority/Value:2+' => 'wysoki',
'Class:SLT/Attribute:priority/Value:3' => 'średni',
'Class:SLT/Attribute:priority/Value:3+' => 'średni',
'Class:SLT/Attribute:priority/Value:4' => 'niski',
'Class:SLT/Attribute:priority/Value:4+' => 'niski',
'Class:SLT/Attribute:request_type' => 'Typ zgłoszenia',
'Class:SLT/Attribute:request_type+' => '',
'Class:SLT/Attribute:request_type/Value:incident' => 'incydent',
'Class:SLT/Attribute:request_type/Value:incident+' => 'incydent',
'Class:SLT/Attribute:request_type/Value:service_request' => 'zgłoszenie serwisowe',
'Class:SLT/Attribute:request_type/Value:service_request+' => 'zgłoszenie serwisowe',
'Class:SLT/Attribute:metric' => 'Miara',
'Class:SLT/Attribute:metric+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'Termin podjęcia TTO',
'Class:SLT/Attribute:metric/Value:tto+' => 'Termin podjęcia TTO',
'Class:SLT/Attribute:metric/Value:ttr' => 'Termin rozwiązania TTR',
'Class:SLT/Attribute:metric/Value:ttr+' => 'Termin rozwiązania TTR',
'Class:SLT/Attribute:value' => 'Wartość',
'Class:SLT/Attribute:value+' => '',
'Class:SLT/Attribute:unit' => 'Jednostka',
'Class:SLT/Attribute:unit+' => '',
'Class:SLT/Attribute:unit/Value:hours' => 'godzin',
'Class:SLT/Attribute:unit/Value:hours+' => 'godzin',
'Class:SLT/Attribute:unit/Value:minutes' => 'minut',
'Class:SLT/Attribute:unit/Value:minutes+' => 'minut',
));
//
// Class: lnkSLAToSLT
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkSLAToSLT' => 'Połączenie SLA / SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'Umowa SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'Nazwa umowy SLA',
'Class:lnkSLAToSLT/Attribute:sla_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_id' => 'Poziom usług SLT',
'Class:lnkSLAToSLT/Attribute:slt_id+' => '',
'Class:lnkSLAToSLT/Attribute:slt_name' => 'Nazwa poziomu usług SLT',
'Class:lnkSLAToSLT/Attribute:slt_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'Miara poziomu usług SLT',
'Class:lnkSLAToSLT/Attribute:slt_metric+' => '',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'Typ zgłoszenia SLT',
'Class:lnkSLAToSLT/Attribute:slt_request_type+' => '',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'Priorytet zgłoszeń SLT',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'Wartość SLT',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'Jednostka wartości SLT',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '',
));
//
// Class: lnkCustomerContractToService
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkCustomerContractToService' => 'Połączenie Umowa z klientem / Usługa',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => 'Umowa z klientem',
'Class:lnkCustomerContractToService/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_name' => 'Nazwa umowy z klientem',
'Class:lnkCustomerContractToService/Attribute:customercontract_name+' => '',
'Class:lnkCustomerContractToService/Attribute:service_id' => 'Usługa',
'Class:lnkCustomerContractToService/Attribute:service_id+' => '',
'Class:lnkCustomerContractToService/Attribute:service_name' => 'Nazwa usługi',
'Class:lnkCustomerContractToService/Attribute:service_name+' => '',
'Class:lnkCustomerContractToService/Attribute:sla_id' => 'Umowa SLA',
'Class:lnkCustomerContractToService/Attribute:sla_id+' => '',
'Class:lnkCustomerContractToService/Attribute:sla_name' => 'Nazwa umowy SLA',
'Class:lnkCustomerContractToService/Attribute:sla_name+' => '',
));
//
// Class: lnkProviderContractToService
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkProviderContractToService' => 'Połączenie Umowa z dostawcą / Usługa',
'Class:lnkProviderContractToService+' => '',
'Class:lnkProviderContractToService/Attribute:service_id' => 'Usługa',
'Class:lnkProviderContractToService/Attribute:service_id+' => '',
'Class:lnkProviderContractToService/Attribute:service_name' => 'Nazwa usługi',
'Class:lnkProviderContractToService/Attribute:service_name+' => '',
'Class:lnkProviderContractToService/Attribute:providercontract_id' => 'Umowa z dostawcą',
'Class:lnkProviderContractToService/Attribute:providercontract_id+' => '',
'Class:lnkProviderContractToService/Attribute:providercontract_name' => 'Nazwa umowy z dostawcą',
'Class:lnkProviderContractToService/Attribute:providercontract_name+' => '',
));
//
// Class: DeliveryModel
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:DeliveryModel' => 'Model obsługi',
'Class:DeliveryModel+' => '',
'Class:DeliveryModel/Attribute:name' => 'Nazwa',
'Class:DeliveryModel/Attribute:name+' => '',
'Class:DeliveryModel/Attribute:org_id' => 'Organizacja',
'Class:DeliveryModel/Attribute:org_id+' => '',
'Class:DeliveryModel/Attribute:organization_name' => 'Nazwa organizacji',
'Class:DeliveryModel/Attribute:organization_name+' => 'Nazwa zwyczajowa',
'Class:DeliveryModel/Attribute:description' => 'Opis',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => 'Kontakty',
'Class:DeliveryModel/Attribute:contacts_list+' => 'Wszystkie kontakty (zespoły i osoby) dla tego modelu obsługi',
'Class:DeliveryModel/Attribute:customers_list' => 'Klienci',
'Class:DeliveryModel/Attribute:customers_list+' => 'Wszyscy klienci posiadający ten model obsługi',
));
//
// Class: lnkDeliveryModelToContact
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkDeliveryModelToContact' => 'Połączenie Model obsługi / Kontakt',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => 'Model obsługi',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => 'Nazwa modelu obsługi',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_id' => 'Kontakt',
'Class:lnkDeliveryModelToContact/Attribute:contact_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_name' => 'Nazwa kontaktu',
'Class:lnkDeliveryModelToContact/Attribute:contact_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_id' => 'Rola',
'Class:lnkDeliveryModelToContact/Attribute:role_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_name' => 'Nazwa roli',
'Class:lnkDeliveryModelToContact/Attribute:role_name+' => '',
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2019 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Menu:ServiceManagement' => 'Zarządzanie usługami',
'Menu:ServiceManagement+' => 'Omówienie zarządzania usługami',
'Menu:Service:Overview' => 'Przegląd',
'Menu:Service:Overview+' => '',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Umowy według poziomu usług',
'UI-ServiceManagementMenu-ContractsByStatus' => 'Umowy według statusu',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Umowy kończące się za mniej niż 30 dni',
'Menu:ProviderContract' => 'Umowy z dostawcami',
'Menu:ProviderContract+' => 'Umowy z dostawcami',
'Menu:CustomerContract' => 'Umowy z klientami',
'Menu:CustomerContract+' => 'Umowy z klientami',
'Menu:ServiceSubcategory' => 'Podkategorie usług',
'Menu:ServiceSubcategory+' => 'Podkategorie usług',
'Menu:Service' => 'Usługi',
'Menu:Service+' => 'Usługi',
'Menu:ServiceElement' => 'Elementy usługi',
'Menu:ServiceElement+' => 'Elementy usługi',
'Menu:SLA' => 'Umowy SLA',
'Menu:SLA+' => 'Umowy gwarantowanych poziomów usług',
'Menu:SLT' => 'SLTs',
'Menu:SLT+' => 'Docelowe poziomy usług',
'Menu:DeliveryModel' => 'Modele obsługi',
'Menu:DeliveryModel+' => 'Modele obsługi',
'Menu:ServiceFamily' => 'Rodziny usług',
'Menu:ServiceFamily+' => 'Rodziny usług',
'Menu:Procedure' => 'Katalog procedur',
'Menu:Procedure+' => 'Katalog wszystkich procedur',
));
//
// Class: Organization
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Organization/Attribute:deliverymodel_id' => 'Model obsługi',
'Class:Organization/Attribute:deliverymodel_id+' => '',
'Class:Organization/Attribute:deliverymodel_name' => 'Nazwa modelu obsługi',
));
//
// Class: ContractType
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ContractType' => 'Typ umowy',
'Class:ContractType+' => '',
));
//
// Class: Contract
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Contract' => 'Umowa',
'Class:Contract+' => '',
'Class:Contract/Attribute:name' => 'Nazwa',
'Class:Contract/Attribute:name+' => '',
'Class:Contract/Attribute:org_id' => 'Klient',
'Class:Contract/Attribute:org_id+' => '',
'Class:Contract/Attribute:organization_name' => 'Nazwa klienta',
'Class:Contract/Attribute:organization_name+' => 'Nazwa zwyczajowa',
'Class:Contract/Attribute:contacts_list' => 'Kontakty',
'Class:Contract/Attribute:contacts_list+' => 'Wszystkie kontakty do tej umowy z klientem',
'Class:Contract/Attribute:documents_list' => 'Dokumenty',
'Class:Contract/Attribute:documents_list+' => 'Wszystkie dokumenty dotyczące tej umowy z klientem',
'Class:Contract/Attribute:description' => 'Opis',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => 'Data rozpoczęcia',
'Class:Contract/Attribute:start_date+' => '',
'Class:Contract/Attribute:end_date' => 'Data zakończenia',
'Class:Contract/Attribute:end_date+' => '',
'Class:Contract/Attribute:cost' => 'Koszt',
'Class:Contract/Attribute:cost+' => '',
'Class:Contract/Attribute:cost_currency' => 'Waluta kosztu',
'Class:Contract/Attribute:cost_currency+' => '',
'Class:Contract/Attribute:cost_currency/Value:dollars' => 'Dolar',
'Class:Contract/Attribute:cost_currency/Value:dollars+' => '',
'Class:Contract/Attribute:cost_currency/Value:euros' => 'Euro',
'Class:Contract/Attribute:cost_currency/Value:euros+' => '',
'Class:Contract/Attribute:contracttype_id' => 'Typ umowy',
'Class:Contract/Attribute:contracttype_id+' => '',
'Class:Contract/Attribute:contracttype_name' => 'Nazwa typu umowy',
'Class:Contract/Attribute:contracttype_name+' => '',
'Class:Contract/Attribute:billing_frequency' => 'Częstotliwość rozliczeń',
'Class:Contract/Attribute:billing_frequency+' => '',
'Class:Contract/Attribute:cost_unit' => 'Jednostka kosztu',
'Class:Contract/Attribute:cost_unit+' => '',
'Class:Contract/Attribute:provider_id' => 'Dostawca',
'Class:Contract/Attribute:provider_id+' => '',
'Class:Contract/Attribute:provider_name' => 'Nazwa dostawcy',
'Class:Contract/Attribute:provider_name+' => 'Nazwa zwyczajowa',
'Class:Contract/Attribute:status' => 'Status',
'Class:Contract/Attribute:status+' => '',
'Class:Contract/Attribute:status/Value:implementation' => 'wdrażane',
'Class:Contract/Attribute:status/Value:implementation+' => 'wdrażane',
'Class:Contract/Attribute:status/Value:obsolete' => 'wycofane',
'Class:Contract/Attribute:status/Value:obsolete+' => 'wycofane',
'Class:Contract/Attribute:status/Value:production' => 'użytkowane',
'Class:Contract/Attribute:status/Value:production+' => 'użytkowane',
'Class:Contract/Attribute:finalclass' => 'Podklasa umowy',
'Class:Contract/Attribute:finalclass+' => 'Nazwa ostatniej klasy',
));
//
// Class: CustomerContract
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:CustomerContract' => 'Umowa z klientem',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:services_list' => 'Usługi',
'Class:CustomerContract/Attribute:services_list+' => 'Wszystkie usługi zakupione w ramach tej umowy',
));
//
// Class: ProviderContract
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ProviderContract' => 'Umowa z dostawcą',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => 'Konfiguracje',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'Wszystkie elementy konfiguracji objęte niniejszą umową z dostawcą',
'Class:ProviderContract/Attribute:sla' => 'Umowa SLA',
'Class:ProviderContract/Attribute:sla+' => 'Umowa dotycząca poziomu usług',
'Class:ProviderContract/Attribute:coverage' => 'Godziny usługi',
'Class:ProviderContract/Attribute:coverage+' => '',
'Class:ProviderContract/Attribute:contracttype_id' => 'Typ umowy',
'Class:ProviderContract/Attribute:contracttype_id+' => '',
'Class:ProviderContract/Attribute:contracttype_name' => 'Nazwa typu umowy',
'Class:ProviderContract/Attribute:contracttype_name+' => '',
));
//
// Class: lnkContactToContract
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkContactToContract' => 'Połączenie Kontakt / Umowa',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Attribute:contract_id' => 'Umowa',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => 'Nazwa umowy',
'Class:lnkContactToContract/Attribute:contract_name+' => '',
'Class:lnkContactToContract/Attribute:contact_id' => 'Kontakt',
'Class:lnkContactToContract/Attribute:contact_id+' => '',
'Class:lnkContactToContract/Attribute:contact_name' => 'Nazwa kontaktu',
'Class:lnkContactToContract/Attribute:contact_name+' => '',
));
//
// Class: lnkContractToDocument
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkContractToDocument' => 'Połączenie Umowa / Dokument',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Attribute:contract_id' => 'Umowa',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => 'Nazwa umowy',
'Class:lnkContractToDocument/Attribute:contract_name+' => '',
'Class:lnkContractToDocument/Attribute:document_id' => 'Dokument',
'Class:lnkContractToDocument/Attribute:document_id+' => '',
'Class:lnkContractToDocument/Attribute:document_name' => 'Nazwa dokumentu',
'Class:lnkContractToDocument/Attribute:document_name+' => '',
));
//
// Class: ServiceFamily
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ServiceFamily' => 'Rodzina usług',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => 'Nazwa',
'Class:ServiceFamily/Attribute:name+' => '',
'Class:ServiceFamily/Attribute:icon' => 'Ikona',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:services_list' => 'Usługi',
'Class:ServiceFamily/Attribute:services_list+' => 'Wszystkie usługi w tej kategorii',
));
//
// Class: Service
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:Service' => 'Usługa',
'Class:Service+' => '',
'Class:Service/Attribute:name' => 'Nazwa',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => 'Dostawca',
'Class:Service/Attribute:org_id+' => '',
'Class:Service/Attribute:organization_name' => 'Nazwa dostawcy',
'Class:Service/Attribute:organization_name+' => '',
'Class:Service/Attribute:servicefamily_id' => 'Rodzina usług',
'Class:Service/Attribute:servicefamily_id+' => '',
'Class:Service/Attribute:servicefamily_name' => 'Nazwa rodziny usług',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:description' => 'Opis',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:documents_list' => 'Dokumenty',
'Class:Service/Attribute:documents_list+' => 'Wszystkie dokumenty związane z usługą',
'Class:Service/Attribute:contacts_list' => 'Kontakty',
'Class:Service/Attribute:contacts_list+' => 'Wszystkie kontakty do tej usługi',
'Class:Service/Attribute:status' => 'Status',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => 'wdrażane',
'Class:Service/Attribute:status/Value:implementation+' => 'wdrażane',
'Class:Service/Attribute:status/Value:obsolete' => 'wycofane',
'Class:Service/Attribute:status/Value:obsolete+' => '',
'Class:Service/Attribute:status/Value:production' => 'użytkowane',
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/Attribute:icon' => 'Ikona',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:customercontracts_list' => 'Umowy z klientami',
'Class:Service/Attribute:customercontracts_list+' => 'Wszystkie umowy z klientami, którzy kupili tę usługę',
'Class:Service/Attribute:providercontracts_list' => 'Umowy z dostawcami',
'Class:Service/Attribute:providercontracts_list+' => 'Wszystkie umowy z dostawcami na obsługę tej usługi',
'Class:Service/Attribute:functionalcis_list' => 'Zależy od konfiguracji',
'Class:Service/Attribute:functionalcis_list+' => 'Wszystkie elementy konfiguracji, które są używane do świadczenia tej usługi',
'Class:Service/Attribute:servicesubcategories_list' => 'Podkategorie usług',
'Class:Service/Attribute:servicesubcategories_list+' => 'Wszystkie podkategorie tej usługi',
));
//
// Class: lnkDocumentToService
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkDocumentToService' => 'Połączenie Dokument / Usługa',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Attribute:service_id' => 'Usługa',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => 'Nazwa usługi',
'Class:lnkDocumentToService/Attribute:service_name+' => '',
'Class:lnkDocumentToService/Attribute:document_id' => 'Dokument',
'Class:lnkDocumentToService/Attribute:document_id+' => '',
'Class:lnkDocumentToService/Attribute:document_name' => 'Nazwa dokumentu',
'Class:lnkDocumentToService/Attribute:document_name+' => '',
));
//
// Class: lnkContactToService
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkContactToService' => 'Połączenie Kontakt / Usługa',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Attribute:service_id' => 'Usługa',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => 'Nazwa usługi',
'Class:lnkContactToService/Attribute:service_name+' => '',
'Class:lnkContactToService/Attribute:contact_id' => 'Kontakt',
'Class:lnkContactToService/Attribute:contact_id+' => '',
'Class:lnkContactToService/Attribute:contact_name' => 'Nazwa kontaktu',
'Class:lnkContactToService/Attribute:contact_name+' => '',
));
//
// Class: ServiceSubcategory
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:ServiceSubcategory' => 'Podkategoria usługi',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/Attribute:name' => 'Nazwa',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => 'Opis',
'Class:ServiceSubcategory/Attribute:description+' => '',
'Class:ServiceSubcategory/Attribute:service_id' => 'Usługa',
'Class:ServiceSubcategory/Attribute:service_id+' => '',
'Class:ServiceSubcategory/Attribute:service_name' => 'Nazwa usługi',
'Class:ServiceSubcategory/Attribute:service_name+' => '',
'Class:ServiceSubcategory/Attribute:request_type' => 'Typ zgłoszenia',
'Class:ServiceSubcategory/Attribute:request_type+' => '',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident' => 'incydent',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident+' => 'incydent',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request' => 'zgłoszenie serwisowe',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request+' => 'zgłoszenie serwisowe',
'Class:ServiceSubcategory/Attribute:status' => 'Status',
'Class:ServiceSubcategory/Attribute:status+' => '',
'Class:ServiceSubcategory/Attribute:status/Value:implementation' => 'wdrażane',
'Class:ServiceSubcategory/Attribute:status/Value:implementation+' => 'wdrażane',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete' => 'wycofane',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete+' => 'wycofane',
'Class:ServiceSubcategory/Attribute:status/Value:production' => 'użytkowane',
'Class:ServiceSubcategory/Attribute:status/Value:production+' => 'użytkowane',
));
//
// Class: SLA
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:SLA' => 'Umowa SLA',
'Class:SLA+' => '',
'Class:SLA/Attribute:name' => 'Nazwa',
'Class:SLA/Attribute:name+' => '',
'Class:SLA/Attribute:description' => 'Opis',
'Class:SLA/Attribute:description+' => '',
'Class:SLA/Attribute:org_id' => 'Dostawca',
'Class:SLA/Attribute:org_id+' => '',
'Class:SLA/Attribute:organization_name' => 'Nazwa dostawcy',
'Class:SLA/Attribute:organization_name+' => 'Nazwa zwyczajowa',
'Class:SLA/Attribute:slts_list' => 'Poziomy usług (SLT)',
'Class:SLA/Attribute:slts_list+' => 'Wszystkie docelowe poziomy usług dla tej umowy SLA',
'Class:SLA/Attribute:customercontracts_list' => 'Umowy z klientami',
'Class:SLA/Attribute:customercontracts_list+' => 'Wszystkie umowy z klientami korzystające z tej umowy SLA',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Nie udało się zapisać połączenia z umową klienta %1$s i usługą %2$s : Umowa SLA już istnieje',
));
//
// Class: SLT
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:SLT' => 'Poziom usług SLT',
'Class:SLT+' => '',
'Class:SLT/Attribute:name' => 'Nazwa',
'Class:SLT/Attribute:name+' => '',
'Class:SLT/Attribute:priority' => 'Priorytet',
'Class:SLT/Attribute:priority+' => '',
'Class:SLT/Attribute:priority/Value:1' => 'krytyczny',
'Class:SLT/Attribute:priority/Value:1+' => 'krytyczny',
'Class:SLT/Attribute:priority/Value:2' => 'wysoki',
'Class:SLT/Attribute:priority/Value:2+' => 'wysoki',
'Class:SLT/Attribute:priority/Value:3' => 'średni',
'Class:SLT/Attribute:priority/Value:3+' => 'średni',
'Class:SLT/Attribute:priority/Value:4' => 'niski',
'Class:SLT/Attribute:priority/Value:4+' => 'niski',
'Class:SLT/Attribute:request_type' => 'Typ zgłoszenia',
'Class:SLT/Attribute:request_type+' => '',
'Class:SLT/Attribute:request_type/Value:incident' => 'incydent',
'Class:SLT/Attribute:request_type/Value:incident+' => 'incydent',
'Class:SLT/Attribute:request_type/Value:service_request' => 'zgłoszenie serwisowe',
'Class:SLT/Attribute:request_type/Value:service_request+' => 'zgłoszenie serwisowe',
'Class:SLT/Attribute:metric' => 'Miara',
'Class:SLT/Attribute:metric+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'Termin podjęcia TTO',
'Class:SLT/Attribute:metric/Value:tto+' => 'Termin podjęcia TTO',
'Class:SLT/Attribute:metric/Value:ttr' => 'Termin rozwiązania TTR',
'Class:SLT/Attribute:metric/Value:ttr+' => 'Termin rozwiązania TTR',
'Class:SLT/Attribute:value' => 'Wartość',
'Class:SLT/Attribute:value+' => '',
'Class:SLT/Attribute:unit' => 'Jednostka',
'Class:SLT/Attribute:unit+' => '',
'Class:SLT/Attribute:unit/Value:hours' => 'godzin',
'Class:SLT/Attribute:unit/Value:hours+' => 'godzin',
'Class:SLT/Attribute:unit/Value:minutes' => 'minut',
'Class:SLT/Attribute:unit/Value:minutes+' => 'minut',
));
//
// Class: lnkSLAToSLT
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkSLAToSLT' => 'Połączenie SLA / SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'Umowa SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'Nazwa umowy SLA',
'Class:lnkSLAToSLT/Attribute:sla_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_id' => 'Poziom usług SLT',
'Class:lnkSLAToSLT/Attribute:slt_id+' => '',
'Class:lnkSLAToSLT/Attribute:slt_name' => 'Nazwa poziomu usług SLT',
'Class:lnkSLAToSLT/Attribute:slt_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'Miara poziomu usług SLT',
'Class:lnkSLAToSLT/Attribute:slt_metric+' => '',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'Typ zgłoszenia SLT',
'Class:lnkSLAToSLT/Attribute:slt_request_type+' => '',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'Priorytet zgłoszeń SLT',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'Wartość SLT',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'Jednostka wartości SLT',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '',
));
//
// Class: lnkCustomerContractToService
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkCustomerContractToService' => 'Połączenie Umowa z klientem / Usługa',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => 'Umowa z klientem',
'Class:lnkCustomerContractToService/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_name' => 'Nazwa umowy z klientem',
'Class:lnkCustomerContractToService/Attribute:customercontract_name+' => '',
'Class:lnkCustomerContractToService/Attribute:service_id' => 'Usługa',
'Class:lnkCustomerContractToService/Attribute:service_id+' => '',
'Class:lnkCustomerContractToService/Attribute:service_name' => 'Nazwa usługi',
'Class:lnkCustomerContractToService/Attribute:service_name+' => '',
'Class:lnkCustomerContractToService/Attribute:sla_id' => 'Umowa SLA',
'Class:lnkCustomerContractToService/Attribute:sla_id+' => '',
'Class:lnkCustomerContractToService/Attribute:sla_name' => 'Nazwa umowy SLA',
'Class:lnkCustomerContractToService/Attribute:sla_name+' => '',
));
//
// Class: lnkProviderContractToService
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkProviderContractToService' => 'Połączenie Umowa z dostawcą / Usługa',
'Class:lnkProviderContractToService+' => '',
'Class:lnkProviderContractToService/Attribute:service_id' => 'Usługa',
'Class:lnkProviderContractToService/Attribute:service_id+' => '',
'Class:lnkProviderContractToService/Attribute:service_name' => 'Nazwa usługi',
'Class:lnkProviderContractToService/Attribute:service_name+' => '',
'Class:lnkProviderContractToService/Attribute:providercontract_id' => 'Umowa z dostawcą',
'Class:lnkProviderContractToService/Attribute:providercontract_id+' => '',
'Class:lnkProviderContractToService/Attribute:providercontract_name' => 'Nazwa umowy z dostawcą',
'Class:lnkProviderContractToService/Attribute:providercontract_name+' => '',
));
//
// Class: DeliveryModel
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:DeliveryModel' => 'Model obsługi',
'Class:DeliveryModel+' => '',
'Class:DeliveryModel/Attribute:name' => 'Nazwa',
'Class:DeliveryModel/Attribute:name+' => '',
'Class:DeliveryModel/Attribute:org_id' => 'Organizacja',
'Class:DeliveryModel/Attribute:org_id+' => '',
'Class:DeliveryModel/Attribute:organization_name' => 'Nazwa organizacji',
'Class:DeliveryModel/Attribute:organization_name+' => 'Nazwa zwyczajowa',
'Class:DeliveryModel/Attribute:description' => 'Opis',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => 'Kontakty',
'Class:DeliveryModel/Attribute:contacts_list+' => 'Wszystkie kontakty (zespoły i osoby) dla tego modelu obsługi',
'Class:DeliveryModel/Attribute:customers_list' => 'Klienci',
'Class:DeliveryModel/Attribute:customers_list+' => 'Wszyscy klienci posiadający ten model obsługi',
));
//
// Class: lnkDeliveryModelToContact
//
Dict::Add('PL PL', 'Polish', 'Polski', array(
'Class:lnkDeliveryModelToContact' => 'Połączenie Model obsługi / Kontakt',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => 'Model obsługi',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => 'Nazwa modelu obsługi',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_id' => 'Kontakt',
'Class:lnkDeliveryModelToContact/Attribute:contact_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_name' => 'Nazwa kontaktu',
'Class:lnkDeliveryModelToContact/Attribute:contact_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_id' => 'Rola',
'Class:lnkDeliveryModelToContact/Attribute:role_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_name' => 'Nazwa roli',
'Class:lnkDeliveryModelToContact/Attribute:role_name+' => '',
));

View File

@@ -1,26 +1,26 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
// Dictionary entries go here
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
// Dictionary entries go here
));

View File

@@ -1,26 +1,26 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
// Dictionary entries go here
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
// Dictionary entries go here
));

File diff suppressed because one or more lines are too long

View File

@@ -1,26 +1,26 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
// Dictionary entries go here
));
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('PL PL', 'Polish', 'Polski', array(
// Dictionary entries go here
));