Kaydet (Commit) 2fa20cf9 authored tarafından Behrend Cornelius's avatar Behrend Cornelius

#96771# Own Holidays that occur once no longer supported

üst e03422fa
......@@ -124,30 +124,23 @@ End Function
Sub CalInsertOwnDataInTables(ByVal iSelYear as Integer)
' Fügt die eigenen Individuellen Daten aus der Tabelle in die
' bereits erstellte unsortierte Tabelle ein.
' inserts the individual data from the table into the previously unsorted list
Dim CurEventName as String
Dim CurYear as Integer
Dim CurMonth as Integer
Dim CurDay as Integer
Dim CurEvMonth as Integer
Dim CurEvDay as Integer
Dim LastIndex as Integer
Dim i as Integer
Dim DateStr as String
LastIndex = Ubound(DlgCalModel.lstOwnData.StringItemList())
For i = 0 To LastIndex
CurYear = CalGetYearOfEvent(i)
If DlgCalModel.lstOwnData.StringItemList(i) <> "" Then
If (CurYear = iSelYear) Or (CurYear = 0) Then
CurMonth = CalGetMonthofEvent(i)
CurDay = CalGetDayofEvent(i)
CurEventName = CalGetNameOfEvent(i)
CalInsertBankholiday(DateSerial(CurYear, CurMonth, CurDay), CurEventName, cHolidayType_Own)
End If
If GetSelectedDateUnits(CurEvDay, CurEvMonth, i) <> SBDATEUNDEFINED Then
CurEventName = CalGetNameOfEvent(i)
CalInsertBankholiday(DateSerial(iSelYear, CurEvMonth, CurEvDay), CurEventName, cHolidayType_Own)
End If
Next
End Sub
' Finds eg the first,second Monday in a month
' Note: in This Function the week starts with the Sunday
Function GetMonthDate(YearInt as Integer, iMonth as Integer, iWeekDay as Integer, iOffset as Integer)
......@@ -167,7 +160,6 @@ Dim lDate as Long
End Function
' Finds the next weekday after a fixed date
' e.g. Midsummerfeast in Sweden: next Saturday after 20th June
Function GetNextWeekDay(iYear as Integer, iMonth as Integer, iDay as Integer, iWeekDay as Integer)
......@@ -185,7 +177,7 @@ End Function
Sub AddFollowUpHolidays(ByVal lStartDate as Long, iCount as Integer, HolidayName as String, iType as Integer)
Dim lDate as Long
For lDate = lStartDate + 1 To lStartDate + iCount
For lDate = lStartDate + 1 To lStartDate + 4
CalInsertBankholiday(lDate, HolidayName, iType)
Next lDate
End Sub
......
......@@ -61,6 +61,8 @@ Public CONST CalBLThueringen = 16
Public DlgCalendar as Object
Public DlgCalModel as Object
Public lDateFormat as Long
Public lDateStandardFormat as Long
......@@ -85,15 +87,14 @@ Dim iThisMonth as Integer
CalChoosenLand = -2
CalLoadOwnData()
' sCurLanguage = "ja"
With DlgCalModel
.cmdDelete.Enabled = False
.lstMonth.StringItemList() = cCalShortMonthNames()
Select Case sCurLangLocale
Case "ja"
Case cLANGUAGE_JAPANESE
.lstOwnData.FontName = "HG Mincho Light J"
.txtEvent.FontName = "HG Mincho Light J"
Case "zh"
Case cLANGUAGE_CHINESE
If oDocument.CharLocale.Country = "CN" Then
.lstOwnData.FontName = "HG MSung Light SC"
.txtEvent.FontName = "HG MSung Light SC"
......@@ -111,6 +112,7 @@ Dim iThisMonth as Integer
.txtYear.Tag = .txtYear.Value
.Step = 1
End With
SetupNumberFormatter(sCurLangLocale, sCurCountryLocale)
CalChooseCalendar() ' month
iThisMonth = Month(Now)
DlgCalendar.GetControl("lstMonth").SelectItemPos(iThisMonth-1, True)
......@@ -129,6 +131,70 @@ ErrorHandler:
End Sub
Sub SetupNumberFormatter(sCurLangLocale as String, sCurCountryLocale as String)
Dim oFormats as Object
Dim DateFormatString as String
oFormats = oDocument.getNumberFormats()
Select Case sCurLangLocale
Case cLANGUAGE_GERMAN
DateFormatString = "TT.MMM"
Case cLANGUAGE_ENGLISH
DateFormatString = "MMM DD"
Case cLANGUAGE_FRENCH
DateFormatString = "JJ/MMM"
Case cLANGUAGE_ITALIAN
DateFormatString = "GG/MMM"
Case cLANGUAGE_SPANISH
DateFormatString = "DD/MMM"
Case cLANGUAGE_PORTUGUESE
DateFormatString = "DD-MMM"
Case cLANGUAGE_DUTCH
DateFormatString = "DD-MMM"
Case cLANGUAGE_SWEDISH
DateFormatString = "MMM DD"
Case cLANGUAGE_DANISH
DateFormatString = "DD-MMM"
Case cLANGUAGE_POLISH
DateFormatString = "MMM DD"
Case cLANGUAGE_RUSSIAN
DateFormatString = "MMM DD"
Case cLANGUAGE_JAPANESE
DateFormatString = "M月D日"
Case cLANGUAGE_CHINESE
If sCurCountryLocale = "TW" Then
DateFormatString = "MMMMD" &"""" & "" & """"
Else
DateFormatString = "M" & """" & "" & """" & "D" &"""" & "" & """"
End If
Case cLANGUAGE_GREEK
DateFormatString = "DD/MMM"
Case cLANGUAGE_TURKISH
DateFormatString = "DD/MMM"
Case cLANGUAGE_POLISH
DateFormatString = "MMM DD"
Case cLANGUAGE_FINNISH
DateFormatString = "PP.KKK"
End Select
lDateFormat = AddNumberFormat(oFormats, DateFormatString, oDocument.CharLocale)
lDateStandardFormat = oFormats.getStandardFormat(com.sun.star.util.NumberFormat.DATE, oDocument.CharLocale)
' lDateStandardFormat = AddNumberFormat(oFormats, StandardDateFormatString, oDocument.CharLocale)
oNumberFormatter = createUNOService("com.sun.star.util.NumberFormatter")
oNumberFormatter.attachNumberFormatsSupplier(oDocument)
End Sub
Function AddNumberFormat(oNumberFormats as Object, FormatString as String, oLocale as Object) as Long
Dim lLocDateFormat as Long
lLocDateFormat = oNumberFormats.QueryKey(FormatString, oLocale, True)
If lLocDateFormat = -1 Then
lLocDateFormat = oNumberFormats.addNew(FormatString, oLocale)
End If
AddNumberFormat() = lLocDateFormat
End Function
Sub CalChooseCalendar()
With DlgCalModel
.lstMonth.Enabled = .optMonth.State = 1
......@@ -143,52 +209,18 @@ Sub CalcmdCancel()
End Sub
Sub CalcmdOk()
' cmdOk is called when the Button 'Read' is clicked on
' It is either given out a month or a year
Dim i as Integer
Dim iSelYear as Integer
Dim i, iSelYear as Integer
Dim SelYear as String
' DlgCalendar.Visible = False
oSheets = oDocument.sheets
Call CalSaveOwnData()
UnprotectSheets(oSheets)
oSheets.RemovebyName(oSheets.GetbyIndex(0).Name)
iSelYear = DlgCalModel.txtYear.Value
If DlgCalModel.optYear.State = 1 Then
oSheets.RemovebyName(oSheets.GetbyIndex(0).Name)
oSheet = oSheets.GetbyIndex(0)
oSheet.Name = sCalendarTitle$ + " " + iSelYear
InsertLocalBankholidays(iSelYear)
CalInsertOwnDataInTables(iSelYear)
oDocument.AddActionLock()
CalCreateYearTable(iSelYear)
ElseIf DlgCalModel.optMonth.State = 1 Then
Dim iMonth
iMonth = DlgCalModel.lstMonth.SelectedItems(0) + 1
oSheets.RemovebyName(oSheets.GetbyIndex(1).Name)
oSheet = oSheets.GetbyIndex(0)
If sMonthTitle = "" Then
oSheet.Name = cCalLongMonthNames(iMonth-1)
Else
oSheet.Name = sMonthTitle + " " + cCalLongMonthNames(iMonth-1)
End If
InsertLocalBankholidays(iSelYear)
CalInsertOwnDataInTables(iSelYear)
oDocument.AddActionLock
CalCreateMonthTable(iSelYear, iMonth)
End If
oDocument.RemoveActionLock
' oDocument.CalculateAll()
oSheet.protect("")
oStatusLine.End
DlgCalendar.EndExecute()
bCancelTask = True
End Sub
Sub InsertLocalBankholidays(iSelYear as Integer)
Select Case sCurLangLocale
Case cLANGUAGE_GERMAN
If Ubound(DlgCalModel.lstHolidays.SelectedItems()) > -1 Then
......@@ -234,4 +266,33 @@ Sub InsertLocalBankholidays(iSelYear as Integer)
Case cLANGUAGE_FINNISH
Call FindWholeYearHolidays_FI(iSelYear)
End Select
End Sub</script:module>
\ No newline at end of file
Call CalInsertOwnDataInTables(iSelYear)
If DlgCalModel.optYear.State = 1 Then
oSheets.RemovebyName(oSheets.GetbyIndex(0).Name)
oSheet = oSheets.GetbyIndex(0)
oSheet.Name = sCalendarTitle$ + &quot; &quot; + iSelYear
oDocument.AddActionLock
Call CalCreateYearTable(iSelYear)
ElseIf DlgCalModel.optMonth.State = 1 Then
Dim iMonth
iMonth = DlgCalModel.lstMonth.SelectedItems(0) + 1
oSheets.RemovebyName(oSheets.GetbyIndex(1).Name)
oSheet = oSheets.GetbyIndex(0)
If sMonthTitle = &quot;&quot; Then
oSheet.Name = cCalLongMonthNames(iMonth-1)
Else
oSheet.Name = sMonthTitle + &quot; &quot; + cCalLongMonthNames(iMonth-1)
End If
oDocument.AddActionLock
Call CalCreateMonthTable(iSelYear, iMonth)
End If
oDocument.RemoveActionLock
oSheet.protect(&quot;&quot;)
oStatusLine.End
DlgCalendar.EndExecute()
bCancelTask = True
End Sub
</script:module>
\ No newline at end of file
......@@ -114,6 +114,7 @@ ErrorHandling:
End Sub
Sub FormatCalCells(ColPos,RowPos,i as Integer)
Dim oNameCell, oDateCell as Object
Dim iCellValue as Long
......
......@@ -8,6 +8,7 @@ Public fHeightCorrFactor as Double
Public fWidthCorrFactor as Double
Sub Main()
Call CalAutopilotTable()
End Sub
......@@ -15,14 +16,28 @@ End Sub
Sub CalcmdDeleteSelect()
Dim MsgBoxResult as Integer
Dim bDoEnable as Boolean
Dim iSel as Integer
Dim MaxIndex as Integer
If Ubound(DlgCalModel.lstOwnData.SelectedItems()) &gt; -1 Then
MsgBoxResult = MsgBox(cCalSubcmdDeleteSelect_DeleteSelEntry$, 4+32, cCalSubcmdDeleteSelect_DeleteSelEntryTitle$)
If MsgBoxResult = 6 Then
iSel = DlgCalModel.lstOwnData.SelectedItems(0)
DlgCalModel.lstOwnData.StringItemList() = RemoveSelected(DlgCalModel.lstOwnData)
&apos; Flag zum Speichern der neuen Daten.
&apos; Flag to store the new data
bCalOwnDataChanged = True
DlgCalModel.cmdDelete.Enabled = Ubound(DlgCalModel.lstOwnData.StringItemList()) &gt; -1
Call CalClearInputMask()
bDoEnable = Ubound(DlgCalModel.lstOwnData.StringItemList()) &gt; -1
DlgCalModel.cmdDelete.Enabled = bDoEnable
If bDoEnable Then
MaxIndex = Ubound(DlgCalModel.lstOwnData.StringItemList())
If iSel &gt; MaxIndex Then
iSel = MaxIndex
End If
DlgCalendar.GetControl(&quot;lstOwnData&quot;).SelectItemPos(iSel, True)
CalUpdateNewEventFrame()
Else
Call CalClearInputMask()
End If
End If
End If
End Sub
......@@ -32,21 +47,6 @@ Sub CalSaveOwnEventControls()
With DlgCalModel
.txtOwnEventDay.Tag = .txtOwnEventDay.Value
.txtOwnEventMonth.Tag = .txtOwnEventMonth.Text
.DlgCalModel.txtOwnEventYear.Tag = DlgCalModel.txtOwnEventYear.Value
End With
End Sub
Sub ToggleYearBox()
&apos; Falls der RadioButton für einen Jahreskalender angeklickt
&apos; worden ist, müssen die Controls für den Monat Disabled
&apos; werden, da ihre Werte in einer Jahrestabelle aufgehen.
With DlgCalModel
.txtOwnEventYear.Enabled = .chkEventOnce.State = 1
.lblEventYear.Enabled = .chkEventOnce.State = 1
If .txtOwnEventYear.Value = 0 And .lblEventYear.Enabled Then
.txtOwnEventYear.Value = Year(Now)
End If
End With
End Sub
......@@ -66,11 +66,14 @@ End Sub
Sub SelectState(aEvent as Object)
Dim ListIndex as Integer
If aEvent.ClickCount &gt;= 1 Then
ListIndex = CalGetGermanLandAtMousePos(CInt(aEvent.X/fWidthCorrFactor), CInt(aEvent.Y/fHeightCorrFactor), Land$)
DlgCalendar.GetControl(&quot;lstHolidays&quot;).SelectItemPos(ListIndex, True)
bSelectByMouseMove = False
End If
Select Case sCurLangLocale
Case cLANGUAGE_GERMAN
If aEvent.ClickCount &gt;= 1 Then
ListIndex = CalGetGermanLandAtMousePos(CInt(aEvent.X/fWidthCorrFactor), CInt(aEvent.Y/fHeightCorrFactor), Land$)
DlgCalendar.GetControl(&quot;lstHolidays&quot;).SelectItemPos(ListIndex, True)
bSelectByMouseMove = False
End If
End Select
End Sub
......@@ -81,29 +84,26 @@ End Sub
Sub CalClearInputMask()
Dim NullList() as String
&apos; Löscht die Werte der Eingabe Controls für ein neues Ereignis.
With DlgCalModel
.chkEventOnce.State = 0
.lblEventYear.Enabled = False
.txtOwnEventYear.Enabled = False
.txtOwnEventYear.SetPropertyToDefault(&quot;Value&quot;)
.txtEvent.Text = &quot;&quot;
.txtOwnEventDay.SetPropertyToDefault(&quot;Value&quot;)
.cmdInsert.Enabled = False
End With
DlgCalendar.GetControl(&quot;lstOwnEventMonth&quot;).SelectItemPos(0,True)
CurOwnMonth = 1
If Ubound(DlgCalModel.lstOwnData.StringItemList()) &gt; -1 Then
If Ubound(DlgCalModel.lstOwnData.SelectedItems()) = -1 Then
DlgCalendar.GetControl(&quot;lstOwnData&quot;).SelectItemPos(0,True)
CalUpdateNewEventFrame()
End If
End If
End Sub
Sub CalmdSwitchOwnDataOrGeneral()
&apos;Ändert den Titel der Dialogbox beim Seitenwechsel und die
&apos;Beschriftungen der Knöpfe
If DlgCalModel.Step = 1 Then
DlgCalModel.Step = 2
DlgCalModel.cmdOwnData.Label = cCalSubcmdSwitchOwnDataOrGeneral_Back$
DlgCalModel.cmdInsert.Enabled = DlgCalModel.txtEvent.Text &lt;&gt; &quot;&quot;
ToggleYearBox()
&apos; ToggleYearBox()
Else
dim bla as boolean
DlgCalModel.Step = 1
......@@ -124,32 +124,24 @@ Dim bDoEnable as Boolean
Dim sSelectedItem
Dim ListIndex as Integer
Dim MaxSelIndex as Integer
Dim iMonth as Integer
Dim CurEvMonth as Integer
Dim CurEvDay as Integer
Dim DateStr as String
bDoEnable = False
With DlgCalModel
MaxSelIndex = Ubound(DlgCalModel.lstOwnData.SelectedItems())
If MaxSelIndex &gt; -1 Then
ListIndex = .lstOwnData.SelectedItems(MaxSelIndex)
.txtEvent.Text = CalGetNameofEvent(ListIndex)
.txtOwnEventDay.Value = CalGetDayOfEvent(ListIndex)
iMonth = CalGetMonthOfEvent(ListIndex)
DlgCalendar.GetControl(&quot;lstOwnEventMonth&quot;).SelectItemPos(iMonth-1, True)
CurOwnMonth = DlgCalModel.lstOwnEventMonth.SelectedItems(0) + 1
If CalGetYearofEvent(ListIndex) &lt;&gt; 0 Then
.txtOwnEventYear.Value = CalGetYearofEvent(ListIndex)
bDoEnable = True
If GetSelectedDateUnits(CurEvDay, CurEvMonth, ListIndex) &lt;&gt; SBDATEUNDEFINED Then
.txtOwnEventDay.Value = CurEvDay
DlgCalendar.GetControl(&quot;lstOwnEventMonth&quot;).SelectItemPos(CurEvMonth-1, True)
.cmdDelete.Enabled = True
.cmdInsert.Enabled = True
Else
bDoEnable = False
DlgCalModel.txtOwnEventYear.SetPropertyToDefault(&quot;Value&quot;)
Call CalClearInputMask()
.cmdDelete.Enabled = True
End If
.chkEventOnce.State = Abs(bDoEnable)
.lblEventYear.Enabled = bDoEnable
.txtOwnEventYear.Enabled = bDoEnable
.cmdDelete.Enabled = True
.cmdInsert.Enabled = True
Else
Call CalClearInputMask()
.cmdDelete.Enabled = False
End If
End With
End Sub</script:module>
\ No newline at end of file
......@@ -6,7 +6,6 @@ Sub Main()
Call CalAutopilotTable()
End Sub
Function CalGetGermanLandAtMousePos(byval X as single, byval Y as single) as Integer
CalChoosenLand = 0
If (X&gt;73)And(X&lt;130)And(Y&gt;=117)And(Y&lt;181) Then
......@@ -69,17 +68,6 @@ End Function
Sub CalFindWholeYearHolidays_GERMANY(ByVal iSelYear as Integer, ByVal iCountry as Integer)
&apos; Ermittelt die Feiertage eines gesamten Jahres (Parameter iSelYear),
&apos; bezogen auf ein bestimmtes Bundesland (Parameter iCountry). Kein
&apos; bestimmtes Bundesland bedeutet, dass der Parameter gleich der
&apos; Konstante calBLHamburg ist, da Hamburg nur Standardfeiertage kennt.
&apos; Die Feiertage werden in das Array CalBankHolidayName$ geschrieben.
&apos; Der Index dieses Arrays geht bis vierhundert. Der 1. Januar hat den
&apos; Indexwert 1, der 2. Januar den Indexwert 2 usw. Das bedeutet, daß
&apos; wenn am 2. Januar kein Feiertag existiert, liefert
&apos; CalBankHolidayName$(DateSerial(0, 1, 2) eine leere Zeichenkette (&quot;&quot;).
Dim So as Integer
Dim OsternDate&amp;, VierterAdvent&amp;
......@@ -130,7 +118,7 @@ Sub CalFindWholeYearHolidays_GERMANY(ByVal iSelYear as Integer, ByVal iCountry a
CalInsertBankholiday(vierterAdvent-32, &quot;Buß- und Bettag&quot;, cHolidayType_Full)
Else
CalInsertBankholiday(vierterAdvent-32, &quot;Buß- und Bettag&quot;, cHolidayType_Half)
End If &apos; Dank an die EKD für die Berechnungsvorschrift des Buß- und Bettags!
End If
CalInsertBankholiday(vierterAdvent-21, &quot;1. Advent&quot;, cHolidayType_Full)
CalInsertBankholiday(vierterAdvent-14, &quot;2. Advent&quot;, cHolidayType_Full)
CalInsertBankholiday(vierterAdvent-7, &quot;3. Advent&quot;, cHolidayType_Full)
......
......@@ -12,6 +12,7 @@ Public Const cLANGUAGE_SPANISH = &quot;es&quot;, cLANGUAGE_SWEDISH = &quot;sv&qu
Public BLNameList(0 To 16) as String
&apos; R e s o u r c e s t r i n g c o n s t a n t s
&apos; -------------------------------------------------
&apos; Dialog labels start at 1000
......@@ -71,8 +72,8 @@ Const dlgShortMonth = 1225
.lblEvent.Label = GetResText(1019)
.lblEventDay.Label = GetResText(1021)
.lblEventMonth.Label = GetResText(1022)
.lblEventYear.Label = GetResText(1023)
.chkEventOnce.Label = GetResText(1020)
&apos; .lblEventYear.Label = GetResText(1023)
&apos; .chkEventOnce.Label = GetResText(1020)
.cmdInsert.Label = GetResText(1016)
.cmdDelete.Label = GetResText(1017)
&apos; Load long month names
......
......@@ -45,6 +45,7 @@ Dim lDate&amp;
End Sub
Sub FindWholeYearHolidays_FI(ByVal YearInt as Integer)
Dim OsternDate&amp;
&apos; New Year
......@@ -78,9 +79,9 @@ Dim lDate&amp;, VierterAdvent&amp;
&apos;New Year
CalInsertBankholiday(DateSerial(YearInt, 1, 1), &quot;Nytårsdag&quot;, cHolidayType_Full)
lDate = CalEasterTable (YearInt)
&apos;&quot;Fasching&quot;
&apos; carnival
CalInsertBankholiday(lDate-49, &quot;Fastelavn&quot;, cHolidayType_Half)
&apos;&quot;Gründonnerstag&quot;
&apos;&quot;Maundy Tuesday
CalInsertBankholiday(lDate-3, &quot;Skærtorsdag&quot;, cHolidayType_Full)
&apos;&quot;Good Friday &quot;
CalInsertBankholiday(lDate-2, &quot;Langfredag&quot;, cHolidayType_Full)
......@@ -148,6 +149,7 @@ Dim lDate&amp;
End Sub
Sub FindWholeYearHolidays_TRK(ByVal YearInt as Integer)
Dim lDate as Long
&apos; New Years&apos; Day
......@@ -206,6 +208,8 @@ Dim lRamazanBayRamStartDate as Long
Case 2008
lKurbanBayRamStartDate = DateSerial(iSelYear, 12, 7)
lRamazanBayRamStartDate = DateSerial(iSelYear, 9, 29)
Case Else
Exit Sub
End Select
&apos;Feast Of the Sacrifice Eve
CalInsertBankholiday(lKurbanBayRamStartDate, &quot;Kurban Bayramı Arefesi&quot;, cHolidayType_Half)
......@@ -274,6 +278,7 @@ Dim lDate as Long
End Sub
Sub FindWholeYearHolidays_SPAIN(ByVal YearInt as Integer)
Dim lDate&amp;
CalInsertBankholiday(DateSerial(YearInt, 1, 1), &quot;Año Nuevo&quot;, cHolidayType_Full)
......@@ -537,7 +542,7 @@ End Sub
Sub FindWholeYearHolidays_CN(YearInt as Integer)
CalculateChineseNewYear(YearInt)
CalInsertBankholiday(DateSerial(YearInt, 1, 1), &quot;元旦&quot;, cHolidayType_Full) &apos; New Year
CalInsertBankholiday(DateSerial(YearInt, 3, 8), &quot;妇女节&quot;, cHolidayType_Half) &apos; Women&apos;s Day
CalInsertBankholiday(DateSerial(YearInt, 3, 8), &quot;妇女节&quot;, cHolidayType_Half) &apos; Women&apos;s Day
CalInsertBankholiday(DateSerial(YearInt, 4, 5), &quot;清明节&quot;, cHolidayType_Half) &apos; Day of the deads
CalInsertBankholiday(DateSerial(YearInt, 5, 1), &quot;劳动节&quot;, cHolidayType_Full) &apos; International Labour Day
CalInsertBankholiday(DateSerial(YearInt, 6, 1), &quot;儿童节&quot;, cHolidayType_Half) &apos; Children&apos;s Day
......@@ -628,7 +633,6 @@ Function CalculateJapaneseSpringDay(iSelYear as Integer)
End Function
Function CalculateJapaneseAutumnDay(iSelYear as Integer)
If (iSelYear &gt; 1979) And (iSelYear &lt; 2100) Then
CalculateJapaneseAutumnDay() = Int(23.8431 + 0.242194)* (iSelYear-1980) - (Int((iSelYear-1980)/4))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment