mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-12 23:14:18 +01:00
Revert "N°8579 - remove "spaceless" in twig files"
This reverts commit ee993ef80a.
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
|
|
||||||
{% UIContentBlock Standard {'aContainerClasses': ['ibo-update-core', 'ibo-setup--wizard']} %}
|
{% UIContentBlock Standard {'aContainerClasses': ['ibo-update-core', 'ibo-setup--wizard']} %}
|
||||||
|
|
||||||
{% if bSuccess %}
|
{% if bSuccess %}
|
||||||
{% UIContentBlock Standard {'aContainerClasses': ['ibo-setup--wizard--content']} %}
|
{% UIContentBlock Standard {'aContainerClasses': ['ibo-setup--wizard--content']} %}
|
||||||
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Status'|dict_s, 'sId':'update_progress'} %}
|
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Status'|dict_s, 'sId':'update_progress'} %}
|
||||||
@@ -8,7 +11,9 @@
|
|||||||
{% set sVersion = 'UI:iTopVersion:Long'|dict_format(constant('ITOP_APPLICATION'), constant('ITOP_VERSION'), constant('ITOP_REVISION'), constant('ITOP_BUILD_DATE')) %}
|
{% set sVersion = 'UI:iTopVersion:Long'|dict_format(constant('ITOP_APPLICATION'), constant('ITOP_VERSION'), constant('ITOP_REVISION'), constant('ITOP_BUILD_DATE')) %}
|
||||||
{% UIField Large {'sLabel':'iTopUpdate:UI:CurrentVersion'|dict_s, 'sValueHtml':sVersion} %}{% EndUIField %}
|
{% UIField Large {'sLabel':'iTopUpdate:UI:CurrentVersion'|dict_s, 'sValueHtml':sVersion} %}{% EndUIField %}
|
||||||
{% EndUIFieldSet %}
|
{% EndUIFieldSet %}
|
||||||
|
|
||||||
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Backup'|dict_s} %}
|
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Backup'|dict_s} %}
|
||||||
|
|
||||||
{% if bDoBackup or bDoFilesArchive %}
|
{% if bDoBackup or bDoFilesArchive %}
|
||||||
{% if bDoBackup %}
|
{% if bDoBackup %}
|
||||||
{% UIField Large {'sLabel':'iTopUpdate:UI:WithDBBackup'|dict_s, 'sValueHtml':sBackupFile} %}{% EndUIField %}
|
{% UIField Large {'sLabel':'iTopUpdate:UI:WithDBBackup'|dict_s, 'sValueHtml':sBackupFile} %}{% EndUIField %}
|
||||||
@@ -19,11 +24,14 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
{% UIAlert ForWarning {'sContent':'iTopUpdate:UI:WithoutBackup'|dict_s, 'IsCollapsible':false, 'IsClosable':false} %}{% EndUIAlert %}
|
{% UIAlert ForWarning {'sContent':'iTopUpdate:UI:WithoutBackup'|dict_s, 'IsCollapsible':false, 'IsClosable':false} %}{% EndUIAlert %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% EndUIFieldSet %}
|
{% EndUIFieldSet %}
|
||||||
|
|
||||||
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Action'|dict_s} %}
|
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Action'|dict_s} %}
|
||||||
{% UIAlert ForWarning {'sContent':'iTopUpdate:UI:WarningReadOnlyDuringUpdate'|dict_s, 'IsCollapsible':false, 'IsClosable':false} %}{% EndUIAlert %}
|
{% UIAlert ForWarning {'sContent':'iTopUpdate:UI:WarningReadOnlyDuringUpdate'|dict_s, 'IsCollapsible':false, 'IsClosable':false} %}{% EndUIAlert %}
|
||||||
{% EndUIFieldSet %}
|
{% EndUIFieldSet %}
|
||||||
{% EndUIContentBlock %}
|
{% EndUIContentBlock %}
|
||||||
|
|
||||||
{% UIToolbar ForButton {'AddCSSClass':'ibo-setup--wizard--buttons-container'} %}
|
{% UIToolbar ForButton {'AddCSSClass':'ibo-setup--wizard--buttons-container'} %}
|
||||||
{% UIForm Standard {'CSSClasses':['form-inline']} %}
|
{% UIForm Standard {'CSSClasses':['form-inline']} %}
|
||||||
{% UIButton ForCancel {'sId':'cancel-update', 'sLabel':'iTopUpdate:UI:Cancel'|dict_s, 'bIsSubmit':true} %}
|
{% UIButton ForCancel {'sId':'cancel-update', 'sLabel':'iTopUpdate:UI:Cancel'|dict_s, 'bIsSubmit':true} %}
|
||||||
@@ -38,12 +46,17 @@
|
|||||||
{% UIInput ForHidden {'sName':'doFilesArchive', 'sValue':bDoFilesArchive} %}
|
{% UIInput ForHidden {'sName':'doFilesArchive', 'sValue':bDoFilesArchive} %}
|
||||||
{% EndUIForm %}
|
{% EndUIForm %}
|
||||||
{% EndUIToolbar %}
|
{% EndUIToolbar %}
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
{% UIFieldSet Standard {'sLegend':''} %}
|
{% UIFieldSet Standard {'sLegend':''} %}
|
||||||
{% UIAlert ForFailure {'sContent':sError, 'IsCollapsible':false, 'IsClosable':false} %}{% EndUIAlert %}
|
{% UIAlert ForFailure {'sContent':sError, 'IsCollapsible':false, 'IsClosable':false} %}{% EndUIAlert %}
|
||||||
{% UIForm Standard {} %}
|
{% UIForm Standard {} %}
|
||||||
{% UIButton ForPrimaryAction {'sLabel':'iTopUpdate:UI:Back'|dict_s, 'bIsSubmit':true} %}
|
{% UIButton ForPrimaryAction {'sLabel':'iTopUpdate:UI:Back'|dict_s, 'bIsSubmit':true} %}
|
||||||
{% EndUIForm %}
|
{% EndUIForm %}
|
||||||
{% EndUIFieldSet %}
|
{% EndUIFieldSet %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% EndUIContentBlock %}
|
|
||||||
|
{% EndUIContentBlock %}
|
||||||
|
{% endapply %}
|
||||||
@@ -1,7 +1,11 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
|
|
||||||
{% UIContentBlock Standard {'aContainerClasses':['ibo-update-core']} %}
|
{% UIContentBlock Standard {'aContainerClasses':['ibo-update-core']} %}
|
||||||
|
|
||||||
{% UIPanel Neutral {sTitle:'iTopUpdate:UI:PageTitle'|dict_s} %}
|
{% UIPanel Neutral {sTitle:'iTopUpdate:UI:PageTitle'|dict_s} %}
|
||||||
|
|
||||||
{% UIContentBlock Standard {'aContainerClasses': ['display_block', 'display-files']} %}
|
{% UIContentBlock Standard {'aContainerClasses': ['display_block', 'display-files']} %}
|
||||||
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Status'|dict_s} %}
|
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Status'|dict_s} %}
|
||||||
{% UIAlert ForInformation {'sId':'header-requirements', 'IsCollapsible':false, 'IsClosable':false} %}
|
{% UIAlert ForInformation {'sId':'header-requirements', 'IsCollapsible':false, 'IsClosable':false} %}
|
||||||
@@ -14,26 +18,34 @@
|
|||||||
{% EndUIContentBlock %}
|
{% EndUIContentBlock %}
|
||||||
{% EndUICollapsibleSection %}
|
{% EndUICollapsibleSection %}
|
||||||
{% EndUIAlert %}
|
{% EndUIAlert %}
|
||||||
|
|
||||||
{% UIField Standard {'sLabel':'iTopUpdate:UI:CurrentVersion'|dict_s} %}
|
{% UIField Standard {'sLabel':'iTopUpdate:UI:CurrentVersion'|dict_s} %}
|
||||||
{{ 'UI:iTopVersion:Long'|dict_format(constant('ITOP_APPLICATION'), constant('ITOP_VERSION'), constant('ITOP_REVISION'), constant('ITOP_BUILD_DATE')) }}
|
{{ 'UI:iTopVersion:Long'|dict_format(constant('ITOP_APPLICATION'), constant('ITOP_VERSION'), constant('ITOP_REVISION'), constant('ITOP_BUILD_DATE')) }}
|
||||||
{% EndUIField %}
|
{% EndUIField %}
|
||||||
|
|
||||||
{% UIField Standard {'sLabel':'iTopUpdate:UI:DiskFreeSpace'|dict_s} %}
|
{% UIField Standard {'sLabel':'iTopUpdate:UI:DiskFreeSpace'|dict_s} %}
|
||||||
{{ sDiskFreeSpace }}
|
{{ sDiskFreeSpace }}
|
||||||
{% EndUIField %}
|
{% EndUIField %}
|
||||||
|
|
||||||
{% UIField Standard {'sLabel':'iTopUpdate:UI:ItopDiskSpace'|dict_s, 'ValueId':'itop-disk-space'} %}
|
{% UIField Standard {'sLabel':'iTopUpdate:UI:ItopDiskSpace'|dict_s, 'ValueId':'itop-disk-space'} %}
|
||||||
{% UISpinner Standard {} %}
|
{% UISpinner Standard {} %}
|
||||||
{% EndUIField %}
|
{% EndUIField %}
|
||||||
|
|
||||||
{% UIField Standard {'sLabel':'iTopUpdate:UI:DBDiskSpace'|dict_s, 'ValueId':'db-disk-space'} %}
|
{% UIField Standard {'sLabel':'iTopUpdate:UI:DBDiskSpace'|dict_s, 'ValueId':'db-disk-space'} %}
|
||||||
{% UISpinner Standard {} %}
|
{% UISpinner Standard {} %}
|
||||||
{% EndUIField %}
|
{% EndUIField %}
|
||||||
|
|
||||||
{% UIField Standard {'sLabel':'iTopUpdate:UI:FileUploadMaxSize'|dict_s} %}
|
{% UIField Standard {'sLabel':'iTopUpdate:UI:FileUploadMaxSize'|dict_s} %}
|
||||||
{{ sFileUploadMaxSize }}
|
{{ sFileUploadMaxSize }}
|
||||||
{% EndUIField %}
|
{% EndUIField %}
|
||||||
|
|
||||||
{% EndUIFieldSet %}
|
{% EndUIFieldSet %}
|
||||||
|
|
||||||
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:SelectUpdateFile'|dict_s, 'sId':'form-update-outer'} %}
|
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:SelectUpdateFile'|dict_s, 'sId':'form-update-outer'} %}
|
||||||
{% UIForm Standard {} %}
|
{% UIForm Standard {} %}
|
||||||
{% UIInput ForHidden {'sName':'route', 'sValue':'core_update.confirm_update'} %}
|
{% UIInput ForHidden {'sName':'route', 'sValue':'core_update.confirm_update'} %}
|
||||||
{% UIInput ForHidden {'sName':'transaction_id', 'sValue':sTransactionId} %}
|
{% UIInput ForHidden {'sName':'transaction_id', 'sValue':sTransactionId} %}
|
||||||
|
|
||||||
{% UIAlert ForFailure {'sId':'header-file-size', 'IsHidden':true} %}
|
{% UIAlert ForFailure {'sId':'header-file-size', 'IsHidden':true} %}
|
||||||
{% UIContentBlock Standard {'aContainerClasses':['ibo-file-size-error']} %}
|
{% UIContentBlock Standard {'aContainerClasses':['ibo-file-size-error']} %}
|
||||||
{{ 'iTopUpdate:Error:FileUploadMaxSizeTooSmall'|dict_s }}
|
{{ 'iTopUpdate:Error:FileUploadMaxSizeTooSmall'|dict_s }}
|
||||||
@@ -45,25 +57,34 @@
|
|||||||
{{ 'iTopUpdate:UI:UploadMaxFileSize'|dict_format(sUploadMaxSize) }}
|
{{ 'iTopUpdate:UI:UploadMaxFileSize'|dict_format(sUploadMaxSize) }}
|
||||||
{% EndUIContentBlock %}
|
{% EndUIContentBlock %}
|
||||||
{% EndUIAlert %}
|
{% EndUIAlert %}
|
||||||
|
|
||||||
{% UIAlert ForInformation {'sId':'check-in-progress', 'IsHidden':false} %}
|
{% UIAlert ForInformation {'sId':'check-in-progress', 'IsHidden':false} %}
|
||||||
{{ 'iTopUpdate:UI:CheckInProgress'|dict_s }}
|
{{ 'iTopUpdate:UI:CheckInProgress'|dict_s }}
|
||||||
{% EndUIAlert %}
|
{% EndUIAlert %}
|
||||||
|
|
||||||
{% UIFileSelect Standard {sName: 'file', sId: 'file','AddCSSClass':'ibo-is-hidden'} %}
|
{% UIFileSelect Standard {sName: 'file', sId: 'file','AddCSSClass':'ibo-is-hidden'} %}
|
||||||
|
|
||||||
{% UIAlert ForWarning {'sId':'dobackup-warning', 'IsHidden':true} %}
|
{% UIAlert ForWarning {'sId':'dobackup-warning', 'IsHidden':true} %}
|
||||||
{{ 'iTopUpdate:UI:DoBackup:Warning'|dict_s }}
|
{{ 'iTopUpdate:UI:DoBackup:Warning'|dict_s }}
|
||||||
{% EndUIAlert %}
|
{% EndUIAlert %}
|
||||||
|
|
||||||
{% UIContentBlock Standard {'aContainerClasses':['ibo-font-ral-nor-150']} %}
|
{% UIContentBlock Standard {'aContainerClasses':['ibo-font-ral-nor-150']} %}
|
||||||
{% UIInput Standard {'sType':'checkbox', 'sId':'doBackup', 'sName':'doBackup', 'sValue':'1', 'IsChecked':true, 'CSSClasses':['ibo-input-checkbox', 'ibo-input--label-left'], 'Label':'iTopUpdate:UI:DoBackup:Label'|dict_s} %}
|
{% UIInput Standard {'sType':'checkbox', 'sId':'doBackup', 'sName':'doBackup', 'sValue':'1', 'IsChecked':true, 'CSSClasses':['ibo-input-checkbox', 'ibo-input--label-left'], 'Label':'iTopUpdate:UI:DoBackup:Label'|dict_s} %}
|
||||||
{% EndUIContentBlock %}
|
{% EndUIContentBlock %}
|
||||||
|
|
||||||
{% UIContentBlock Standard {'aContainerClasses':['ibo-font-ral-nor-150']} %}
|
{% UIContentBlock Standard {'aContainerClasses':['ibo-font-ral-nor-150']} %}
|
||||||
{% UIInput Standard {'sType':'checkbox', 'sId':'doFilesArchive', 'sName':'doFilesArchive', 'sValue':'1', 'IsChecked':true, 'CSSClasses':['ibo-input-checkbox', 'ibo-input--label-left'], 'Label':'iTopUpdate:UI:DoFilesArchive'|dict_s} %}
|
{% UIInput Standard {'sType':'checkbox', 'sId':'doFilesArchive', 'sName':'doFilesArchive', 'sValue':'1', 'IsChecked':true, 'CSSClasses':['ibo-input-checkbox', 'ibo-input--label-left'], 'Label':'iTopUpdate:UI:DoFilesArchive'|dict_s} %}
|
||||||
{% EndUIContentBlock %}
|
{% EndUIContentBlock %}
|
||||||
|
|
||||||
{% UIContentBlock Standard {'aContainerClasses':['ibo_check_update_submit']} %}
|
{% UIContentBlock Standard {'aContainerClasses':['ibo_check_update_submit']} %}
|
||||||
{% UIButton ForPrimaryAction {'sLabel':'iTopUpdate:UI:CheckUpdate'|dict_s, 'sId':'check-update', 'bIsSubmit':true, 'IsDisabled':true} %}
|
{% UIButton ForPrimaryAction {'sLabel':'iTopUpdate:UI:CheckUpdate'|dict_s, 'sId':'check-update', 'bIsSubmit':true, 'IsDisabled':true} %}
|
||||||
{% UISpinner Standard {'sId':'submit-wait', 'IsHidden':true} %}
|
{% UISpinner Standard {'sId':'submit-wait', 'IsHidden':true} %}
|
||||||
{% EndUIContentBlock %}
|
{% EndUIContentBlock %}
|
||||||
|
|
||||||
{% EndUIForm %}
|
{% EndUIForm %}
|
||||||
|
|
||||||
{% EndUIFieldSet %}
|
{% EndUIFieldSet %}
|
||||||
|
|
||||||
{% if bIsSetupLaunchButtonEnabled %}
|
{% if bIsSetupLaunchButtonEnabled %}
|
||||||
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Setup'|dict_s} %}
|
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:Setup'|dict_s} %}
|
||||||
{% UIForm Standard {'sId':'launch-setup-form', Action:sLaunchSetupUrl} %}
|
{% UIForm Standard {'sId':'launch-setup-form', Action:sLaunchSetupUrl} %}
|
||||||
@@ -78,9 +99,14 @@
|
|||||||
{% UISpinner Standard {sId:'fast-setup-wait', IsHidden:true} %}
|
{% UISpinner Standard {sId:'fast-setup-wait', IsHidden:true} %}
|
||||||
{% EndUIFieldSet %}
|
{% EndUIFieldSet %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:History'|dict_s} %}
|
{% UIFieldSet Standard {'sLegend':'iTopUpdate:UI:History'|dict_s} %}
|
||||||
{% UIDataTable ForRendering {'sListId':'iboupdatehistory', 'oSet':oSet} %}{% EndUIDataTable %}
|
{% UIDataTable ForRendering {'sListId':'iboupdatehistory', 'oSet':oSet} %}{% EndUIDataTable %}
|
||||||
{% EndUIFieldSet %}
|
{% EndUIFieldSet %}
|
||||||
|
|
||||||
{% EndUIContentBlock %}
|
{% EndUIContentBlock %}
|
||||||
|
|
||||||
{% EndUIPanel %}
|
{% EndUIPanel %}
|
||||||
{% EndUIContentBlock %}
|
|
||||||
|
{% EndUIContentBlock %}
|
||||||
|
{% endapply %}
|
||||||
@@ -1,64 +1,68 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{% UIContentBlock Standard {aContainerClasses: ['ibo-update-core', 'ibo-setup--wizard']} %}
|
|
||||||
|
|
||||||
{% UIContentBlock Standard {'aContainerClasses': ['ibo-setup--wizard--content']} %}
|
{% apply spaceless %}
|
||||||
{% UIFieldSet Standard {sLegend:'iTopUpdate:UI:Progress'|dict_s, sId:'installation_progress'} %}
|
|
||||||
{# Todo 3.0 Add Progress bar UIBlock #}
|
|
||||||
<div id="progress_content">
|
|
||||||
<span id="setup_msg">{{ 'iTopUpdate:UI:SetupMessage:Ready'|dict_s }}</span>
|
|
||||||
<div id="progress">0%</div>
|
|
||||||
</div>
|
|
||||||
{% EndUIFieldSet %}
|
|
||||||
|
|
||||||
{% UIFieldSet Standard {sLegend:'iTopUpdate:UI:Status'|dict_s} %}
|
{% UIContentBlock Standard {aContainerClasses: ['ibo-update-core', 'ibo-setup--wizard']} %}
|
||||||
{% UIAlert ForSuccess {sId:'new_version', sTitle:'iTopUpdate:UI:NewVersion'|dict_s, IsHidden:true, IsCollapsible:false, IsClosable:false} %}
|
|
||||||
{% UIContentBlock Standard {aContainerClasses:['ibo-update-core--current-version']} %}
|
|
||||||
{{ sCurrentVersion }}
|
|
||||||
{% EndUIContentBlock %}
|
|
||||||
{% EndUIAlert %}
|
|
||||||
{% UIAlert ForInformation {sId:'current_version', IsCollapsible:false, IsClosable:false} %}
|
|
||||||
{% UIContentBlock Standard {aContainerClasses:['ibo-update-core--current-version']} %}
|
|
||||||
{{ sCurrentVersion }}
|
|
||||||
{% EndUIContentBlock %}
|
|
||||||
{% EndUIAlert %}
|
|
||||||
|
|
||||||
{% if bDoBackup %}
|
{% UIContentBlock Standard {'aContainerClasses': ['ibo-setup--wizard--content']} %}
|
||||||
{% UIAlert ForInformation {sId:'do_backup_done', sTitle:'iTopUpdate:UI:WithDBBackup'|dict_s, sContent:sBackupFile, IsHidden:true} %}{% EndUIAlert %}
|
{% UIFieldSet Standard {sLegend:'iTopUpdate:UI:Progress'|dict_s, sId:'installation_progress'} %}
|
||||||
{% endif %}
|
{# Todo 3.0 Add Progress bar UIBlock #}
|
||||||
|
<div id="progress_content">
|
||||||
|
<span id="setup_msg">{{ 'iTopUpdate:UI:SetupMessage:Ready'|dict_s }}</span>
|
||||||
|
<div id="progress">0%</div>
|
||||||
|
</div>
|
||||||
|
{% EndUIFieldSet %}
|
||||||
|
|
||||||
{% if bDoFilesArchive %}
|
{% UIFieldSet Standard {sLegend:'iTopUpdate:UI:Status'|dict_s} %}
|
||||||
{% UIAlert ForInformation {sId:'do_files_archive_done', sTitle:'iTopUpdate:UI:WithFilesBackup'|dict_s, sContent:sItopArchive, IsHidden:true} %}{% EndUIAlert %}
|
{% UIAlert ForSuccess {sId:'new_version', sTitle:'iTopUpdate:UI:NewVersion'|dict_s, IsHidden:true, IsCollapsible:false, IsClosable:false} %}
|
||||||
{% endif %}
|
{% UIContentBlock Standard {aContainerClasses:['ibo-update-core--current-version']} %}
|
||||||
{% EndUIFieldSet %}
|
{{ sCurrentVersion }}
|
||||||
|
{% EndUIContentBlock %}
|
||||||
|
{% EndUIAlert %}
|
||||||
|
{% UIAlert ForInformation {sId:'current_version', IsCollapsible:false, IsClosable:false} %}
|
||||||
|
{% UIContentBlock Standard {aContainerClasses:['ibo-update-core--current-version']} %}
|
||||||
|
{{ sCurrentVersion }}
|
||||||
|
{% EndUIContentBlock %}
|
||||||
|
{% EndUIAlert %}
|
||||||
|
|
||||||
{% UIFieldSet Standard {sLegend:''} %}
|
|
||||||
{% UIAlert ForFailure {sId:'setup_error_outer', sContent:'', IsCollapsible:false, IsClosable:false, IsHidden:true} %}
|
|
||||||
{% UIContentBlock Standard {sId:'setup_error',aContainerClasses:['ibo-update-core--error']} %}{% EndUIContentBlock %}
|
|
||||||
{% if bDoFilesArchive %}
|
|
||||||
{{ 'iTopUpdate:UI:RestoreArchive'|dict_format(sItopArchive) }}
|
|
||||||
{% endif %}
|
|
||||||
{% if bDoBackup %}
|
{% if bDoBackup %}
|
||||||
{{ 'iTopUpdate:UI:RestoreBackup'|dict_format(sBackupFile) }}
|
{% UIAlert ForInformation {sId:'do_backup_done', sTitle:'iTopUpdate:UI:WithDBBackup'|dict_s, sContent:sBackupFile, IsHidden:true} %}{% EndUIAlert %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ 'iTopUpdate:UI:MaintenanceModeActive'|dict_s }}
|
|
||||||
{% EndUIAlert %}
|
|
||||||
{% EndUIFieldSet %}
|
|
||||||
{% EndUIContentBlock %}
|
|
||||||
|
|
||||||
{% UIToolbar ForButton {'AddCSSClass':'ibo-setup--wizard--buttons-container'} %}
|
{% if bDoFilesArchive %}
|
||||||
{% UIContentBlock Standard {sId:'run_setup',aContainerClasses:['ibo-update-core--run-setup'], IsHidden:true} %}
|
{% UIAlert ForInformation {sId:'do_files_archive_done', sTitle:'iTopUpdate:UI:WithFilesBackup'|dict_s, sContent:sItopArchive, IsHidden:true} %}{% EndUIAlert %}
|
||||||
|
{% endif %}
|
||||||
|
{% EndUIFieldSet %}
|
||||||
|
|
||||||
|
{% UIFieldSet Standard {sLegend:''} %}
|
||||||
|
{% UIAlert ForFailure {sId:'setup_error_outer', sContent:'', IsCollapsible:false, IsClosable:false, IsHidden:true} %}
|
||||||
|
{% UIContentBlock Standard {sId:'setup_error',aContainerClasses:['ibo-update-core--error']} %}{% EndUIContentBlock %}
|
||||||
|
{% if bDoFilesArchive %}
|
||||||
|
{{ 'iTopUpdate:UI:RestoreArchive'|dict_format(sItopArchive) }}
|
||||||
|
{% endif %}
|
||||||
|
{% if bDoBackup %}
|
||||||
|
{{ 'iTopUpdate:UI:RestoreBackup'|dict_format(sBackupFile) }}
|
||||||
|
{% endif %}
|
||||||
|
{{ 'iTopUpdate:UI:MaintenanceModeActive'|dict_s }}
|
||||||
|
{% EndUIAlert %}
|
||||||
|
{% EndUIFieldSet %}
|
||||||
|
{% EndUIContentBlock %}
|
||||||
|
|
||||||
|
{% UIToolbar ForButton {'AddCSSClass':'ibo-setup--wizard--buttons-container'} %}
|
||||||
|
{% UIContentBlock Standard {sId:'run_setup',aContainerClasses:['ibo-update-core--run-setup'], IsHidden:true} %}
|
||||||
|
{% UIForm Standard {CSSClasses:['form-inline']} %}
|
||||||
|
{% UIInput ForHidden {sName:'route', sValue:'core_update.run_setup'} %}
|
||||||
|
{% UIInput ForHidden {sName:'authent', sValue:sSetupToken} %}
|
||||||
|
{% UIInput ForHidden {sName:'', sValue:''} %}
|
||||||
|
{% UIButton ForPrimaryAction {sLabel:'iTopUpdate:UI:RunSetup'|dict_s, sId:'run_setup', bIsSubmit:true, IsDisabled:false} %}
|
||||||
|
{% EndUIForm %}
|
||||||
|
{% EndUIContentBlock %}
|
||||||
|
{% UIToolbarSpacer Standard {} %}
|
||||||
{% UIForm Standard {CSSClasses:['form-inline']} %}
|
{% UIForm Standard {CSSClasses:['form-inline']} %}
|
||||||
{% UIInput ForHidden {sName:'route', sValue:'core_update.run_setup'} %}
|
{% UIButton ForPrimaryAction {sLabel:'iTopUpdate:UI:Continue'|dict_s, sId:'setup_continue', bIsSubmit:true, IsDisabled:true} %}
|
||||||
{% UIInput ForHidden {sName:'authent', sValue:sSetupToken} %}
|
|
||||||
{% UIInput ForHidden {sName:'', sValue:''} %}
|
|
||||||
{% UIButton ForPrimaryAction {sLabel:'iTopUpdate:UI:RunSetup'|dict_s, sId:'run_setup', bIsSubmit:true, IsDisabled:false} %}
|
|
||||||
{% EndUIForm %}
|
{% EndUIForm %}
|
||||||
{% EndUIContentBlock %}
|
{% EndUIToolbar %}
|
||||||
{% UIToolbarSpacer Standard {} %}
|
|
||||||
{% UIForm Standard {CSSClasses:['form-inline']} %}
|
|
||||||
{% UIButton ForPrimaryAction {sLabel:'iTopUpdate:UI:Continue'|dict_s, sId:'setup_continue', bIsSubmit:true, IsDisabled:true} %}
|
|
||||||
{% EndUIForm %}
|
|
||||||
{% EndUIToolbar %}
|
|
||||||
|
|
||||||
{% EndUIContentBlock %}
|
{% EndUIContentBlock %}
|
||||||
|
{% endapply %}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div style="height:250px;width:100%" class="dashboard_chart" id="my_chart_{{ oUIBlock.sChartId }}{{ oUIBlock.iChartCounter }}">
|
{% apply spaceless %}
|
||||||
<div style="height:200px;line-height:200px;vertical-align:center;text-align:center;width:100%">
|
<div style="height:250px;width:100%" class="dashboard_chart" id="my_chart_{{ oUIBlock.sChartId }}{{ oUIBlock.iChartCounter }}">
|
||||||
<img src="{{ get_absolute_url_app_root() }}images/indicator.gif">
|
<div style="height:200px;line-height:200px;vertical-align:center;text-align:center;width:100%">
|
||||||
|
<img src="{{ get_absolute_url_app_root() }}images/indicator.gif">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endapply %}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
$.post('{{ oUIBlock.sUrl|escape('js') }}', {}, function (data) {
|
$.post('{{ oUIBlock.sUrl|escape('js') }}', {}, function (data) {
|
||||||
$('body').append(data);
|
$('body').append(data);
|
||||||
});
|
});
|
||||||
|
{% endapply %}
|
||||||
@@ -1,27 +1,29 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlockCode() }}">
|
{% apply spaceless %}
|
||||||
<div>
|
<div id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlockCode() }}">
|
||||||
<table style="width:100%" class="transparent">
|
<div>
|
||||||
<tr>
|
<table style="width:100%" class="transparent">
|
||||||
<td><a href="{{ oUIBlock.sDownloadLink }}" class="ibo-block-csv--download-link ibo-button ibo-is-alternative ibo-is-primary">{{ 'UI:Download-CSV'|dict_format(oUIBlock.sCsvFile) }}</a>{{ oUIBlock.sCharsetNotice }}</td>
|
<tr>
|
||||||
<td style="text-align:right">
|
<td><a href="{{ oUIBlock.sDownloadLink }}" class="ibo-block-csv--download-link ibo-button ibo-is-alternative ibo-is-primary">{{ 'UI:Download-CSV'|dict_format(oUIBlock.sCsvFile) }}</a>{{ oUIBlock.sCharsetNotice }}</td>
|
||||||
<input type="checkbox" {{ oUIBlock.sChecked }} onClick="window.location.href='{{ oUIBlock.sLinkToToggle }}'">
|
<td style="text-align:right">
|
||||||
{{ 'UI:CSVExport:AdvancedMode'|dict_s }}
|
<input type="checkbox" {{ oUIBlock.sChecked }} onClick="window.location.href='{{ oUIBlock.sLinkToToggle }}'">
|
||||||
</td>
|
{{ 'UI:CSVExport:AdvancedMode'|dict_s }}
|
||||||
</tr>
|
</td>
|
||||||
</table>
|
</tr>
|
||||||
{% if oUIBlock.bAdvancedMode %}
|
</table>
|
||||||
<p>
|
{% if oUIBlock.bAdvancedMode %}
|
||||||
{{ 'UI:CSVExport:AdvancedMode+'|dict_s }}
|
<p>
|
||||||
</p>
|
{{ 'UI:CSVExport:AdvancedMode+'|dict_s }}
|
||||||
{% endif %}
|
</p>
|
||||||
</div>
|
{% endif %}
|
||||||
|
|
||||||
<div id="csv_content_loading">
|
|
||||||
<div style="width: 250px; height: 20px; background: url(../setup/orange-progress.gif); border: 1px #999 solid; margin-left:auto; margin-right: auto; text-align: center;">
|
|
||||||
{{ 'UI:Loading'|dict_s }}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="csv_content_loading">
|
||||||
|
<div style="width: 250px; height: 20px; background: url(../setup/orange-progress.gif); border: 1px #999 solid; margin-left:auto; margin-right: auto; text-align: center;">
|
||||||
|
{{ 'UI:Loading'|dict_s }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<textarea id="csv_content" style="display:none;"></textarea>
|
||||||
</div>
|
</div>
|
||||||
<textarea id="csv_content" style="display:none;"></textarea>
|
{% endapply %}
|
||||||
</div>
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
$.post(
|
$.post(
|
||||||
'{{ oUIBlock.sAjaxLink|escape('js') }}',
|
'{{ oUIBlock.sAjaxLink|escape('js') }}',
|
||||||
{{ oUIBlock.sJsonParams|raw }},
|
{{ oUIBlock.sJsonParams|raw }},
|
||||||
@@ -7,4 +8,5 @@ $.post(
|
|||||||
$('#csv_content').html(data);
|
$('#csv_content').html(data);
|
||||||
$('#csv_content_loading').hide();
|
$('#csv_content_loading').hide();
|
||||||
$('#csv_content').show();
|
$('#csv_content').show();
|
||||||
});
|
});
|
||||||
|
{% endapply %}
|
||||||
@@ -1,21 +1,25 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{% if oUIBlock.bEmptySet or oUIBlock.bNotAuthorized %}
|
{% apply spaceless %}
|
||||||
<div class="ibo-block-list--empty-text">{{ 'UI:NoObjectToDisplay'|dict_s }}</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# TODO 3.1: This section should be removed if BlockList is no longer used as is, but always with a table #}
|
{% if oUIBlock.bEmptySet or oUIBlock.bNotAuthorized %}
|
||||||
{% if oUIBlock.bCreateNew %}
|
<div class="ibo-block-list--empty-text">{{ 'UI:NoObjectToDisplay'|dict_s }}</div>
|
||||||
<div class="ibo-block-list--create-action">
|
{% endif %}
|
||||||
<a{{ oUIBlock.sLinkTarget }} href="{{ oUIBlock.sAbsoluteUrlAppRoot }}pages/UI.php?operation=new&class={{ oUIBlock.sClass }}&{{ oUIBlock.sParams }}{{ oUIBlock.sDefault }}">
|
|
||||||
<span class="ibo-block-list--create-icon">
|
|
||||||
<span class="fas fa-plus"></span>
|
|
||||||
</span>
|
|
||||||
<span class="ibo-block-list--create-label">{{ 'UI:ClickToCreateNew'|dict_format(oUIBlock.sClassLabel) }}</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
{# TODO 3.1: This section should be removed if BlockList is no longer used as is, but always with a table #}
|
||||||
{{- render_block(oSubBlock, {aPage: aPage}) -}}
|
{% if oUIBlock.bCreateNew %}
|
||||||
{% endfor %}
|
<div class="ibo-block-list--create-action">
|
||||||
|
<a{{ oUIBlock.sLinkTarget }} href="{{ oUIBlock.sAbsoluteUrlAppRoot }}pages/UI.php?operation=new&class={{ oUIBlock.sClass }}&{{ oUIBlock.sParams }}{{ oUIBlock.sDefault }}">
|
||||||
|
<span class="ibo-block-list--create-icon">
|
||||||
|
<span class="fas fa-plus"></span>
|
||||||
|
</span>
|
||||||
|
<span class="ibo-block-list--create-label">{{ 'UI:ClickToCreateNew'|dict_format(oUIBlock.sClassLabel) }}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
||||||
|
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{% if oUIBlock.sEventAttachedData is not empty %}
|
{% apply spaceless %}
|
||||||
$('body').trigger('update_history.itop', [{{ oUIBlock.sEventAttachedData|raw }}]);
|
{% if oUIBlock.sEventAttachedData is not empty %}
|
||||||
{% endif %}
|
$('body').trigger('update_history.itop', [{{ oUIBlock.sEventAttachedData|raw }}]);
|
||||||
|
{% endif %}
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
oWidget{{ oUIBlock.oUILinksDirectWidget.GetInputId() }} = $('#{{ oUIBlock.oUILinksDirectWidget.GetInputId() }}').directlinks({
|
oWidget{{ oUIBlock.oUILinksDirectWidget.GetInputId() }} = $('#{{ oUIBlock.oUILinksDirectWidget.GetInputId() }}').directlinks({
|
||||||
class_name: '{{ oUIBlock.oUILinksDirectWidget.GetClass() }}',
|
class_name: '{{ oUIBlock.oUILinksDirectWidget.GetClass() }}',
|
||||||
att_code: '{{ oUIBlock.oUILinksDirectWidget.GetAttCode() }}',
|
att_code: '{{ oUIBlock.oUILinksDirectWidget.GetAttCode() }}',
|
||||||
@@ -7,4 +8,5 @@ oWidget{{ oUIBlock.oUILinksDirectWidget.GetInputId() }} = $('#{{ oUIBlock.oUILin
|
|||||||
submit_to: '{{ oUIBlock.sSubmitUrl }}',
|
submit_to: '{{ oUIBlock.sSubmitUrl }}',
|
||||||
oWizardHelper: {{ oUIBlock.sWizHelper }},
|
oWizardHelper: {{ oUIBlock.sWizHelper }},
|
||||||
do_search: '{{ oUIBlock.sJSDoSearch }}'
|
do_search: '{{ oUIBlock.sJSDoSearch }}'
|
||||||
});
|
});
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }} = new LinksWidget(
|
oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }} = new LinksWidget(
|
||||||
'{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }}',
|
'{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }}',
|
||||||
'{{ oUIBlock.oUILinksWidget.GetClass() }}',
|
'{{ oUIBlock.oUILinksWidget.GetClass() }}',
|
||||||
@@ -13,4 +14,5 @@ oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }} = new LinksWidget(
|
|||||||
{{ oUIBlock.iMaxAddedId }},
|
{{ oUIBlock.iMaxAddedId }},
|
||||||
{{ oUIBlock.aRemoved | json_encode | raw }}
|
{{ oUIBlock.aRemoved | json_encode | raw }}
|
||||||
);
|
);
|
||||||
oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }}.Init();
|
oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }}.Init();
|
||||||
|
{% endapply %}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }}.RegisterChange();
|
{% apply spaceless %}
|
||||||
|
oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }}.RegisterChange();
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
|
|
||||||
$('#dlg_{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }}').dialog({
|
$('#dlg_{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }}').dialog({
|
||||||
width: $(window).width()*0.8,
|
width: $(window).width()*0.8,
|
||||||
height: $(window).height()*0.8,
|
height: $(window).height()*0.8,
|
||||||
@@ -28,4 +30,6 @@ $('#dlg_{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }}').dialog({
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('#SearchFormToAdd_{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }} form').on('submit.uilinksWizard', oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }}.SearchObjectsToAdd);
|
$('#SearchFormToAdd_{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }} form').on('submit.uilinksWizard', oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }}.SearchObjectsToAdd);
|
||||||
$('#SearchFormToAdd_{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }}').on('resize', oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }}.UpdateSizes);
|
$('#SearchFormToAdd_{{ oUIBlock.oUILinksWidget.GetLinkedSetId() }}').on('resize', oWidget{{ oUIBlock.oUILinksWidget.GetInputId() }}.UpdateSizes);
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
{{ oUIBlock.GetWidgetName() }} = $('#{{ oUIBlock.GetId() }}').links_view_table({
|
{{ oUIBlock.GetWidgetName() }} = $('#{{ oUIBlock.GetId() }}').links_view_table({
|
||||||
link_class: '{{ oUIBlock.GetLinkedClass() }}',
|
link_class: '{{ oUIBlock.GetLinkedClass() }}',
|
||||||
external_key_to_me: '{{ oUIBlock.GetExternalKeyToMe() }}'
|
external_key_to_me: '{{ oUIBlock.GetExternalKeyToMe() }}'
|
||||||
});
|
});
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
|
|
||||||
var selectionCount{{ oUIBlock.sIdShortcuts }} = $('#{{ oUIBlock.sIdShortcuts }} [name="selectionCount"]');
|
var selectionCount{{ oUIBlock.sIdShortcuts }} = $('#{{ oUIBlock.sIdShortcuts }} [name="selectionCount"]');
|
||||||
selectionCount{{ oUIBlock.sIdShortcuts }}.on('change',function()
|
selectionCount{{ oUIBlock.sIdShortcuts }}.on('change',function()
|
||||||
{
|
{
|
||||||
@@ -45,4 +47,6 @@ $('#shortcut_btn_delete').on('click', function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -1,17 +1,21 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div class="explain-printable not-printable">
|
{% apply spaceless %}
|
||||||
<p>{{'UI:ExplainPrintable'| dict_format('<i class="fas fa-eye"></i>')| raw}}</p>
|
|
||||||
<div id="hiddeable_chapters"></div>
|
|
||||||
<button class="ibo-button ibo-is-regular ibo-is-primary action" onclick="window.print()">{{'UI:Button:GoPrint'| dict_s}}</button>  
|
|
||||||
<button class="ibo-button ibo-is-regular ibo-is-secondary cancel" onclick="window.close()">{{ 'UI:Button:Cancel'| dict_s}}</button>  
|
|
||||||
|
|
||||||
<select name="text" onchange='$(".printable-content").width(this.value);'>
|
<div class="explain-printable not-printable">
|
||||||
<option value='100%'>{{ 'UI:PrintResolution:FullSize'|dict_s }}</option>
|
<p>{{'UI:ExplainPrintable'| dict_format('<i class="fas fa-eye"></i>')| raw}}</p>
|
||||||
<option value='19cm'>{{ 'UI:PrintResolution:A4Portrait'|dict_s }}</option>
|
<div id="hiddeable_chapters"></div>
|
||||||
<option value='27.7cm' selected>{{ 'UI:PrintResolution:A4Landscape'|dict_s }}</option>
|
<button class="ibo-button ibo-is-regular ibo-is-primary action" onclick="window.print()">{{'UI:Button:GoPrint'| dict_s}}</button>  
|
||||||
<option value='19.6cm'>{{ 'UI:PrintResolution:LetterPortrait'|dict_s }}</option>
|
<button class="ibo-button ibo-is-regular ibo-is-secondary cancel" onclick="window.close()">{{ 'UI:Button:Cancel'| dict_s}}</button>  
|
||||||
<option value='25.9cm'>{{ 'UI:PrintResolution:LetterLandscape'|dict_s }}</option>
|
|
||||||
</select>
|
|
||||||
|
|
||||||
</div>
|
<select name="text" onchange='$(".printable-content").width(this.value);'>
|
||||||
|
<option value='100%'>{{ 'UI:PrintResolution:FullSize'|dict_s }}</option>
|
||||||
|
<option value='19cm'>{{ 'UI:PrintResolution:A4Portrait'|dict_s }}</option>
|
||||||
|
<option value='27.7cm' selected>{{ 'UI:PrintResolution:A4Landscape'|dict_s }}</option>
|
||||||
|
<option value='19.6cm'>{{ 'UI:PrintResolution:LetterPortrait'|dict_s }}</option>
|
||||||
|
<option value='25.9cm'>{{ 'UI:PrintResolution:LetterLandscape'|dict_s }}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
var oHiddeableChapters = {};
|
{% apply spaceless %}
|
||||||
|
|
||||||
|
var oHiddeableChapters = {};
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
|
|
||||||
var sHiddeableChapters = '<ul role="tablist" class="ibo-block-print--tablist">';
|
var sHiddeableChapters = '<ul role="tablist" class="ibo-block-print--tablist">';
|
||||||
for (sId in oHiddeableChapters)
|
for (sId in oHiddeableChapters)
|
||||||
{
|
{
|
||||||
@@ -25,4 +27,6 @@ $('fieldset').each(function() {
|
|||||||
|
|
||||||
$('legend').css('cursor', 'pointer').on('click', function(){
|
$('legend').css('cursor', 'pointer').on('click', function(){
|
||||||
$(this).parent('fieldset').toggleClass('not-printable strikethrough');
|
$(this).parent('fieldset').toggleClass('not-printable strikethrough');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -1,17 +1,18 @@
|
|||||||
|
{% apply spaceless %}
|
||||||
<span id="{{ oUIBlock.GetId() }}"
|
<span id="{{ oUIBlock.GetId() }}"
|
||||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }}{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %}"
|
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }}{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %}"
|
||||||
data-role="ibo-button-group"
|
data-role="ibo-button-group"
|
||||||
{% if oUIBlock.GetDataAttributes() %}
|
{% if oUIBlock.GetDataAttributes() %}
|
||||||
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
||||||
data-{{ sName }}="{{ sValue }}"
|
data-{{ sName }}="{{ sValue }}"
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
>
|
>
|
||||||
{% for oButton in oUIBlock.GetButtons() %}
|
{% for oButton in oUIBlock.GetButtons() %}
|
||||||
{{- render_block(oButton) -}}
|
{{ render_block(oButton) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</span>
|
</span>
|
||||||
{% for oExtraBlock in oUIBlock.GetExtraBlocks() %}
|
{% for oExtraBlock in oUIBlock.GetExtraBlocks() %}
|
||||||
{{- render_block(oExtraBlock) -}}
|
{{ render_block(oExtraBlock) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% endapply %}
|
||||||
@@ -1,31 +1,33 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div class="ibo-dashlet-badge--body{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %}" id="{{ oUIBlock.GetId() }}"
|
{% apply spaceless %}
|
||||||
data-role="ibo-dashlet-badge--body"
|
<div class="ibo-dashlet-badge--body{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %}" id="{{ oUIBlock.GetId() }}"
|
||||||
{% if oUIBlock.HasClassDescription() %}
|
data-role="ibo-dashlet-badge--body"
|
||||||
{# Display both class name and description as the name could be truncated if too long #}
|
{% if oUIBlock.HasClassDescription() %}
|
||||||
data-tooltip-content="{{ '<div class="ibo-dashlet-badge--body--tooltip-title">'|escape }}{{ oUIBlock.GetClassLabel() }}{{ '</div><div class="ibo-dashlet-badge--body--tooltip-description">'|escape }}{{ oUIBlock.GetClassDescription() }}{{ '</div>'|escape }}"
|
{# Display both class name and description as the name could be truncated if too long #}
|
||||||
data-tooltip-html-enabled="true"
|
data-tooltip-content="{{ '<div class="ibo-dashlet-badge--body--tooltip-title">'|escape }}{{ oUIBlock.GetClassLabel() }}{{ '</div><div class="ibo-dashlet-badge--body--tooltip-description">'|escape }}{{ oUIBlock.GetClassDescription() }}{{ '</div>'|escape }}"
|
||||||
{% else %}
|
data-tooltip-html-enabled="true"
|
||||||
{# Display only class name as it could be truncated if too long #}
|
{% else %}
|
||||||
data-tooltip-content="{{ oUIBlock.GetClassLabel() }}"
|
{# Display only class name as it could be truncated if too long #}
|
||||||
{% endif %}
|
data-tooltip-content="{{ oUIBlock.GetClassLabel() }}"
|
||||||
{# Delay display to avoid having all tooltips appearing when mouse is just passing through the tabs #}
|
{% endif %}
|
||||||
data-tooltip-show-delay="300">
|
{# Delay display to avoid having all tooltips appearing when mouse is just passing through the tabs #}
|
||||||
<div class="ibo-dashlet-badge--icon-container">
|
data-tooltip-show-delay="300">
|
||||||
{# Mind the empty "alt" attribute https://www.w3.org/WAI/tutorials/images/decorative/ #}
|
<div class="ibo-dashlet-badge--icon-container">
|
||||||
<img class="ibo-dashlet-badge--icon" src="{{ oUIBlock.GetClassIconUrl() }}" alt="">
|
{# Mind the empty "alt" attribute https://www.w3.org/WAI/tutorials/images/decorative/ #}
|
||||||
</div>
|
<img class="ibo-dashlet-badge--icon" src="{{ oUIBlock.GetClassIconUrl() }}" alt="">
|
||||||
<div class="ibo-dashlet-badge--actions">
|
</div>
|
||||||
<a class="ibo-dashlet-badge--action-list" href="{{ oUIBlock.GetHyperlink() }}" data-role="ibo-dashlet-badge--action-list">
|
<div class="ibo-dashlet-badge--actions">
|
||||||
<span class="ibo-dashlet-badge--action-list-count">{{ oUIBlock.GetCount() }}</span>
|
<a class="ibo-dashlet-badge--action-list" href="{{ oUIBlock.GetHyperlink() }}" data-role="ibo-dashlet-badge--action-list">
|
||||||
<span class="ibo-dashlet-badge--action-list-label">{{ oUIBlock.GetClassLabel() }}</span>
|
<span class="ibo-dashlet-badge--action-list-count">{{ oUIBlock.GetCount() }}</span>
|
||||||
</a>
|
<span class="ibo-dashlet-badge--action-list-label">{{ oUIBlock.GetClassLabel() }}</span>
|
||||||
{% if oUIBlock.GetCreateActionUrl() is not empty %}
|
|
||||||
<a class="ibo-dashlet-badge--action-create" href="{{ oUIBlock.GetCreateActionUrl() }}">
|
|
||||||
<span class="ibo-dashlet-badge--action-create-icon fas fa-plus"></span>
|
|
||||||
<span class="ibo-dashlet-badge--action-create-label">{{ oUIBlock.GetCreateActionLabel() }}</span>
|
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% if oUIBlock.GetCreateActionUrl() is not empty %}
|
||||||
|
<a class="ibo-dashlet-badge--action-create" href="{{ oUIBlock.GetCreateActionUrl() }}">
|
||||||
|
<span class="ibo-dashlet-badge--action-create-icon fas fa-plus"></span>
|
||||||
|
<span class="ibo-dashlet-badge--action-create-label">{{ oUIBlock.GetCreateActionLabel() }}</span>
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endapply %}
|
||||||
@@ -1,15 +1,17 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div id="{{ oUIBlock.GetId() }}" class="ibo-dashlet-header-static {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}" data-role="ibo-dashlet-header-static">
|
{% apply spaceless %}
|
||||||
<div class="ibo-dashlet-header-static--body">
|
<div id="{{ oUIBlock.GetId() }}" class="ibo-dashlet-header-static {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}" data-role="ibo-dashlet-header-static">
|
||||||
{% if oUIBlock.GetIconUrl() is not empty %}
|
<div class="ibo-dashlet-header-static--body">
|
||||||
<div class="ibo-dashlet-header-static--icon-container">
|
{% if oUIBlock.GetIconUrl() is not empty %}
|
||||||
{# Mind the empty "alt" attribute https://www.w3.org/WAI/tutorials/images/decorative/ #}
|
<div class="ibo-dashlet-header-static--icon-container">
|
||||||
<img class="ibo-dashlet-header-static--icon" src="{{ oUIBlock.GetIconUrl()|raw }}" alt="">
|
{# Mind the empty "alt" attribute https://www.w3.org/WAI/tutorials/images/decorative/ #}
|
||||||
</div>
|
<img class="ibo-dashlet-header-static--icon" src="{{ oUIBlock.GetIconUrl()|raw }}" alt="">
|
||||||
{% endif %}
|
</div>
|
||||||
{% if oUIBlock.GetTitle() is not empty %}
|
{% endif %}
|
||||||
<div class="ibo-dashlet-header-static--title">{{ oUIBlock.GetTitle() }}</div>
|
{% if oUIBlock.GetTitle() is not empty %}
|
||||||
{% endif %}
|
<div class="ibo-dashlet-header-static--title">{{ oUIBlock.GetTitle() }}</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endapply %}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div id="{{ oUIBlock.GetId() }}" class="ibo-dashlet-text {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}" data-role="ibo-dashlet-text">
|
{% apply spaceless %}
|
||||||
{# |raw filter is ok here as the escaping is already done by the \DashletPlainText class itself #}
|
<div id="{{ oUIBlock.GetId() }}" class="ibo-dashlet-text {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}" data-role="ibo-dashlet-text">
|
||||||
{{- oUIBlock.GetText()|raw -}}
|
{# |raw filter is ok here as the escaping is already done by the \DashletPlainText class itself #}
|
||||||
</div>
|
{{ oUIBlock.GetText()|raw }}
|
||||||
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,2 +1,5 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -13,9 +13,11 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
>
|
>
|
||||||
{% block iboContentBlockContainer %}
|
{% apply spaceless %}
|
||||||
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
{% block iboContentBlockContainer %}
|
||||||
{{- render_block(oSubBlock, {aPage: aPage}) -}}
|
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
||||||
{% endfor %}
|
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
||||||
{% endblock %}
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
|
{% endapply %}
|
||||||
</form>
|
</form>
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div id="{{ oUIBlock.GetId() }}-container"
|
{% apply spaceless %}
|
||||||
class="ibo-input-file-select--container {% if oUIBlock.GetAdditionalCSSClassesAsString() %}{{ oUIBlock.GetAdditionalCSSClassesAsString() }}{% endif %}
|
<div id="{{ oUIBlock.GetId() }}-container"
|
||||||
{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %}">
|
class="ibo-input-file-select--container {% if oUIBlock.GetAdditionalCSSClassesAsString() %}{{ oUIBlock.GetAdditionalCSSClassesAsString() }}{% endif %}
|
||||||
<label class="ibo-input-file-select">
|
{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %}">
|
||||||
<input id="{{ oUIBlock.GetId() }}" class="ibo-input-file-select--file-input" type="file" name="{{ oUIBlock.GetName() }}">
|
<label class="ibo-input-file-select">
|
||||||
<span class="ibo-button ibo-is-regular ibo-is-primary">{{ oUIBlock.GetButtonText() }}</span>
|
<input id="{{ oUIBlock.GetId() }}" class="ibo-input-file-select--file-input" type="file" name="{{ oUIBlock.GetName() }}">
|
||||||
{% if oUIBlock.GetShowFilename() %}
|
<span class="ibo-button ibo-is-regular ibo-is-primary">{{ oUIBlock.GetButtonText() }}</span>
|
||||||
<span id="{{ oUIBlock.GetId() }}-file-name" class="ibo-input-file-select--file-name">{{ oUIBlock.GetFileName() }}</span>
|
{% if oUIBlock.GetShowFilename() %}
|
||||||
{% endif %}
|
<span id="{{ oUIBlock.GetId() }}-file-name" class="ibo-input-file-select--file-name">{{ oUIBlock.GetFileName() }}</span>
|
||||||
</label>
|
{% endif %}
|
||||||
</div>
|
</label>
|
||||||
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
<div id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }}" data-role="ibo-medallion-icon">
|
<div id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }}" data-role="ibo-medallion-icon">
|
||||||
{% if oUIBlock.GetImageUrl() != '' %}
|
{% if oUIBlock.GetImageUrl() != '' %}
|
||||||
<img class="ibo-medallion-icon--image" src="{{ oUIBlock.GetImageUrl() }}" />
|
<img class="ibo-medallion-icon--image" src="{{ oUIBlock.GetImageUrl() }}" />
|
||||||
@@ -10,4 +11,5 @@
|
|||||||
{% if oUIBlock.GetDescription() != '' %}
|
{% if oUIBlock.GetDescription() != '' %}
|
||||||
<div class="ibo-medallion-icon--description">{{ oUIBlock.GetDescription() }}</div>
|
<div class="ibo-medallion-icon--description">{{ oUIBlock.GetDescription() }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div id="{{ oUIBlock.GetId() }}" class="ibo-spinner ibo-is-{{ oUIBlock.GetSize() }}
|
{% apply spaceless %}
|
||||||
{% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}
|
<div id="{{ oUIBlock.GetId() }}" class="ibo-spinner ibo-is-{{ oUIBlock.GetSize() }}
|
||||||
{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }}
|
{% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}
|
||||||
{{ oUIBlock.GetAdditionalCSSClassesAsString() }}"
|
{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }}
|
||||||
|
{{ oUIBlock.GetAdditionalCSSClassesAsString() }}"
|
||||||
data-role="ibo-spinner">
|
data-role="ibo-spinner">
|
||||||
<i class="ibo-spinner--icon fas fa-sync-alt fa-spin" aria-hidden="true"></i>
|
<i class="ibo-spinner--icon fas fa-sync-alt fa-spin" aria-hidden="true"></i>
|
||||||
{% if oUIBlock.HasDescription() %}
|
{% if oUIBlock.HasDescription() %}
|
||||||
<div class="ibo-spinner--description"> {{ oUIBlock.GetDescription() }} </div>
|
<div class="ibo-spinner--description"> {{ oUIBlock.GetDescription() }} </div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<template id="{{ oUIBlock.GetId() }}" data-role="ibo-template">
|
{% apply spaceless %}
|
||||||
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
<template id="{{ oUIBlock.GetId() }}" data-role="ibo-template">
|
||||||
{{- render_block(oSubBlock, {aPage: aPage}) -}}
|
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
||||||
{% endfor %}
|
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
||||||
</template>
|
{% endfor %}
|
||||||
|
</template>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{{ oUIBlock.GetText() }}
|
{% apply spaceless %}
|
||||||
|
{{ oUIBlock.GetText() }}
|
||||||
|
{% endapply %}
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
<div id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.HasIcon() %}ibo-has-icon{% endif %}{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %}" data-role="ibo-title">
|
{% apply spaceless %}
|
||||||
{% if oUIBlock.HasIcon() %}
|
<div id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.HasIcon() %}ibo-has-icon{% endif %}{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %}" data-role="ibo-title">
|
||||||
<div class="ibo-title--icon">
|
{% if oUIBlock.HasIcon() %}
|
||||||
<div class="ibo-title--icon-background ibo-title--icon-background--must-{{ oUIBlock.GetIconCoverMethod() }} ibo-title--icon-level-{{ oUIBlock.GetLevel() }}" style="background-image: url('{{ oUIBlock.GetIconUrl()|raw }}');"></div>
|
<div class="ibo-title--icon">
|
||||||
|
<div class="ibo-title--icon-background ibo-title--icon-background--must-{{ oUIBlock.GetIconCoverMethod() }} ibo-title--icon-level-{{ oUIBlock.GetLevel() }}" style="background-image: url('{{ oUIBlock.GetIconUrl()|raw }}');"></div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="ibo-title--content">
|
||||||
|
{% block iboPageTitleText %}
|
||||||
|
<h{{ oUIBlock.GetLevel() }} class="ibo-title--text is-size-{{ oUIBlock.GetLevel() + 2 }}">
|
||||||
|
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
||||||
|
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
||||||
|
{% endfor %}
|
||||||
|
</h{{ oUIBlock.GetLevel() }}>
|
||||||
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
<div class="ibo-title--content">
|
|
||||||
{% block iboPageTitleText %}
|
|
||||||
<h{{ oUIBlock.GetLevel() }} class="ibo-title--text is-size-{{ oUIBlock.GetLevel() + 2 }}">
|
|
||||||
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
|
||||||
{{- render_block(oSubBlock, {aPage: aPage}) -}}
|
|
||||||
{% endfor %}
|
|
||||||
</h{{ oUIBlock.GetLevel() }}>
|
|
||||||
{% endblock %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endapply %}
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{# Toolbar #}
|
{# Toolbar #}
|
||||||
<div id="{{ oUIBlock.GetId() }}"
|
{% apply spaceless %}
|
||||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}"
|
<div id="{{ oUIBlock.GetId() }}"
|
||||||
data-role="ibo-toolbar">
|
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}"
|
||||||
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
data-role="ibo-toolbar"
|
||||||
{{- render_block(oSubBlock, {aPage: aPage}) -}}
|
>
|
||||||
{% endfor %}
|
|
||||||
</div>
|
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
||||||
|
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
<span id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }}
|
<span id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }}
|
||||||
{% if oUIBlock.GetAdditionalCSSClassesAsString() %}{{ oUIBlock.GetAdditionalCSSClassesAsString() }}{% endif %}
|
{% if oUIBlock.GetAdditionalCSSClassesAsString() %}{{ oUIBlock.GetAdditionalCSSClassesAsString() }}{% endif %}
|
||||||
{% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}"
|
{% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}"
|
||||||
data-role="ibo-toolbar-vertical-separator">
|
data-role="ibo-toolbar-vertical-separator">
|
||||||
</span>
|
</span>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}">
|
{% apply spaceless %}
|
||||||
</div>
|
<div id="{{ oUIBlock.GetId() }}" class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}">
|
||||||
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -32,6 +32,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ibo-activity-entry--sub-information" data-role="ibo-activity-entry--sub-information">
|
<div class="ibo-activity-entry--sub-information" data-role="ibo-activity-entry--sub-information">
|
||||||
|
{% apply spaceless %}
|
||||||
{% block iboActivityEntrySubInformation %}
|
{% block iboActivityEntrySubInformation %}
|
||||||
{% if oUIBlock.GetOrigin() is not null and oUIBlock.GetOrigin != constant('Combodo\\iTop\\Core\\CMDBChange\\CMDBChangeOrigin::INTERACTIVE') %}
|
{% if oUIBlock.GetOrigin() is not null and oUIBlock.GetOrigin != constant('Combodo\\iTop\\Core\\CMDBChange\\CMDBChangeOrigin::INTERACTIVE') %}
|
||||||
<span class="ibo-activity-entry--origin" data-role="ibo-activity-entry--origin" data-tooltip-content="{{ ('Class:CMDBChange/Attribute:origin/Value:' ~ oUIBlock.GetOrigin())|dict_s }}" data-tooltip-placement="bottom">
|
<span class="ibo-activity-entry--origin" data-role="ibo-activity-entry--origin" data-tooltip-content="{{ ('Class:CMDBChange/Attribute:origin/Value:' ~ oUIBlock.GetOrigin())|dict_s }}" data-tooltip-placement="bottom">
|
||||||
@@ -47,6 +48,7 @@
|
|||||||
data-raw-datetime="{{ oUIBlock.GetRawDateTime() }}"
|
data-raw-datetime="{{ oUIBlock.GetRawDateTime() }}"
|
||||||
data-formatted-datetime="{{ oUIBlock.GetFormattedDateTime() }}">{{ oUIBlock.GetFormattedDateTime() }}</span>
|
data-formatted-datetime="{{ oUIBlock.GetFormattedDateTime() }}">{{ oUIBlock.GetFormattedDateTime() }}</span>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% endapply %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
{% apply spaceless %}
|
||||||
<form id="{{ oUIBlock.GetId() }}"
|
<form id="{{ oUIBlock.GetId() }}"
|
||||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.IsSubmitAutonomous() and (bInitOpened == false) %}ibo-is-closed{% endif %}"
|
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.IsSubmitAutonomous() and (bInitOpened == false) %}ibo-is-closed{% endif %}"
|
||||||
data-role="ibo-caselog-entry-form"
|
data-role="ibo-caselog-entry-form"
|
||||||
@@ -14,17 +15,17 @@
|
|||||||
<div class="ibo-caselog-entry-form--action-buttons--extra-actions"
|
<div class="ibo-caselog-entry-form--action-buttons--extra-actions"
|
||||||
data-role="ibo-caselog-entry-form--action-buttons--extra-actions">
|
data-role="ibo-caselog-entry-form--action-buttons--extra-actions">
|
||||||
{% for TextInputActionButton in oUIBlock.GetExtraActionButtons() %}
|
{% for TextInputActionButton in oUIBlock.GetExtraActionButtons() %}
|
||||||
{{- render_block(TextInputActionButton, {aPage: aPage}) -}}
|
{{ render_block(TextInputActionButton, {aPage: aPage}) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div class="ibo-caselog-entry-form--action-buttons--main-actions" data-role="ibo-caselog-entry-form--action-buttons--main-actions">
|
<div class="ibo-caselog-entry-form--action-buttons--main-actions" data-role="ibo-caselog-entry-form--action-buttons--main-actions">
|
||||||
{% for FormActionButton in oUIBlock.GetMainActionButtons() %}
|
{% for FormActionButton in oUIBlock.GetMainActionButtons() %}
|
||||||
{{- render_block(FormActionButton, {aPage: aPage}) -}}
|
{{ render_block(FormActionButton, {aPage: aPage}) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ibo-caselog-entry-form--text-input" data-role="ibo-caselog-entry-form--text-input">
|
<div class="ibo-caselog-entry-form--text-input" data-role="ibo-caselog-entry-form--text-input">
|
||||||
{{- render_block(oUIBlock.GetTextInput(), {aPage: aPage}) -}}
|
{{ render_block(oUIBlock.GetTextInput(), {aPage: aPage}) }}
|
||||||
</div>
|
</div>
|
||||||
<div class="ibo-caselog-entry-form--extra-inputs" data-role="ibo-caselog-entry-form--extra-inputs">
|
<div class="ibo-caselog-entry-form--extra-inputs" data-role="ibo-caselog-entry-form--extra-inputs">
|
||||||
</div>
|
</div>
|
||||||
@@ -34,4 +35,5 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="ibo-caselog-entry-form--lock-message" data-role="ibo-caselog-entry-form--lock-message"></span>
|
<span class="ibo-caselog-entry-form--lock-message" data-role="ibo-caselog-entry-form--lock-message"></span>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,18 +1,23 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{# Content Block #}
|
{# Content Block #}
|
||||||
{# Important: We don't want the UIContentBlock have a div node based on the inherited CSS classes, otherwise the node would always be present, which is not what we want #}
|
{% apply spaceless %}
|
||||||
{% set bHasDiv = (oUIBlock.GetAdditionalCSSClassesAsString() or oUIBlock.GetDataAttributes() or oUIBlock.IsHidden() or oUIBlock.HasForcedDiv()) %}
|
|
||||||
{% block iboContentBlockContainer %}
|
{# Important: We don't want the UIContentBlock have a div node based on the inherited CSS classes, otherwise the node would always be present, which is not what we want #}
|
||||||
{% if bHasDiv %}
|
{% set bHasDiv = (oUIBlock.GetAdditionalCSSClassesAsString() or oUIBlock.GetDataAttributes() or oUIBlock.IsHidden() or oUIBlock.HasForcedDiv()) %}
|
||||||
<div id="{{ oUIBlock.GetId() }}"
|
|
||||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}"
|
{% block iboContentBlockContainer %}
|
||||||
{% if oUIBlock.GetDataAttributes() %}
|
{% if bHasDiv %}
|
||||||
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
<div id="{{ oUIBlock.GetId() }}"
|
||||||
data-{{ sName }}="{{ sValue }}"
|
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} {% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}"
|
||||||
{% endfor %}
|
{% if oUIBlock.GetDataAttributes() %}
|
||||||
{% endif %}
|
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
||||||
> {% endif %}
|
data-{{ sName }}="{{ sValue }}"
|
||||||
{% for oSubBlock in oUIBlock.GetSubBlocks() %} {{ render_block(oSubBlock, {aPage: aPage}) }} {% endfor %}
|
{% endfor %}
|
||||||
{% if bHasDiv %} </div> {% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
> {% endif %}
|
||||||
|
{% for oSubBlock in oUIBlock.GetSubBlocks() %} {{ render_block(oSubBlock, {aPage: aPage}) }} {% endfor %}
|
||||||
|
{% if bHasDiv %} </div> {% endif %}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
{% endapply %}
|
||||||
@@ -1,20 +1,22 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{# Dashboard Column #}
|
{# Dashboard Column #}
|
||||||
{% if oUIBlock.IsEditMode() %}
|
{% apply spaceless %}
|
||||||
{% if oUIBlock.IsLastRow() %}
|
{% if oUIBlock.IsEditMode() %}
|
||||||
{% set sCellClass = "layout_cell edit_mode layout_extension" %}
|
{% if oUIBlock.IsLastRow() %}
|
||||||
|
{% set sCellClass = "layout_cell edit_mode layout_extension" %}
|
||||||
|
{% else %}
|
||||||
|
{% set sCellClass = "layout_cell edit_mode" %}
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set sCellClass = "layout_cell edit_mode" %}
|
{% set sCellClass = "dashboard" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
<div class="ibo-dashboard--grid-column ibo-dashboard--grid-cell {{ sCellClass }}"
|
||||||
{% set sCellClass = "dashboard" %}
|
data-role="ibo-dashboard--grid-cell"
|
||||||
{% endif %}
|
data-dashboard-grid-column-index="{{ oUIBlock.GetColumnIndex() }}"
|
||||||
<div class="ibo-dashboard--grid-column ibo-dashboard--grid-cell {{ sCellClass }}"
|
data-dashboard-grid-cell-index="{{ oUIBlock.GetCellIndex() }}">
|
||||||
data-role="ibo-dashboard--grid-cell"
|
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
||||||
data-dashboard-grid-column-index="{{ oUIBlock.GetColumnIndex() }}"
|
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
||||||
data-dashboard-grid-cell-index="{{ oUIBlock.GetCellIndex() }}">
|
{% endfor %}
|
||||||
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
</div>
|
||||||
{{- render_block(oSubBlock, {aPage: aPage}) -}}
|
{% endapply %}
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
@@ -1,14 +1,16 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{# Dashboard Layout #}
|
{# Dashboard Layout #}
|
||||||
{% if oUIBlock.HasTitle() or oUIBlock.HasToolbar() %}
|
{% apply spaceless %}
|
||||||
<div class="ibo-dashboard--top-bar" data-role="ibo-dashboard--top-bar">
|
{% if oUIBlock.HasTitle() or oUIBlock.HasToolbar() %}
|
||||||
<div class="ibo-dashboard--top-bar-title" data-role="ibo-dashboard--top-bar-title">{{ oUIBlock.GetTitle() }}</div>
|
<div class="ibo-dashboard--top-bar" data-role="ibo-dashboard--top-bar">
|
||||||
{{ render_block(oUIBlock.GetToolbar(), {aPage: aPage}) }}
|
<div class="ibo-dashboard--top-bar-title" data-role="ibo-dashboard--top-bar-title">{{ oUIBlock.GetTitle() }}</div>
|
||||||
|
{{ render_block(oUIBlock.GetToolbar(), {aPage: aPage}) }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="ibo-dashboard--grid" data-role="ibo-dashboard--grid">
|
||||||
|
{% for oSubBlock in oUIBlock.GetDashboardRows() %}
|
||||||
|
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
||||||
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endapply %}
|
||||||
<div class="ibo-dashboard--grid" data-role="ibo-dashboard--grid">
|
|
||||||
{% for oSubBlock in oUIBlock.GetDashboardRows() %}
|
|
||||||
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{# Dashboard Row #}
|
{# Dashboard Row #}
|
||||||
<div class="ibo-dashboard--grid-row" data-role="ibo-dashboard--grid-row" data-dashboard-grid-row-index="{{ oUIBlock.GetRowIndex() }}">
|
{% apply spaceless %}
|
||||||
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
<div class="ibo-dashboard--grid-row" data-role="ibo-dashboard--grid-row" data-dashboard-grid-row-index="{{ oUIBlock.GetRowIndex() }}">
|
||||||
{{- render_block(oSubBlock, {aPage: aPage}) -}}
|
{% for oSubBlock in oUIBlock.GetSubBlocks() %}
|
||||||
{% endfor %}
|
{{ render_block(oSubBlock, {aPage: aPage}) }}
|
||||||
</div>
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
{% apply spaceless %}
|
||||||
{% UIAlert ForWarning{sTitle:'', sContent: '', sId: null} %}
|
{% UIAlert ForWarning{sTitle:'', sContent: '', sId: null} %}
|
||||||
<div id="branding-error-alert-content">
|
<div id="branding-error-alert-content">
|
||||||
<div style="display:flex;flex-align: stretch;">
|
<div style="display:flex;flex-align: stretch;">
|
||||||
@@ -8,4 +9,5 @@
|
|||||||
{% EndUIAlert %}
|
{% EndUIAlert %}
|
||||||
<div style="display:flex;align-items:stretch;height:50rem;margin-top:0.5rem;">
|
<div style="display:flex;align-items:stretch;height:50rem;margin-top:0.5rem;">
|
||||||
<iframe width="100%" sandbox srcdoc="{{ iframe_content }}"></iframe>
|
<iframe width="100%" sandbox srcdoc="{{ iframe_content }}"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,202 +1,214 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{% set sId = oLayout.GetId() | sanitize(constant('utils::ENUM_SANITIZATION_FILTER_VARIABLE_NAME')) %}
|
{% apply spaceless %}
|
||||||
{% set bHasOnInitOrOnDomReadyScripts = aPage.aJsInlineOnInit is not empty or aPage.aJsInlineOnDomReady is not empty %}
|
{% set sId = oLayout.GetId() | sanitize(constant('utils::ENUM_SANITIZATION_FILTER_VARIABLE_NAME')) %}
|
||||||
{% if bEscapeContent %}
|
{% set bHasOnInitOrOnDomReadyScripts = aPage.aJsInlineOnInit is not empty or aPage.aJsInlineOnDomReady is not empty %}
|
||||||
{{- render_block(oLayout, {aPage: aPage})|escape -}}
|
{% if bEscapeContent %}
|
||||||
{% else %}
|
{{ render_block(oLayout, {aPage: aPage})|escape }}
|
||||||
{{- render_block(oLayout, {aPage: aPage}) -}}
|
{% else %}
|
||||||
{% endif %}
|
{{ render_block(oLayout, {aPage: aPage}) }}
|
||||||
{% block iboPageJsInlineEarly %}
|
{% endif %}
|
||||||
{% for sJsInline in aPage.aJsInlineEarly %}
|
|
||||||
{# We put each scripts in a dedicated script tag to prevent massive failure if 1 script is broken (eg. missing semi-colon or non closed multi-line comment) #}
|
|
||||||
<script type="text/javascript">
|
|
||||||
{{ sJsInline|raw }}
|
|
||||||
</script>
|
|
||||||
{% endfor %}
|
|
||||||
{% endblock %}
|
|
||||||
{% block iboPageJsInlineLive %}
|
|
||||||
{% for sJsInline in aPage.aJsInlineLive %}
|
|
||||||
{# We put each scripts in a dedicated script tag to prevent massive failure if 1 script is broken (eg. missing semi-colon or non closed multi-line comment) #}
|
|
||||||
<script type="text/javascript">
|
|
||||||
{{ sJsInline|raw }}
|
|
||||||
</script>
|
|
||||||
{% endfor %}
|
|
||||||
{% endblock %}
|
|
||||||
{% if bHasOnInitOrOnDomReadyScripts %}
|
|
||||||
<script type="text/javascript">
|
|
||||||
let fOnJsFilesLoaded{{ sId }} = function (fResolve) {
|
|
||||||
{% for sJsInline in aPage.aJsInlineOnInit %}
|
|
||||||
{{ sJsInline|raw }}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% for sJsInline in aPage.aJsInlineOnDomReady %}
|
{% block iboPageJsInlineEarly %}
|
||||||
|
{% for sJsInline in aPage.aJsInlineEarly %}
|
||||||
|
{# We put each scripts in a dedicated script tag to prevent massive failure if 1 script is broken (eg. missing semi-colon or non closed multi-line comment) #}
|
||||||
|
<script type="text/javascript">
|
||||||
{{ sJsInline|raw }}
|
{{ sJsInline|raw }}
|
||||||
{% endfor %}
|
</script>
|
||||||
fResolve();
|
{% endfor %}
|
||||||
}
|
{% endblock %}
|
||||||
</script>
|
|
||||||
{% endif %}
|
{% block iboPageJsInlineLive %}
|
||||||
{% set sPromiseId = aPage.sPromiseId %}
|
{% for sJsInline in aPage.aJsInlineLive %}
|
||||||
{% if aPage.aJsFiles is not empty %}
|
{# We put each scripts in a dedicated script tag to prevent massive failure if 1 script is broken (eg. missing semi-colon or non closed multi-line comment) #}
|
||||||
{% block iboPageJsFiles %}
|
<script type="text/javascript">
|
||||||
|
{{ sJsInline|raw }}
|
||||||
|
</script>
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% if bHasOnInitOrOnDomReadyScripts %}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
{% if bHasOnInitOrOnDomReadyScripts == false %}
|
|
||||||
// Define a dummy empty callback if there's no script to execute
|
|
||||||
let fOnJsFilesLoaded{{ sId }} = function (fResolve) {
|
let fOnJsFilesLoaded{{ sId }} = function (fResolve) {
|
||||||
|
{% for sJsInline in aPage.aJsInlineOnInit %}
|
||||||
|
{{ sJsInline|raw }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% for sJsInline in aPage.aJsInlineOnDomReady %}
|
||||||
|
{{ sJsInline|raw }}
|
||||||
|
{% endfor %}
|
||||||
fResolve();
|
fResolve();
|
||||||
}
|
}
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
window['{{ sPromiseId }}'] = new Promise(function (fAllJsFilesResolve, fAllJsFilesReject) {
|
|
||||||
/**
|
|
||||||
* @type {Array} aJsFilesToLoad Files required by the current AjaxPage
|
|
||||||
*
|
|
||||||
* For each file:
|
|
||||||
* - "id": Used as an identifier to check if file is already being handled
|
|
||||||
* - "url" is the URL that will be used for loading. It should include any relevant query args, including the cache buster
|
|
||||||
*
|
|
||||||
* ```
|
|
||||||
* [
|
|
||||||
* {"id": "https://itop/js/foo.js", "url": "https://itop/js/foo.js?cache_buster=123},
|
|
||||||
* {"id": "https://itop/js/bar.js", "url": "https://itop/js/bar.js?a=b&cache_buster=123"},
|
|
||||||
* ...
|
|
||||||
* ]
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
|
|
||||||
// If these constants aren't defined by the main page, define them (global) ourselves
|
|
||||||
if (typeof aLoadedJsFilesRegister === "undefined") {
|
|
||||||
Object.defineProperty(window, "aLoadedJsFilesRegister", {
|
|
||||||
value: new Map(),
|
|
||||||
writable: false,
|
|
||||||
configurable: false,
|
|
||||||
enumerable: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof aLoadedJsFilesResolveCallbacks === "undefined") {
|
|
||||||
Object.defineProperty(window, "aLoadedJsFilesResolveCallbacks", {
|
|
||||||
value: new Map(),
|
|
||||||
writable: false,
|
|
||||||
configurable: false,
|
|
||||||
enumerable: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let aJsFilesToLoad = [];
|
|
||||||
/**
|
|
||||||
* @type {Array} aJsFilesToLoadByOtherRequests Files required by the current AjaxPage but that are already being handled by another request (done or ongoing)
|
|
||||||
*/
|
|
||||||
let aJsFilesToLoadByOtherRequests = [];
|
|
||||||
|
|
||||||
{% for sJsFile in aPage.aJsFiles %}
|
|
||||||
aJsFilesToLoad.push({
|
|
||||||
"id": "{{ sJsFile|raw }}",
|
|
||||||
"url": "{{ sJsFile|add_itop_version|raw }}"
|
|
||||||
});
|
|
||||||
|
|
||||||
// If file is already present in the register (see it declaration in WebPage TWIG template), let its original requester load it
|
|
||||||
if (aLoadedJsFilesRegister.has("{{ sJsFile|raw }}") === true) {
|
|
||||||
aJsFilesToLoadByOtherRequests.push("{{ sJsFile|raw }}");
|
|
||||||
}
|
|
||||||
// Otherwise add it to register and initialize corresponding promise
|
|
||||||
else {
|
|
||||||
aLoadedJsFilesRegister.set("{{ sJsFile|raw }}", new Promise(function(fJsFileResolve) {
|
|
||||||
aLoadedJsFilesResolveCallbacks.set("{{ sJsFile|raw }}", fJsFileResolve);
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
let iCurrentIdx = 0;
|
|
||||||
let iFilesToLoadCount = aJsFilesToLoad.length;
|
|
||||||
if (iFilesToLoadCount > 0)
|
|
||||||
{
|
|
||||||
let fLoadScript{{ sId }} = function () {
|
|
||||||
let sCurrentFileId = aJsFilesToLoad[iCurrentIdx]["id"];
|
|
||||||
let sCurrentFileUrl = aJsFilesToLoad[iCurrentIdx]["url"];
|
|
||||||
|
|
||||||
/** @type {Promise} oPromise Promise to use once file is loaded */
|
|
||||||
let oPromise = null;
|
|
||||||
// If file is handled by another request, retrieve the existing promise
|
|
||||||
if ($.inArray(sCurrentFileId, aJsFilesToLoadByOtherRequests) !== -1) {
|
|
||||||
oPromise = aLoadedJsFilesRegister.get(sCurrentFileId)
|
|
||||||
}
|
|
||||||
// Otherwise create its own promise to load it
|
|
||||||
else {
|
|
||||||
oPromise = $.when(
|
|
||||||
$.ajax({
|
|
||||||
url: sCurrentFileUrl,
|
|
||||||
dataType: 'script',
|
|
||||||
cache: true
|
|
||||||
}),
|
|
||||||
aLoadedJsFilesResolveCallbacks.get(sCurrentFileId)()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only once file is loaded (by the request or another), proceed to next step
|
|
||||||
oPromise.then(function () {
|
|
||||||
iCurrentIdx++;
|
|
||||||
if (iCurrentIdx !== iFilesToLoadCount)
|
|
||||||
{
|
|
||||||
fLoadScript{{ sId }}();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fOnJsFilesLoaded{{ sId }}(fAllJsFilesResolve);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
fLoadScript{{ sId }}();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fOnJsFilesLoaded{{ sId }}(fAllJsFilesResolve);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endif %}
|
||||||
{% else %}
|
|
||||||
{% if bHasOnInitOrOnDomReadyScripts %}
|
{% set sPromiseId = aPage.sPromiseId %}
|
||||||
{% block iboPageJsInlineOnDomReady %}
|
{% if aPage.aJsFiles is not empty %}
|
||||||
|
{% block iboPageJsFiles %}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
window['{{ sPromiseId }}'] = new Promise(function (fNoJsFileResolve, fNoJsFileReject) {
|
{% if bHasOnInitOrOnDomReadyScripts == false %}
|
||||||
fOnJsFilesLoaded{{ sId }}(fNoJsFileResolve);
|
// Define a dummy empty callback if there's no script to execute
|
||||||
|
let fOnJsFilesLoaded{{ sId }} = function (fResolve) {
|
||||||
|
fResolve();
|
||||||
|
}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
window['{{ sPromiseId }}'] = new Promise(function (fAllJsFilesResolve, fAllJsFilesReject) {
|
||||||
|
/**
|
||||||
|
* @type {Array} aJsFilesToLoad Files required by the current AjaxPage
|
||||||
|
*
|
||||||
|
* For each file:
|
||||||
|
* - "id": Used as an identifier to check if file is already being handled
|
||||||
|
* - "url" is the URL that will be used for loading. It should include any relevant query args, including the cache buster
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* [
|
||||||
|
* {"id": "https://itop/js/foo.js", "url": "https://itop/js/foo.js?cache_buster=123},
|
||||||
|
* {"id": "https://itop/js/bar.js", "url": "https://itop/js/bar.js?a=b&cache_buster=123"},
|
||||||
|
* ...
|
||||||
|
* ]
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
|
||||||
|
// If these constants aren't defined by the main page, define them (global) ourselves
|
||||||
|
if (typeof aLoadedJsFilesRegister === "undefined") {
|
||||||
|
Object.defineProperty(window, "aLoadedJsFilesRegister", {
|
||||||
|
value: new Map(),
|
||||||
|
writable: false,
|
||||||
|
configurable: false,
|
||||||
|
enumerable: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof aLoadedJsFilesResolveCallbacks === "undefined") {
|
||||||
|
Object.defineProperty(window, "aLoadedJsFilesResolveCallbacks", {
|
||||||
|
value: new Map(),
|
||||||
|
writable: false,
|
||||||
|
configurable: false,
|
||||||
|
enumerable: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let aJsFilesToLoad = [];
|
||||||
|
/**
|
||||||
|
* @type {Array} aJsFilesToLoadByOtherRequests Files required by the current AjaxPage but that are already being handled by another request (done or ongoing)
|
||||||
|
*/
|
||||||
|
let aJsFilesToLoadByOtherRequests = [];
|
||||||
|
|
||||||
|
{% for sJsFile in aPage.aJsFiles %}
|
||||||
|
aJsFilesToLoad.push({
|
||||||
|
"id": "{{ sJsFile|raw }}",
|
||||||
|
"url": "{{ sJsFile|add_itop_version|raw }}"
|
||||||
|
});
|
||||||
|
|
||||||
|
// If file is already present in the register (see it declaration in WebPage TWIG template), let its original requester load it
|
||||||
|
if (aLoadedJsFilesRegister.has("{{ sJsFile|raw }}") === true) {
|
||||||
|
aJsFilesToLoadByOtherRequests.push("{{ sJsFile|raw }}");
|
||||||
|
}
|
||||||
|
// Otherwise add it to register and initialize corresponding promise
|
||||||
|
else {
|
||||||
|
aLoadedJsFilesRegister.set("{{ sJsFile|raw }}", new Promise(function(fJsFileResolve) {
|
||||||
|
aLoadedJsFilesResolveCallbacks.set("{{ sJsFile|raw }}", fJsFileResolve);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
let iCurrentIdx = 0;
|
||||||
|
let iFilesToLoadCount = aJsFilesToLoad.length;
|
||||||
|
if (iFilesToLoadCount > 0)
|
||||||
|
{
|
||||||
|
let fLoadScript{{ sId }} = function () {
|
||||||
|
let sCurrentFileId = aJsFilesToLoad[iCurrentIdx]["id"];
|
||||||
|
let sCurrentFileUrl = aJsFilesToLoad[iCurrentIdx]["url"];
|
||||||
|
|
||||||
|
/** @type {Promise} oPromise Promise to use once file is loaded */
|
||||||
|
let oPromise = null;
|
||||||
|
// If file is handled by another request, retrieve the existing promise
|
||||||
|
if ($.inArray(sCurrentFileId, aJsFilesToLoadByOtherRequests) !== -1) {
|
||||||
|
oPromise = aLoadedJsFilesRegister.get(sCurrentFileId)
|
||||||
|
}
|
||||||
|
// Otherwise create its own promise to load it
|
||||||
|
else {
|
||||||
|
oPromise = $.when(
|
||||||
|
$.ajax({
|
||||||
|
url: sCurrentFileUrl,
|
||||||
|
dataType: 'script',
|
||||||
|
cache: true
|
||||||
|
}),
|
||||||
|
aLoadedJsFilesResolveCallbacks.get(sCurrentFileId)()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only once file is loaded (by the request or another), proceed to next step
|
||||||
|
oPromise.then(function () {
|
||||||
|
iCurrentIdx++;
|
||||||
|
if (iCurrentIdx !== iFilesToLoadCount)
|
||||||
|
{
|
||||||
|
fLoadScript{{ sId }}();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fOnJsFilesLoaded{{ sId }}(fAllJsFilesResolve);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
fLoadScript{{ sId }}();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fOnJsFilesLoaded{{ sId }}(fAllJsFilesResolve);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% else %}
|
||||||
|
{% if bHasOnInitOrOnDomReadyScripts %}
|
||||||
|
{% block iboPageJsInlineOnDomReady %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
window['{{ sPromiseId }}'] = new Promise(function (fNoJsFileResolve, fNoJsFileReject) {
|
||||||
|
fOnJsFilesLoaded{{ sId }}(fNoJsFileResolve);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
{% if aDeferredBlocks is not empty %}
|
{% if aDeferredBlocks is not empty %}
|
||||||
{% for oBlock in aDeferredBlocks %}
|
{% for oBlock in aDeferredBlocks %}
|
||||||
{{- render_block(oBlock, {aPage: aPage})|raw -}}
|
{{ render_block(oBlock, {aPage: aPage})|raw }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if sDeferredContent %}
|
|
||||||
<script type="text/javascript">
|
{% if sDeferredContent %}
|
||||||
$('body').append('{{ sDeferredContent|raw }}');
|
|
||||||
</script>
|
|
||||||
{% endif %}
|
|
||||||
{% block iboPageCssFiles %}
|
|
||||||
{% if aPage.aCssFiles is not empty %}
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
// If this constant isn't defined by the main page, define it (global) ourselves
|
$('body').append('{{ sDeferredContent|raw }}');
|
||||||
if (typeof aLoadedCssFilesRegister === "undefined") {
|
|
||||||
Object.defineProperty(window, "aLoadedCssFilesRegister", {
|
|
||||||
value: new Map(),
|
|
||||||
writable: false,
|
|
||||||
configurable: false,
|
|
||||||
enumerable: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
{% for aCssFileData in aPage.aCssFiles %}
|
|
||||||
// Only if file is NOT already present in the register (see it declaration in WebPage TWIG template), add it to the page and register
|
|
||||||
if (aLoadedCssFilesRegister.has("{{ aCssFileData['link']|raw }}") === false) {
|
|
||||||
$('<link href="{{ aCssFileData['link'] }}" rel="stylesheet">').appendTo('head');
|
|
||||||
aLoadedCssFilesRegister.set("{{ aCssFileData['link']|raw }}", true);
|
|
||||||
}
|
|
||||||
{% endfor %}
|
|
||||||
</script>
|
</script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
|
||||||
{{- aPage.sCapturedOutput|raw -}}
|
{% block iboPageCssFiles %}
|
||||||
|
{% if aPage.aCssFiles is not empty %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
// If this constant isn't defined by the main page, define it (global) ourselves
|
||||||
|
if (typeof aLoadedCssFilesRegister === "undefined") {
|
||||||
|
Object.defineProperty(window, "aLoadedCssFilesRegister", {
|
||||||
|
value: new Map(),
|
||||||
|
writable: false,
|
||||||
|
configurable: false,
|
||||||
|
enumerable: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
{% for aCssFileData in aPage.aCssFiles %}
|
||||||
|
// Only if file is NOT already present in the register (see it declaration in WebPage TWIG template), add it to the page and register
|
||||||
|
if (aLoadedCssFilesRegister.has("{{ aCssFileData['link']|raw }}") === false) {
|
||||||
|
$('<link href="{{ aCssFileData['link'] }}" rel="stylesheet">').appendTo('head');
|
||||||
|
aLoadedCssFilesRegister.set("{{ aCssFileData['link']|raw }}", true);
|
||||||
|
}
|
||||||
|
{% endfor %}
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{{ aPage.sCapturedOutput|raw }}
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
{{ render_block(oLayout, {aPage: aPage}) }}
|
{% apply spaceless %}
|
||||||
|
{{ render_block(oLayout, {aPage: aPage}) }}
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div id="ibo-page-banner" data-role="ibo-page-banner">
|
{% apply spaceless %}
|
||||||
{{- render_block(aLayouts.oBanner, {aPage: aPage}) -}}
|
<div id="ibo-page-banner" data-role="ibo-page-banner">
|
||||||
</div>
|
{{ render_block(aLayouts.oBanner, {aPage: aPage}) }}
|
||||||
|
</div>
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
<div id="ibo-page-Footer" data-role="ibo-page-Footer">
|
{% apply spaceless %}
|
||||||
{{- render_block(aLayouts.oFooter, {aPage: aPage}) -}}
|
|
||||||
</div>
|
<div id="ibo-page-Footer" data-role="ibo-page-Footer">
|
||||||
|
{{ render_block(aLayouts.oFooter, {aPage: aPage}) }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endapply %}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
{# @copyright Copyright (C) 2010-2024 Combodo SAS #}
|
||||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||||
|
{% apply spaceless %}
|
||||||
<div id="ibo-page-header" data-role="ibo-page-header">
|
<div id="ibo-page-header" data-role="ibo-page-header">
|
||||||
{{- render_block(aLayouts.oHeader, {aPage: aPage}) -}}
|
{{ render_block(aLayouts.oHeader, {aPage: aPage}) }}
|
||||||
</div>
|
</div>
|
||||||
|
{% endapply %}
|
||||||
Reference in New Issue
Block a user