Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/wizards/source/euro/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 5 kB image not shown  

Quelle  Protect.xba   Sprache: unbekannt

 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<!--
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
-->
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Protect" script:language="StarBasic">REM  *****  BASIC  *****
Option Explicit

Public PWIndex as Integer


Function UnprotectSheetsWithPassWord(oSheets as Object, bDoUnProtect as Boolean)
Dim i as Integer
Dim MaxIndex as Integer
Dim iMsgResult as Integer
 PWIndex = -1
 If bDocHasProtectedSheets Then
  If Not bDoUnprotect Then
   ' At First query if sheets shall generally be unprotected
   iMsgResult = Msgbox(sMsgUNPROTECT,36,sMsgDLGTITLE)
   bDoUnProtect = iMsgResult = 6
  End If
  If bDoUnProtect Then 
   MaxIndex = oSheets.Count-1
   For i = 0 To MaxIndex
    bDocHasProtectedSheets = Not UnprotectSheet(oSheets(i))
    If bDocHasProtectedSheets Then
     ReprotectSheets()
     Exit For
    End If
   Next i
   If PWIndex = -1 Then
    ReDim UnProtectList() as String
   Else
    ReDim Preserve UnProtectList(PWIndex) as String
   End If
  Else
   Msgbox (sMsgSHEETSNOPROTECT, 64, sMsgDLGTITLE)
  End If
 End If
 UnProtectSheetsWithPassword = bDocHasProtectedSheets
End Function


Function UnprotectSheet(oListSheet as Object)
Dim ListSheetName as String
Dim sStatustext as String
Dim i as Integer
Dim bOneSheetIsUnprotected as Boolean
 i = -1
 ListSheetName = oListSheet.Name
 If oListSheet.IsProtected Then
  oListSheet.Unprotect("")
  If oListSheet.IsProtected Then
   ' Sheet is protected by a Password
   bOneSheetIsUnProtected = UnprotectSheetWithDialog(oListSheet, ListSheetName)
   UnProtectSheet() = bOneSheetIsUnProtected
  Else
   ' The Sheet could be unprotected without a password
   AddSheettoUnprotectionlist(ListSheetName,"")
   UnprotectSheet() = True
  End If
 Else
  UnprotectSheet() = True
 End If
End Function


Function UnprotectSheetWithDialog(oListSheet as Object, ListSheetName as String) as Boolean
Dim PWIsCorrect as Boolean
Dim QueryText as String
 oDocument.CurrentController.SetActiveSheet(oListSheet)
 QueryText = ReplaceString(sMsgPWPROTECT,"'" & ListSheetName & "'", "%1TableName%1")
 '"Please insert the password to unprotect the sheet '" & ListSheetName'"
 Do
  ExecutePasswordDialog(QueryText)
  If bCancelProtection Then
   bCancelProtection = False
   Msgbox (sMsgSHEETSNOPROTECT, 64, sMsgDLGTITLE)
   UnprotectSheetWithDialog() = False
   exit Function
  End If
  oListSheet.Unprotect(Password)
  If oListSheet.IsProtected Then
   PWIsCorrect = False
   Msgbox (sMsgWRONGPW, 64, sMsgDLGTITLE)
  Else
   ' Sheet could be unprotected
   AddSheettoUnprotectionlist(ListSheetName,Password)
   PWIsCorrect = True
  End If
 Loop Until PWIsCorrect
 UnprotectSheetWithDialog() = True
End Function


Sub ExecutePasswordDialog(QueryText as String)
 With PasswordModel
  .Title = QueryText
  .hlnPassword.Label = sMsgPASSWORD
  .cmdCancel.Label = sMsgCANCEL
  .cmdHelp.Label = sHELP
  .cmdGoOn.Label = sMsgOK
  .cmdGoOn.DefaultButton = True
 End With
 DialogPassword.Execute
End Sub

Sub ReadPassword()
 Password = PasswordModel.txtPassword.Text
 DialogPassword.EndExecute
End Sub


Sub RejectPassword()
 bCancelProtection = True
 DialogPassword.EndExecute
End Sub


' Reprotects the previously protected sheets
' The password information is stored in the List 'UnProtectList()'
Sub ReprotectSheets()
Dim i as Integer
Dim oProtectSheet as Object
Dim ProtectList() as String
Dim SheetName as String
Dim SheetPassword as String
 If PWIndex > -1 Then
  SetStatusLineText(sStsREPROTECT)
  For i = 0 To PWIndex
   ProtectList() = ArrayOutOfString(UnProtectList(i),";")
   SheetName = ProtectList(0)
   If Ubound(ProtectList()) > 0 Then
    SheetPassWord = ProtectList(1)
   Else
    SheetPassword = ""
   End If
   oProtectSheet =  oSheets.GetbyName(SheetName)
   If Not oProtectSheet.IsProtected Then
    oProtectSheet.Protect(SheetPassWord)
   End If
  Next i
  SetStatusLineText("")
 End If
 PWIndex = -1
 ReDim UnProtectList()
End Sub


' Add a Sheet to the list of sheets that finally have to be
' unprotected
Sub AddSheettoUnprotectionlist(ListSheetName as String, Password as String)
Dim MaxIndex as Integer
 MaxIndex = Ubound(UnProtectList())
 PWIndex = PWIndex + 1
 If PWIndex > MaxIndex Then
  ReDim Preserve UnprotectList(MaxIndex + SBRANGEUBOUND)
 End If
 UnprotectList(PWIndex) = ListSheetName & ";" & Password
End Sub


Function CheckSheetProtection(oSheets as Object) as Boolean
Dim MaxIndex as Integer
Dim i as Integer
Dim bProtectedSheets as Boolean
 bProtectedSheets = False
 MaxIndex = oSheets.Count-1
 For i = 0 To MaxIndex
  bProtectedSheets = oSheets(i).IsProtected
  If bProtectedSheets Then
   CheckSheetProtection() = True
   Exit Function
  End If
 Next i
 CheckSheetProtection() = False
End Function</script:module>

[ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ]