2019-10-16 15:42:48 +03:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
2019-10-18 18:56:22 +03:00
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Validation" script:language="StarBasic">Sub markZZZ
2019-10-16 15:42:48 +03:00
End Sub
2019-10-17 18:48:22 +03:00
Private Function isInDoc(searchString As String)
Dim founds As Object
Dim sDesc As Object
Dim srch(0) as new com.sun.star.beans.PropertyValue
sDesc = Thiscomponent.createSearchDescriptor()
sDesc.SearchAll = true
sDesc.ValueSearch = false
sDesc.SearchStyles = false
sDesc.SearchRegularExpression = true
sDesc.SearchString = searchString
founds = Thiscomponent.findAll(sDesc)
If founds.count <> 0 Then
isInDoc = true
Else
isInDoc = false
EndIf
End Function
2019-10-16 16:17:28 +03:00
Sub validateButton
2019-10-17 18:48:22 +03:00
Dim footnotesReport As String
Dim graphicsReport As String
Dim badText As Boolean
Dim badNumberings As Boolean
Dim badFootnoteSigns As Boolean
Dim badGraphics As Boolean
badGraphics = false
badText = false
badFootnoteSigns = false
badNumberings = false
footnotesReport = checkAllFootnotes
graphicsReport = checkGraphics
If footnotesReport <> "" Then
badFootnoteSigns = true
EndIf
If graphicsReport <> "" Then
badGraphics = true
EndIf
If isInDoc("[\uE000-\uF8FF]") Then
badText = true
EndIf
If badFootnoteSigns Then
MsgBox footnotesReport
EndIf
If badGraphics Then
MsgBox graphicsReport
EndIf
If badText OR badNumberings OR badFootnoteSigns OR badGraphics Then
2019-10-18 18:56:22 +03:00
MsgBox "Перед публикацией документа следует исправить все найденные замечания."
2019-10-17 18:48:22 +03:00
If badText Then
MsgBox "В тексте обнаружены неподходящие для публикции символы." & chr(10) & " Далее будет представлен список отрывков текста с подобными символами."
removeBadCharacters
EndIf
Else
MsgBox "Документ успешно прошел проверку. " & chr(10) & "Неподходящих для публикации символов найдено не было."
EndIf
2019-10-17 00:31:08 +03:00
End Sub
2019-10-17 18:48:22 +03:00
Sub testcheckGraphics
checkGraphics
End Sub
Private Function checkGraphics
Dim drawPages As Object
Dim count as Integer
Dim draw As Object
Dim result As String
2019-10-18 18:56:22 +03:00
result = ""
2019-10-17 18:48:22 +03:00
Dim shapeType As String
2019-10-18 18:56:22 +03:00
Dim embeededObject As Object
Dim badFrame As Long
badFrame = 0
2019-10-17 18:48:22 +03:00
Dim drawingN As Long
drawingN = 0
drawPages = ThisComponent.DrawPage
' Globalscope.BasicLibraries.LoadLibrary( "MRILib" )
' MRI ThisComponent
count = drawPages.getCount()
For i = 0 to count-1
draw = drawPages.getByIndex(i)
shapeType = draw.ShapeType
If InStr(shapeType,"com.sun.star.drawing") = 1 Then
drawingN = drawingN + 1
EndIf
2019-10-18 18:56:22 +03:00
If InStr(shapeType,"FrameShape") = 1 Then
embeededObject = draw.getEmbeddedObject()
If Not embeededObject.supportsService("com.sun.star.formula.FormulaProperties") Then
badFrame = badFrame + 1
Else
'Formula
EndIf
EndIf
2019-10-17 18:48:22 +03:00
Next i
If drawingN <> 0 Then
2019-10-18 18:56:22 +03:00
result = result &"В документе найдены рисунки (" & drawingN & "), неподходящие для публикации." & chr(10)
EndIf
If badFrame <> 0 Then
result = result &"В документе найдены встроенные объекты (" & badFrame & "), неподходящие для публикации." & chr(10)
2019-10-17 18:48:22 +03:00
EndIf
checkGraphics = result
End Function
2019-10-17 00:31:08 +03:00
Private Sub removeBadCharacters
StartTracking
AskAndReplace("[\uE000-\uF8FF]+","")
2019-10-17 18:48:22 +03:00
2019-10-17 00:31:08 +03:00
StopTracking
showTrackedChanges
End Sub
2019-10-17 18:48:22 +03:00
Private Function checkAllFootnotes()
2019-10-17 00:31:08 +03:00
Dim footnotes As Object
Dim count as Integer
Dim charNum as Long
Dim char As Long
Dim label As String
Dim result As String
result = ""
footnotes = ThisComponent.Footnotes
count = footnotes.getCount
For i = 0 to count-1
footnote = footnotes.getByIndex(i)
' Mri footnote
label = footnote.Label
charNum = Len(label)
For j = 1 to charNum
char = Asc(Right(Left(label,j),1))
If char >= 57344 AND char <= 63743 then
2019-10-17 18:48:22 +03:00
result = result & "Символ "& Chr(char) &" сноски "& i &" не подходит для публикации"& chr(10)
2019-10-17 00:31:08 +03:00
End If
Next j
Next i
2019-10-17 18:48:22 +03:00
checkAllFootnotes = result
End Function
2019-10-16 15:42:48 +03:00
2019-10-17 00:31:08 +03:00
Private Sub showTrackedChanges
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:AcceptTrackedChanges", "", 0, Array())
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ShowTrackedChanges"
args2(0).Value = true
dispatcher.executeDispatch(document, ".uno:ShowTrackedChanges", "", 0, args2())
end Sub
Private Sub StartTracking
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
document = ThisComponent.CurrentController.Frame
dim trackProperties(0) as new com.sun.star.beans.PropertyValue
trackProperties(0).Name = "TrackChanges"
trackProperties(0).Value = true
dispatcher.executeDispatch(document, ".uno:TrackChanges", "", 0, trackProperties())
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ShowTrackedChanges"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:ShowTrackedChanges", "", 0, args1())
End Sub
Private Sub StopTracking
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
document = ThisComponent.CurrentController.Frame
dim trackProperties(0) as new com.sun.star.beans.PropertyValue
trackProperties(0).Name = "TrackChanges"
trackProperties(0).Value = false
dispatcher.executeDispatch(document, ".uno:TrackChanges", "", 0, trackProperties())
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ShowTrackedChanges"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:ShowTrackedChanges", "", 0, args1())
End Sub
2019-10-17 00:11:21 +03:00
</script:module>