Updates for journals

This commit is contained in:
Georgy Litvinov 2020-03-13 13:23:33 +01:00
parent 511c81670c
commit f472b8e054
2 changed files with 152 additions and 81 deletions

View file

@ -18,7 +18,7 @@
<node oor:name="Submenu"> <node oor:name="Submenu">
<node oor:name="m2" oor:op="replace"> <node oor:name="m2" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>ePublishing.journals.makeUpIssue</value> <value>macro:///ePublishing.journals.makeUpIssue</value>
</prop> </prop>
<prop oor:name="Target" oor:type="xs:string"> <prop oor:name="Target" oor:type="xs:string">
<value>_self</value> <value>_self</value>
@ -31,7 +31,7 @@
</node> </node>
<node oor:name="m4" oor:op="replace"> <node oor:name="m4" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>com.example.addon1:Command1</value> <value>macro:///ePublishing.journals.setPageNumbers</value>
</prop> </prop>
<prop oor:name="ImageIdentifier" oor:type="xs:string"> <prop oor:name="ImageIdentifier" oor:type="xs:string">
<value/> <value/>

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="journals" script:language="StarBasic">&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; ) <script:module xmlns:script="http://openoffice.org/2000/script" script:name="journals" script:language="StarBasic">Private sub journalsMark1
&apos; Mri curStyle End sub
Dim templateName As String Dim templateName As String
Dim EIFN As String Dim EIFN As String
@ -12,7 +12,7 @@ Dim allImagesRelativePath As String
Dim path As String Dim path As String
Dim sectionName As String Dim sectionName As String
Sub makeUpIssue Private Sub makeUpIssue
turnOffTracking turnOffTracking
Dim description As String Dim description As String
description = &quot;Вы уверены, что хотите запустить сборку выпуска ?&quot; description = &quot;Вы уверены, что хотите запустить сборку выпуска ?&quot;
@ -141,12 +141,12 @@ Sub makeUpIssue
statusIndicator.end() statusIndicator.end()
End Sub End Sub
Sub setPageNumbers() Private Sub setPageNumbers()
updateLastPageFields() updateLastPageFields()
End Sub End Sub
Sub setPageNumbersDeprecated() Private Sub setPageNumbersDeprecated()
Dim oVeiwCursor As Object Dim oVeiwCursor As Object
Dim pageNum as Integer Dim pageNum as Integer
Dim firstPage as String Dim firstPage as String
@ -165,14 +165,14 @@ Sub setPageNumbersDeprecated()
End Sub End Sub
Sub setAtricleVars(i) Private Sub setAtricleVars(i)
&apos;updateUserField(&quot;article&quot; + i + &quot;LastPage&quot;, CStr(getArticleLastPage()) ) &apos;updateUserField(&quot;article&quot; + i + &quot;LastPage&quot;, CStr(getArticleLastPage()) )
updateUserField(&quot;article&quot; + i + &quot;UDK&quot;, getUDK()) updateUserField(&quot;article&quot; + i + &quot;UDK&quot;, getUDK())
updateUserField(&quot;author&quot; + i + &quot;Copyright&quot;, getCopyright() ) updateUserField(&quot;author&quot; + i + &quot;Copyright&quot;, getCopyright() )
&apos;updateUserField(&quot;rightHeader&quot; + i , getTitleHeader() ) &apos;updateUserField(&quot;rightHeader&quot; + i , getTitleHeader() )
End Sub End Sub
Function lastPageNum(i) Private Function lastPageNum(i)
Dim docLastPage As Integer Dim docLastPage As Integer
Dim curPageNum As Integer Dim curPageNum As Integer
Dim oViewCursor As Object Dim oViewCursor As Object
@ -210,7 +210,7 @@ Function lastPageNum(i)
lastPageNum = curPageNum lastPageNum = curPageNum
End Function End Function
Function getUDK() Private Function getUDK()
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; ) &apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
@ -231,7 +231,7 @@ Function getUDK()
oViewCursor.goToRange(oSavePosition, false) oViewCursor.goToRange(oSavePosition, false)
End Function End Function
Function getCopyright() Private Function getCopyright()
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim authors As String Dim authors As String
@ -268,7 +268,7 @@ Function getCopyright()
oViewCursor.goToRange(oSavePosition, false) oViewCursor.goToRange(oSavePosition, false)
End Function End Function
Function getAuthor() Private Function getAuthor()
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim authors As String Dim authors As String
@ -284,7 +284,7 @@ Function getAuthor()
oViewCursor.goToRange(oSavePosition, false) oViewCursor.goToRange(oSavePosition, false)
End Function End Function
Function getArticleHeader() Private Function getArticleHeader()
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim authors As String Dim authors As String
@ -300,7 +300,7 @@ Function getArticleHeader()
oViewCursor.goToRange(oSavePosition, false) oViewCursor.goToRange(oSavePosition, false)
End Function End Function
Function getSectionX(section) Private Function getSectionX(section)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim startPage As String Dim startPage As String
@ -323,7 +323,7 @@ Function getSectionX(section)
oViewCursor.goToRange(oSavePosition, false) oViewCursor.goToRange(oSavePosition, false)
End Function End Function
Function getTitleHeader() Private Function getTitleHeader()
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim title As String Dim title As String
@ -340,7 +340,7 @@ End Function
Sub setArticlePageStyles(i) Private Sub setArticlePageStyles(i)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oTextCursor As Object Dim oTextCursor As Object
Dim oText As Object Dim oText As Object
@ -386,7 +386,7 @@ Sub setArticlePageStyles(i)
End Sub End Sub
Sub setFirstPageMetadata(curStyle,i) Private Sub setFirstPageMetadata(curStyle,i)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim savePageName As String Dim savePageName As String
@ -413,7 +413,7 @@ Sub setFirstPageMetadata(curStyle,i)
sendRM() sendRM()
End Sub End Sub
Sub setDefaultFirstPageMetadata(curStyle,i) Private Sub setDefaultFirstPageMetadata(curStyle,i)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oHeaderTable As Object Dim oHeaderTable As Object
Dim oFooterTable As Object Dim oFooterTable As Object
@ -452,7 +452,7 @@ Sub setDefaultFirstPageMetadata(curStyle,i)
End Sub End Sub
Sub setPHAFirstPageMetadata(curStyle,i) Private Sub setPHAFirstPageMetadata(curStyle,i)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oHeader As Object Dim oHeader As Object
Dim oFooterTable As Object Dim oFooterTable As Object
@ -483,7 +483,7 @@ Sub setPHAFirstPageMetadata(curStyle,i)
End Sub End Sub
Sub setEIFNFirstPageMetadata(curStyle,i) Private Sub setEIFNFirstPageMetadata(curStyle,i)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oHeaderTable As Object Dim oHeaderTable As Object
Dim oFooterTable As Object Dim oFooterTable As Object
@ -530,7 +530,7 @@ Sub setEIFNFirstPageMetadata(curStyle,i)
End Sub End Sub
Sub setAritclePageHeaders(i) Private Sub setAritclePageHeaders(i)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim rightHeaderTable As Object Dim rightHeaderTable As Object
@ -612,7 +612,7 @@ Sub setAritclePageHeaders(i)
End Sub End Sub
Sub setArticleUniqPageStyles(i) Private Sub setArticleUniqPageStyles(i)
Dim firstPageName As String Dim firstPageName As String
Dim pageName As String Dim pageName As String
Dim curPageNum As Integer Dim curPageNum As Integer
@ -667,7 +667,7 @@ Sub setArticleUniqPageStyles(i)
End Sub End Sub
Sub takeWidowLinesIn Private Sub takeWidowLinesIn
Dim oViewCursor As Object Dim oViewCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
curPageStyleName = getNextPageStyleName() curPageStyleName = getNextPageStyleName()
@ -678,7 +678,7 @@ Sub takeWidowLinesIn
Loop Loop
End Sub End Sub
Sub takeDownOrpahns Private Sub takeDownOrpahns
Dim oViewCursor As Object Dim oViewCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
curPageStyleName = getNextPageStyleName() curPageStyleName = getNextPageStyleName()
@ -689,7 +689,7 @@ Sub takeDownOrpahns
Loop Loop
End Sub End Sub
Sub takeLineIn Private Sub takeLineIn
Globalscope.BasicLibraries.LoadLibrary( &quot;Publishing&quot; ) Globalscope.BasicLibraries.LoadLibrary( &quot;Publishing&quot; )
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oTextCursor As Object Dim oTextCursor As Object
@ -751,7 +751,7 @@ Sub takeLineIn
End If End If
End Sub End Sub
Function getNextPageStyleName() Private Function getNextPageStyleName()
dim curPageStyleName as String dim curPageStyleName as String
dim startPageStyleName as String dim startPageStyleName as String
dim startPageStyle as Object dim startPageStyle as Object
@ -778,16 +778,16 @@ Function getNextPageStyleName()
backspace() backspace()
End Function End Function
Function findArticleFile(path,i) Private Function findArticleFile(path,i)
Dim NextFile As String Dim NextFile As String
Dim TestName As String Dim TestName As String
Dim endChars(2) As String Dim endChars(2) As String
endChars(0) = &quot;_&quot; endChars(0) = &quot;_&quot;
endChars(1) = &quot;.&quot; endChars(1) = &quot;.&quot;
endChars(2) = &quot; &quot; endChars(2) = &quot; &quot;
Dim FoundPosition As Long Dim FoundPosition As Long
Dim EndChar As String Dim EndChar As String
NextFile = Dir(path+&quot;/&quot;, 0) NextFile = Dir(path+&quot;/&quot;, 0)
While NextFile &lt;&gt; &quot;&quot; While NextFile &lt;&gt; &quot;&quot;
For j = LBound(endChars) To UBound(endChars) For j = LBound(endChars) To UBound(endChars)
TestName = CStr(i)+endChars(j) TestName = CStr(i)+endChars(j)
@ -801,10 +801,10 @@ NextFile = Dir(path+&quot;/&quot;, 0)
Wend Wend
findArticleFile = &quot;&quot; findArticleFile = &quot;&quot;
End Function End Function
Function InsertArticle(oFileName) Private Function InsertArticle(oFileName)
Dim document as Object Dim document as Object
Dim dispatcher as object Dim dispatcher as object
Dim fileType as String Dim fileType as String
@ -827,13 +827,13 @@ End Function
Sub getChapter Private Sub getChapter
Dim testText As String Dim testText As String
testText = getFirstTextInStyle(&quot;Заголовок 1&quot;) testText = getFirstTextInStyle(&quot;Заголовок 1&quot;)
End Sub End Sub
Function getFirstTextInStyle(styleName) Private Function getFirstTextInStyle(styleName)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim curPage As Long Dim curPage As Long
Dim foundPage As Long Dim foundPage As Long
@ -848,7 +848,7 @@ Function getFirstTextInStyle(styleName)
getFirstTextInStyle = &quot;&quot; getFirstTextInStyle = &quot;&quot;
End Function End Function
Sub setHeadingsOutlineLevels Private Sub setHeadingsOutlineLevels
setHeadingOutlineLevel(1,&quot;Заголовок 1&quot;) setHeadingOutlineLevel(1,&quot;Заголовок 1&quot;)
setHeadingOutlineLevel(2,&quot;Заголовок 2&quot;) setHeadingOutlineLevel(2,&quot;Заголовок 2&quot;)
@ -874,7 +874,7 @@ Sub setHeadingOutlineLevel(num,targetStyleName)
Wend Wend
End Sub End Sub
sub getFirstTextInStyleDispatch(styleName) Private sub getFirstTextInStyleDispatch(styleName)
dim document as object dim document as object
dim dispatcher as object dim dispatcher as object
document = ThisComponent.CurrentController.Frame document = ThisComponent.CurrentController.Frame
@ -927,38 +927,36 @@ sub getFirstTextInStyleDispatch(styleName)
dispatcher.executeDispatch(document, &quot;.uno:ExecuteSearch&quot;, &quot;&quot;, 0, args1()) dispatcher.executeDispatch(document, &quot;.uno:ExecuteSearch&quot;, &quot;&quot;, 0, args1())
end Sub end Sub
sub insertLinkedImage(articleNum,styleName) Private sub insertLinkedImage(articleNum,styleName)
rem ---------------------------------------------------------------------- rem ----------------------------------------------------------------------
rem define variables rem define variables
dim document as object dim document as object
dim dispatcher as object dim dispatcher as object
document = ThisComponent.CurrentController.Frame document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;) dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dim args2(3) as new com.sun.star.beans.PropertyValue
args2(0).Name = &quot;FileName&quot;
args2(0).Value = path + imagesRelativePath + articleNum + &quot;.jpg&quot;
args2(1).Name = &quot;FilterName&quot;
args2(1).Value = &quot;&lt;Все форматы&gt;&quot;
args2(2).Name = &quot;AsLink&quot;
args2(2).Value = true
args2(3).Name = &quot;Style&quot;
args2(3).Value = styleName
dispatcher.executeDispatch(document, &quot;.uno:InsertGraphic&quot;, &quot;&quot;, 0, args2())
dim args2(3) as new com.sun.star.beans.PropertyValue
args2(0).Name = &quot;FileName&quot;
args2(0).Value = path + imagesRelativePath + articleNum + &quot;.jpg&quot;
args2(1).Name = &quot;FilterName&quot;
args2(1).Value = &quot;&lt;Все форматы&gt;&quot;
args2(2).Name = &quot;AsLink&quot;
args2(2).Value = true
args2(3).Name = &quot;Style&quot;
args2(3).Value = styleName
dispatcher.executeDispatch(document, &quot;.uno:InsertGraphic&quot;, &quot;&quot;, 0, args2())
end sub end sub
Sub copySectionIcon(articleNum) Private Sub copySectionIcon(articleNum)
FileCopy( path + allImagesRelativePath + getImageFileName(), path + imagesRelativePath + articleNum + &quot;.jpg&quot;) FileCopy( path + allImagesRelativePath + getImageFileName(), path + imagesRelativePath + articleNum + &quot;.jpg&quot;)
End Sub End Sub
Function getImageFileName() Private Function getImageFileName()
Select Case UCase(sectionName) Select Case UCase(sectionName)
Case &quot;АРХИВ&quot; Case &quot;АРХИВ&quot;
@ -984,7 +982,7 @@ Function getImageFileName()
End Select End Select
End Function End Function
sub noNumbering Private sub noNumbering
rem ---------------------------------------------------------------------- rem ----------------------------------------------------------------------
rem define variables rem define variables
dim document as object dim document as object
@ -1001,7 +999,80 @@ sub noNumbering
Wait 500 Wait 500
end sub end sub
Private Sub updateLastPageFields
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 cell As Object
Dim cellEnum As Object
Dim cellEnum2 As Object
Dim pageStyleName As String
Dim articleName As String
Dim articleNamePrefix As String
Dim articleNamePostfix As String
Dim strPos As Integer
Dim articleNum As Integer
Dim curNum As Integer
Dim pageNum As Integer
Dim textCursor As Object
Dim lastPages%( 100 )
For i = 0 to 100
lastPages%(i) = 0
next i
articleNum = 0
articleName = &quot;0&quot;
articleNamePrefix = &quot;Статья &quot;
articleNamePostfix = &quot; &quot;
Dim statusIndicator as Object
statusIndicator = ThisComponent.getCurrentController.statusIndicator
statusIndicator.Start(&quot;Производится обновление полей последних номеров страниц, подождите&quot;,30)
enum1 = ThisComponent.Text.createEnumeration
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
pageStyleName = getPageStyleNameFromEnum(enum1Element)
If Len(pageStyleName) &gt; 0 Then
strPos = InStr(pageStyleName, articleNamePrefix)
If strPos &lt;&gt; 0 Then
articleName = Right(pageStyleName, Len(pageStyleName)-Len(articleNamePrefix))
strPos = InStr(articleName, articleNamePostfix)
If strPos &gt; 0 Then
articleName = Left(articleName,strPos)
EndIf
&apos;If first article reached
If articleNum = 0 Then
articleNum = CInt(Trim(articleName))
EndIf
Else
articleName = &quot;0&quot;
EndIf
If articleNum &gt; 0 Then
curNum = CInt(Trim(articleName))
If articleNum &lt;&gt; curNum Then
pageNum = getPageNumber(enum1Element.Start)
lastPages(articleNum) = CInt(pageNum) - 1
articleNum = curNum
EndIf
EndIf
EndIf
EndIf
&apos;TODO:
&apos;OR enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;)
Wend
For i = LBound(lastPages) to UBound(lastPages)
If lastPages%(i) &lt;&gt; 0 Then
updateUserField(&quot;article&quot; + i + &quot;LastPage&quot;,lastPages%(i))
EndIf
next i
statusIndicator.end()
End Sub