mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-20 15:52:24 +02:00
N°8796 - Add PHP code style validation in iTop and extensions - format whole code base
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Page:DefaultTitle' => 'Uživatelský portál %1$s',
|
||||
'Page:PleaseWait' => 'Počkejte prosím',
|
||||
'Page:Home' => 'Domů',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Otevřít</a> / <a href="%4$s" class="file_download_link">Stáhnout</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'cs', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Zavřít tento vstup',
|
||||
'Portal:Form:Close:Warning' => 'Opravdu chcete opustit tento formulář? Data vložená do formuláře budou ztracena ',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Chyba: objekt nelze vytvořit. Před opětovným odesláním tohoto formuláře zkontrolujte související objekty a přílohy.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Chyba: objekt nelze vytvořit. Před opětovným odesláním tohoto formuláře zkontrolujte související objekty a přílohy.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Uživatelský profil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Můj profil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Odhlásit',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Nepodařilo se změnit heslo, kontaktujte prosím administrátora',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Osobní informace',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Foto',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Nástěnka',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Brick:Portal:Browse:Name' => 'Procházet položky',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Seznam',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Strom',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Sbalit vše',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Žádná položka',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Zpět',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Brick:Portal:Manage:Name' => 'Spravovat položky',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Žádná položka',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Akce',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Průměr',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Brick:Portal:Object:Name' => 'Objekt',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Nový %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Aktualizace %1$s',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Vybrat %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Zkopíruj odkaz na objekt',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Zkopírováno'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Zkopírováno',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Brick:Portal:Create:Name' => 'Rychlé vytvoření',
|
||||
'Brick:Portal:Create:ChooseType' => 'Vyberte typ',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'Brick:Portal:Filter:Name' => 'Předfiltrování dlaždice',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'např. připojení k wifi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Vyhledat',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Page:DefaultTitle' => '%1$s User portal~~',
|
||||
'Page:PleaseWait' => 'Please wait...~~',
|
||||
'Page:Home' => 'Home~~',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>~~',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>~~',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'da', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry~~',
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Brick:Portal:UserProfile:Name' => 'User profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'My profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Logoff~~',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Brick:Portal:Browse:Name' => 'Browse throught items~~',
|
||||
'Brick:Portal:Browse:Mode:List' => 'List~~',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Tree~~',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Collapse all~~',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'No item~~',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Back~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Brick:Portal:Manage:Name' => 'Manage items~~',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'No item.~~',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Actions~~',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Average~~',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min~~',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %1$s~~',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s~~',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link~~',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Brick:Portal:Create:Name' => 'Quick creation~~',
|
||||
'Brick:Portal:Create:ChooseType' => 'Please, choose a type~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'Brick:Portal:Filter:Name' => 'Prefilter a brick~~',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi~~',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Search~~',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Page:DefaultTitle' => '%1$s - Benutzer Portal',
|
||||
'Page:PleaseWait' => 'Bitte warten...',
|
||||
'Page:Home' => 'Start',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Öffnen</a> / <a href="%4$s" class="file_download_link">Download</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'de', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Dieses Objekt schließen',
|
||||
'Portal:Form:Close:Warning' => 'Soll diese Eingabemaske verlassen werden? Eingegebene Daten werden nicht gespeichert.',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: Objekt kann nicht erzeugt werden. Prüfen Sie verknüpfte Objekte und Anhänge bevor Sie dieses Formular erneut abschicken.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: Objekt kann nicht geupdated werden. Prüfen Sie verknüpfte Objekte und Anhänge bevor Sie dieses Formular erneut abschicken.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Benutzer Profil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Mein Profil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Abmelden',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Passwort kann nicht geändert werden - bitte kontaktieren Sie Ihren %1$s Administrator',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Persönliche Informationen',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Foto',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Brick:Portal:Browse:Name' => 'Liste durchgehen',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Liste',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Baum',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Alle kollabieren',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Kein Eintrag',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Zurück',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Brick:Portal:Manage:Name' => 'Einträge managen',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Kein Eintrag.',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Aktionen',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Durchschnitt',
|
||||
'Brick:Portal:Manage:fct:min' => 'Minimum',
|
||||
'Brick:Portal:Manage:fct:max' => 'Maximum',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Brick:Portal:Object:Name' => 'Object',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Neue %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Wird aktualisiert %1$s',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Objektverknüpfung kopieren',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Kopiert'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Kopiert',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Brick:Portal:Create:Name' => 'Schnelles Erstellen',
|
||||
'Brick:Portal:Create:ChooseType' => 'Bitte wählen Sie einen Typ',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'Brick:Portal:Filter:Name' => 'Brick vorfiltern',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'z.B. connect wifi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Suchen',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
@@ -18,7 +19,7 @@
|
||||
*/
|
||||
|
||||
// Portal
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Page:DefaultTitle' => '%1$s User portal',
|
||||
'Page:PleaseWait' => 'Please wait...',
|
||||
'Page:Home' => 'Home',
|
||||
@@ -62,19 +63,19 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'en-us', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry',
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Brick:Portal:UserProfile:Name' => 'User profile',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'My profile',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Logoff',
|
||||
@@ -85,15 +86,15 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Brick:Portal:Browse:Name' => 'Browse throught items',
|
||||
'Brick:Portal:Browse:Mode:List' => 'List',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Tree',
|
||||
@@ -107,10 +108,10 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Collapse all',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'No item',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Back',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Brick:Portal:Manage:Name' => 'Manage items',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'No item.',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Actions',
|
||||
@@ -125,10 +126,10 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Average',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Brick:Portal:Object:Name' => 'Object',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %1$s',
|
||||
@@ -140,18 +141,18 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Brick:Portal:Create:Name' => 'Quick creation',
|
||||
'Brick:Portal:Create:ChooseType' => 'Please, choose a type',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', [
|
||||
'Brick:Portal:Filter:Name' => 'Prefilter a brick',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Search',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
// Portal
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Page:DefaultTitle' => '%1$s User portal',
|
||||
'Page:PleaseWait' => 'Please wait...',
|
||||
'Page:Home' => 'Home',
|
||||
@@ -49,19 +50,19 @@ Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'en-gb',
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry',
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Brick:Portal:UserProfile:Name' => 'User profile',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'My profile',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Log off',
|
||||
@@ -72,15 +73,15 @@ Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Brick:Portal:Browse:Name' => 'Browse through items',
|
||||
'Brick:Portal:Browse:Mode:List' => 'List',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Tree',
|
||||
@@ -94,10 +95,10 @@ Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Collapse all',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'No item',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Back',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Brick:Portal:Manage:Name' => 'Manage items',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'No item.',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Actions',
|
||||
@@ -112,10 +113,10 @@ Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Average',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Brick:Portal:Object:Name' => 'Object',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %1$s',
|
||||
@@ -127,18 +128,18 @@ Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Brick:Portal:Create:Name' => 'Quick creation',
|
||||
'Brick:Portal:Create:ChooseType' => 'Please, choose a type',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('EN GB', 'British English', 'British English', array(
|
||||
Dict::Add('EN GB', 'British English', 'British English', [
|
||||
'Brick:Portal:Filter:Name' => 'Prefilter a brick',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Search',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Spanish Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
* @author Miguel Turrubiates <miguel_tf@yahoo.com>
|
||||
* @notas Utilizar codificación UTF-8 para mostrar acentos y otros caracteres especiales
|
||||
* @notas Utilizar codificación UTF-8 para mostrar acentos y otros caracteres especiales
|
||||
*/
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Page:DefaultTitle' => '%1$s - Portal de Usuario',
|
||||
'Page:PleaseWait' => 'Por favor espere...',
|
||||
'Page:Home' => 'Inicio',
|
||||
@@ -51,19 +52,19 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Abierto</a> / <a href="%4$s" class="file_download_link">Descarga</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'es', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Cerrar este registro',
|
||||
'Portal:Form:Close:Warning' => '¿Desea abandorar este formulario? Datos modificados se perderan',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: no se puede crear el objeto. Verifique los objetos asociados y archivos adjuntos antes de enviar nuevamente este formulario.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: no se puede actualizar el objeto. Verifique los objetos asociados y archivos adjuntos antes de enviar nuevamente este formulario.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Perfil del usuario',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Mi perfil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Cerrar Sesión',
|
||||
@@ -74,15 +75,15 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'No se puede cambiar la contraseña, póngase en contacto con el administrador de %1$s',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Información Personal',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Foto',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Tablero de Control',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Brick:Portal:Browse:Name' => 'Buscar en todos los elementos',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Lista',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Árbol',
|
||||
@@ -96,10 +97,10 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Desplegar todo',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Sin elementos',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Volver',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Brick:Portal:Manage:Name' => 'Administrar elementos',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Sin elementos',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Acciones',
|
||||
@@ -114,10 +115,10 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Promedio',
|
||||
'Brick:Portal:Manage:fct:min' => 'Mínimo',
|
||||
'Brick:Portal:Manage:fct:max' => 'Máximo',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Brick:Portal:Object:Name' => 'Objecto',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Nuevo %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Actualizando %1$s',
|
||||
@@ -129,18 +130,18 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Selección %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copiar liga al objeto',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copiado'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copiado',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Brick:Portal:Create:Name' => 'Creación rápida',
|
||||
'Brick:Portal:Create:ChooseType' => 'Por favor, seleccione un tipo',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'Brick:Portal:Filter:Name' => 'Prefiltrar bloque',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'Ej.:. Conectar a WiFi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Buscar',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Page:DefaultTitle' => 'Portail utilisateur %1$s',
|
||||
'Page:PleaseWait' => 'Veuillez patienter...',
|
||||
'Page:Home' => 'Accueil',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Ouvrir</a> / <a href="%4$s" class="file_download_link">Télécharger</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'fr', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Fermer cette entrée',
|
||||
'Portal:Form:Close:Warning' => 'Voulez-vous quitter ce formulaire ? Les données saisies seront perdues',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Erreur: L\'objet n\'a pas été créé. Vérifiez les objets liés et les attachements avant de soumettre à nouveau le formulaire.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Erreur: L\'objet n\'a pas été modifié. Vérifiez les objets liés et les attachements avant de soumettre à nouveau le formulaire.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Erreur durant la validation du champ \'%1$s\' : %2$s',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Erreur durant la validation du champ \'%1$s\' : %2$s',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Profil utilisateur',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Mon profil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Déconnexion',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Impossible de modifier votre mot de passe, veuillez contacter votre administrateur %1$s',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Informations personnelles',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Tableau de bord',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Brick:Portal:Browse:Name' => 'Navigation dans les éléments',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Liste',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Hiérarchie',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Tout replier',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Aucun élément',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Retour',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Brick:Portal:Manage:Name' => 'Gestion d\'éléments',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Aucun élément',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Actions',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Moyenne',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Brick:Portal:Object:Name' => 'Objet',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Création de %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Modification de %1$s',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Sélection de %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copier l\'url de l\'objet',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copié'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copié',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Brick:Portal:Create:Name' => 'Création rapide',
|
||||
'Brick:Portal:Create:ChooseType' => 'Veuillez choisir le type',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', [
|
||||
'Brick:Portal:Filter:Name' => 'Préfiltre une brique',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'ex : connecter wifi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Rechercher',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Page:DefaultTitle' => '%1$s Felhasználói portál',
|
||||
'Page:PleaseWait' => 'Kérem várjon...',
|
||||
'Page:Home' => 'Kezdőlap',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Megnyitás</a> / <a href="%4$s" class="file_download_link">Letöltés</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'hu', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Bejegyzés bezárása',
|
||||
'Portal:Form:Close:Warning' => 'Szeretné elhagyni ezt az űrlapot? A megadott adatok elveszhetnek',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Hiba: az objektum nem hozható létre. Ellenőrizze a kapcsolódó objektumokat és mellékleteket, mielőtt újra elküldi ezt az űrlapot.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Hiba: az objektum nem frissíthető. Ellenőrizze a kapcsolódó objektumokat és mellékleteket, mielőtt újra elküldi ezt az űrlapot.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Felhasználói profil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Saját profil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Kijelentkezés',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Nem tudja megváltoztatni a jelszót, lépjen kapcsolatba a %1$s rendszergazdával',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Személyi adatok',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Fénykép',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Műszerfal',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Brick:Portal:Browse:Name' => 'Böngésszen az elemek között',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Lista',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Fa',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Összecsukás',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Nincs elem',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Vissza',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Brick:Portal:Manage:Name' => 'Elemek kezelése',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Nincs elem',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Műveletek',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Átlag',
|
||||
'Brick:Portal:Manage:fct:min' => 'Minimum',
|
||||
'Brick:Portal:Manage:fct:max' => 'Maximum',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Brick:Portal:Object:Name' => 'Objektum',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Új %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => '%1$s frissítése',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => '%1$s kiválasztása',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Objektum hivatkozás másolása',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Másolva'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Másolva',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Brick:Portal:Create:Name' => 'Gyors létrehozás',
|
||||
'Brick:Portal:Create:ChooseType' => 'Válasszon típust',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'Brick:Portal:Filter:Name' => 'Tégla előszűrése',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'pl. wifi kapcsolat',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Keresés',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Page:DefaultTitle' => '%1$s Portale Utente',
|
||||
'Page:PleaseWait' => 'Attendere…',
|
||||
'Page:Home' => 'Home',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>~~',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'it', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry~~',
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Brick:Portal:UserProfile:Name' => 'User profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'My profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Logoff~~',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Brick:Portal:Browse:Name' => 'Browse throught items~~',
|
||||
'Brick:Portal:Browse:Mode:List' => 'List~~',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Tree~~',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Collapse all~~',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'No item~~',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Back~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Brick:Portal:Manage:Name' => 'Manage items~~',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'No item.~~',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Actions~~',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Average~~',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min~~',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %1$s~~',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s~~',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link~~',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Brick:Portal:Create:Name' => 'Quick creation~~',
|
||||
'Brick:Portal:Create:ChooseType' => 'Please, choose a type~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'Brick:Portal:Filter:Name' => 'Prefilter a brick~~',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi~~',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Search~~',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Page:DefaultTitle' => '%1$s User portal~~',
|
||||
'Page:PleaseWait' => 'Please wait...~~',
|
||||
'Page:Home' => 'Home~~',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>~~',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>~~',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'ja', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry~~',
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Brick:Portal:UserProfile:Name' => 'User profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'My profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Logoff~~',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Brick:Portal:Browse:Name' => 'Browse throught items~~',
|
||||
'Brick:Portal:Browse:Mode:List' => 'List~~',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Tree~~',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Collapse all~~',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'No item~~',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Back~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Brick:Portal:Manage:Name' => 'Manage items~~',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'No item.~~',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Actions~~',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Average~~',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min~~',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %1$s~~',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s~~',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link~~',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Brick:Portal:Create:Name' => 'Quick creation~~',
|
||||
'Brick:Portal:Create:ChooseType' => 'Please, choose a type~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'Brick:Portal:Filter:Name' => 'Prefilter a brick~~',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi~~',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Search~~',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author Jeffrey Bostoen <info@jeffreybostoen.be> (2018 - 2022)
|
||||
*
|
||||
*/
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Page:DefaultTitle' => '%1$s Gebruikersportaal',
|
||||
'Page:PleaseWait' => 'Even geduld...',
|
||||
'Page:Home' => 'Welkom',
|
||||
@@ -54,19 +55,19 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'nl', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Sluit dit item.',
|
||||
'Portal:Form:Close:Warning' => 'Ben je zeker dat je dit venster wil sluiten? Ingevoerde gegevens kunnen verloren gaan.',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Fout: object kan niet worden aangemaakt. Kijk verwante objecten en bijlagen na vooraleer dit formulier opnieuw te versturen.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Fout: object kan niet worden aangepast. Kijk verwante objecten en bijlagen na vooraleer dit formulier opnieuw te versturen.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Gebruikersprofiel',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Mijn profiel',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Uitloggen',
|
||||
@@ -77,15 +78,15 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Jouw wachtwoord kan niet gewijzigd worden. Neem contact op met de beheerder',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Persoonlijke informatie',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Foto',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Brick:Portal:Browse:Name' => 'Bladeren',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Lijst',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Boomstructuur',
|
||||
@@ -99,10 +100,10 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Verberg alles',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Geen gegevens',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Terug',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Brick:Portal:Manage:Name' => 'Beheer items',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Geen gegevens',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Acties',
|
||||
@@ -117,10 +118,10 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Gemiddelde',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Brick:Portal:Object:Name' => 'Object',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Nieuw %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Verwerken %1$s',
|
||||
@@ -132,18 +133,18 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Selecteer %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Kopieer link naar object',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Gekopieerd'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Gekopieerd',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Brick:Portal:Create:Name' => 'Snel aanmaken',
|
||||
'Brick:Portal:Create:ChooseType' => 'Geef een type op.',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
|
||||
Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'Brick:Portal:Filter:Name' => 'Voorfilteren van een bouwsteen',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'bv. wifi-verbinding',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Zoek',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Page:DefaultTitle' => '%1$s portal użytkownika',
|
||||
'Page:PleaseWait' => 'Proszę czekać...',
|
||||
'Page:Home' => 'Start',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Pobierz</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'en-us', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Zamknij ten wpis',
|
||||
'Portal:Form:Close:Warning' => 'Chcesz opuścić ten formularz? Wprowadzone dane mogą zostać utracone',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Błąd: nie można utworzyć obiektu. Sprawdź powiązane obiekty i załączniki przed ponownym przesłaniem tego formularza.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Błąd: nie można zaktualizować obiektu. Sprawdź powiązane obiekty i załączniki przed ponownym przesłaniem tego formularza.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Profil użytkownika',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Mój profil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Wyloguj',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Nie można zmienić hasła. Skontaktuj się z administratorem %1$s',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Informacje osobiste',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Zdjęcie',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Pulpit',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Brick:Portal:Browse:Name' => 'Przeglądaj elementy',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Lista',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Drzewo',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Zwiń wszystkie',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Brak elementu',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Wstecz',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Brick:Portal:Manage:Name' => 'Zarządzaj elementami',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Brak elementu.',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Akcje',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Średnia',
|
||||
'Brick:Portal:Manage:fct:min' => 'Minimum',
|
||||
'Brick:Portal:Manage:fct:max' => 'Maksimum',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Brick:Portal:Object:Name' => 'Obiekty',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Nowy %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Aktualizacja %1$s',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Wybierz %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Skopiuj obiekt',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Skopiowano'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Skopiowano',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Brick:Portal:Create:Name' => 'Szybkie tworzenie',
|
||||
'Brick:Portal:Create:ChooseType' => 'Proszę wybrać typ',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', array(
|
||||
Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'Brick:Portal:Filter:Name' => 'Wstępny filtr',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'na przykład. podłącz wifi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Szukaj',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Page:DefaultTitle' => 'Portal do Usuário do '.ITOP_APPLICATION_SHORT,
|
||||
'Page:PleaseWait' => 'Aguarde...',
|
||||
'Page:Home' => 'Página inicial',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Abrir</a> / <a href="%4$s" class="file_download_link">Download</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'pt-br', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Fechar esta solicitação',
|
||||
'Portal:Form:Close:Warning' => 'Você deseja abandonar esta página? Os dados digitados podem ser perdidos',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Erro: objeto não pode ser criado. Verifique os objetos e anexos associados antes de enviar novamente este formulário',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Erro: objeto não pode ser atualizado. Verifique os objetos e anexos associados antes de enviar novamente este formulário',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Perfil de Usuário',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Meu Perfil',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Sair',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Não foi possível alterar sua senha, entre em contato com a T.I.',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Informações pessoais',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Imagem',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Painel do '.ITOP_APPLICATION_SHORT,
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Brick:Portal:Browse:Name' => 'Navegar por itens',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Lista',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Cascata',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Recolher todos',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Sem dados',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Voltar',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Brick:Portal:Manage:Name' => 'Gerenciar itens',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Sem dados',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Ações',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Média',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min.',
|
||||
'Brick:Portal:Manage:fct:max' => 'Máx.',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Brick:Portal:Object:Name' => 'Objeto',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Novo %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Alterar %1$s',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Selecionar %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copiar',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copiado'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copiado',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Brick:Portal:Create:Name' => 'Criação rápida',
|
||||
'Brick:Portal:Create:ChooseType' => 'Por favor, escolha um tipo:',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'Brick:Portal:Filter:Name' => 'Filtro ativado',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'ex. conectar ao WiFi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Pesquisa',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author Vladimir Kunin <v.b.kunin@gmail.com>
|
||||
*
|
||||
*/
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Page:DefaultTitle' => 'Пользовательский портал %1$s',
|
||||
'Page:PleaseWait' => 'Пожалуйста, подождите...',
|
||||
'Page:Home' => 'Домашняя страница',
|
||||
@@ -54,19 +55,19 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Открыть</a> / <a href="%4$s" class="file_download_link">Скачать</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'ru', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry~~',
|
||||
'Portal:Form:Close:Warning' => 'Вы действительно хотите закрыть эту форму? Введённые данные могут быть утеряны.',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Brick:Portal:UserProfile:Name' => 'Профиль пользователя',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Мой профиль',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Выйти',
|
||||
@@ -77,15 +78,15 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Не удалось изменить пароль, пожалуйста, свяжитесь с вашим администратором %1$s.',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Персональная информация',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Фотография',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Дашборд',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Brick:Portal:Browse:Name' => 'Просмотр элементов',
|
||||
'Brick:Portal:Browse:Mode:List' => 'Список',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Дерево',
|
||||
@@ -99,10 +100,10 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Свернуть все',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'Нет элементов',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Назад',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Brick:Portal:Manage:Name' => 'Управление элементами',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'Нет элементов',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Действия',
|
||||
@@ -117,10 +118,10 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Среднее',
|
||||
'Brick:Portal:Manage:fct:min' => 'Минимум',
|
||||
'Brick:Portal:Manage:fct:max' => 'Максимум',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Brick:Portal:Object:Name' => 'Object',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'Создать %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Обновление %1$s',
|
||||
@@ -132,18 +133,18 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Выбрать %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Скопировать ссылку на объект',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Ссылка скопирована'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Ссылка скопирована',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Brick:Portal:Create:Name' => 'Быстрое создание',
|
||||
'Brick:Portal:Create:ChooseType' => 'Пожалуйста, выберите тип',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'Brick:Portal:Filter:Name' => 'Фильтр',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'например, подключить wi-fi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Искать',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Page:DefaultTitle' => '%1$s User portal~~',
|
||||
'Page:PleaseWait' => 'Please wait...~~',
|
||||
'Page:Home' => 'Home~~',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>~~',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>~~',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'en-us~~', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry~~',
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Brick:Portal:UserProfile:Name' => 'User profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'My profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Logoff~~',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Brick:Portal:Browse:Name' => 'Browse throught items~~',
|
||||
'Brick:Portal:Browse:Mode:List' => 'List~~',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Tree~~',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Collapse all~~',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'No item~~',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Back~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Brick:Portal:Manage:Name' => 'Manage items~~',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'No item.~~',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Actions~~',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Average~~',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min~~',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %1$s~~',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s~~',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link~~',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Brick:Portal:Create:Name' => 'Quick creation~~',
|
||||
'Brick:Portal:Create:ChooseType' => 'Please, choose a type~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'Brick:Portal:Filter:Name' => 'Prefilter a brick~~',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi~~',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Search~~',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
*
|
||||
*
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Page:DefaultTitle' => '%1$s User portal~~',
|
||||
'Page:PleaseWait' => 'Please wait...~~',
|
||||
'Page:Home' => 'Home~~',
|
||||
@@ -53,19 +54,19 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>~~',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>~~',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'tr', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry~~',
|
||||
'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~',
|
||||
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Brick:Portal:UserProfile:Name' => 'User profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'My profile~~',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Logoff~~',
|
||||
@@ -76,15 +77,15 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal information~~',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Brick:Portal:Browse:Name' => 'Browse throught items~~',
|
||||
'Brick:Portal:Browse:Mode:List' => 'List~~',
|
||||
'Brick:Portal:Browse:Mode:Tree' => 'Tree~~',
|
||||
@@ -98,10 +99,10 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => 'Collapse all~~',
|
||||
'Brick:Portal:Browse:Filter:NoData' => 'No item~~',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => 'Back~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Brick:Portal:Manage:Name' => 'Manage items~~',
|
||||
'Brick:Portal:Manage:Table:NoData' => 'No item.~~',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => 'Actions~~',
|
||||
@@ -116,10 +117,10 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Brick:Portal:Manage:fct:avg' => 'Average~~',
|
||||
'Brick:Portal:Manage:fct:min' => 'Min~~',
|
||||
'Brick:Portal:Manage:fct:max' => 'Max~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Brick:Portal:Object:Name' => 'Object~~',
|
||||
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %1$s~~',
|
||||
@@ -131,18 +132,18 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s~~',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link~~',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Brick:Portal:Create:Name' => 'Quick creation~~',
|
||||
'Brick:Portal:Create:ChooseType' => 'Please, choose a type~~',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'Brick:Portal:Filter:Name' => 'Prefilter a brick~~',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi~~',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => 'Search~~',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license https://opensource.org/licenses/AGPL-3.0
|
||||
@@ -18,7 +19,7 @@
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
*/
|
||||
// Portal
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Page:DefaultTitle' => '%1$s 用户门户',
|
||||
'Page:PleaseWait' => '请稍候...',
|
||||
'Page:Home' => '主页',
|
||||
@@ -62,19 +63,19 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
|
||||
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">打开</a> / <a href="%4$s" class="file_download_link">下载</a>',
|
||||
'Portal:Calendar-FirstDayOfWeek' => 'zh-cn', //work with moment.js locales
|
||||
));
|
||||
]);
|
||||
|
||||
// Object form
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Portal:Form:Caselog:Entry:Close:Tooltip' => '关闭此条目',
|
||||
'Portal:Form:Close:Warning' => '确定要离开表单吗? 已输入数据会丢失',
|
||||
'Portal:Error:ObjectCannotBeCreated' => '错误: 无法创建对象. 请在再次提交表单前检查相关对象和附件.',
|
||||
'Portal:Error:ObjectCannotBeUpdated' => '错误: 无法更新对象. 请在再次提交表单前检查相关对象和附件.',
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
));
|
||||
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
|
||||
]);
|
||||
|
||||
// UserProfile brick
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Brick:Portal:UserProfile:Name' => '用户资料',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => '我的资料',
|
||||
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => '注销',
|
||||
@@ -85,15 +86,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => '无法修改密码, 请联系管理员',
|
||||
'Brick:Portal:UserProfile:PersonalInformations:Title' => '人员信息',
|
||||
'Brick:Portal:UserProfile:Photo:Title' => '头像',
|
||||
));
|
||||
]);
|
||||
|
||||
// AggregatePageBrick
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Brick:Portal:AggregatePage:DefaultTitle' => '仪表盘',
|
||||
));
|
||||
]);
|
||||
|
||||
// BrowseBrick brick
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Brick:Portal:Browse:Name' => '浏览项目',
|
||||
'Brick:Portal:Browse:Mode:List' => '列表',
|
||||
'Brick:Portal:Browse:Mode:Tree' => '树形',
|
||||
@@ -107,10 +108,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Brick:Portal:Browse:Tree:CollapseAll' => '全部收起',
|
||||
'Brick:Portal:Browse:Filter:NoData' => '没有项目',
|
||||
'Brick:Portal:Browse:Mosaic:Back' => '返回',
|
||||
));
|
||||
]);
|
||||
|
||||
// ManageBrick brick
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Brick:Portal:Manage:Name' => '管理项目',
|
||||
'Brick:Portal:Manage:Table:NoData' => '没有项目.',
|
||||
'Brick:Portal:Manage:Table:ItemActions' => '操作',
|
||||
@@ -125,10 +126,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Brick:Portal:Manage:fct:avg' => '平均',
|
||||
'Brick:Portal:Manage:fct:min' => '最小',
|
||||
'Brick:Portal:Manage:fct:max' => '最大',
|
||||
));
|
||||
]);
|
||||
|
||||
// ObjectBrick brick
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Brick:Portal:Object:Name' => '对象',
|
||||
'Brick:Portal:Object:Form:Create:Title' => '新建 %1$s',
|
||||
'Brick:Portal:Object:Form:Edit:Title' => '正在更新 %1$s',
|
||||
@@ -140,18 +141,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Brick:Portal:Object:Search:Hierarchy:Title' => '选择 %1$s',
|
||||
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
|
||||
'Brick:Portal:Object:Copy:Tooltip' => '复制对象链接',
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => '已复制'
|
||||
));
|
||||
'Brick:Portal:Object:Copy:CopiedTooltip' => '已复制',
|
||||
]);
|
||||
|
||||
// CreateBrick brick
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Brick:Portal:Create:Name' => '快速创建',
|
||||
'Brick:Portal:Create:ChooseType' => '请选择类型',
|
||||
));
|
||||
]);
|
||||
|
||||
// Filter brick
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'Brick:Portal:Filter:Name' => '预筛选组件',
|
||||
'Brick:Portal:Filter:SearchInput:Placeholder' => '例如. 连接wifi',
|
||||
'Brick:Portal:Filter:SearchInput:Submit' => '搜索',
|
||||
));
|
||||
]);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
@@ -20,42 +21,42 @@
|
||||
/** @noinspection PhpUnhandledExceptionInspection */
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'itop-portal-base/3.3.0', array(
|
||||
'itop-portal-base/3.3.0',
|
||||
[
|
||||
// Identification
|
||||
'label' => 'Portal Development Library',
|
||||
'category' => 'Portal',
|
||||
// Setup
|
||||
'dependencies' => array(
|
||||
),
|
||||
'dependencies' => [
|
||||
],
|
||||
'mandatory' => true,
|
||||
'visible' => false,
|
||||
// Components
|
||||
'datamodel' => array(
|
||||
'datamodel' => [
|
||||
// Note: The autoloader is there instead of portal/config/bootstrap.php in order to be available for other modules with a dependency on this one.
|
||||
// eg. If a module has a class extending \Combodo\iTop\Portal\Controller\AbstractController, it needs to find it even if the portal kernel is not loaded.
|
||||
'portal/vendor/autoload.php',
|
||||
),
|
||||
'webservice' => array(
|
||||
],
|
||||
'webservice' => [
|
||||
//'webservices.itop-portal-base.php',
|
||||
),
|
||||
'dictionary' => array(
|
||||
),
|
||||
'data.struct' => array(
|
||||
],
|
||||
'dictionary' => [
|
||||
],
|
||||
'data.struct' => [
|
||||
//'data.struct.itop-portal-base.xml',
|
||||
),
|
||||
'data.sample' => array(
|
||||
],
|
||||
'data.sample' => [
|
||||
//'data.sample.itop-portal-base.xml',
|
||||
),
|
||||
],
|
||||
// Documentation
|
||||
'doc.manual_setup' => '',
|
||||
'doc.more_information' => '',
|
||||
// Default settings
|
||||
'settings' => array(
|
||||
),
|
||||
)
|
||||
'settings' => [
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
// ____ _ _ _ __ _ _ _ _ _______
|
||||
// | _ \| | ___ __ _ ___ ___ | |_ __ _| | _____ ___ __ _ _ __ ___ ___ / _| | |_| |__ ___ _ __ ___ _ __| |_ __ _| | / /___ /
|
||||
// | |_) | |/ _ \/ _` / __|/ _ \ | __/ _` | |/ / _ \ / __/ _` | '__/ _ \ / _ \| |_ | __| '_ \ / _ \ | '_ \ / _ \| '__| __/ _` | | / / |_ \
|
||||
|
||||
@@ -28,14 +28,10 @@ use Symfony\Component\Dotenv\Dotenv;
|
||||
require_once APPROOT.'/lib/autoload.php';
|
||||
|
||||
// Load current environment if necessary (typically from CLI as the app is not started yet)
|
||||
if (!defined('MODULESROOT'))
|
||||
{
|
||||
if (file_exists(__DIR__.'/../../../../approot.inc.php'))
|
||||
{
|
||||
if (!defined('MODULESROOT')) {
|
||||
if (file_exists(__DIR__.'/../../../../approot.inc.php')) {
|
||||
require_once __DIR__.'/../../../../approot.inc.php'; // When in env-xxxx folder
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
require_once __DIR__.'/../../../../../approot.inc.php'; // When in datamodels/x.x folder
|
||||
}
|
||||
require_once APPROOT.'/application/startup.inc.php';
|
||||
@@ -62,7 +58,7 @@ if (!class_exists(Dotenv::class)) {
|
||||
}
|
||||
|
||||
if (null === $sEnv = (isset($_SERVER['APP_ENV']) ? $_SERVER['APP_ENV'] : (isset($_ENV['APP_ENV']) ? $_ENV['APP_ENV'] : null))) {
|
||||
$oDotenv->populate(array('APP_ENV' => $sEnv = 'prod'));
|
||||
$oDotenv->populate(['APP_ENV' => $sEnv = 'prod']);
|
||||
}
|
||||
|
||||
if ('test' !== $sEnv && file_exists($sPathDist = "$sPath.local")) {
|
||||
@@ -83,31 +79,27 @@ if (!class_exists(Dotenv::class)) {
|
||||
$_SERVER += $_ENV;
|
||||
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = (isset($_SERVER['APP_ENV']) ? $_SERVER['APP_ENV'] : (isset($_ENV['APP_ENV']) ? $_ENV['APP_ENV'] : null)) ?: 'prod';
|
||||
$_SERVER['APP_DEBUG'] = isset($_SERVER['APP_DEBUG']) ? $_SERVER['APP_DEBUG'] : (isset($_ENV['APP_DEBUG']) ? $_ENV['APP_DEBUG'] : ('prod' !== $_SERVER['APP_ENV']));
|
||||
$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int)$_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'],
|
||||
FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
|
||||
$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int)$_SERVER['APP_DEBUG'] || filter_var(
|
||||
$_SERVER['APP_DEBUG'],
|
||||
FILTER_VALIDATE_BOOLEAN
|
||||
) ? '1' : '0';
|
||||
|
||||
if ($_SERVER['APP_DEBUG'])
|
||||
{
|
||||
if ($_SERVER['APP_DEBUG']) {
|
||||
umask(0000);
|
||||
|
||||
if (class_exists(Debug::class))
|
||||
{
|
||||
if (class_exists(Debug::class)) {
|
||||
Debug::enable();
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_ENV['PORTAL_ID']))
|
||||
{
|
||||
if (isset($_ENV['PORTAL_ID'])) {
|
||||
// Nothing to do
|
||||
}
|
||||
// Note: Default value is set to "false" to differentiate an empty value from a non given parameter
|
||||
elseif ($sPortalId = utils::ReadParam('portal_id', false, true))
|
||||
{
|
||||
elseif ($sPortalId = utils::ReadParam('portal_id', false, true)) {
|
||||
|
||||
$_ENV['PORTAL_ID'] = $sPortalId;
|
||||
}
|
||||
elseif (defined('PORTAL_ID'))
|
||||
{
|
||||
} elseif (defined('PORTAL_ID')) {
|
||||
$_ENV['PORTAL_ID'] = PORTAL_ID;
|
||||
@trigger_error(
|
||||
sprintf(
|
||||
@@ -118,16 +110,14 @@ elseif (defined('PORTAL_ID'))
|
||||
);
|
||||
}
|
||||
|
||||
if (empty($_ENV['PORTAL_ID']))
|
||||
{
|
||||
if (empty($_ENV['PORTAL_ID'])) {
|
||||
echo "Missing argument 'portal_id'";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Make sure that the PORTAL_ID constant is also defined
|
||||
// Note: This is widely used in extensions, snippets and all
|
||||
if (!defined('PORTAL_ID'))
|
||||
{
|
||||
if (!defined('PORTAL_ID')) {
|
||||
define('PORTAL_ID', $_ENV['PORTAL_ID']);
|
||||
}
|
||||
|
||||
@@ -141,4 +131,4 @@ $_ENV['COMBODO_PORTAL_BASE_ABSOLUTE_URL'] = utils::GetAbsoluteUrlModulesRoot().'
|
||||
$_ENV['COMBODO_PORTAL_BASE_ABSOLUTE_PATH'] = MODULESROOT.'/itop-portal-base/portal/public/';
|
||||
$_ENV['COMBODO_PORTAL_INSTANCE_ABSOLUTE_URL'] = utils::GetAbsoluteUrlModulesRoot().$_ENV['PORTAL_ID'].'/';
|
||||
$_ENV['COMBODO_PORTAL_LANGUAGE'] = UserRights::GetUserLanguage();
|
||||
$_ENV['COMBODO_PORTAL_METADATA_LANGUAGE'] = strtolower(substr($_ENV['COMBODO_PORTAL_LANGUAGE'], 0, 2));;
|
||||
$_ENV['COMBODO_PORTAL_METADATA_LANGUAGE'] = strtolower(substr($_ENV['COMBODO_PORTAL_LANGUAGE'], 0, 2));;
|
||||
|
||||
@@ -32,87 +32,87 @@ use ModuleDesign;
|
||||
class ManageBrick extends PortalBrick
|
||||
{
|
||||
/** @var string ENUM_ACTION_VIEW */
|
||||
const ENUM_ACTION_VIEW = 'view';
|
||||
public const ENUM_ACTION_VIEW = 'view';
|
||||
/** @var string ENUM_ACTION_EDIT */
|
||||
const ENUM_ACTION_EDIT = 'edit';
|
||||
public const ENUM_ACTION_EDIT = 'edit';
|
||||
|
||||
/** @var string ENUM_TILE_MODE_TEXT */
|
||||
const ENUM_TILE_MODE_TEXT = 'text';
|
||||
public const ENUM_TILE_MODE_TEXT = 'text';
|
||||
/** @var string ENUM_TILE_MODE_BADGE */
|
||||
const ENUM_TILE_MODE_BADGE = 'badge';
|
||||
public const ENUM_TILE_MODE_BADGE = 'badge';
|
||||
/** @var string ENUM_TILE_MODE_PIE */
|
||||
const ENUM_TILE_MODE_PIE = 'pie-chart';
|
||||
public const ENUM_TILE_MODE_PIE = 'pie-chart';
|
||||
/** @var string ENUM_TILE_MODE_BAR */
|
||||
const ENUM_TILE_MODE_BAR = 'bar-chart';
|
||||
public const ENUM_TILE_MODE_BAR = 'bar-chart';
|
||||
/** @var string ENUM_TILE_MODE_TOP */
|
||||
const ENUM_TILE_MODE_TOP = 'top-list';
|
||||
public const ENUM_TILE_MODE_TOP = 'top-list';
|
||||
|
||||
/** @var string ENUM_DISPLAY_MODE_LIST */
|
||||
const ENUM_DISPLAY_MODE_LIST = 'list';
|
||||
public const ENUM_DISPLAY_MODE_LIST = 'list';
|
||||
/** @var string ENUM_DISPLAY_MODE_PIE */
|
||||
const ENUM_DISPLAY_MODE_PIE = 'pie-chart';
|
||||
public const ENUM_DISPLAY_MODE_PIE = 'pie-chart';
|
||||
/** @var string ENUM_DISPLAY_MODE_BAR */
|
||||
const ENUM_DISPLAY_MODE_BAR = 'bar-chart';
|
||||
public const ENUM_DISPLAY_MODE_BAR = 'bar-chart';
|
||||
|
||||
/** @var string ENUM_PAGE_TEMPLATE_PATH_TABLE
|
||||
* @deprecated since 3.2.1
|
||||
* */
|
||||
const ENUM_PAGE_TEMPLATE_PATH_TABLE = 'itop-portal-base/portal/templates/bricks/manage/layout-table.html.twig';
|
||||
public const ENUM_PAGE_TEMPLATE_PATH_TABLE = 'itop-portal-base/portal/templates/bricks/manage/layout-table.html.twig';
|
||||
/** @var string ENUM_PAGE_TEMPLATE_PATH_CHART
|
||||
* @deprecated since 3.2.1
|
||||
* */
|
||||
const ENUM_PAGE_TEMPLATE_PATH_CHART = 'itop-portal-base/portal/templates/bricks/manage/layout-chart.html.twig';
|
||||
public const ENUM_PAGE_TEMPLATE_PATH_CHART = 'itop-portal-base/portal/templates/bricks/manage/layout-chart.html.twig';
|
||||
|
||||
/** Overloaded constants */
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fas fa-tag';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fas fa-tag fa-2x';
|
||||
public const DEFAULT_DECORATION_CLASS_HOME = 'fas fa-tag';
|
||||
public const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fas fa-tag fa-2x';
|
||||
/**
|
||||
* @deprecated 3.2.1
|
||||
*/
|
||||
const DEFAULT_PAGE_TEMPLATE_PATH = self::ENUM_PAGE_TEMPLATE_PATH_TABLE;
|
||||
const DEFAULT_DATA_LOADING = self::ENUM_DATA_LOADING_LAZY;
|
||||
public const DEFAULT_PAGE_TEMPLATE_PATH = self::ENUM_PAGE_TEMPLATE_PATH_TABLE;
|
||||
public const DEFAULT_DATA_LOADING = self::ENUM_DATA_LOADING_LAZY;
|
||||
/**
|
||||
* @deprecated 3.2.1
|
||||
*/
|
||||
const DEFAULT_TILE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/tile-default.html.twig';
|
||||
const DEFAULT_TILE_CONTROLLER_ACTION = 'Combodo\\iTop\\Portal\\Controller\\ManageBrickController::TileAction';
|
||||
public const DEFAULT_TILE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/tile-default.html.twig';
|
||||
public const DEFAULT_TILE_CONTROLLER_ACTION = 'Combodo\\iTop\\Portal\\Controller\\ManageBrickController::TileAction';
|
||||
|
||||
/** @var string DEFAULT_OQL */
|
||||
const DEFAULT_OQL = '';
|
||||
public const DEFAULT_OQL = '';
|
||||
/** @var string DEFAULT_OPENING_MODE */
|
||||
const DEFAULT_OPENING_MODE = self::ENUM_ACTION_EDIT;
|
||||
public const DEFAULT_OPENING_MODE = self::ENUM_ACTION_EDIT;
|
||||
/** @var int DEFAULT_LIST_LENGTH */
|
||||
const DEFAULT_LIST_LENGTH = 20;
|
||||
public const DEFAULT_LIST_LENGTH = 20;
|
||||
/** @var string DEFAULT_ZLIST_FIELDS */
|
||||
const DEFAULT_ZLIST_FIELDS = 'list';
|
||||
public const DEFAULT_ZLIST_FIELDS = 'list';
|
||||
/** @var bool DEFAULT_SHOW_TAB_COUNTS */
|
||||
const DEFAULT_SHOW_TAB_COUNTS = false;
|
||||
public const DEFAULT_SHOW_TAB_COUNTS = false;
|
||||
/** @var string DEFAULT_DISPLAY_MODE */
|
||||
const DEFAULT_DISPLAY_MODE = self::ENUM_DISPLAY_MODE_LIST;
|
||||
public const DEFAULT_DISPLAY_MODE = self::ENUM_DISPLAY_MODE_LIST;
|
||||
/** @var string DEFAULT_TILE_MODE */
|
||||
const DEFAULT_TILE_MODE = self::ENUM_TILE_MODE_TEXT;
|
||||
public const DEFAULT_TILE_MODE = self::ENUM_TILE_MODE_TEXT;
|
||||
/** @var int DEFAULT_GROUP_LIMIT */
|
||||
const DEFAULT_GROUP_LIMIT = 0;
|
||||
public const DEFAULT_GROUP_LIMIT = 0;
|
||||
/** @var bool DEFAULT_GROUP_SHOW_OTHERS */
|
||||
const DEFAULT_GROUP_SHOW_OTHERS = true;
|
||||
public const DEFAULT_GROUP_SHOW_OTHERS = true;
|
||||
/** @var int DEFAULT_WIDTH */
|
||||
const DEFAULT_WIDTH = 500;
|
||||
public const DEFAULT_WIDTH = 500;
|
||||
|
||||
/** @var array $aDisplayModes */
|
||||
public static array $aDisplayModes = array(
|
||||
public static array $aDisplayModes = [
|
||||
self::ENUM_DISPLAY_MODE_LIST,
|
||||
self::ENUM_DISPLAY_MODE_PIE,
|
||||
self::ENUM_DISPLAY_MODE_BAR,
|
||||
);
|
||||
];
|
||||
|
||||
/** @var array $aTileModes */
|
||||
public static array $aTileModes = array(
|
||||
public static array $aTileModes = [
|
||||
self::ENUM_TILE_MODE_TEXT,
|
||||
self::ENUM_TILE_MODE_BADGE,
|
||||
self::ENUM_TILE_MODE_PIE,
|
||||
self::ENUM_TILE_MODE_BAR,
|
||||
self::ENUM_TILE_MODE_TOP,
|
||||
);
|
||||
];
|
||||
|
||||
/** @var array $aDefaultTileData */
|
||||
private static array $aDefaultTileData = [
|
||||
@@ -167,7 +167,7 @@ class ManageBrick extends PortalBrick
|
||||
/** @var bool $bShowTabCounts */
|
||||
protected $bShowTabCounts;
|
||||
/** @var array $aAvailableDisplayModes */
|
||||
protected $aAvailableDisplayModes = array();
|
||||
protected $aAvailableDisplayModes = [];
|
||||
/** @var string $sDefaultDisplayMode */
|
||||
protected $sDefaultDisplayMode;
|
||||
/** @var string $sTileMode */
|
||||
@@ -183,16 +183,17 @@ class ManageBrick extends PortalBrick
|
||||
public static function RegisterTemplates(TemplatesRegister $oTemplatesRegister): void
|
||||
{
|
||||
parent::RegisterTemplates($oTemplatesRegister);
|
||||
$oTemplatesRegister->RegisterTemplates(self::class,
|
||||
TemplateDefinitionDto::Create('tile', static::TEMPLATES_BASE_PATH . 'manage/tile-default.html.twig'),
|
||||
TemplateDefinitionDto::Create('tile_badge', static::TEMPLATES_BASE_PATH. 'manage/tile-badge.html.twig'),
|
||||
TemplateDefinitionDto::Create('tile_chart', static::TEMPLATES_BASE_PATH . 'manage/tile-chart.html.twig'),
|
||||
TemplateDefinitionDto::Create('tile_top_list', static::TEMPLATES_BASE_PATH . 'manage/tile-top-list.html.twig'),
|
||||
TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH . 'manage/layout.html.twig'),
|
||||
TemplateDefinitionDto::Create('page_table', static::TEMPLATES_BASE_PATH . 'manage/layout-table.html.twig'),
|
||||
TemplateDefinitionDto::Create('page_chart', static::TEMPLATES_BASE_PATH . 'manage/layout-chart.html.twig'),
|
||||
TemplateDefinitionDto::Create('mode_chart_bar', static::TEMPLATES_BASE_PATH . 'manage/mode-bar-chart.html.twig', true, self::ENUM_DISPLAY_MODE_BAR),
|
||||
TemplateDefinitionDto::Create('mode_chart_pie', static::TEMPLATES_BASE_PATH . 'manage/mode-pie-chart.html.twig', true,self::ENUM_DISPLAY_MODE_PIE),
|
||||
$oTemplatesRegister->RegisterTemplates(
|
||||
self::class,
|
||||
TemplateDefinitionDto::Create('tile', static::TEMPLATES_BASE_PATH.'manage/tile-default.html.twig'),
|
||||
TemplateDefinitionDto::Create('tile_badge', static::TEMPLATES_BASE_PATH.'manage/tile-badge.html.twig'),
|
||||
TemplateDefinitionDto::Create('tile_chart', static::TEMPLATES_BASE_PATH.'manage/tile-chart.html.twig'),
|
||||
TemplateDefinitionDto::Create('tile_top_list', static::TEMPLATES_BASE_PATH.'manage/tile-top-list.html.twig'),
|
||||
TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH.'manage/layout.html.twig'),
|
||||
TemplateDefinitionDto::Create('page_table', static::TEMPLATES_BASE_PATH.'manage/layout-table.html.twig'),
|
||||
TemplateDefinitionDto::Create('page_chart', static::TEMPLATES_BASE_PATH.'manage/layout-chart.html.twig'),
|
||||
TemplateDefinitionDto::Create('mode_chart_bar', static::TEMPLATES_BASE_PATH.'manage/mode-bar-chart.html.twig', true, self::ENUM_DISPLAY_MODE_BAR),
|
||||
TemplateDefinitionDto::Create('mode_chart_pie', static::TEMPLATES_BASE_PATH.'manage/mode-pie-chart.html.twig', true, self::ENUM_DISPLAY_MODE_PIE),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -205,9 +206,9 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
$this->sOql = static::DEFAULT_OQL;
|
||||
$this->sOpeningMode = static::DEFAULT_OPENING_MODE;
|
||||
$this->aGrouping = array();
|
||||
$this->aFields = array();
|
||||
$this->aExportFields = array();
|
||||
$this->aGrouping = [];
|
||||
$this->aFields = [];
|
||||
$this->aExportFields = [];
|
||||
$this->bShowTabCounts = static::DEFAULT_SHOW_TAB_COUNTS;
|
||||
$this->sDefaultDisplayMode = static::DEFAULT_DISPLAY_MODE;
|
||||
|
||||
@@ -217,7 +218,7 @@ class ManageBrick extends PortalBrick
|
||||
$this->iDefaultListLength = static::DEFAULT_LIST_LENGTH;
|
||||
|
||||
// This is hardcoded for now, we might allow area grouping on another attribute in the future
|
||||
$this->AddGrouping('areas', array('attribute' => 'finalclass'));
|
||||
$this->AddGrouping('areas', ['attribute' => 'finalclass']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -488,7 +489,8 @@ class ManageBrick extends PortalBrick
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function SetDefaultListLength($iDefaultListLength) {
|
||||
public function SetDefaultListLength($iDefaultListLength)
|
||||
{
|
||||
$this->iDefaultListLength = $iDefaultListLength;
|
||||
return $this;
|
||||
}
|
||||
@@ -508,8 +510,7 @@ class ManageBrick extends PortalBrick
|
||||
$this->aGrouping[$sName] = $aGrouping;
|
||||
|
||||
// Sorting
|
||||
if (!$this->IsGroupingByDistinctValues($sName))
|
||||
{
|
||||
if (!$this->IsGroupingByDistinctValues($sName)) {
|
||||
usort($this->aGrouping[$sName]['groups'], function ($a, $b) {
|
||||
if ($a['rank'] === $b['rank']) {
|
||||
return 0;
|
||||
@@ -531,8 +532,7 @@ class ManageBrick extends PortalBrick
|
||||
*/
|
||||
public function RemoveGrouping($sName)
|
||||
{
|
||||
if (isset($this->aGrouping[$sName]))
|
||||
{
|
||||
if (isset($this->aGrouping[$sName])) {
|
||||
unset($this->aGrouping[$sName]);
|
||||
}
|
||||
|
||||
@@ -548,8 +548,7 @@ class ManageBrick extends PortalBrick
|
||||
*/
|
||||
public function AddField($sAttCode)
|
||||
{
|
||||
if (!in_array($sAttCode, $this->aFields))
|
||||
{
|
||||
if (!in_array($sAttCode, $this->aFields)) {
|
||||
$this->aFields[] = $sAttCode;
|
||||
}
|
||||
|
||||
@@ -565,8 +564,7 @@ class ManageBrick extends PortalBrick
|
||||
*/
|
||||
public function RemoveField($sAttCode)
|
||||
{
|
||||
if (isset($this->aFields[$sAttCode]))
|
||||
{
|
||||
if (isset($this->aFields[$sAttCode])) {
|
||||
unset($this->aFields[$sAttCode]);
|
||||
}
|
||||
|
||||
@@ -575,8 +573,7 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
public function AddExportField($sAttCode)
|
||||
{
|
||||
if (!in_array($sAttCode, $this->aExportFields))
|
||||
{
|
||||
if (!in_array($sAttCode, $this->aExportFields)) {
|
||||
$this->aExportFields[] = $sAttCode;
|
||||
}
|
||||
|
||||
@@ -585,8 +582,7 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
public function RemoveExportField($sAttCode)
|
||||
{
|
||||
if (isset($this->aExportFields[$sAttCode]))
|
||||
{
|
||||
if (isset($this->aExportFields[$sAttCode])) {
|
||||
unset($this->aExportFields[$sAttCode]);
|
||||
}
|
||||
|
||||
@@ -642,10 +638,11 @@ class ManageBrick extends PortalBrick
|
||||
*/
|
||||
public function AddAvailableDisplayMode($sModeId)
|
||||
{
|
||||
if (!in_array($sModeId, static::$aDisplayModes))
|
||||
{
|
||||
throw new Exception('ManageBrick: Display mode "'.$sModeId.'" must be one of the allowed display modes ('.implode(', ',
|
||||
static::$aDisplayModes).')');
|
||||
if (!in_array($sModeId, static::$aDisplayModes)) {
|
||||
throw new Exception('ManageBrick: Display mode "'.$sModeId.'" must be one of the allowed display modes ('.implode(
|
||||
', ',
|
||||
static::$aDisplayModes
|
||||
).')');
|
||||
}
|
||||
|
||||
$this->aAvailableDisplayModes[] = $sModeId;
|
||||
@@ -662,8 +659,7 @@ class ManageBrick extends PortalBrick
|
||||
*/
|
||||
public function RemoveAvailableDisplayMode($sModeId)
|
||||
{
|
||||
if (isset($this->aAvailableDisplayModes[$sModeId]))
|
||||
{
|
||||
if (isset($this->aAvailableDisplayModes[$sModeId])) {
|
||||
unset($this->aAvailableDisplayModes[$sModeId]);
|
||||
}
|
||||
|
||||
@@ -736,16 +732,17 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
// Checking specific elements
|
||||
/** @var \Combodo\iTop\DesignElement $oBrickSubNode */
|
||||
foreach ($oMDElement->GetNodes('./*') as $oBrickSubNode)
|
||||
{
|
||||
switch ($oBrickSubNode->nodeName)
|
||||
{
|
||||
foreach ($oMDElement->GetNodes('./*') as $oBrickSubNode) {
|
||||
switch ($oBrickSubNode->nodeName) {
|
||||
case 'class':
|
||||
$sClass = $oBrickSubNode->GetText();
|
||||
if ($sClass === '')
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick: class tag is empty. Must contain Classname', null,
|
||||
null, $oBrickSubNode);
|
||||
if ($sClass === '') {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick: class tag is empty. Must contain Classname',
|
||||
null,
|
||||
null,
|
||||
$oBrickSubNode
|
||||
);
|
||||
}
|
||||
|
||||
$this->SetOql('SELECT '.$sClass);
|
||||
@@ -753,10 +750,13 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
case 'oql':
|
||||
$sOql = $oBrickSubNode->GetText();
|
||||
if ($sOql === '')
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick: oql tag is empty. Must contain OQL statement', null,
|
||||
null, $oBrickSubNode);
|
||||
if ($sOql === '') {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick: oql tag is empty. Must contain OQL statement',
|
||||
null,
|
||||
null,
|
||||
$oBrickSubNode
|
||||
);
|
||||
}
|
||||
|
||||
$this->SetOql($sOql);
|
||||
@@ -764,10 +764,13 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
case 'opening_mode':
|
||||
$sOpeningMode = $oBrickSubNode->GetText(static::DEFAULT_OPENING_MODE);
|
||||
if (!in_array($sOpeningMode, array(static::ENUM_ACTION_VIEW, static::ENUM_ACTION_EDIT)))
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick: opening_mode tag value must be edit|view ("'.$sOpeningMode.'" given)',
|
||||
null, null, $oBrickSubNode);
|
||||
if (!in_array($sOpeningMode, [static::ENUM_ACTION_VIEW, static::ENUM_ACTION_EDIT])) {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick: opening_mode tag value must be edit|view ("'.$sOpeningMode.'" given)',
|
||||
null,
|
||||
null,
|
||||
$oBrickSubNode
|
||||
);
|
||||
}
|
||||
|
||||
$this->SetOpeningMode($sOpeningMode);
|
||||
@@ -775,26 +778,31 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
case 'display_modes':
|
||||
/** @var \Combodo\iTop\DesignElement $oDisplayNode */
|
||||
foreach ($oBrickSubNode->GetNodes('./*') as $oDisplayNode)
|
||||
{
|
||||
switch ($oDisplayNode->nodeName)
|
||||
{
|
||||
case 'availables';
|
||||
foreach ($oBrickSubNode->GetNodes('./*') as $oDisplayNode) {
|
||||
switch ($oDisplayNode->nodeName) {
|
||||
case 'availables':
|
||||
/** @var \Combodo\iTop\DesignElement $oModeNode */
|
||||
foreach ($oDisplayNode->GetNodes('*') as $oModeNode)
|
||||
{
|
||||
if (!$oModeNode->hasAttribute('id'))
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick: Display mode must have a unique ID attribute',
|
||||
0, null, $oModeNode);
|
||||
foreach ($oDisplayNode->GetNodes('*') as $oModeNode) {
|
||||
if (!$oModeNode->hasAttribute('id')) {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick: Display mode must have a unique ID attribute',
|
||||
0,
|
||||
null,
|
||||
$oModeNode
|
||||
);
|
||||
}
|
||||
|
||||
$sModeId = $oModeNode->getAttribute('id');
|
||||
if (!in_array($sModeId, static::$aDisplayModes))
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick: Display mode has an invalid value. Expected '.implode('/',
|
||||
static::$aDisplayModes.', "'.$sModeId.'" given.'),
|
||||
null, null, $oModeNode);
|
||||
if (!in_array($sModeId, static::$aDisplayModes)) {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick: Display mode has an invalid value. Expected '.implode(
|
||||
'/',
|
||||
static::$aDisplayModes.', "'.$sModeId.'" given.'
|
||||
),
|
||||
null,
|
||||
null,
|
||||
$oModeNode
|
||||
);
|
||||
}
|
||||
|
||||
$this->AddAvailableDisplayMode($sModeId);
|
||||
@@ -805,9 +813,9 @@ class ManageBrick extends PortalBrick
|
||||
$this->SetDefaultDisplayMode($oDisplayNode->GetText(static::DEFAULT_DISPLAY_MODE));
|
||||
break;
|
||||
|
||||
case 'tile';
|
||||
case 'tile':
|
||||
$this->SetTileMode($oDisplayNode->GetText(static::DEFAULT_TILE_MODE));
|
||||
if($this->sDecorationClassHome === static::DEFAULT_DECORATION_CLASS_HOME){
|
||||
if ($this->sDecorationClassHome === static::DEFAULT_DECORATION_CLASS_HOME) {
|
||||
$this->sDecorationClassHome = static::$aDefaultTileData[$this->GetTileMode()]['decorationCssClass'];
|
||||
$this->SetDecorationClassNavigationMenu(static::$aDefaultTileData[$this->GetTileMode()]['decorationCssClass']);
|
||||
$this->SetDecorationClassHome(static::$aDefaultTileData[$this->GetTileMode()]['decorationCssClass']);
|
||||
@@ -820,12 +828,14 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
case 'fields':
|
||||
/** @var \Combodo\iTop\DesignElement $oFieldNode */
|
||||
foreach ($oBrickSubNode->GetNodes('./field') as $oFieldNode)
|
||||
{
|
||||
if (!$oFieldNode->hasAttribute('id'))
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick : Field must have a unique ID attribute', 0,
|
||||
null, $oFieldNode);
|
||||
foreach ($oBrickSubNode->GetNodes('./field') as $oFieldNode) {
|
||||
if (!$oFieldNode->hasAttribute('id')) {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick : Field must have a unique ID attribute',
|
||||
0,
|
||||
null,
|
||||
$oFieldNode
|
||||
);
|
||||
}
|
||||
$this->AddField($oFieldNode->getAttribute('id'));
|
||||
}
|
||||
@@ -833,19 +843,18 @@ class ManageBrick extends PortalBrick
|
||||
|
||||
case 'export':
|
||||
/** @var \Combodo\iTop\DesignElement $oExportNode */
|
||||
foreach ($oBrickSubNode->GetNodes('./*') as $oExportNode)
|
||||
{
|
||||
switch ($oExportNode->nodeName)
|
||||
{
|
||||
foreach ($oBrickSubNode->GetNodes('./*') as $oExportNode) {
|
||||
switch ($oExportNode->nodeName) {
|
||||
case 'fields':
|
||||
/** @var \Combodo\iTop\DesignElement $oFieldNode */
|
||||
foreach ($oExportNode->GetNodes('./field') as $oFieldNode)
|
||||
{
|
||||
if (!$oFieldNode->hasAttribute('id'))
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick : Field must have a unique ID attribute',
|
||||
foreach ($oExportNode->GetNodes('./field') as $oFieldNode) {
|
||||
if (!$oFieldNode->hasAttribute('id')) {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick : Field must have a unique ID attribute',
|
||||
0,
|
||||
null, $oFieldNode);
|
||||
null,
|
||||
$oFieldNode
|
||||
);
|
||||
}
|
||||
$this->AddExportField($oFieldNode->getAttribute('id'));
|
||||
}
|
||||
@@ -860,12 +869,12 @@ class ManageBrick extends PortalBrick
|
||||
break;
|
||||
case 'default_list_length':
|
||||
$iNodeDefaultListLength = (int)$oBrickSubNode->GetText(static::DEFAULT_LIST_LENGTH);
|
||||
if(!in_array($iNodeDefaultListLength, array(10, 20, 50, -1),true))
|
||||
{
|
||||
if (!in_array($iNodeDefaultListLength, [10, 20, 50, -1], true)) {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick : Default list length must be contained in list length options. Expected -1/10/20/50, '.$iNodeDefaultListLength.' given.',
|
||||
null,
|
||||
null, $oBrickSubNode
|
||||
null,
|
||||
$oBrickSubNode
|
||||
);
|
||||
}
|
||||
$this->SetDefaultListLength($iNodeDefaultListLength);
|
||||
@@ -873,25 +882,21 @@ class ManageBrick extends PortalBrick
|
||||
case 'grouping':
|
||||
// Tabs grouping
|
||||
/** @var \Combodo\iTop\DesignElement $oGroupingNode */
|
||||
foreach ($oBrickSubNode->GetNodes('./tabs/*') as $oGroupingNode)
|
||||
{
|
||||
switch ($oGroupingNode->nodeName)
|
||||
{
|
||||
case 'show_tab_counts';
|
||||
foreach ($oBrickSubNode->GetNodes('./tabs/*') as $oGroupingNode) {
|
||||
switch ($oGroupingNode->nodeName) {
|
||||
case 'show_tab_counts':
|
||||
$bShowTabCounts = ($oGroupingNode->GetText(static::DEFAULT_SHOW_TAB_COUNTS) === 'true') ? true : false;
|
||||
$this->SetShowTabCounts($bShowTabCounts);
|
||||
break;
|
||||
case 'attribute':
|
||||
$sAttribute = $oGroupingNode->GetText();
|
||||
if ($sAttribute !== '')
|
||||
{
|
||||
$this->AddGrouping('tabs', array('attribute' => $sAttribute));
|
||||
if ($sAttribute !== '') {
|
||||
$this->AddGrouping('tabs', ['attribute' => $sAttribute]);
|
||||
}
|
||||
break;
|
||||
case 'limit':
|
||||
$iLimit = $oGroupingNode->GetText();
|
||||
if (is_numeric($iLimit))
|
||||
{
|
||||
if (is_numeric($iLimit)) {
|
||||
$this->iGroupLimit = $iLimit;
|
||||
}
|
||||
break;
|
||||
@@ -899,24 +904,24 @@ class ManageBrick extends PortalBrick
|
||||
$this->bGroupShowOthers = ($oGroupingNode->GetText() === 'true') ? true : false;
|
||||
break;
|
||||
case 'groups':
|
||||
$aGroups = array();
|
||||
$aGroups = [];
|
||||
/** @var \Combodo\iTop\DesignElement $oGroupNode */
|
||||
foreach ($oGroupingNode->GetNodes('./group') as $oGroupNode)
|
||||
{
|
||||
if (!$oGroupNode->hasAttribute('id'))
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick : Group must have a unique ID attribute',
|
||||
0, null, $oGroupNode);
|
||||
foreach ($oGroupingNode->GetNodes('./group') as $oGroupNode) {
|
||||
if (!$oGroupNode->hasAttribute('id')) {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick : Group must have a unique ID attribute',
|
||||
0,
|
||||
null,
|
||||
$oGroupNode
|
||||
);
|
||||
}
|
||||
$sGroupId = $oGroupNode->getAttribute('id');
|
||||
|
||||
$aGroup = array();
|
||||
$aGroup = [];
|
||||
$aGroup['id'] = $sGroupId; // We don't put the group id as the $aGroups key because the array will be sorted later in AddGrouping, which replace array keys by integer ordered keys
|
||||
/** @var \Combodo\iTop\DesignElement $oGroupProperty */
|
||||
foreach ($oGroupNode->GetNodes('*') as $oGroupProperty)
|
||||
{
|
||||
switch ($oGroupProperty->nodeName)
|
||||
{
|
||||
foreach ($oGroupNode->GetNodes('*') as $oGroupProperty) {
|
||||
switch ($oGroupProperty->nodeName) {
|
||||
case 'rank':
|
||||
$aGroup[$oGroupProperty->nodeName] = (int)$oGroupProperty->GetText(0);
|
||||
break;
|
||||
@@ -929,19 +934,25 @@ class ManageBrick extends PortalBrick
|
||||
}
|
||||
|
||||
// Checking constitancy
|
||||
if (!isset($aGroup['title']) || $aGroup['title'] === '')
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick : Group must have a title tag and it must not be empty',
|
||||
0, null, $oGroupNode);
|
||||
if (!isset($aGroup['title']) || $aGroup['title'] === '') {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick : Group must have a title tag and it must not be empty',
|
||||
0,
|
||||
null,
|
||||
$oGroupNode
|
||||
);
|
||||
}
|
||||
if (!isset($aGroup['condition']) || $aGroup['condition'] === '')
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick : Group must have a condition tag and it must not be empty',
|
||||
0, null, $oGroupNode);
|
||||
if (!isset($aGroup['condition']) || $aGroup['condition'] === '') {
|
||||
throw new DOMFormatException(
|
||||
'ManageBrick : Group must have a condition tag and it must not be empty',
|
||||
0,
|
||||
null,
|
||||
$oGroupNode
|
||||
);
|
||||
}
|
||||
$aGroups[] = $aGroup;
|
||||
}
|
||||
$this->AddGrouping('tabs', array('groups' => $aGroups));
|
||||
$this->AddGrouping('tabs', ['groups' => $aGroups]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -963,62 +974,58 @@ class ManageBrick extends PortalBrick
|
||||
}
|
||||
|
||||
// Checking if has an oql
|
||||
if ($this->GetOql() === '')
|
||||
{
|
||||
if ($this->GetOql() === '') {
|
||||
throw new DOMFormatException('ManageBrick: must have a valid <class|oql> tag', null, null, $oMDElement);
|
||||
}
|
||||
|
||||
// Checking that the brick has at least a display mode
|
||||
if (count($this->GetAvailablesDisplayModes()) === 0)
|
||||
{
|
||||
if (count($this->GetAvailablesDisplayModes()) === 0) {
|
||||
$this->AddAvailableDisplayMode(static::DEFAULT_DISPLAY_MODE);
|
||||
}
|
||||
// Checking that default display mode in among the availables
|
||||
if (!in_array($this->sDefaultDisplayMode, $this->aAvailableDisplayModes))
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick: Default display mode "'.$this->sDefaultDisplayMode.'" must be one of the available display modes ('.implode(', ',
|
||||
$this->aAvailableDisplayModes).')', null, null, $oMDElement);
|
||||
if (!in_array($this->sDefaultDisplayMode, $this->aAvailableDisplayModes)) {
|
||||
throw new DOMFormatException('ManageBrick: Default display mode "'.$this->sDefaultDisplayMode.'" must be one of the available display modes ('.implode(
|
||||
', ',
|
||||
$this->aAvailableDisplayModes
|
||||
).')', null, null, $oMDElement);
|
||||
}
|
||||
// Checking that tile mode in among the availables
|
||||
if (!in_array($this->sTileMode, static::$aTileModes))
|
||||
{
|
||||
throw new DOMFormatException('ManageBrick: Tile mode "'.$this->sTileMode.'" must be one of the allowed tile modes ('.implode(', ',
|
||||
static::$aTileModes).')', null, null, $oMDElement);
|
||||
if (!in_array($this->sTileMode, static::$aTileModes)) {
|
||||
throw new DOMFormatException('ManageBrick: Tile mode "'.$this->sTileMode.'" must be one of the allowed tile modes ('.implode(
|
||||
', ',
|
||||
static::$aTileModes
|
||||
).')', null, null, $oMDElement);
|
||||
}
|
||||
|
||||
// Checking if specified fields, if not we put those from the details zlist
|
||||
if (empty($this->aFields))
|
||||
{
|
||||
if (empty($this->aFields)) {
|
||||
$sClass = DBSearch::FromOQL($this->GetOql());
|
||||
$aFields = MetaModel::FlattenZList(MetaModel::GetZListItems($sClass->GetClass(),
|
||||
static::DEFAULT_ZLIST_FIELDS));
|
||||
$aFields = MetaModel::FlattenZList(MetaModel::GetZListItems(
|
||||
$sClass->GetClass(),
|
||||
static::DEFAULT_ZLIST_FIELDS
|
||||
));
|
||||
$this->SetFields($aFields);
|
||||
}
|
||||
|
||||
// Default Export Fields
|
||||
if ($bUseListFieldsForExport)
|
||||
{
|
||||
foreach ($this->GetFields() as $sAttCode)
|
||||
{
|
||||
if ($bUseListFieldsForExport) {
|
||||
foreach ($this->GetFields() as $sAttCode) {
|
||||
$this->AddExportField($sAttCode);
|
||||
}
|
||||
}
|
||||
|
||||
// Checking the navigation icon
|
||||
$sDecorationClassNavigationMenu = $this->GetDecorationClassNavigationMenu();
|
||||
if (empty($sDecorationClassNavigationMenu) && isset(static::$aDefaultTileData[$this->sTileMode]))
|
||||
{
|
||||
if (empty($sDecorationClassNavigationMenu) && isset(static::$aDefaultTileData[$this->sTileMode])) {
|
||||
/** @var string $sDecorationClassNavigationMenu */
|
||||
$sDecorationClassNavigationMenu = static::$aDefaultTileData[$this->sTileMode]['decorationCssClass'];
|
||||
if (!empty($sDecorationClassNavigationMenu))
|
||||
{
|
||||
if (!empty($sDecorationClassNavigationMenu)) {
|
||||
$this->SetDecorationClassNavigationMenu($sDecorationClassNavigationMenu);
|
||||
}
|
||||
}
|
||||
|
||||
$sTitle = $this->GetTitleHome();
|
||||
if (empty($sTitle))
|
||||
{
|
||||
if (empty($sTitle)) {
|
||||
$sOql = $this->GetOql();
|
||||
$oSearch = DBSearch::FromOQL($sOql);
|
||||
$sClassName = MetaModel::GetName($oSearch->GetClass());
|
||||
|
||||
@@ -38,37 +38,37 @@ use ModuleDesign;
|
||||
abstract class PortalBrick extends AbstractBrick
|
||||
{
|
||||
/** @var string ENUM_OPENING_TARGET_MODAL */
|
||||
const ENUM_OPENING_TARGET_MODAL = 'modal';
|
||||
public const ENUM_OPENING_TARGET_MODAL = 'modal';
|
||||
/** @var string ENUM_OPENING_TARGET_SELF */
|
||||
const ENUM_OPENING_TARGET_SELF = 'self';
|
||||
public const ENUM_OPENING_TARGET_SELF = 'self';
|
||||
/** @var string ENUM_OPENING_TARGET_NEW */
|
||||
const ENUM_OPENING_TARGET_NEW = 'new';
|
||||
public const ENUM_OPENING_TARGET_NEW = 'new';
|
||||
|
||||
/** @var int DEFAULT_WIDTH */
|
||||
const DEFAULT_WIDTH = 400;
|
||||
public const DEFAULT_WIDTH = 400;
|
||||
/** @var int DEFAULT_HEIGHT */
|
||||
const DEFAULT_HEIGHT = null;
|
||||
public const DEFAULT_HEIGHT = null;
|
||||
/** @var bool DEFAULT_MODAL */
|
||||
const DEFAULT_MODAL = false;
|
||||
public const DEFAULT_MODAL = false;
|
||||
/** @var bool DEFAULT_VISIBLE_HOME */
|
||||
const DEFAULT_VISIBLE_HOME = true;
|
||||
public const DEFAULT_VISIBLE_HOME = true;
|
||||
/** @var bool DEFAULT_VISIBLE_NAVIGATION_MENU */
|
||||
const DEFAULT_VISIBLE_NAVIGATION_MENU = true;
|
||||
public const DEFAULT_VISIBLE_NAVIGATION_MENU = true;
|
||||
/** @var string DEFAULT_DECORATION_CLASS_HOME */
|
||||
const DEFAULT_DECORATION_CLASS_HOME = '';
|
||||
public const DEFAULT_DECORATION_CLASS_HOME = '';
|
||||
/** @var string DEFAULT_DECORATION_CLASS_NAVIGATION_MENU */
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = '';
|
||||
public const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = '';
|
||||
/** @var string DEFAULT_TILE_TEMPLATE_PATH */
|
||||
const DEFAULT_TILE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/tile.html.twig';
|
||||
public const DEFAULT_TILE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/tile.html.twig';
|
||||
/** @var string|null DEFAULT_TILE_CONTROLLER_ACTION */
|
||||
const DEFAULT_TILE_CONTROLLER_ACTION = null;
|
||||
public const DEFAULT_TILE_CONTROLLER_ACTION = null;
|
||||
/** @var string DEFAULT_OPENING_TARGET */
|
||||
const DEFAULT_OPENING_TARGET = self::ENUM_OPENING_TARGET_MODAL;
|
||||
public const DEFAULT_OPENING_TARGET = self::ENUM_OPENING_TARGET_MODAL;
|
||||
|
||||
/** @var string|null $sRouteName */
|
||||
static $sRouteName = null;
|
||||
public static $sRouteName = null;
|
||||
/** @var array $aOpeningTargets */
|
||||
static $aOpeningTargets = array(self::ENUM_OPENING_TARGET_MODAL, self::ENUM_OPENING_TARGET_SELF, self::ENUM_OPENING_TARGET_NEW);
|
||||
public static $aOpeningTargets = [self::ENUM_OPENING_TARGET_MODAL, self::ENUM_OPENING_TARGET_SELF, self::ENUM_OPENING_TARGET_NEW];
|
||||
|
||||
/** @var int $iWidth */
|
||||
protected $iWidth;
|
||||
@@ -101,14 +101,13 @@ abstract class PortalBrick extends AbstractBrick
|
||||
/** @var string $sTitleNavigationMenu */
|
||||
protected $sTitleNavigationMenu;
|
||||
|
||||
|
||||
|
||||
/** @inheritdoc */
|
||||
public static function RegisterTemplates(TemplatesRegister $oTemplatesRegister): void
|
||||
{
|
||||
parent::RegisterTemplates($oTemplatesRegister);
|
||||
$oTemplatesRegister->RegisterTemplates(self::class,
|
||||
TemplateDefinitionDto::Create('tile', static::TEMPLATES_BASE_PATH . 'tile.html.twig'),
|
||||
$oTemplatesRegister->RegisterTemplates(
|
||||
self::class,
|
||||
TemplateDefinitionDto::Create('tile', static::TEMPLATES_BASE_PATH.'tile.html.twig'),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -466,10 +465,8 @@ abstract class PortalBrick extends AbstractBrick
|
||||
|
||||
// Checking specific elements
|
||||
/** @var \Combodo\iTop\DesignElement $oBrickSubNode */
|
||||
foreach ($oMDElement->GetNodes('./*') as $oBrickSubNode)
|
||||
{
|
||||
switch ($oBrickSubNode->nodeName)
|
||||
{
|
||||
foreach ($oMDElement->GetNodes('./*') as $oBrickSubNode) {
|
||||
switch ($oBrickSubNode->nodeName) {
|
||||
case 'width':
|
||||
$sWidth = $oBrickSubNode->GetText(static::DEFAULT_WIDTH);
|
||||
$this->bIsWidthPixel = str_contains($sWidth, 'px');
|
||||
@@ -488,23 +485,20 @@ abstract class PortalBrick extends AbstractBrick
|
||||
case 'visible':
|
||||
// Default value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('default');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = ($oOptionalNode->GetText() === 'false') ? false : true;
|
||||
$this->SetVisibleHome($optionalNodeValue);
|
||||
$this->SetVisibleNavigationMenu($optionalNodeValue);
|
||||
}
|
||||
// Home value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('home');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = ($oOptionalNode->GetText() === 'false') ? false : true;
|
||||
$this->SetVisibleHome($optionalNodeValue);
|
||||
}
|
||||
// Navigation menu value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('navigation_menu');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = ($oOptionalNode->GetText() === 'false') ? false : true;
|
||||
$this->SetVisibleNavigationMenu($optionalNodeValue);
|
||||
}
|
||||
@@ -512,8 +506,7 @@ abstract class PortalBrick extends AbstractBrick
|
||||
|
||||
case 'templates':
|
||||
$oTemplateNodeList = $oBrickSubNode->GetNodes('template[@id='.ModuleDesign::XPathQuote('tile').']');
|
||||
if ($oTemplateNodeList->length > 0)
|
||||
{
|
||||
if ($oTemplateNodeList->length > 0) {
|
||||
/** @var \Combodo\iTop\DesignElement $oTemplateNode */
|
||||
$oTemplateNode = $oTemplateNodeList->item(0);
|
||||
$this->SetTemplatePath('tile', $oTemplateNode->GetText(static::DEFAULT_TILE_TEMPLATE_PATH));
|
||||
@@ -526,23 +519,20 @@ abstract class PortalBrick extends AbstractBrick
|
||||
$this->SetRankNavigationMenu($this->fRank);
|
||||
// Default value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('default');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_RANK);
|
||||
$this->SetRankHome($optionalNodeValue);
|
||||
$this->SetRankNavigationMenu($optionalNodeValue);
|
||||
}
|
||||
// Home value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('home');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_RANK);
|
||||
$this->SetRankHome($optionalNodeValue);
|
||||
}
|
||||
// Navigation menu value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('navigation_menu');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_RANK);
|
||||
$this->SetRankNavigationMenu($optionalNodeValue);
|
||||
}
|
||||
@@ -554,23 +544,20 @@ abstract class PortalBrick extends AbstractBrick
|
||||
$this->SetTitleNavigationMenu($this->sTitle);
|
||||
// Default value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('default');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_TITLE);
|
||||
$this->SetTitleHome($optionalNodeValue);
|
||||
$this->SetTitleNavigationMenu($optionalNodeValue);
|
||||
}
|
||||
// Home value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('home');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_TITLE);
|
||||
$this->SetTitleHome($optionalNodeValue);
|
||||
}
|
||||
// Navigation menu value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('navigation_menu');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_TITLE);
|
||||
$this->SetTitleNavigationMenu($optionalNodeValue);
|
||||
$this->SetTitle($optionalNodeValue);
|
||||
@@ -583,23 +570,20 @@ abstract class PortalBrick extends AbstractBrick
|
||||
$this->SetDecorationClassNavigationMenu(static::DEFAULT_DECORATION_CLASS_NAVIGATION_MENU);
|
||||
// Default value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('default');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_DECORATION_CLASS_NAVIGATION_MENU);
|
||||
$this->SetDecorationClassHome($optionalNodeValue);
|
||||
$this->SetDecorationClassNavigationMenu($optionalNodeValue);
|
||||
}
|
||||
// Home value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('home');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_DECORATION_CLASS_HOME);
|
||||
$this->SetDecorationClassHome($optionalNodeValue);
|
||||
}
|
||||
// Navigation menu value
|
||||
$oOptionalNode = $oBrickSubNode->GetOptionalElement('navigation_menu');
|
||||
if ($oOptionalNode !== null)
|
||||
{
|
||||
if ($oOptionalNode !== null) {
|
||||
$optionalNodeValue = $oOptionalNode->GetText(static::DEFAULT_DECORATION_CLASS_NAVIGATION_MENU);
|
||||
$this->SetDecorationClassNavigationMenu($optionalNodeValue);
|
||||
}
|
||||
@@ -611,11 +595,16 @@ abstract class PortalBrick extends AbstractBrick
|
||||
|
||||
case 'opening_target':
|
||||
$sOpeningTarget = $oBrickSubNode->GetText(static::DEFAULT_OPENING_TARGET);
|
||||
if (!in_array($sOpeningTarget,
|
||||
array(static::ENUM_OPENING_TARGET_MODAL, static::ENUM_OPENING_TARGET_NEW, static::ENUM_OPENING_TARGET_SELF)))
|
||||
{
|
||||
throw new DOMFormatException('PortalBrick : opening_target tag value must be modal|new|self ("'.$sOpeningTarget.'" given)',
|
||||
null, null, $oBrickSubNode);
|
||||
if (!in_array(
|
||||
$sOpeningTarget,
|
||||
[static::ENUM_OPENING_TARGET_MODAL, static::ENUM_OPENING_TARGET_NEW, static::ENUM_OPENING_TARGET_SELF]
|
||||
)) {
|
||||
throw new DOMFormatException(
|
||||
'PortalBrick : opening_target tag value must be modal|new|self ("'.$sOpeningTarget.'" given)',
|
||||
null,
|
||||
null,
|
||||
$oBrickSubNode
|
||||
);
|
||||
}
|
||||
|
||||
$this->SetOpeningTarget($sOpeningTarget);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
@@ -34,20 +35,20 @@ use DOMFormatException;
|
||||
class UserProfileBrick extends PortalBrick
|
||||
{
|
||||
// Overloaded constants
|
||||
const DEFAULT_WIDTH = 200;
|
||||
const DEFAULT_VISIBLE_NAVIGATION_MENU = false;
|
||||
const DEFAULT_VISIBLE_HOME = false;
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'glyphicon glyphicon-user';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'glyphicon glyphicon-user';
|
||||
public const DEFAULT_WIDTH = 200;
|
||||
public const DEFAULT_VISIBLE_NAVIGATION_MENU = false;
|
||||
public const DEFAULT_VISIBLE_HOME = false;
|
||||
public const DEFAULT_DECORATION_CLASS_HOME = 'glyphicon glyphicon-user';
|
||||
public const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'glyphicon glyphicon-user';
|
||||
/** @var bool DEFAULT_SHOW_PICTURE_FORM */
|
||||
const DEFAULT_SHOW_PICTURE_FORM = true;
|
||||
public const DEFAULT_SHOW_PICTURE_FORM = true;
|
||||
/** @var bool DEFAULT_SHOW_PREFERENCES_FORM */
|
||||
const DEFAULT_SHOW_PREFERENCES_FORM = true;
|
||||
public const DEFAULT_SHOW_PREFERENCES_FORM = true;
|
||||
/** @var bool DEFAULT_SHOW_PASSWORD_FORM */
|
||||
const DEFAULT_SHOW_PASSWORD_FORM = true;
|
||||
public const DEFAULT_SHOW_PASSWORD_FORM = true;
|
||||
|
||||
// Overloaded variables
|
||||
static $sRouteName = 'p_user_profile_brick';
|
||||
public static $sRouteName = 'p_user_profile_brick';
|
||||
|
||||
/** @var array $aForm */
|
||||
protected $aForm;
|
||||
@@ -62,8 +63,9 @@ class UserProfileBrick extends PortalBrick
|
||||
public static function RegisterTemplates(TemplatesRegister $oTemplatesRegister): void
|
||||
{
|
||||
parent::RegisterTemplates($oTemplatesRegister);
|
||||
$oTemplatesRegister->RegisterTemplates(self::class,
|
||||
TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH . 'user-profile/layout.html.twig'),
|
||||
$oTemplatesRegister->RegisterTemplates(
|
||||
self::class,
|
||||
TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH.'user-profile/layout.html.twig'),
|
||||
TemplateDefinitionDto::Create('user_info', static::TEMPLATES_BASE_PATH.'user-profile/user_info.html.twig'),
|
||||
TemplateDefinitionDto::Create('user_info_ready_js', static::TEMPLATES_BASE_PATH.'user-profile/user_info.ready.js.twig'),
|
||||
);
|
||||
@@ -76,12 +78,12 @@ class UserProfileBrick extends PortalBrick
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->aForm = array(
|
||||
$this->aForm = [
|
||||
'id' => 'default-user-profile',
|
||||
'type' => 'zlist',
|
||||
'fields' => 'details',
|
||||
'layout' => null,
|
||||
);
|
||||
];
|
||||
$this->bShowPictureForm = static::DEFAULT_SHOW_PICTURE_FORM;
|
||||
$this->bShowPreferencesForm = static::DEFAULT_SHOW_PREFERENCES_FORM;
|
||||
$this->bShowPasswordForm = static::DEFAULT_SHOW_PASSWORD_FORM;
|
||||
@@ -192,13 +194,13 @@ class UserProfileBrick extends PortalBrick
|
||||
// Enumerating fields
|
||||
if ($oBrickSubNode->GetOptionalElement('fields') !== null) {
|
||||
$this->aForm['type'] = 'custom_list';
|
||||
$this->aForm['fields'] = array();
|
||||
$this->aForm['fields'] = [];
|
||||
|
||||
/** @var \Combodo\iTop\DesignElement $oFieldNode */
|
||||
foreach ($oBrickSubNode->GetOptionalElement('fields')->GetNodes('field') as $oFieldNode) {
|
||||
$sFieldId = $oFieldNode->getAttribute('id');
|
||||
if ($sFieldId !== '') {
|
||||
$aField = array();
|
||||
$aField = [];
|
||||
// Parsing field options like read_only, hidden and mandatory
|
||||
if ($oFieldNode->GetOptionalElement('read_only')) {
|
||||
$aField['readonly'] = ($oFieldNode->GetOptionalElement('read_only')->GetText('true') === 'true') ? true : false;
|
||||
@@ -224,10 +226,10 @@ class UserProfileBrick extends PortalBrick
|
||||
$sXml = preg_replace('/^.+\n/', '', $sXml);
|
||||
$sXml = preg_replace('/\n.+$/', '', $sXml);
|
||||
|
||||
$this->aForm['layout'] = array(
|
||||
$this->aForm['layout'] = [
|
||||
'type' => (preg_match('/\{\{|\{\#|\{\%/', $sXml) === 1) ? 'twig' : 'xhtml',
|
||||
'content' => $sXml,
|
||||
);
|
||||
];
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -37,15 +37,16 @@ use Symfony\Contracts\Service\Attribute\Required;
|
||||
*/
|
||||
abstract class AbstractController extends SymfonyAbstractController implements TemplatesProviderInterface
|
||||
{
|
||||
const TEMPLATES_BASE_PATH = 'itop-portal-base/portal/templates/';
|
||||
public const TEMPLATES_BASE_PATH = 'itop-portal-base/portal/templates/';
|
||||
|
||||
/** @inheritdoc */
|
||||
public static function RegisterTemplates(TemplatesRegister $oTemplatesRegister): void
|
||||
{
|
||||
$oTemplatesRegister->RegisterTemplates(self::class,
|
||||
TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH . 'layout.html.twig'),
|
||||
$oTemplatesRegister->RegisterTemplates(
|
||||
self::class,
|
||||
TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH.'layout.html.twig'),
|
||||
TemplateDefinitionDto::Create('navigation_menu', static::TEMPLATES_BASE_PATH.'/pages/navigation_menu.html.twig'),
|
||||
TemplateDefinitionDto::Create('modal', static::TEMPLATES_BASE_PATH . 'modal/layout.html.twig'),
|
||||
TemplateDefinitionDto::Create('modal', static::TEMPLATES_BASE_PATH.'modal/layout.html.twig'),
|
||||
TemplateDefinitionDto::Create('loader', static::TEMPLATES_BASE_PATH.'helpers/loader.html.twig'),
|
||||
TemplateDefinitionDto::Create('tagset_clic_handler_js', static::TEMPLATES_BASE_PATH.'helpers/tagset_clic_handler.js.twig'),
|
||||
TemplateDefinitionDto::Create('session_message', static::TEMPLATES_BASE_PATH.'helpers/session_messages/session_message.html.twig'),
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -34,7 +34,6 @@ use Symfony\Component\HttpFoundation\Request;
|
||||
*/
|
||||
class PreferencesController extends SymfonyAbstractController
|
||||
{
|
||||
|
||||
/**
|
||||
* Set a preference for the current user.
|
||||
*
|
||||
@@ -51,10 +50,9 @@ class PreferencesController extends SymfonyAbstractController
|
||||
$sValue = $oRequest->request->get('value');
|
||||
|
||||
// set user preference
|
||||
try{
|
||||
try {
|
||||
appUserPreferences::SetPref($sKey, $sValue);
|
||||
}
|
||||
catch(Exception){
|
||||
} catch (Exception) {
|
||||
$sStatus = 'error';
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
use UserRights;
|
||||
use utils;
|
||||
use Dict;
|
||||
|
||||
/**
|
||||
* Class UserProfileBrickController
|
||||
*
|
||||
@@ -60,7 +61,7 @@ class UserProfileBrickController extends BrickController
|
||||
* @param \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection
|
||||
* @param \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator
|
||||
* @param \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper
|
||||
|
||||
|
||||
*
|
||||
* @since 3.2.0 N°6933
|
||||
*/
|
||||
@@ -70,12 +71,11 @@ class UserProfileBrickController extends BrickController
|
||||
protected BrickCollection $oBrickCollection,
|
||||
protected UrlGenerator $oUrlGenerator,
|
||||
protected SecurityHelper $oSecurityHelper
|
||||
)
|
||||
{
|
||||
) {
|
||||
}
|
||||
|
||||
/** @var string ENUM_FORM_TYPE_PICTURE */
|
||||
const ENUM_FORM_TYPE_PICTURE = 'picture';
|
||||
public const ENUM_FORM_TYPE_PICTURE = 'picture';
|
||||
|
||||
/**
|
||||
* @param \Symfony\Component\HttpFoundation\Request $oRequest
|
||||
@@ -92,26 +92,20 @@ class UserProfileBrickController extends BrickController
|
||||
public function DisplayAction(Request $oRequest, $sBrickId)
|
||||
{
|
||||
// If the brick id was not specified, we get the first one registered that is an instance of UserProfileBrick as default
|
||||
if ($sBrickId === null)
|
||||
{
|
||||
if ($sBrickId === null) {
|
||||
/** @var \Combodo\iTop\Portal\Brick\PortalBrick $oTmpBrick */
|
||||
foreach ($this->oBrickCollection->GetBricks() as $oTmpBrick)
|
||||
{
|
||||
if ($oTmpBrick instanceof UserProfileBrick)
|
||||
{
|
||||
foreach ($this->oBrickCollection->GetBricks() as $oTmpBrick) {
|
||||
if ($oTmpBrick instanceof UserProfileBrick) {
|
||||
$oBrick = $oTmpBrick;
|
||||
}
|
||||
}
|
||||
|
||||
// We make sure a UserProfileBrick was found
|
||||
if (!isset($oBrick) || $oBrick === null)
|
||||
{
|
||||
if (!isset($oBrick) || $oBrick === null) {
|
||||
$oBrick = new UserProfileBrick();
|
||||
//throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, 'UserProfileBrick : Brick could not be loaded as there was no UserProfileBrick loaded in the application.');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
$oBrick = $this->oBrickCollection->GetBrickById($sBrickId);
|
||||
}
|
||||
|
||||
@@ -124,11 +118,14 @@ class UserProfileBrickController extends BrickController
|
||||
$sTab = $this->oRequestManipulatorHelper->ReadParam('sTab', 'user-info', FILTER_UNSAFE_RAW, FILTER_FLAG_EMPTY_STRING_NULL);
|
||||
|
||||
// If this is ajax call, we are just submitting preferences or password forms
|
||||
if ($oRequest->isXmlHttpRequest())
|
||||
{
|
||||
if ($oRequest->isXmlHttpRequest()) {
|
||||
if ($sTab === "user-info") {
|
||||
$aCurrentValues = $this->oRequestManipulatorHelper->ReadParam('current_values', array(), FILTER_UNSAFE_RAW,
|
||||
FILTER_REQUIRE_ARRAY);
|
||||
$aCurrentValues = $this->oRequestManipulatorHelper->ReadParam(
|
||||
'current_values',
|
||||
[],
|
||||
FILTER_UNSAFE_RAW,
|
||||
FILTER_REQUIRE_ARRAY
|
||||
);
|
||||
$sFormType = $aCurrentValues['form_type'];
|
||||
if ($sFormType === PreferencesFormManager::FORM_TYPE) {
|
||||
$aData['form'] = $this->HandlePreferencesForm($oRequest, $sFormMode);
|
||||
@@ -143,8 +140,7 @@ class UserProfileBrickController extends BrickController
|
||||
$oResponse = new JsonResponse($aData);
|
||||
}
|
||||
// Else, we are displaying page for first time
|
||||
else
|
||||
{
|
||||
else {
|
||||
if ($sTab === "user-info") {
|
||||
// Retrieving current contact
|
||||
/** @var \DBObject $oCurContact */
|
||||
@@ -175,7 +171,6 @@ class UserProfileBrickController extends BrickController
|
||||
return $oResponse;
|
||||
}
|
||||
|
||||
|
||||
private function ManageUserProfileBrickExtensibility(string $sTab, array &$aData): void
|
||||
{
|
||||
$aData['sTab'] = $sTab;
|
||||
@@ -193,7 +188,7 @@ class UserProfileBrickController extends BrickController
|
||||
|
||||
// Read the current tab content From iPortalTabSectionExtension
|
||||
$aTabSectionExtensions = ExtensibilityHelper::GetInstance()->GetPortalTabContentExtensions(iUserProfileTabContentExtension::class, $sTab);
|
||||
if (count($aTabSectionExtensions) !== 0 && count($_POST) !== 0){
|
||||
if (count($aTabSectionExtensions) !== 0 && count($_POST) !== 0) {
|
||||
$sTransactionId = utils::ReadPostedParam('transaction_id', null, utils::ENUM_SANITIZATION_FILTER_TRANSACTION_ID);
|
||||
IssueLog::Debug(__FUNCTION__.": transaction [$sTransactionId]");
|
||||
if (utils::IsNullOrEmptyString($sTransactionId) || !utils::IsTransactionValid($sTransactionId, false)) {
|
||||
@@ -214,30 +209,28 @@ class UserProfileBrickController extends BrickController
|
||||
}
|
||||
}
|
||||
|
||||
public function EditPerson(Request $oRequest)
|
||||
{
|
||||
$oCurContact = UserRights::GetContactObject();
|
||||
$sObjectClass = get_class($oCurContact);
|
||||
$sObjectId = $oCurContact->GetKey();
|
||||
|
||||
public function EditPerson(Request $oRequest)
|
||||
{
|
||||
$oCurContact = UserRights::GetContactObject();
|
||||
$sObjectClass = get_class($oCurContact);
|
||||
$sObjectId = $oCurContact->GetKey();
|
||||
// Checking security layers
|
||||
// Warning : This is a dirty quick fix to allow editing its own contact information
|
||||
$bAllowWrite = ($sObjectClass === 'Person' && $sObjectId == UserRights::GetContactId());
|
||||
if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sObjectClass, $sObjectId) && !$bAllowWrite) {
|
||||
IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to modify '.$sObjectClass.'::'.$sObjectId.' object.');
|
||||
throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist'));
|
||||
}
|
||||
|
||||
// Checking security layers
|
||||
// Warning : This is a dirty quick fix to allow editing its own contact information
|
||||
$bAllowWrite = ($sObjectClass === 'Person' && $sObjectId == UserRights::GetContactId());
|
||||
if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sObjectClass, $sObjectId) && !$bAllowWrite) {
|
||||
IssueLog::Warning(__METHOD__ . ' at line ' . __LINE__ . ' : User #' . UserRights::GetUserId() . ' not allowed to modify ' . $sObjectClass . '::' . $sObjectId . ' object.');
|
||||
throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist'));
|
||||
}
|
||||
$aForm = $this->GetBrick()->GetForm();
|
||||
$aForm['submit_endpoint'] = $this->generateUrl('p_user_profile_brick_edit_person');
|
||||
|
||||
$aForm = $this->GetBrick()->GetForm();
|
||||
$aForm['submit_endpoint'] = $this->generateUrl('p_user_profile_brick_edit_person');
|
||||
|
||||
$aData = ['sMode' => 'edit'];
|
||||
$aData['form'] = $this->ObjectFormHandlerHelper->HandleForm($oRequest, $aData['sMode'], $sObjectClass, $sObjectId, $aForm);
|
||||
|
||||
return new JsonResponse($aData);
|
||||
}
|
||||
$aData = ['sMode' => 'edit'];
|
||||
$aData['form'] = $this->ObjectFormHandlerHelper->HandleForm($oRequest, $aData['sMode'], $sObjectClass, $sObjectId, $aForm);
|
||||
|
||||
return new JsonResponse($aData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Symfony\Component\HttpFoundation\Request $oRequest
|
||||
@@ -249,13 +242,12 @@ class UserProfileBrickController extends BrickController
|
||||
*/
|
||||
public function HandlePreferencesForm(Request $oRequest, $sFormMode)
|
||||
{
|
||||
$aFormData = array();
|
||||
$aFormData = [];
|
||||
|
||||
// Handling form
|
||||
$sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', null);
|
||||
// - Create
|
||||
if ($sOperation === null)
|
||||
{
|
||||
if ($sOperation === null) {
|
||||
// - Creating renderer
|
||||
$oFormRenderer = new BsFormRenderer();
|
||||
$oFormRenderer->SetEndpoint($this->oUrlGenerator->generate('p_user_profile_brick'));
|
||||
@@ -264,50 +256,47 @@ class UserProfileBrickController extends BrickController
|
||||
$oFormManager->SetRenderer($oFormRenderer)
|
||||
->Build();
|
||||
// - Checking if we have to make the form read only
|
||||
if ($sFormMode === ObjectFormHandlerHelper::ENUM_MODE_VIEW)
|
||||
{
|
||||
if ($sFormMode === ObjectFormHandlerHelper::ENUM_MODE_VIEW) {
|
||||
$oFormManager->GetForm()->MakeReadOnly();
|
||||
}
|
||||
}
|
||||
// - Submit
|
||||
else
|
||||
{
|
||||
if ($sOperation === 'submit')
|
||||
{
|
||||
else {
|
||||
if ($sOperation === 'submit') {
|
||||
$sFormManagerClass = $this->oRequestManipulatorHelper->ReadParam('formmanager_class', null, FILTER_UNSAFE_RAW);
|
||||
$sFormManagerData = $this->oRequestManipulatorHelper->ReadParam('formmanager_data', null, FILTER_UNSAFE_RAW);
|
||||
if ($sFormManagerClass === null || $sFormManagerData === null)
|
||||
{
|
||||
if ($sFormManagerClass === null || $sFormManagerData === null) {
|
||||
IssueLog::Error(__METHOD__.' at line '.__LINE__.' : Parameters formmanager_class and formmanager_data must be defined.');
|
||||
throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR,
|
||||
'Parameters formmanager_class and formmanager_data must be defined.');
|
||||
throw new HttpException(
|
||||
Response::HTTP_INTERNAL_SERVER_ERROR,
|
||||
'Parameters formmanager_class and formmanager_data must be defined.'
|
||||
);
|
||||
}
|
||||
|
||||
// Rebuilding manager from json
|
||||
/** @var \Combodo\iTop\Form\FormManager $oFormManager */
|
||||
$oFormManager = $sFormManagerClass::FromJSON($sFormManagerData);
|
||||
// Applying modification to object
|
||||
$aFormData['validation'] = $oFormManager->OnSubmit(array(
|
||||
'currentValues' => $this->oRequestManipulatorHelper->ReadParam('current_values', array(), FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY),
|
||||
));
|
||||
$aFormData['validation'] = $oFormManager->OnSubmit([
|
||||
'currentValues' => $this->oRequestManipulatorHelper->ReadParam('current_values', [], FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY),
|
||||
]);
|
||||
// Reloading page only if preferences were changed
|
||||
if (($aFormData['validation']['valid'] === true) && !empty($aFormData['validation']['messages']['success']))
|
||||
{
|
||||
$aFormData['validation']['redirection'] = array(
|
||||
if (($aFormData['validation']['valid'] === true) && !empty($aFormData['validation']['messages']['success'])) {
|
||||
$aFormData['validation']['redirection'] = [
|
||||
'url' => $this->oUrlGenerator->generate('p_user_profile_brick'),
|
||||
'timeout_duration' => 1000, //since there are several ajax request, we use a longer timeout in hope that they will all be finished in time. A promise would have been more reliable, but since this change is made in a minor version, this approach is less error prone.
|
||||
);
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
// Else, submit from another form
|
||||
|
||||
// Preparing field_set data
|
||||
$aFieldSetData = array(
|
||||
$aFieldSetData = [
|
||||
'fields_list' => $oFormManager->GetRenderer()->Render(),
|
||||
'fields_impacts' => $oFormManager->GetForm()->GetFieldsImpacts(),
|
||||
'form_path' => $oFormManager->GetForm()->GetId(),
|
||||
);
|
||||
];
|
||||
|
||||
// Preparing form data
|
||||
$aFormData['id'] = $oFormManager->GetForm()->GetId();
|
||||
@@ -329,14 +318,13 @@ class UserProfileBrickController extends BrickController
|
||||
*/
|
||||
public function HandlePasswordForm(Request $oRequest, $sFormMode)
|
||||
{
|
||||
$aFormData = array();
|
||||
$aFormData = [];
|
||||
|
||||
// Handling form
|
||||
$sOperation = /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */
|
||||
$this->oRequestManipulatorHelper->ReadParam('operation', null);
|
||||
// - Create
|
||||
if ($sOperation === null)
|
||||
{
|
||||
if ($sOperation === null) {
|
||||
// - Creating renderer
|
||||
$oFormRenderer = new BsFormRenderer();
|
||||
$oFormRenderer->SetEndpoint($this->oUrlGenerator->generate('p_user_profile_brick'));
|
||||
@@ -345,41 +333,40 @@ class UserProfileBrickController extends BrickController
|
||||
$oFormManager->SetRenderer($oFormRenderer)
|
||||
->Build();
|
||||
// - Checking if we have to make the form read only
|
||||
if ($sFormMode === ObjectFormHandlerHelper::ENUM_MODE_VIEW)
|
||||
{
|
||||
if ($sFormMode === ObjectFormHandlerHelper::ENUM_MODE_VIEW) {
|
||||
$oFormManager->GetForm()->MakeReadOnly();
|
||||
}
|
||||
}
|
||||
// - Submit
|
||||
else
|
||||
{
|
||||
if ($sOperation === 'submit')
|
||||
{
|
||||
else {
|
||||
if ($sOperation === 'submit') {
|
||||
$sFormManagerClass = $this->oRequestManipulatorHelper->ReadParam('formmanager_class', null, FILTER_UNSAFE_RAW);
|
||||
$sFormManagerData = $this->oRequestManipulatorHelper->ReadParam('formmanager_data', null, FILTER_UNSAFE_RAW);
|
||||
if ($sFormManagerClass === null || $sFormManagerData === null) {
|
||||
IssueLog::Error(__METHOD__.' at line '.__LINE__.' : Parameters formmanager_class and formmanager_data must be defined.');
|
||||
throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR,
|
||||
'Parameters formmanager_class and formmanager_data must be defined.');
|
||||
throw new HttpException(
|
||||
Response::HTTP_INTERNAL_SERVER_ERROR,
|
||||
'Parameters formmanager_class and formmanager_data must be defined.'
|
||||
);
|
||||
}
|
||||
|
||||
// Rebuilding manager from json
|
||||
/** @var \Combodo\iTop\Form\FormManager $oFormManager */
|
||||
$oFormManager = $sFormManagerClass::FromJSON($sFormManagerData);
|
||||
// Applying modification to object
|
||||
$aFormData['validation'] = $oFormManager->OnSubmit(array(
|
||||
'currentValues' => $this->oRequestManipulatorHelper->ReadParam('current_values', array(), FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY),
|
||||
));
|
||||
$aFormData['validation'] = $oFormManager->OnSubmit([
|
||||
'currentValues' => $this->oRequestManipulatorHelper->ReadParam('current_values', [], FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY),
|
||||
]);
|
||||
}
|
||||
}
|
||||
// Else, submit from another form
|
||||
|
||||
// Preparing field_set data
|
||||
$aFieldSetData = array(
|
||||
$aFieldSetData = [
|
||||
'fields_list' => $oFormManager->GetRenderer()->Render(),
|
||||
'fields_impacts' => $oFormManager->GetForm()->GetFieldsImpacts(),
|
||||
'form_path' => $oFormManager->GetForm()->GetId(),
|
||||
);
|
||||
];
|
||||
|
||||
// Preparing form data
|
||||
$aFormData['id'] = $oFormManager->GetForm()->GetId();
|
||||
@@ -400,32 +387,27 @@ class UserProfileBrickController extends BrickController
|
||||
*/
|
||||
public function HandlePictureForm(Request $oRequest)
|
||||
{
|
||||
$aFormData = array();
|
||||
$aFormData = [];
|
||||
$sPictureAttCode = 'picture';
|
||||
|
||||
// Handling form
|
||||
$sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', null);
|
||||
// - No operation specified
|
||||
if ($sOperation === null)
|
||||
{
|
||||
if ($sOperation === null) {
|
||||
IssueLog::Error(__METHOD__.' at line '.__LINE__.' : Operation parameter must be specified.');
|
||||
throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, 'Operation parameter must be specified.');
|
||||
}
|
||||
// - Submit
|
||||
else
|
||||
{
|
||||
if ($sOperation === 'submit')
|
||||
{
|
||||
else {
|
||||
if ($sOperation === 'submit') {
|
||||
$oRequestFiles = $oRequest->files;
|
||||
$oPictureFile = $oRequestFiles->get($sPictureAttCode);
|
||||
if ($oPictureFile === null)
|
||||
{
|
||||
if ($oPictureFile === null) {
|
||||
IssueLog::Error(__METHOD__.' at line '.__LINE__.' : Parameter picture must be defined.');
|
||||
throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, 'Parameter picture must be defined.');
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
try {
|
||||
// Retrieving image as an ORMDocument
|
||||
$oImage = utils::ReadPostedDocument($sPictureAttCode);
|
||||
// Retrieving current contact
|
||||
@@ -442,9 +424,7 @@ class UserProfileBrickController extends BrickController
|
||||
// Forcing allowed writing on the object if necessary.
|
||||
$oCurContact->AllowWrite(true);
|
||||
$oCurContact->DBUpdate();
|
||||
}
|
||||
catch (FileUploadException $e)
|
||||
{
|
||||
} catch (FileUploadException $e) {
|
||||
$aFormData['error'] = $e->GetMessage();
|
||||
}
|
||||
|
||||
@@ -457,10 +437,10 @@ class UserProfileBrickController extends BrickController
|
||||
'cache' => 86400,
|
||||
's' => $oOrmDoc->GetSignature(),
|
||||
]);
|
||||
$aFormData['validation'] = array(
|
||||
$aFormData['validation'] = [
|
||||
'valid' => true,
|
||||
'messages' => array(),
|
||||
);
|
||||
'messages' => [],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -469,30 +449,30 @@ class UserProfileBrickController extends BrickController
|
||||
return $aFormData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $sBrickId
|
||||
* @return \Combodo\iTop\Portal\Brick\PortalBrick|UserProfileBrick
|
||||
* @throws \Combodo\iTop\Portal\Brick\BrickNotFoundException
|
||||
*/
|
||||
public function GetBrick($sBrickId = null)
|
||||
{
|
||||
// If the brick id was not specified, we get the first one registered that is an instance of UserProfileBrick as default
|
||||
if ($sBrickId === null) {
|
||||
/** @var \Combodo\iTop\Portal\Brick\PortalBrick $oTmpBrick */
|
||||
foreach ($this->oBrickCollection->GetBricks() as $oTmpBrick) {
|
||||
if ($oTmpBrick instanceof UserProfileBrick) {
|
||||
$oBrick = $oTmpBrick;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param $sBrickId
|
||||
* @return \Combodo\iTop\Portal\Brick\PortalBrick|UserProfileBrick
|
||||
* @throws \Combodo\iTop\Portal\Brick\BrickNotFoundException
|
||||
*/
|
||||
public function GetBrick($sBrickId = null)
|
||||
{
|
||||
// If the brick id was not specified, we get the first one registered that is an instance of UserProfileBrick as default
|
||||
if ($sBrickId === null) {
|
||||
/** @var \Combodo\iTop\Portal\Brick\PortalBrick $oTmpBrick */
|
||||
foreach ($this->oBrickCollection->GetBricks() as $oTmpBrick) {
|
||||
if ($oTmpBrick instanceof UserProfileBrick) {
|
||||
$oBrick = $oTmpBrick;
|
||||
}
|
||||
}
|
||||
|
||||
// We make sure a UserProfileBrick was found
|
||||
if (!isset($oBrick) || $oBrick === null) {
|
||||
$oBrick = new UserProfileBrick();
|
||||
//throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, 'UserProfileBrick : Brick could not be loaded as there was no UserProfileBrick loaded in the application.');
|
||||
}
|
||||
} else {
|
||||
$oBrick = $this->oBrickCollection->GetBrickById($sBrickId);
|
||||
}
|
||||
return $oBrick;
|
||||
}
|
||||
// We make sure a UserProfileBrick was found
|
||||
if (!isset($oBrick) || $oBrick === null) {
|
||||
$oBrick = new UserProfileBrick();
|
||||
//throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, 'UserProfileBrick : Brick could not be loaded as there was no UserProfileBrick loaded in the application.');
|
||||
}
|
||||
} else {
|
||||
$oBrick = $this->oBrickCollection->GetBrickById($sBrickId);
|
||||
}
|
||||
return $oBrick;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
@@ -44,8 +45,7 @@ class Basic extends AbstractConfiguration
|
||||
*/
|
||||
public function Process(Container $oContainer)
|
||||
{
|
||||
try
|
||||
{
|
||||
try {
|
||||
// Parsing file
|
||||
// - Default values
|
||||
$aPortalConf = $this->GetInitialPortalConf();
|
||||
@@ -55,9 +55,7 @@ class Basic extends AbstractConfiguration
|
||||
$aPortalConf = $this->AppendLogoUri($aPortalConf);
|
||||
// - Rectifying portal favicon url
|
||||
$aPortalConf = $this->AppendFavIconUri($aPortalConf);
|
||||
}
|
||||
catch (Exception $oException)
|
||||
{
|
||||
} catch (Exception $oException) {
|
||||
throw new Exception('Error while parsing portal configuration file : '.$oException->getMessage());
|
||||
}
|
||||
|
||||
@@ -72,8 +70,8 @@ class Basic extends AbstractConfiguration
|
||||
*/
|
||||
private function GetInitialPortalConf()
|
||||
{
|
||||
$aPortalConf = array(
|
||||
'properties' => array(
|
||||
$aPortalConf = [
|
||||
'properties' => [
|
||||
'id' => $_ENV['PORTAL_ID'],
|
||||
'ui_version' => 'v3',
|
||||
'ui_settings' => [
|
||||
@@ -82,29 +80,29 @@ class Basic extends AbstractConfiguration
|
||||
'name' => 'Page:DefaultTitle',
|
||||
'logo' => Branding::GetPortalLogoAbsoluteUrl(),
|
||||
'favicon' => Branding::GetPortalFavIconAbsoluteUrl(),
|
||||
'themes' => array(
|
||||
'themes' => [
|
||||
'bootstrap' => 'itop-portal-base/portal/public/css/bootstrap-theme-combodo.scss',
|
||||
'portal' => 'itop-portal-base/portal/public/css/portal.scss',
|
||||
'main' => 'itop-portal-base/portal/public/css/main.scss',
|
||||
'others' => array(),
|
||||
),
|
||||
'templates' => array(
|
||||
'others' => [],
|
||||
],
|
||||
'templates' => [
|
||||
'layout' => 'itop-portal-base/portal/templates/layout.html.twig',
|
||||
'home' => 'itop-portal-base/portal/templates/home/layout.html.twig',
|
||||
),
|
||||
],
|
||||
'urlmaker_class' => null,
|
||||
'triggers_query' => null,
|
||||
'attachments' => array(
|
||||
'attachments' => [
|
||||
'allow_delete' => true,
|
||||
),
|
||||
'allowed_portals' => array(
|
||||
],
|
||||
'allowed_portals' => [
|
||||
'opening_mode' => null,
|
||||
),
|
||||
),
|
||||
'forms' => array(),
|
||||
'bricks' => array(),
|
||||
],
|
||||
],
|
||||
'forms' => [],
|
||||
'bricks' => [],
|
||||
'bricks_total_width' => 0,
|
||||
);
|
||||
];
|
||||
|
||||
return $aPortalConf;
|
||||
}
|
||||
@@ -118,10 +116,8 @@ class Basic extends AbstractConfiguration
|
||||
private function ParseGlobalProperties(array $aPortalConf)
|
||||
{
|
||||
/** @var \MFElement $oPropertyNode */
|
||||
foreach ($this->GetModuleDesign()->GetNodes('/module_design/properties/*') as $oPropertyNode)
|
||||
{
|
||||
switch ($oPropertyNode->nodeName)
|
||||
{
|
||||
foreach ($this->GetModuleDesign()->GetNodes('/module_design/properties/*') as $oPropertyNode) {
|
||||
switch ($oPropertyNode->nodeName) {
|
||||
case 'ui_version':
|
||||
case 'name':
|
||||
case 'urlmaker_class':
|
||||
@@ -131,7 +127,7 @@ class Basic extends AbstractConfiguration
|
||||
$aPortalConf['properties'][$oPropertyNode->nodeName] = $oPropertyNode->GetText(
|
||||
$aPortalConf['properties'][$oPropertyNode->nodeName]
|
||||
);
|
||||
break;
|
||||
break;
|
||||
case 'ui_settings':
|
||||
foreach ($oPropertyNode->GetNodes('*') as $oSubNode) {
|
||||
$aPortalConf['properties'][$oPropertyNode->nodeName][$oSubNode->nodeName] = $oSubNode->GetText();
|
||||
@@ -163,22 +159,20 @@ class Basic extends AbstractConfiguration
|
||||
private function ParseTemplateAndTheme(array $aPortalConf, DesignElement $oPropertyNode)
|
||||
{
|
||||
/** @var \MFElement $oSubNode */
|
||||
foreach ($oPropertyNode->GetNodes('template|theme') as $oSubNode)
|
||||
{
|
||||
if (!$oSubNode->hasAttribute('id') || $oSubNode->GetText(null) === null)
|
||||
{
|
||||
foreach ($oPropertyNode->GetNodes('template|theme') as $oSubNode) {
|
||||
if (!$oSubNode->hasAttribute('id') || $oSubNode->GetText(null) === null) {
|
||||
throw new DOMFormatException(
|
||||
'Tag '.$oSubNode->nodeName.' must have a "id" attribute as well as a value',
|
||||
null, null, $oSubNode
|
||||
null,
|
||||
null,
|
||||
$oSubNode
|
||||
);
|
||||
}
|
||||
|
||||
$sNodeId = $oSubNode->getAttribute('id');
|
||||
switch ($oSubNode->nodeName)
|
||||
{
|
||||
switch ($oSubNode->nodeName) {
|
||||
case 'theme':
|
||||
switch ($sNodeId)
|
||||
{
|
||||
switch ($sNodeId) {
|
||||
case 'bootstrap':
|
||||
case 'portal':
|
||||
case 'custom':
|
||||
@@ -190,8 +184,7 @@ class Basic extends AbstractConfiguration
|
||||
}
|
||||
break;
|
||||
case 'template':
|
||||
switch ($sNodeId)
|
||||
{
|
||||
switch ($sNodeId) {
|
||||
case 'layout':
|
||||
case 'home':
|
||||
$aPortalConf['properties']['templates'][$sNodeId] = $oSubNode->GetText(null);
|
||||
@@ -199,19 +192,21 @@ class Basic extends AbstractConfiguration
|
||||
default:
|
||||
$aMatches = [];
|
||||
// allowed format is: <class implementing TemplatesProviderInterface>:<template_id>
|
||||
if(preg_match('#([\w\\\d_]+):(\w+)#', $sNodeId, $aMatches)){
|
||||
try{
|
||||
if (preg_match('#([\w\\\d_]+):(\w+)#', $sNodeId, $aMatches)) {
|
||||
try {
|
||||
$oClass = new ReflectionClass($aMatches[1]);
|
||||
if($oClass->implementsInterface(TemplatesProviderInterface::class)){
|
||||
if ($oClass->implementsInterface(TemplatesProviderInterface::class)) {
|
||||
$aPortalConf['properties']['templates'][$aMatches[1]][$aMatches[2]] = $oSubNode->GetText(null);
|
||||
break;
|
||||
}
|
||||
} catch (Exception) {
|
||||
}
|
||||
catch(Exception){}
|
||||
}
|
||||
throw new DOMFormatException(
|
||||
'Template ID "'.$sNodeId.'" is not handled in module design templates property',
|
||||
null, null, $oSubNode
|
||||
null,
|
||||
null,
|
||||
$oSubNode
|
||||
);
|
||||
}
|
||||
break;
|
||||
@@ -230,16 +225,13 @@ class Basic extends AbstractConfiguration
|
||||
private function ParseAttachments(array $aPortalConf, DesignElement $oPropertyNode)
|
||||
{
|
||||
/** @var \MFElement $oSubNode */
|
||||
foreach ($oPropertyNode->GetNodes('*') as $oSubNode)
|
||||
{
|
||||
switch ($oSubNode->nodeName)
|
||||
{
|
||||
foreach ($oPropertyNode->GetNodes('*') as $oSubNode) {
|
||||
switch ($oSubNode->nodeName) {
|
||||
case 'allow_delete':
|
||||
$sValue = $oSubNode->GetText();
|
||||
// If the text is null, we keep the default value
|
||||
// Else we set it
|
||||
if ($sValue !== null)
|
||||
{
|
||||
if ($sValue !== null) {
|
||||
$aPortalConf['properties']['attachments'][$oSubNode->nodeName] = ($sValue === 'true') ? true : false;
|
||||
}
|
||||
break;
|
||||
@@ -258,16 +250,13 @@ class Basic extends AbstractConfiguration
|
||||
private function ParseAllowedPortalsOptions(array $aPortalConf, DesignElement $oPropertyNode)
|
||||
{
|
||||
/** @var \MFElement $oSubNode */
|
||||
foreach ($oPropertyNode->GetNodes('*') as $oSubNode)
|
||||
{
|
||||
switch ($oSubNode->nodeName)
|
||||
{
|
||||
foreach ($oPropertyNode->GetNodes('*') as $oSubNode) {
|
||||
switch ($oSubNode->nodeName) {
|
||||
case 'opening_mode':
|
||||
$sValue = $oSubNode->GetText();
|
||||
// If the text is null, we keep the default value
|
||||
// Else we set it
|
||||
if ($sValue !== null)
|
||||
{
|
||||
if ($sValue !== null) {
|
||||
$aPortalConf['properties']['allowed_portals'][$oSubNode->nodeName] = ($sValue === 'self') ? 'self' : 'tab';
|
||||
}
|
||||
break;
|
||||
@@ -313,4 +302,4 @@ class Basic extends AbstractConfiguration
|
||||
|
||||
return $aPortalConf;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,13 +41,13 @@ use utils;
|
||||
class ApplicationHelper
|
||||
{
|
||||
/** @var string FORM_ENUM_DISPLAY_MODE_COSY */
|
||||
const FORM_ENUM_DISPLAY_MODE_COSY = 'cosy';
|
||||
public const FORM_ENUM_DISPLAY_MODE_COSY = 'cosy';
|
||||
/** @var string FORM_ENUM_DISPLAY_MODE_COMPACT */
|
||||
const FORM_ENUM_DISPLAY_MODE_COMPACT = 'compact';
|
||||
public const FORM_ENUM_DISPLAY_MODE_COMPACT = 'compact';
|
||||
/** @var string FORM_DEFAULT_DISPLAY_MODE */
|
||||
const FORM_DEFAULT_DISPLAY_MODE = self::FORM_ENUM_DISPLAY_MODE_COSY;
|
||||
public const FORM_DEFAULT_DISPLAY_MODE = self::FORM_ENUM_DISPLAY_MODE_COSY;
|
||||
/** @var bool FORM_DEFAULT_ALWAYS_SHOW_SUBMIT */
|
||||
const FORM_DEFAULT_ALWAYS_SHOW_SUBMIT = false;
|
||||
public const FORM_DEFAULT_ALWAYS_SHOW_SUBMIT = false;
|
||||
|
||||
/**
|
||||
* Loads the brick's security from the OQL queries to profiles arrays
|
||||
@@ -58,32 +58,25 @@ class ApplicationHelper
|
||||
*/
|
||||
public static function LoadBrickSecurity(AbstractBrick $oBrick)
|
||||
{
|
||||
try
|
||||
{
|
||||
try {
|
||||
// Allowed profiles
|
||||
if (utils::IsNotNullOrEmptyString($oBrick->GetAllowedProfilesOql()))
|
||||
{
|
||||
if (utils::IsNotNullOrEmptyString($oBrick->GetAllowedProfilesOql())) {
|
||||
$oSearch = DBObjectSearch::FromOQL_AllData($oBrick->GetAllowedProfilesOql());
|
||||
$oSet = new DBObjectSet($oSearch);
|
||||
while ($oProfile = $oSet->Fetch())
|
||||
{
|
||||
while ($oProfile = $oSet->Fetch()) {
|
||||
$oBrick->AddAllowedProfile($oProfile->Get('name'));
|
||||
}
|
||||
}
|
||||
|
||||
// Denied profiles
|
||||
if (utils::IsNotNullOrEmptyString($oBrick->GetDeniedProfilesOql()))
|
||||
{
|
||||
if (utils::IsNotNullOrEmptyString($oBrick->GetDeniedProfilesOql())) {
|
||||
$oSearch = DBObjectSearch::FromOQL_AllData($oBrick->GetDeniedProfilesOql());
|
||||
$oSet = new DBObjectSet($oSearch);
|
||||
while ($oProfile = $oSet->Fetch())
|
||||
{
|
||||
while ($oProfile = $oSet->Fetch()) {
|
||||
$oBrick->AddDeniedProfile($oProfile->Get('name'));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
} catch (Exception $e) {
|
||||
throw new Exception('Error while loading security from '.$oBrick->GetId().' brick');
|
||||
}
|
||||
}
|
||||
@@ -108,18 +101,14 @@ class ApplicationHelper
|
||||
$aForm = null;
|
||||
|
||||
// We try to find the form for that class
|
||||
if (isset($aForms[$sClass]) && isset($aForms[$sClass][$sMode]))
|
||||
{
|
||||
if (isset($aForms[$sClass]) && isset($aForms[$sClass][$sMode])) {
|
||||
$aForm = $aForms[$sClass][$sMode];
|
||||
}
|
||||
// If not found, we try find one from the closest parent class
|
||||
else
|
||||
{
|
||||
else {
|
||||
$bFound = false;
|
||||
foreach (MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_EXCLUDELEAF, false) as $sParentClass)
|
||||
{
|
||||
if (isset($aForms[$sParentClass]) && isset($aForms[$sParentClass][$sMode]))
|
||||
{
|
||||
foreach (MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_EXCLUDELEAF, false) as $sParentClass) {
|
||||
if (isset($aForms[$sParentClass]) && isset($aForms[$sParentClass][$sMode])) {
|
||||
$aForm = $aForms[$sParentClass][$sMode];
|
||||
$bFound = true;
|
||||
break;
|
||||
@@ -127,8 +116,7 @@ class ApplicationHelper
|
||||
}
|
||||
|
||||
// If we have still not found one, we return a default form
|
||||
if (!$bFound)
|
||||
{
|
||||
if (!$bFound) {
|
||||
$aForm = static::GenerateDefaultFormForClass($sClass);
|
||||
}
|
||||
}
|
||||
@@ -153,32 +141,26 @@ class ApplicationHelper
|
||||
public static function GetLoadedListFromClass($aLists, $sClass, $sList = 'default')
|
||||
{
|
||||
$aFoundList = null;
|
||||
$aAttCodes = array();
|
||||
$aAttCodes = [];
|
||||
|
||||
// We try to find the list for that class
|
||||
if (isset($aLists[$sClass]) && isset($aLists[$sClass][$sList]))
|
||||
{
|
||||
if (isset($aLists[$sClass]) && isset($aLists[$sClass][$sList])) {
|
||||
$aFoundList = $aLists[$sClass][$sList];
|
||||
}
|
||||
// Else we try to found the default list for that class
|
||||
elseif (isset($aLists[$sClass]) && isset($aLists[$sClass]['default']))
|
||||
{
|
||||
elseif (isset($aLists[$sClass]) && isset($aLists[$sClass]['default'])) {
|
||||
$aFoundList = $aLists[$sClass]['default'];
|
||||
}
|
||||
// If not found, we try find one from the closest parent class
|
||||
else
|
||||
{
|
||||
foreach (MetaModel::EnumParentClasses($sClass) as $sParentClass)
|
||||
{
|
||||
else {
|
||||
foreach (MetaModel::EnumParentClasses($sClass) as $sParentClass) {
|
||||
// Trying to find the right list
|
||||
if (isset($aLists[$sParentClass]) && isset($aLists[$sParentClass][$sList]))
|
||||
{
|
||||
if (isset($aLists[$sParentClass]) && isset($aLists[$sParentClass][$sList])) {
|
||||
$aFoundList = $aLists[$sParentClass][$sList];
|
||||
break;
|
||||
}
|
||||
// Or the default list
|
||||
elseif (isset($aLists[$sParentClass]) && isset($aLists[$sParentClass]['default']))
|
||||
{
|
||||
elseif (isset($aLists[$sParentClass]) && isset($aLists[$sParentClass]['default'])) {
|
||||
$aFoundList = $aLists[$sParentClass]['default'];
|
||||
break;
|
||||
}
|
||||
@@ -186,15 +168,11 @@ class ApplicationHelper
|
||||
}
|
||||
|
||||
// If found, we flatten the list to keep only the attribute codes (not the rank)
|
||||
if ($aFoundList !== null)
|
||||
{
|
||||
foreach ($aFoundList as $aItem)
|
||||
{
|
||||
if ($aFoundList !== null) {
|
||||
foreach ($aFoundList as $aItem) {
|
||||
$aAttCodes[] = $aItem['att_code'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
$aAttCodes = MetaModel::FlattenZList(MetaModel::GetZListItems($sClass, 'list'));
|
||||
}
|
||||
|
||||
@@ -213,32 +191,31 @@ class ApplicationHelper
|
||||
*/
|
||||
protected static function GenerateDefaultFormForClass($sClass, $bAddLinksets = false)
|
||||
{
|
||||
$aForm = array(
|
||||
$aForm = [
|
||||
'id' => strtolower($sClass)."-default-".uniqid(),
|
||||
'type' => 'custom_list',
|
||||
'properties' => array(
|
||||
'properties' => [
|
||||
'display_mode' => static::FORM_DEFAULT_DISPLAY_MODE,
|
||||
'always_show_submit' => static::FORM_DEFAULT_ALWAYS_SHOW_SUBMIT,
|
||||
'navigation_rules' => array(
|
||||
'navigation_rules' => [
|
||||
'submit' => null,
|
||||
'cancel' => null,
|
||||
),
|
||||
),
|
||||
'fields' => array(),
|
||||
'layout' => array(
|
||||
],
|
||||
],
|
||||
'fields' => [],
|
||||
'layout' => [
|
||||
'type' => 'xhtml',
|
||||
'content' => '',
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
|
||||
// Generate layout
|
||||
$sContent = "";
|
||||
|
||||
// - Retrieve zlist details
|
||||
$aDetailsList = MetaModel::GetZListItems($sClass, 'details');
|
||||
$aDetailsStruct = cmdbAbstractObject::ProcessZlist($aDetailsList, array(), 'UI:PropertiesTab', 'col1', '');
|
||||
if(!isset($aDetailsStruct['UI:PropertiesTab']))
|
||||
{
|
||||
$aDetailsStruct = cmdbAbstractObject::ProcessZlist($aDetailsList, [], 'UI:PropertiesTab', 'col1', '');
|
||||
if (!isset($aDetailsStruct['UI:PropertiesTab'])) {
|
||||
// For the iTop administrator
|
||||
IssueLog::Error('Could not generate default form for "'.$sClass.'" class. Is the "details" zlist empty?');
|
||||
// For the end-user
|
||||
@@ -248,14 +225,10 @@ class ApplicationHelper
|
||||
|
||||
// Count cols (not linksets)
|
||||
$iColCount = 0;
|
||||
foreach ($aPropertiesStruct as $sColId => $aColFieldsets)
|
||||
{
|
||||
if (substr($sColId, 0, 1) !== '_')
|
||||
{
|
||||
foreach ($aColFieldsets as $sFieldsetName => $aAttCodes)
|
||||
{
|
||||
if (substr($sFieldsetName, 0, 1) !== '_')
|
||||
{
|
||||
foreach ($aPropertiesStruct as $sColId => $aColFieldsets) {
|
||||
if (substr($sColId, 0, 1) !== '_') {
|
||||
foreach ($aColFieldsets as $sFieldsetName => $aAttCodes) {
|
||||
if (substr($sFieldsetName, 0, 1) !== '_') {
|
||||
$iColCount++;
|
||||
break;
|
||||
}
|
||||
@@ -263,28 +236,24 @@ class ApplicationHelper
|
||||
}
|
||||
}
|
||||
// If no cols, return a default form with all fields one after another
|
||||
if ($iColCount === 0)
|
||||
{
|
||||
return array(
|
||||
if ($iColCount === 0) {
|
||||
return [
|
||||
'id' => 'default',
|
||||
'type' => 'zlist',
|
||||
'fields' => 'details',
|
||||
'layout' => null,
|
||||
);
|
||||
];
|
||||
}
|
||||
// Warning, this might not be great when 12 modulo $iColCount is greater than 0.
|
||||
$sColCSSClass = 'col-sm-'.floor(12 / $iColCount);
|
||||
|
||||
$sLinksetsHTML = "";
|
||||
$sRowHTML = "<div class=\"row\">\n";
|
||||
foreach ($aPropertiesStruct as $sColId => $aColFieldsets)
|
||||
{
|
||||
foreach ($aPropertiesStruct as $sColId => $aColFieldsets) {
|
||||
$sColsHTML = "\t<div class=\"".$sColCSSClass."\">\n";
|
||||
foreach ($aColFieldsets as $sFieldsetName => $aAttCodes)
|
||||
{
|
||||
foreach ($aColFieldsets as $sFieldsetName => $aAttCodes) {
|
||||
// Add fieldset, not linkset
|
||||
if (substr($sFieldsetName, 0, 1) !== '_')
|
||||
{
|
||||
if (substr($sFieldsetName, 0, 1) !== '_') {
|
||||
$sFieldsetHTML = "\t\t<fieldset>\n";
|
||||
$sFieldsetHTML .= "\t\t\t<legend>".utils::EscapeHtml(Dict::S($sFieldsetName))."</legend>\n";
|
||||
|
||||
@@ -296,11 +265,8 @@ class ApplicationHelper
|
||||
|
||||
// Add to col
|
||||
$sColsHTML .= $sFieldsetHTML;
|
||||
}
|
||||
elseif ($bAddLinksets)
|
||||
{
|
||||
foreach ($aAttCodes as $sAttCode)
|
||||
{
|
||||
} elseif ($bAddLinksets) {
|
||||
foreach ($aAttCodes as $sAttCode) {
|
||||
$sLinksetsHTML .= "<div class=\"form_field\" data-field-id=\"".$sAttCode."\"></div>\n";
|
||||
}
|
||||
}
|
||||
@@ -329,8 +295,9 @@ class ApplicationHelper
|
||||
* @return array
|
||||
* @since 2.7.0
|
||||
*/
|
||||
public static function GetAttDefClassesToExcludeFromMarkupMetadataRawValue(){
|
||||
return array(
|
||||
public static function GetAttDefClassesToExcludeFromMarkupMetadataRawValue()
|
||||
{
|
||||
return [
|
||||
'AttributeBlob',
|
||||
'AttributeCustomFields',
|
||||
'AttributeDashboard',
|
||||
@@ -338,7 +305,7 @@ class ApplicationHelper
|
||||
'AttributeStopWatch',
|
||||
'AttributeSubItem',
|
||||
'AttributeTable',
|
||||
'AttributeText'
|
||||
);
|
||||
'AttributeText',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ use SimpleCrypt;
|
||||
use Symfony\Component\Routing\RouterInterface;
|
||||
use TrueExpression;
|
||||
use UserRights;
|
||||
|
||||
use const UR_ACTION_READ;
|
||||
|
||||
/**
|
||||
@@ -39,17 +40,17 @@ use const UR_ACTION_READ;
|
||||
class ContextManipulatorHelper
|
||||
{
|
||||
/** @var string ENUM_RULE_CALLBACK_BACK */
|
||||
const ENUM_RULE_CALLBACK_BACK = 'back';
|
||||
public const ENUM_RULE_CALLBACK_BACK = 'back';
|
||||
/** @var string ENUM_RULE_CALLBACK_OPEN */
|
||||
const ENUM_RULE_CALLBACK_OPEN = 'open';
|
||||
public const ENUM_RULE_CALLBACK_OPEN = 'open';
|
||||
/** @var string ENUM_RULE_CALLBACK_OPEN_VIEW */
|
||||
const ENUM_RULE_CALLBACK_OPEN_VIEW = 'view';
|
||||
public const ENUM_RULE_CALLBACK_OPEN_VIEW = 'view';
|
||||
/** @var string ENUM_RULE_CALLBACK_OPEN_EDIT */
|
||||
const ENUM_RULE_CALLBACK_OPEN_EDIT = 'edit';
|
||||
public const ENUM_RULE_CALLBACK_OPEN_EDIT = 'edit';
|
||||
/** @var string DEFAULT_RULE_CALLBACK_OPEN */
|
||||
const DEFAULT_RULE_CALLBACK_OPEN = self::ENUM_RULE_CALLBACK_OPEN_VIEW;
|
||||
public const DEFAULT_RULE_CALLBACK_OPEN = self::ENUM_RULE_CALLBACK_OPEN_VIEW;
|
||||
|
||||
const PRIVATE_KEY = 'portal-priv-key';
|
||||
public const PRIVATE_KEY = 'portal-priv-key';
|
||||
|
||||
/** @var array $aRules */
|
||||
protected $aRules;
|
||||
@@ -73,8 +74,9 @@ class ContextManipulatorHelper
|
||||
*
|
||||
* @throws \DOMFormatException
|
||||
*/
|
||||
public function __construct(ModuleDesign $oModuleDesign, RouterInterface $oRouter, BrickCollection $oBrickCollection, ScopeValidatorHelper $oScopeValidator) {
|
||||
$this->aRules = array();
|
||||
public function __construct(ModuleDesign $oModuleDesign, RouterInterface $oRouter, BrickCollection $oBrickCollection, ScopeValidatorHelper $oScopeValidator)
|
||||
{
|
||||
$this->aRules = [];
|
||||
$this->oRouter = $oRouter;
|
||||
$this->oBrickCollection = $oBrickCollection;
|
||||
|
||||
@@ -92,38 +94,34 @@ class ContextManipulatorHelper
|
||||
*/
|
||||
public function Init(DOMNodeList $oNodes)
|
||||
{
|
||||
$this->aRules = array();
|
||||
$this->aRules = [];
|
||||
|
||||
// Iterating over the scope nodes
|
||||
/** @var \Combodo\iTop\DesignElement $oRuleNode */
|
||||
foreach ($oNodes as $oRuleNode)
|
||||
{
|
||||
foreach ($oNodes as $oRuleNode) {
|
||||
// Retrieving mandatory id attribute
|
||||
$sRuleId = $oRuleNode->getAttribute('id');
|
||||
if ($sRuleId === '')
|
||||
{
|
||||
if ($sRuleId === '') {
|
||||
throw new DOMFormatException('Rule tag must have an id attribute.', null, null, $oRuleNode);
|
||||
}
|
||||
|
||||
// Setting if the rule needs a source object
|
||||
$bNeedsSource = false;
|
||||
// Note : preset and retrofit are no longer plurals as it should match as much as possible iTopObjectCopier specs. We use plurals only in the xml for the collection tags
|
||||
$aRule = array(
|
||||
$aRule = [
|
||||
'source_oql' => null,
|
||||
'dest_class' => null,
|
||||
'preset' => array(),
|
||||
'retrofit' => array(),
|
||||
'preset' => [],
|
||||
'retrofit' => [],
|
||||
'submit' => null,
|
||||
'cancel' => null,
|
||||
);
|
||||
];
|
||||
|
||||
// Iterating over the rule's nodes
|
||||
/** @var \Combodo\iTop\DesignElement $oSubNode */
|
||||
foreach ($oRuleNode->GetNodes('*') as $oSubNode)
|
||||
{
|
||||
foreach ($oRuleNode->GetNodes('*') as $oSubNode) {
|
||||
$sSubNodeName = $oSubNode->nodeName;
|
||||
switch ($sSubNodeName)
|
||||
{
|
||||
switch ($sSubNodeName) {
|
||||
case 'source_class':
|
||||
$aRule['source_oql'] = 'SELECT '.$oSubNode->GetText();
|
||||
break;
|
||||
@@ -136,17 +134,14 @@ class ContextManipulatorHelper
|
||||
case 'presets':
|
||||
case 'retrofits':
|
||||
/** @var \Combodo\iTop\DesignElement $oActionNode */
|
||||
foreach ($oSubNode->GetNodes('*') as $oActionNode)
|
||||
{
|
||||
foreach ($oSubNode->GetNodes('*') as $oActionNode) {
|
||||
// Note : Caution, the index of $aRule is now $oActionNode->nodeName instead of $sSubNodeName, as we want to match iTopObjectCopier specs like told previously
|
||||
if (in_array($oActionNode->nodeName, array('preset', 'retrofit')))
|
||||
{
|
||||
if (in_array($oActionNode->nodeName, ['preset', 'retrofit'])) {
|
||||
$sActionText = $oActionNode->GetText();
|
||||
$aRule[$oActionNode->nodeName][] = $sActionText;
|
||||
|
||||
// Checking if the rule needs a source object
|
||||
if (substr($sActionText, 0, 4) === 'copy')
|
||||
{
|
||||
if (substr($sActionText, 0, 4) === 'copy') {
|
||||
$bNeedsSource = true;
|
||||
}
|
||||
}
|
||||
@@ -157,25 +152,21 @@ class ContextManipulatorHelper
|
||||
case 'cancel':
|
||||
// Retrieving callback type and checking that it is allowed
|
||||
$sType = $oSubNode->getAttribute('xsi:type');
|
||||
if ($sType === '')
|
||||
{
|
||||
if ($sType === '') {
|
||||
throw new DOMFormatException($sSubNodeName.' must have an xsi:type attribute.', null, null, $oSubNode);
|
||||
}
|
||||
if (($sType === static::ENUM_RULE_CALLBACK_OPEN) && ($sSubNodeName === 'cancel'))
|
||||
{
|
||||
if (($sType === static::ENUM_RULE_CALLBACK_OPEN) && ($sSubNodeName === 'cancel')) {
|
||||
throw new DOMFormatException('Cancel tag cannot be of type '.$sType.'.', null, null, $oSubNode);
|
||||
}
|
||||
|
||||
$aRule[$sSubNodeName] = array('type' => $sType);
|
||||
switch ($sType)
|
||||
{
|
||||
$aRule[$sSubNodeName] = ['type' => $sType];
|
||||
switch ($sType) {
|
||||
case static::ENUM_RULE_CALLBACK_BACK:
|
||||
// Default value
|
||||
$sRefresh = false;
|
||||
// Retrieving value
|
||||
$oRefreshNode = $oSubNode->GetOptionalElement('refresh');
|
||||
if (($oRefreshNode !== null) && ($oRefreshNode->GetText() !== null))
|
||||
{
|
||||
if (($oRefreshNode !== null) && ($oRefreshNode->GetText() !== null)) {
|
||||
$sRefresh = $oRefreshNode->GetText();
|
||||
}
|
||||
|
||||
@@ -187,8 +178,7 @@ class ContextManipulatorHelper
|
||||
$sMode = static::ENUM_RULE_CALLBACK_OPEN_VIEW;
|
||||
// Retrieving value
|
||||
$oModeNode = $oSubNode->GetOptionalElement('mode');
|
||||
if (($oModeNode !== null) && ($oModeNode->GetText() !== null))
|
||||
{
|
||||
if (($oModeNode !== null) && ($oModeNode->GetText() !== null)) {
|
||||
$sMode = $oModeNode->GetText();
|
||||
}
|
||||
|
||||
@@ -200,8 +190,7 @@ class ContextManipulatorHelper
|
||||
}
|
||||
|
||||
// If there is no source information we check if there is a preset that requires a copy in order to throw an exception
|
||||
if (($aRule['source_oql'] === null) && ($bNeedsSource === true))
|
||||
{
|
||||
if (($aRule['source_oql'] === null) && ($bNeedsSource === true)) {
|
||||
throw new DOMFormatException('Rule tag must have either a "source_oql" or a "source_class" child node.', null, null, $oRuleNode);
|
||||
}
|
||||
|
||||
@@ -209,7 +198,6 @@ class ContextManipulatorHelper
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a hash array of rules
|
||||
*
|
||||
@@ -230,8 +218,7 @@ class ContextManipulatorHelper
|
||||
*/
|
||||
public function GetRule($sId)
|
||||
{
|
||||
if (!array_key_exists($sId, $this->aRules))
|
||||
{
|
||||
if (!array_key_exists($sId, $this->aRules)) {
|
||||
throw new Exception('Context creator : Could not find "'.$sId.'" in the rules list');
|
||||
}
|
||||
|
||||
@@ -264,30 +251,26 @@ class ContextManipulatorHelper
|
||||
*/
|
||||
public function PrepareObject(array $aData, DBObject $oObject)
|
||||
{
|
||||
if (isset($aData['rules']) && isset($aData['sources']))
|
||||
{
|
||||
if (isset($aData['rules']) && isset($aData['sources'])) {
|
||||
$aRules = $aData['rules'];
|
||||
$aSources = $aData['sources'];
|
||||
$aActionRulesErrors = array();
|
||||
foreach ($aRules as $sRuleId)
|
||||
{
|
||||
try
|
||||
{
|
||||
$aActionRulesErrors = [];
|
||||
foreach ($aRules as $sRuleId) {
|
||||
try {
|
||||
$this->PrepareAndExecActionRule($sRuleId, $aSources, $oObject);
|
||||
}
|
||||
catch (CorePortalInvalidActionRuleException $e)
|
||||
{
|
||||
} catch (CorePortalInvalidActionRuleException $e) {
|
||||
$aActionRulesErrors[$sRuleId] = $e->getMessage();
|
||||
}
|
||||
}
|
||||
if (!empty($aActionRulesErrors))
|
||||
{
|
||||
if (!empty($aActionRulesErrors)) {
|
||||
$sDestinationObjectDesc = '';
|
||||
$sDestinationObjectDesc .= get_class($oObject);
|
||||
$sDestinationObjectDesc .= '['.$oObject->GetKey().']';
|
||||
throw new CorePortalInvalidActionRuleException('Some action rules were not executed',
|
||||
throw new CorePortalInvalidActionRuleException(
|
||||
'Some action rules were not executed',
|
||||
$aActionRulesErrors,
|
||||
'destination object: '.$sDestinationObjectDesc);
|
||||
'destination object: '.$sDestinationObjectDesc
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -311,8 +294,7 @@ class ContextManipulatorHelper
|
||||
$aRule = $this->GetRule($sRuleId);
|
||||
|
||||
// Retrieving source object if needed
|
||||
if ($aRule['source_oql'] !== null)
|
||||
{
|
||||
if ($aRule['source_oql'] !== null) {
|
||||
// Preparing query to retrieve source object(s)
|
||||
/** @var \DBObjectSearch $oSearch */
|
||||
$oSearch = DBSearch::FromOQL($aRule['source_oql']);
|
||||
@@ -324,45 +306,37 @@ class ContextManipulatorHelper
|
||||
$sSearchClass = $oSearch->GetClass();
|
||||
$aSearchParams = $oSearch->GetInternalParams();
|
||||
|
||||
if (array_key_exists($sSearchClass, $aSources))
|
||||
{
|
||||
if (array_key_exists($sSearchClass, $aSources)) {
|
||||
$sourceId = $aSources[$sSearchClass];
|
||||
|
||||
if (array_key_exists('id', $oSearch->GetQueryParams()))
|
||||
{
|
||||
if (is_array($sourceId))
|
||||
{
|
||||
if (array_key_exists('id', $oSearch->GetQueryParams())) {
|
||||
if (is_array($sourceId)) {
|
||||
throw new Exception('Context creator : ":id" parameter in rule "'.$sRuleId.'" cannot be an array (This is a limitation of DBSearch)');
|
||||
}
|
||||
|
||||
$aSearchParams['id'] = $sourceId;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!is_array($sourceId))
|
||||
{
|
||||
$sourceId = array($sourceId);
|
||||
} else {
|
||||
if (!is_array($sourceId)) {
|
||||
$sourceId = [$sourceId];
|
||||
}
|
||||
|
||||
$iLoopMax = count($sourceId);
|
||||
$oFullBinExpr = null;
|
||||
for ($i = 0; $i < $iLoopMax; $i++)
|
||||
{
|
||||
for ($i = 0; $i < $iLoopMax; $i++) {
|
||||
// - Building full search expression
|
||||
$oBinExpr = new BinaryExpression(new FieldExpression('id', $oSearch->GetClassAlias()), '=',
|
||||
new ScalarExpression($sourceId[$i]));
|
||||
if ($i === 0)
|
||||
{
|
||||
$oBinExpr = new BinaryExpression(
|
||||
new FieldExpression('id', $oSearch->GetClassAlias()),
|
||||
'=',
|
||||
new ScalarExpression($sourceId[$i])
|
||||
);
|
||||
if ($i === 0) {
|
||||
$oFullBinExpr = $oBinExpr;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
$oFullBinExpr = new BinaryExpression($oFullBinExpr, 'OR', $oBinExpr);
|
||||
}
|
||||
|
||||
// - Adding it to the query when complete
|
||||
if ($i === ($iLoopMax - 1))
|
||||
{
|
||||
if ($i === ($iLoopMax - 1)) {
|
||||
$oSearch->AddConditionExpression($oFullBinExpr);
|
||||
}
|
||||
}
|
||||
@@ -370,8 +344,7 @@ class ContextManipulatorHelper
|
||||
}
|
||||
|
||||
$oSearchRootCondition = $oSearch->GetCriteria();
|
||||
if (($oSearchRootCondition === null) || ($oSearchRootCondition instanceof TrueExpression))
|
||||
{
|
||||
if (($oSearchRootCondition === null) || ($oSearchRootCondition instanceof TrueExpression)) {
|
||||
// N°2555 : disallow searches without any condition
|
||||
$sErrMsg = "Portal query was stopped: action_rule '$sRuleId' searches for '$sSearchClass' without any condition is forbidden";
|
||||
IssueLog::Error($sErrMsg);
|
||||
@@ -379,35 +352,31 @@ class ContextManipulatorHelper
|
||||
}
|
||||
|
||||
// Checking for silos
|
||||
$oScopeSearch = $this->oScopeValidator->GetScopeFilterForProfiles(UserRights::ListProfiles(), $sSearchClass,
|
||||
UR_ACTION_READ);
|
||||
if ($oScopeSearch->IsAllDataAllowed())
|
||||
{
|
||||
$oScopeSearch = $this->oScopeValidator->GetScopeFilterForProfiles(
|
||||
UserRights::ListProfiles(),
|
||||
$sSearchClass,
|
||||
UR_ACTION_READ
|
||||
);
|
||||
if ($oScopeSearch->IsAllDataAllowed()) {
|
||||
$oSearch->AllowAllData();
|
||||
}
|
||||
|
||||
// Retrieving source object(s) and applying rules
|
||||
$oSet = new DBObjectSet($oSearch, array(), $aSearchParams);
|
||||
while ($oSourceObject = $oSet->Fetch()) // we need a loop for certain preset verbs like add_to_list, see N°2555
|
||||
{
|
||||
$oSet = new DBObjectSet($oSearch, [], $aSearchParams);
|
||||
while ($oSourceObject = $oSet->Fetch()) { // we need a loop for certain preset verbs like add_to_list, see N°2555
|
||||
// Presets
|
||||
if (isset($aRule['preset']) && !empty($aRule['preset']))
|
||||
{
|
||||
$oDestinationObject->ExecActions($aRule['preset'], array('source' => $oSourceObject));
|
||||
if (isset($aRule['preset']) && !empty($aRule['preset'])) {
|
||||
$oDestinationObject->ExecActions($aRule['preset'], ['source' => $oSourceObject]);
|
||||
}
|
||||
// Retrofits
|
||||
if (isset($aRule['retrofit']) && !empty($aRule['retrofit']))
|
||||
{
|
||||
$oSourceObject->ExecActions($aRule['retrofit'], array('source' => $oDestinationObject));
|
||||
if (isset($aRule['retrofit']) && !empty($aRule['retrofit'])) {
|
||||
$oSourceObject->ExecActions($aRule['retrofit'], ['source' => $oDestinationObject]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
// Presets
|
||||
if (isset($aRule['preset']) && !empty($aRule['preset']))
|
||||
{
|
||||
$oDestinationObject->ExecActions($aRule['preset'], array('source' => $oDestinationObject));
|
||||
if (isset($aRule['preset']) && !empty($aRule['preset'])) {
|
||||
$oDestinationObject->ExecActions($aRule['preset'], ['source' => $oDestinationObject]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -420,20 +389,19 @@ class ContextManipulatorHelper
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function PrepareRulesForToken($aRules, $aObjects = array())
|
||||
public static function PrepareRulesForToken($aRules, $aObjects = [])
|
||||
{
|
||||
// Getting necessary information from objects
|
||||
$aSources = array();
|
||||
foreach ($aObjects as $oObject)
|
||||
{
|
||||
$aSources = [];
|
||||
foreach ($aObjects as $oObject) {
|
||||
$aSources[get_class($oObject)] = $oObject->GetKey();
|
||||
}
|
||||
|
||||
// Preparing data
|
||||
$aTokenRules = array(
|
||||
$aTokenRules = [
|
||||
'rules' => $aRules,
|
||||
'sources' => $aSources,
|
||||
);
|
||||
];
|
||||
|
||||
return $aTokenRules;
|
||||
}
|
||||
@@ -464,7 +432,7 @@ class ContextManipulatorHelper
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function PrepareAndEncodeRulesToken($aRules, $aObjects = array())
|
||||
public static function PrepareAndEncodeRulesToken($aRules, $aObjects = [])
|
||||
{
|
||||
// Preparing rules before making a token
|
||||
$aTokenRules = static::PrepareRulesForToken($aRules, $aObjects);
|
||||
@@ -491,19 +459,20 @@ class ContextManipulatorHelper
|
||||
$sDecryptedToken = $oCrypt->Decrypt($sPrivateKey, self::base64url_decode($sToken));
|
||||
|
||||
$aTokenRules = json_decode($sDecryptedToken, true);
|
||||
if (!is_array($aTokenRules))
|
||||
{
|
||||
if (!is_array($aTokenRules)) {
|
||||
throw new Exception('DecodeRulesToken not a proper json structure.');
|
||||
}
|
||||
|
||||
return $aTokenRules;
|
||||
}
|
||||
|
||||
private static function base64url_encode($sData) {
|
||||
private static function base64url_encode($sData)
|
||||
{
|
||||
return rtrim(strtr(base64_encode($sData), '+/', '-_'), '=');
|
||||
}
|
||||
|
||||
private static function base64url_decode($sData) {
|
||||
private static function base64url_decode($sData)
|
||||
{
|
||||
return base64_decode(str_pad(strtr($sData, '-_', '+/'), strlen($sData) % 4, '=', STR_PAD_RIGHT));
|
||||
}
|
||||
|
||||
@@ -515,7 +484,7 @@ class ContextManipulatorHelper
|
||||
*/
|
||||
private static function GetPrivateKey()
|
||||
{
|
||||
if(self::$sPrivateKey === null) {
|
||||
if (self::$sPrivateKey === null) {
|
||||
self::$sPrivateKey = DBProperty::GetProperty(self::PRIVATE_KEY);
|
||||
if (is_null(self::$sPrivateKey)) {
|
||||
self::$sPrivateKey = bin2hex(random_bytes(32));
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
@@ -35,21 +36,21 @@ use utils;
|
||||
class SessionMessageHelper implements IteratorAggregate
|
||||
{
|
||||
/** @var string ENUM_SEVERITY_INFO */
|
||||
const ENUM_SEVERITY_INFO = 'info';
|
||||
public const ENUM_SEVERITY_INFO = 'info';
|
||||
/** @var string ENUM_SEVERITY_OK */
|
||||
const ENUM_SEVERITY_OK = 'ok';
|
||||
public const ENUM_SEVERITY_OK = 'ok';
|
||||
/** @var string ENUM_SEVERITY_WARNING */
|
||||
const ENUM_SEVERITY_WARNING = 'warning';
|
||||
public const ENUM_SEVERITY_WARNING = 'warning';
|
||||
/** @var string ENUM_SEVERITY_ERROR */
|
||||
const ENUM_SEVERITY_ERROR = 'error';
|
||||
public const ENUM_SEVERITY_ERROR = 'error';
|
||||
|
||||
/** @var string DEFAULT_SEVERITY */
|
||||
const DEFAULT_SEVERITY = self::ENUM_SEVERITY_INFO;
|
||||
public const DEFAULT_SEVERITY = self::ENUM_SEVERITY_INFO;
|
||||
|
||||
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $oContainer */
|
||||
private $oContainer;
|
||||
/** @var array $aAllMessages */
|
||||
private $aAllMessages = array();
|
||||
private $aAllMessages = [];
|
||||
|
||||
/**
|
||||
* SessionMessageHelper constructor.
|
||||
@@ -71,11 +72,10 @@ class SessionMessageHelper implements IteratorAggregate
|
||||
* @param array $aMetadata An array of key => scalar value
|
||||
* @param int $iRank
|
||||
*/
|
||||
public function AddMessage($sId, $sContent, $sSeverity = self::DEFAULT_SEVERITY, $aMetadata = array(), $iRank = 1)
|
||||
public function AddMessage($sId, $sContent, $sSeverity = self::DEFAULT_SEVERITY, $aMetadata = [], $iRank = 1)
|
||||
{
|
||||
$sKey = $this->GetMessagesKey();
|
||||
if(!Session::IsSet(['obj_messages', $sKey]))
|
||||
{
|
||||
if (!Session::IsSet(['obj_messages', $sKey])) {
|
||||
Session::Set(['obj_messages', $sKey], []);
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ class SessionMessageHelper implements IteratorAggregate
|
||||
*/
|
||||
private function GetMessagesKey()
|
||||
{
|
||||
return 'GUI:' . $this->oContainer->getParameter('combodo.portal.instance.id');
|
||||
return 'GUI:'.$this->oContainer->getParameter('combodo.portal.instance.id');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -126,23 +126,18 @@ class SessionMessageHelper implements IteratorAggregate
|
||||
*/
|
||||
private function FetchMessages()
|
||||
{
|
||||
if (!empty($this->aAllMessages))
|
||||
{
|
||||
if (!empty($this->aAllMessages)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->aAllMessages = array();
|
||||
if (is_array(Session::Get('obj_messages')))
|
||||
{
|
||||
foreach (Session::Get('obj_messages') as $sMessageKey => $aMessageObjectData)
|
||||
{
|
||||
$aObjectMessages = array();
|
||||
$aRanks = array();
|
||||
foreach ($aMessageObjectData as $sMessageId => $aMessageData)
|
||||
{
|
||||
$this->aAllMessages = [];
|
||||
if (is_array(Session::Get('obj_messages'))) {
|
||||
foreach (Session::Get('obj_messages') as $sMessageKey => $aMessageObjectData) {
|
||||
$aObjectMessages = [];
|
||||
$aRanks = [];
|
||||
foreach ($aMessageObjectData as $sMessageId => $aMessageData) {
|
||||
$sMsgClass = 'ipb-alert alert alert-dismissible alert-';
|
||||
switch ($aMessageData['severity'])
|
||||
{
|
||||
switch ($aMessageData['severity']) {
|
||||
case static::ENUM_SEVERITY_INFO:
|
||||
$sMsgClass .= 'info';
|
||||
break;
|
||||
@@ -168,17 +163,16 @@ class SessionMessageHelper implements IteratorAggregate
|
||||
$sMsgMetadata .= 'data-'.str_replace('_', '-', $sMetadatumName).'="'.utils::HtmlEntities($sMetadatumValue).'" ';
|
||||
}
|
||||
}
|
||||
$aObjectMessages[] = array('css_classes' => $sMsgClass, 'message' => $aMessageData['message'], 'metadata' => $sMsgMetadata);
|
||||
$aObjectMessages[] = ['css_classes' => $sMsgClass, 'message' => $aMessageData['message'], 'metadata' => $sMsgMetadata];
|
||||
$aRanks[] = $aMessageData['rank'];
|
||||
}
|
||||
Session::Unset(['obj_messages', $sMessageKey]);
|
||||
|
||||
array_multisort($aRanks, $aObjectMessages);
|
||||
foreach ($aObjectMessages as $aObjectMessage)
|
||||
{
|
||||
foreach ($aObjectMessages as $aObjectMessage) {
|
||||
$this->aAllMessages[] = $aObjectMessage;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (C) 2013-2024 Combodo SAS
|
||||
*
|
||||
@@ -37,8 +38,8 @@ class Kernel extends BaseKernel
|
||||
{
|
||||
use MicroKernelTrait;
|
||||
|
||||
/** @var string CONFIG_EXTS */
|
||||
const CONFIG_EXTS = '.{php,xml,yaml,yml}';
|
||||
/** @var string CONFIG_EXTS */
|
||||
public const CONFIG_EXTS = '.{php,xml,yaml,yml}';
|
||||
|
||||
/**
|
||||
* @return string
|
||||
@@ -55,23 +56,23 @@ class Kernel extends BaseKernel
|
||||
*/
|
||||
public function getLogDir(): string
|
||||
{
|
||||
$logDir = $_ENV['PORTAL_ID'] . '-' . $this->environment;
|
||||
$logDir = $_ENV['PORTAL_ID'].'-'.$this->environment;
|
||||
|
||||
return utils::GetLogPath() . "/portals/$logDir";
|
||||
}
|
||||
return utils::GetLogPath()."/portals/$logDir";
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Generator|iterable|\Symfony\Component\HttpKernel\Bundle\BundleInterface[]
|
||||
*/
|
||||
public function registerBundles(): iterable
|
||||
{
|
||||
$contents = require $this->getProjectDir().'/config/bundles.php';
|
||||
foreach ($contents as $class => $envs) {
|
||||
if (isset($envs[$this->environment]) || isset($envs['all'])) {
|
||||
yield new $class();
|
||||
}
|
||||
}
|
||||
}
|
||||
$contents = require $this->getProjectDir().'/config/bundles.php';
|
||||
foreach ($contents as $class => $envs) {
|
||||
if (isset($envs[$this->environment]) || isset($envs['all'])) {
|
||||
yield new $class();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $container
|
||||
|
||||
@@ -29,7 +29,6 @@ namespace Combodo\iTop\Portal\Service\TemplatesProvider;
|
||||
*/
|
||||
class TemplatesRegister
|
||||
{
|
||||
|
||||
/** @var array Templates definitions (possibly altered by portal configuration) */
|
||||
private array $aTemplatesDefinitions = [];
|
||||
|
||||
@@ -127,7 +126,7 @@ class TemplatesRegister
|
||||
*/
|
||||
public function GetProviderTemplatesIds(string $sProviderId): array
|
||||
{
|
||||
return array_map(fn($oTemplateDefinition) => $oTemplateDefinition->GetId(), $this->aTemplatesDefinitions[$sProviderId] ?? ['tile', 'page']);
|
||||
return array_map(fn ($oTemplateDefinition) => $oTemplateDefinition->GetId(), $this->aTemplatesDefinitions[$sProviderId] ?? ['tile', 'page']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -139,4 +138,4 @@ class TemplatesRegister
|
||||
{
|
||||
return $this->aTemplatesDefinitions;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@ use Twig\Extension\GlobalsInterface;
|
||||
*/
|
||||
class AppGlobal extends AbstractExtension implements GlobalsInterface
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
|
||||
@@ -8,14 +8,14 @@ use MetaModel;
|
||||
class AppIconUrlAccessor
|
||||
{
|
||||
private $oUrlGenerator;
|
||||
|
||||
|
||||
public function __construct(UrlGenerator $oUrlGenerator)
|
||||
{
|
||||
$this->oUrlGenerator = $oUrlGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param $bIgnoreOverrideCheck bool If true, use the URL set in the configuration file even if it's not a custom value
|
||||
*
|
||||
* @return string
|
||||
@@ -23,10 +23,10 @@ class AppIconUrlAccessor
|
||||
public function GetAppIconUrl($bIgnoreOverrideCheck = false): string
|
||||
{
|
||||
// Try if a custom URL was set in the configuration file
|
||||
if($bIgnoreOverrideCheck === true || MetaModel::GetConfig()->IsCustomValue('app_icon_url')) {
|
||||
if ($bIgnoreOverrideCheck === true || MetaModel::GetConfig()->IsCustomValue('app_icon_url')) {
|
||||
return $_ENV['COMBODO_CONF_APP_ICON_URL'] ;
|
||||
}
|
||||
// Otherwise use the home page
|
||||
return $this->oUrlGenerator->generate('p_home');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user