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"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!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; <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() Function initRedactionConfiguration()
On Error Goto exceptionHandler On Error Goto exceptionHandler
Dim regFactory As Object Dim regFactory As Object

View file

@ -218,6 +218,18 @@ Function getRussian(identifier As String) As String
Case &quot;isInTable&quot; Case &quot;isInTable&quot;
getRussian = &quot;находится внутри таблицы.&quot; getRussian = &quot;находится внутри таблицы.&quot;
Exit Function 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 Case Else
getRussian = &quot;Перевод не найден&quot; getRussian = &quot;Перевод не найден&quot;
End Select End Select
@ -418,6 +430,18 @@ Function getEnglish(identifier As String) As String
Case &quot;isInTable&quot; Case &quot;isInTable&quot;
getEnglish = &quot;located inside the table.&quot; getEnglish = &quot;located inside the table.&quot;
Exit Function 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 Case Else
getEnglish = &quot;No translation&quot; getEnglish = &quot;No translation&quot;
End Select End Select
@ -617,6 +641,18 @@ Function getCroatian(identifier As String) As String
Case &quot;isInTable&quot; Case &quot;isInTable&quot;
getCroatian = &quot;smještene unutar stola.&quot; getCroatian = &quot;smještene unutar stola.&quot;
Exit Function 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 Case Else
getCroatian = &quot;No translation&quot; getCroatian = &quot;No translation&quot;
End Select End Select
@ -816,6 +852,18 @@ Function getSerbian(identifier As String) As String
Case &quot;isInTable&quot; Case &quot;isInTable&quot;
getSerbian = &quot;смештене унутар стола.&quot; getSerbian = &quot;смештене унутар стола.&quot;
Exit Function 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 Case Else
getSerbian = &quot;No translation&quot; getSerbian = &quot;No translation&quot;
End Select End Select
@ -1015,6 +1063,18 @@ Function getBosnian(identifier As String) As String
Case &quot;isInTable&quot; Case &quot;isInTable&quot;
getBosnian = &quot;smještene unutar stola.&quot; getBosnian = &quot;smještene unutar stola.&quot;
Exit Function 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 Case Else
getBosnian = &quot;No translation&quot; getBosnian = &quot;No translation&quot;
End Select End Select

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!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 End Sub
@ -26,6 +26,7 @@ Sub validateButton
Dim footnotesReport As String Dim footnotesReport As String
Dim graphicsReport As String Dim graphicsReport As String
Dim sectionsReport As String Dim sectionsReport As String
Dim outlinePageStylesReport As String
Dim outlineInNotesReport As String Dim outlineInNotesReport As String
Dim badText As Boolean Dim badText As Boolean
Dim badNumberings As Boolean Dim badNumberings As Boolean
@ -38,9 +39,14 @@ Sub validateButton
graphicsReport = checkGraphics graphicsReport = checkGraphics
sectionsReport = checkSectionsInTables sectionsReport = checkSectionsInTables
outlineInNotesReport = checkNotesOutline() outlineInNotesReport = checkNotesOutline()
outlinePageStylesReport = checkHeadingsInHeadersFooters
If outlineInNotesReport &lt;&gt; &quot;&quot; Then If outlineInNotesReport &lt;&gt; &quot;&quot; Then
MsgBox outlineInNotesReport MsgBox outlineInNotesReport
EndIf EndIf
If outlinePageStylesReport &lt;&gt; &quot;&quot; Then
MsgBox outlinePageStylesReport
EndIf
If footnotesReport &lt;&gt; &quot;&quot; Then If footnotesReport &lt;&gt; &quot;&quot; Then
MsgBox footnotesReport MsgBox footnotesReport
EndIf EndIf
@ -62,7 +68,7 @@ Sub validateButton
printNumberingSymbols(needExtendedInfo) 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;) MsgBox getTranslation(&quot;validationWarning&quot;)
If badText Then If badText Then
MsgBox getTranslation(&quot;validationBadSymbolsNotification&quot;) MsgBox getTranslation(&quot;validationBadSymbolsNotification&quot;)
@ -225,6 +231,98 @@ Function checkSectionsInTables As String
checkSectionsInTables = result checkSectionsInTables = result
End Function 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) Private Sub printNumberingSymbols(needExtendedInfo)
Dim families As Object Dim families As Object
Dim numStyles 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) { task oxt(type: Zip) {
dependsOn = [ 'setVersion','setVersionInBasicCode' ] dependsOn = [ 'setVersion','setVersionInBasicCode' ]
from './' from './'

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?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"> <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"/> <identifier value="pro.litvinovg.Redaction"/>
<version value="0.8.3"/> <version value="0.8.4"/>
<platform value="all"/> <platform value="all"/>
<display-name> <display-name>
<name lang="en">Cleaning and validation documents for publishing in html and epub with pagination</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.8.3 Added check for sections in tables
0.7.19 Do not try to clean in read only mode 0.7.19 Do not try to clean in read only mode
0.7.16 Added timestamp to document properties after cleaning 0.7.16 Added timestamp to document properties after cleaning

Binary file not shown.