Page extension 9204 User Settings

App
Base Application
Namespace
System.Security.User
Versions
19-28
Extends
#63ca2fa44f034f2ba480172fef340d3f#User Settings

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/System/User/UserSettings.PageExt.al101 lines, Copyright (c) Microsoft Corporation. MIT

namespace System.Security.User;

using Microsoft.EServices.EDocument;
using System.Environment;
using System.Environment.Configuration;
using System.Integration;
using System.Security.AccessControl;

pageextension 9204 "User Settings" extends "User Settings"
{
    layout
    {
        addbefore("Teaching Tips")
        {
            field(MyNotificationsLbl; MyNotificationsLbl)
            {
                ApplicationArea = All;
                Caption = 'Notifications';
                Editable = false;
                ToolTip = 'Specifies the notifications that can be enabled by the user.';
                Visible = IsMyNotificationsVisible;

                trigger OnDrillDown()
                begin
                    Page.RunModal(Page::"My Notifications");
                end;
            }
        }
        addafter("User Settings")
        {
            group(Files)
            {
                Visible = OneDriveLinkVisible;
                Caption = 'Files';

                field(OpenOneDriveBCFolder; OneDriveLinkText)
                {
                    ApplicationArea = All;
                    Caption = 'Cloud Storage';
                    Editable = false;
                    ToolTip = 'Specifies a link to explore your Business Central folder in OneDrive. Select the link to open the folder in a new window.';
                    AccessByPermission = tabledata "Document Service" = r;

                    trigger OnDrillDown()
                    var
                        DocumentServiceManagement: Codeunit "Document Service Management";
                    begin
                        Hyperlink(DocumentServiceManagement.GetMyBusinessCentralFilesLink());
                    end;
                }
            }
        }
    }

    trigger OnOpenPage()
    var
        IsNotOnMobile: Boolean;
    begin
        IsNotOnMobile := ClientTypeManagement.GetCurrentClientType() <> ClientType::Phone;
        IsMyNotificationsVisible := IsNotOnMobile and (Rec."User Security ID" = UserSecurityId());
    end;

    trigger OnAfterGetCurrRecord()
    begin
        SetOneDriveLinkVisibilityAndText();
    end;

    local procedure SetOneDriveLinkVisibilityAndText()
    var
        User: Record User;
        DummyDocumentService: Record "Document Service";
        DummyDocumentServiceScenario: Record "Document Service Scenario";
        DocumentServiceManagement: Codeunit "Document Service Management";
        EnvironmentInformation: Codeunit "Environment Information";
        DocumentSharing: Codeunit "Document Sharing";
    begin
        OneDriveLinkVisible := false;

        if Rec."User Security ID" = UserSecurityId() then
            if DummyDocumentService.ReadPermission() and DummyDocumentServiceScenario.ReadPermission() then
                if DocumentSharing.ShareEnabled() or EnvironmentInformation.IsSaaSInfrastructure() then begin
                    OneDriveLinkVisible := true;

                    if User.Get(UserSecurityId()) and (User."Full Name" <> '') then
                        OneDriveLinkText := StrSubstNo(OneDriveLinkTextTemplateTxt, User."Full Name")
                    else
                        OneDriveLinkText := StrSubstNo(OneDriveLinkTextTemplateTxt, UserId());
                end;

        Session.LogMessage('0000FPY', StrSubstNo(OneDriveLinkVisibilityTelemetryMsg, OneDriveLinkVisible), Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', DocumentServiceManagement.GetTelemetryCategory());
    end;

    var
        ClientTypeManagement: Codeunit "Client Type Management";
        OneDriveLinkVisible: Boolean;
        OneDriveLinkText: Text;
        IsMyNotificationsVisible: Boolean;
        MyNotificationsLbl: Label 'Change when I receive notifications.';
        OneDriveLinkTextTemplateTxt: Label '%1''s files on OneDrive', Comment = '%1 = A full user name, for example "John Doe"';
        OneDriveLinkVisibilityTelemetryMsg: Label 'OneDrive link visibility set to %1.', Locked = true;
}