Added check for headings in footers and headers

This commit is contained in:
Georgy Litvinov 2020-07-06 11:06:41 +02:00
parent 6059460ced
commit 15a5bd6f0d
7 changed files with 164 additions and 5 deletions

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Configuration" script:language="StarBasic" script:moduleType="normal">Public Const redactionExtensionName As String = &quot;cleanAndValidate&quot;
Public Const redactionExtensionVersion = &quot;0.8.3&quot;
Public Const redactionExtensionVersion = &quot;0.8.4&quot;
Function initRedactionConfiguration()
On Error Goto exceptionHandler
Dim regFactory As Object

View file

@ -218,6 +218,18 @@ Function getRussian(identifier As String) As String
Case &quot;isInTable&quot;
getRussian = &quot;находится внутри таблицы.&quot;
Exit Function
Case &quot;foundHeadingIn&quot;
getRussian = &quot;Найден заголовок в&quot;
Exit Function
Case &quot;inHeader&quot;
getRussian = &quot;верхнем колонтитуле&quot;
Exit Function
Case &quot;inFooter&quot;
getRussian = &quot;нижнем колонтитуле&quot;
Exit Function
Case &quot;inPageStyle&quot;
getRussian = &quot;стиля страниц&quot;
Exit Function
Case Else
getRussian = &quot;Перевод не найден&quot;
End Select
@ -418,6 +430,18 @@ Function getEnglish(identifier As String) As String
Case &quot;isInTable&quot;
getEnglish = &quot;located inside the table.&quot;
Exit Function
Case &quot;foundHeadingIn&quot;
getEnglish = &quot;Found heading in&quot;
Exit Function
Case &quot;inHeader&quot;
getEnglish = &quot;header&quot;
Exit Function
Case &quot;inFooter&quot;
getEnglish = &quot;footer&quot;
Exit Function
Case &quot;inPageStyle&quot;
getEnglish = &quot;of page style&quot;
Exit Function
Case Else
getEnglish = &quot;No translation&quot;
End Select
@ -617,6 +641,18 @@ Function getCroatian(identifier As String) As String
Case &quot;isInTable&quot;
getCroatian = &quot;smještene unutar stola.&quot;
Exit Function
Case &quot;foundHeadingIn&quot;
getCroatian = &quot;Naslov pronađen u&quot;
Exit Function
Case &quot;inHeader&quot;
getCroatian = &quot;zaglavlje&quot;
Exit Function
Case &quot;inFooter&quot;
getCroatian = &quot;podnožje&quot;
Exit Function
Case &quot;inPageStyle&quot;
getCroatian = &quot;stil stranice&quot;
Exit Function
Case Else
getCroatian = &quot;No translation&quot;
End Select
@ -816,6 +852,18 @@ Function getSerbian(identifier As String) As String
Case &quot;isInTable&quot;
getSerbian = &quot;смештене унутар стола.&quot;
Exit Function
Case &quot;foundHeadingIn&quot;
getSerbian = &quot;Наслов пронађен у&quot;
Exit Function
Case &quot;inHeader&quot;
getSerbian = &quot;хеадер&quot;
Exit Function
Case &quot;inFooter&quot;
getSerbian = &quot;фоотер&quot;
Exit Function
Case &quot;inPageStyle&quot;
getSerbian = &quot;стил странице&quot;
Exit Function
Case Else
getSerbian = &quot;No translation&quot;
End Select
@ -1015,6 +1063,18 @@ Function getBosnian(identifier As String) As String
Case &quot;isInTable&quot;
getBosnian = &quot;smještene unutar stola.&quot;
Exit Function
Case &quot;foundHeadingIn&quot;
getBosnian = &quot;Naslov pronađen u&quot;
Exit Function
Case &quot;inHeader&quot;
getBosnian = &quot;zaglavlje&quot;
Exit Function
Case &quot;inFooter&quot;
getBosnian = &quot;podnožje&quot;
Exit Function
Case &quot;inPageStyle&quot;
getBosnian = &quot;stil stranice&quot;
Exit Function
Case Else
getBosnian = &quot;No translation&quot;
End Select

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Validation" script:language="StarBasic">Sub markval6
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Validation" script:language="StarBasic">Sub markval7
End Sub
@ -26,6 +26,7 @@ Sub validateButton
Dim footnotesReport As String
Dim graphicsReport As String
Dim sectionsReport As String
Dim outlinePageStylesReport As String
Dim outlineInNotesReport As String
Dim badText As Boolean
Dim badNumberings As Boolean
@ -38,9 +39,14 @@ Sub validateButton
graphicsReport = checkGraphics
sectionsReport = checkSectionsInTables
outlineInNotesReport = checkNotesOutline()
outlinePageStylesReport = checkHeadingsInHeadersFooters
If outlineInNotesReport &lt;&gt; &quot;&quot; Then
MsgBox outlineInNotesReport
EndIf
If outlinePageStylesReport &lt;&gt; &quot;&quot; Then
MsgBox outlinePageStylesReport
EndIf
If footnotesReport &lt;&gt; &quot;&quot; Then
MsgBox footnotesReport
EndIf
@ -62,7 +68,7 @@ Sub validateButton
printNumberingSymbols(needExtendedInfo)
If badText OR badNumberings OR footnotesReport &lt;&gt; &quot;&quot; OR graphicsReport &lt;&gt; &quot;&quot; Or outlineInNotesReport &lt;&gt; &quot;&quot; Or sectionsReport &lt;&gt; &quot;&quot; Then
If badText OR badNumberings OR footnotesReport &lt;&gt; &quot;&quot; OR graphicsReport &lt;&gt; &quot;&quot; Or outlineInNotesReport &lt;&gt; &quot;&quot; Or sectionsReport &lt;&gt; &quot;&quot; OR outlinePageStylesReport &lt;&gt; &quot;&quot; Then
MsgBox getTranslation(&quot;validationWarning&quot;)
If badText Then
MsgBox getTranslation(&quot;validationBadSymbolsNotification&quot;)
@ -225,6 +231,98 @@ Function checkSectionsInTables As String
checkSectionsInTables = result
End Function
Function checkHeadingsInHeadersFooters As String
Dim result As String
Dim count As Integer
Dim oStyle As Object
Dim i As Integer
result = &quot;&quot;
Dim pageStyles As Object
pageStyles = ThisComponent.StyleFamilies.getByName(&quot;PageStyles&quot;)
count = pageStyles.count - 1
For i = 0 to count
oStyle = pageStyles.getByIndex(i)
If oStyle.isInUse Then
If oStyle.HeaderIsOn Then
If oStyle.HeaderIsShared Then
If isHeadingsInText(oStyle.HeaderText) Then
result = result &amp; getTranslation(&quot;foundHeadingIn&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inHeader&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inPageStyle&quot;) &amp; &quot; &quot; &amp; oStyle.getName() &amp; chr(10)
EndIf
Else
If isHeadingsInText(oStyle.HeaderTextLeft) Then
result = result &amp; getTranslation(&quot;foundHeadingIn&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inHeader&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inPageStyle&quot;) &amp; &quot; &quot; &amp; oStyle.getName() &amp; chr(10)
EndIf
If isHeadingsInText(oStyle.HeaderTextRight) Then
result = result &amp; getTranslation(&quot;foundHeadingIn&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inHeader&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inPageStyle&quot;) &amp; &quot; &quot; &amp; oStyle.getName() &amp; chr(10)
EndIf
EndIf
If NOT oStyle.FirstIsShared Then
If isHeadingsInText(oStyle.HeaderTextFirst) Then
result = result &amp; getTranslation(&quot;foundHeadingIn&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inHeader&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inPageStyle&quot;) &amp; &quot; &quot; &amp; oStyle.getName() &amp; chr(10)
EndIf
EndIf
EndIf
If oStyle.FooterIsOn Then
If oStyle.FooterIsShared Then
If isHeadingsInText(oStyle.FooterText) Then
result = result &amp; getTranslation(&quot;foundHeadingIn&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inFooter&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inPageStyle&quot;) &amp; &quot; &quot; &amp; oStyle.getName() &amp; chr(10)
EndIf
Else
If isHeadingsInText(oStyle.FooterTextLeft) Then
result = result &amp; getTranslation(&quot;foundHeadingIn&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inFooter&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inPageStyle&quot;) &amp; &quot; &quot; &amp; oStyle.getName() &amp; chr(10)
EndIf
If isHeadingsInText(oStyle.FooterTextRight) Then
result = result &amp; getTranslation(&quot;foundHeadingIn&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inFooter&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inPageStyle&quot;) &amp; &quot; &quot; &amp; oStyle.getName() &amp; chr(10)
EndIf
EndIf
If NOT oStyle.FirstIsShared Then
If isHeadingsInText(oStyle.FooterTextFirst) Then
result = result &amp; getTranslation(&quot;foundHeadingIn&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inFooter&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;inPageStyle&quot;) &amp; &quot; &quot; &amp; oStyle.getName() &amp; chr(10)
EndIf
EndIf
EndIf
EndIf
Next i
checkHeadingsInHeadersFooters = result
End Function
Function isHeadingsInText(oText As Object) As Boolean
Dim enum1Element As Object
Dim enum1 As Object
Dim enum2 As Object
Dim thisPortion As Object
Dim footnoteText As Object
Dim label As String
Dim labelNum As Integer
Dim i As Integer
Dim count As Integer
Dim cell As Object
Dim cellText As Object
enum1 = oText.Text.createEnumeration
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
If enum1Element.OutlineLevel &gt; 0 Then
isHeadingsInText = true
Exit Function
EndIf
ElseIf enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
cellNames = enum1Element.cellNames
For i = LBound(cellNames) To Ubound(cellNames)
cell = enum1Element.getCellByName(cellNames(i))
cellText = cell.getText()
If isHeadingsInText(cellText) Then
isHeadingsInText = true
Exit Function
EndIf
Next i
EndIf
Wend
isHeadingsInText = false
End Function
Private Sub printNumberingSymbols(needExtendedInfo)
Dim families As Object
Dim numStyles As Object

View file

@ -1,4 +1,4 @@
def releaseVersion = "0.8.3"
def releaseVersion = "0.8.4"
task oxt(type: Zip) {
dependsOn = [ 'setVersion','setVersionInBasicCode' ]
from './'

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<description xmlns="http://openoffice.org/extensions/description/2006" xmlns:dep="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.Redaction"/>
<version value="0.8.3"/>
<version value="0.8.4"/>
<platform value="all"/>
<display-name>
<name lang="en">Cleaning and validation documents for publishing in html and epub with pagination</name>

View file

@ -1,3 +1,4 @@
0.8.4 Added check for headings in footers and headers
0.8.3 Added check for sections in tables
0.7.19 Do not try to clean in read only mode
0.7.16 Added timestamp to document properties after cleaning

Binary file not shown.