F
fedotxxl
Итак, xPages передовая технология, которую будут развивать. У нас, к сожалению или к счастью, тонны кода на LS. Как LS дружит с xPages?
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
А это че такое? если правильно понял (это типа "сервлеты" тобишь активные серверные страницы), то им уже капец, сейчас рулит аджакс, еще лучще какойнить сильверлайгхт.xPages
xPageName$ = "test"
q$ = |"notes://" + @Name([CN]; @DbName[1]) + "/" + @DbName[2] + "/| + xPageName$ + |.xsp?OpenXPage"|
URL = Evaluate(q$)
Dim NUIWS As New NotesUIWorkspace
Call NUIWS.URLOpen(URL(0))
Sub Click(Source As Button)
Dim session As New NotesSession
Dim view As NotesView
Dim doc As NotesDocument
Dim db As NotesDatabase
Dim w As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim unid As String
Dim sendto As Variant
Dim success As Variant
Dim item As NotesItem
Set db = session.CurrentDatabase
Set uidoc = w.CurrentDocument
Set doc = uidoc.Document
AllowEdit = True
If uidoc.EditMode = False Then uidoc.EditMode = True
Call uidoc.Document.ReplaceItemValue("status","3")
Call uidoc.Document.ReplaceItemValue("state","4")
Call uidoc.Document.ReplaceItemValue("ss3","1")
Call uidoc.Document.ReplaceItemValue("ss3_date",Now())
answer = Msgbox ("Желаете прокоментировать?",4+32, "Вопрос:")
If answer = IDYES Then
f = w.DialogBox("DlgComment",True,True,False,True,False,False,"Комментарии:",,False,False,True)
If f Then
Call uidoc.Document.ReplaceItemValue("activity_document", Now() & " --> " & uidoc.FieldGetText("activity_user") & " : Служебная записка согласована утверждена адресатом с комментарием: " & uidoc.FieldGetText("tmpComments") & Chr(13) & uidoc.FieldGetText("activity_document"))
Call sendMail_WW(db,uidoc.Document, uidoc.Document.GetItemValue("author"),"СЗ: Ваша служебка утверждена адресатом - " + uidoc.FieldGetText("InternalNumber"),uidoc.FieldGetText("tmpComments"),"Служебную записку утвердили с коментарием")
If Not uidoc.FieldGetText("sendto_copy") ="" Then
Call sendMail_WW(db,uidoc.Document, uidoc.Document.GetItemValue("sendto_copy"),"СЗ: Утверждено адресатом (ознакомление) - " + uidoc.FieldGetText("InternalNumber"),uidoc.FieldGetText("tmpComments"),"Служебную записку утвердили с коментарием")
End If
Call uidoc.FieldSetText("tmpComments","")
Call uidoc.Save
Call uidoc.Document.Save(True,False)
End If
Else
Call uidoc.Document.ReplaceItemValue("activity_document", Now() & " --> " & uidoc.FieldGetText("activity_user") & " : Служебная записка утверждена адресатом " & Chr(13) & uidoc.FieldGetText("activity_document"))
Call uidoc.Save
Call uidoc.Document.Save(True,False)
Call sendMail_WW(db,uidoc.Document, uidoc.Document.GetItemValue("author"),"СЗ: Ваша служебка утверждена адресатом - " + uidoc.FieldGetText("InternalNumber"),Left(uidoc.FieldGetText("Body"),100),"Часть текста служебной записки")
If Not uidoc.FieldGetText("sendto_copy") ="" Then
Call sendMail_WW(db,uidoc.Document, uidoc.Document.GetItemValue("sendto_copy"),"СЗ: Утверждено адресатом (ознакомление) - " + uidoc.FieldGetText("InternalNumber"),Left(uidoc.FieldGetText("Body"),100),"Часть текста служебной записки")
End If
End If
If doc.Getitemvalue("SendTo_Copy")(0)<>"" Then
var = GetReaders(doc.Getitemvalue("SendTo_Copy"))
Set item = doc.ReplaceItemValue("Ot_Readers",Arrayappend(doc.ot_readers,var) )
Item.IsReaders = True
Item.IsSummary = True
Call doc.Save(True,False)
End If
Call uidoc.Save()
Call uidoc.Close
End Sub
Function GetReaders (Names As Variant)
Dim rez As Variant
Dim Persons As Variant
Dim tmpPers As Variant
ForAll Nam In names
tmpPers = Split(nam,"@")
rez = Evaluate(|
@Do(
Server := "Ezop";
DbName := "names.nsf";
View := "($LDAPCN)";
@Certificate([Subject];@DbLookup("":"NoCache"; Server : Dbname; View; @LowerCase(@Name([CN];"| & tmpPers(0) & |")); "Certificate")))|)
If IsArray(persons) Then
persons = ArrayAppend(Persons,rez)
Else
persons = rez
End If
End ForAll
GetReaders = persons
End Function
Sub sendMail_WW (db As NotesDatabase,doc As NotesDocument,sendto As Variant, subject As String, body As String, HeadBody As string)
Dim s As New NotesSession
Dim hdr As NotesMIMEHeader
Dim stream As NotesStream
Dim MIMEE As NotesMIMEEntity
Dim Hlink As String
Dim Nlink As String
Nlink = doc.Notesurl
Hlink = Replace( Nlink, "нотес адрес" , "инет адрес")
Hlink = Replace( Hlink, "notes:" , "https:")
Set mailDoc = db.CreateDocument
mailDoc.Form = "memo"
mailDoc.Principal = "Хранилище типовых документов"
mailDoc.SMTPOriginator = "Хранилище типовых документов"
mailDoc.DisplaySent = "Mail Agent"
mailDoc.From = "Внутренний документооборот"
mailDoc.Subject = subject
' mailDoc.Importance = importance
mailDoc.SendTo = sendto
Set MIMEE = maildoc.CreateMIMEEntity("Body")
Set hdr = MIMEE.CreateHeader("MIME-Version")
Call hdr.SetHeaderValAndParams(|1.0|)
Set stream = s.CreateStream
Call stream.WriteText(|<p><font size="1" color="maroon" face="Tahoma">Данное сообщение является информационным. Для совершения требуемых действий
пройдите по представленным ниже ссылкам. Отвечать на данное сообщение ненужно. </p></font>|)
Call stream.WriteText(|<p><font size="2" face="Tahoma">Ссылки на документ.<br>|)
Call stream.WriteText(|<a href="| + Nlink + |">Ссылка для доступа через стандартный клиент</a><br>|)
Call stream.WriteText(|<br>|)
Call stream.WriteText(|<a href="| + Hlink+ |">Ссылка для доступа через WEB или с мобильного клиента</a>|)
Call stream.WriteText(|<br>|)
Call stream.WriteText(|<br>|)
Call stream.WriteText(||+HeadBody+|:<br>|)
Call stream.WriteText(|<br>|)
Call stream.WriteText(|</font><Table border="1"><Tbody><TR><TD>|)
Call stream.WriteText(Body)
Call stream.WriteText(|</TD></TR></Tbody></Table>|)
stream.Position = 0&
MIMEE.SetContentFromText stream, "text/html;charset=UTF-8", ENC_IDENTITY_8BIT
Call maildoc.CloseMIMEEntities(True, "MIMEE") ' finalize pending changes into the document.
Call mailDoc.Send(False)
End Sub
товарищи.. есть вопрос.. есть форма стандартная. на форме панель с действиями.. все они написаны на LS с вызовом дополнительных функций из библиотек - тоже на LS..
Стоит задача сделать тоже самое на Web морде.. хотелось сделать на XPage.. но уперся в тот момент что не знаю как это переселить на JS.
Можете хотя бы ткнуть пальцем в сторону как это можно реализовать..
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">А это пример одной из кнопок на панели</div></div><div class="sp-body"><div class="sp-content">Код:Sub Click(Source As Button) Dim session As New NotesSession Dim view As NotesView Dim doc As NotesDocument Dim db As NotesDatabase Dim w As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim unid As String Dim sendto As Variant Dim success As Variant Dim item As NotesItem Set db = session.CurrentDatabase Set uidoc = w.CurrentDocument Set doc = uidoc.Document AllowEdit = True If uidoc.EditMode = False Then uidoc.EditMode = True Call uidoc.Document.ReplaceItemValue("status","3") Call uidoc.Document.ReplaceItemValue("state","4") Call uidoc.Document.ReplaceItemValue("ss3","1") Call uidoc.Document.ReplaceItemValue("ss3_date",Now()) answer = Msgbox ("Желаете прокоментировать?",4+32, "Вопрос:") If answer = IDYES Then f = w.DialogBox("DlgComment",True,True,False,True,False,False,"Комментарии:",,False,False,True) If f Then Call uidoc.Document.ReplaceItemValue("activity_document", Now() & " --> " & uidoc.FieldGetText("activity_user") & " : Служебная записка согласована утверждена адресатом с комментарием: " & uidoc.FieldGetText("tmpComments") & Chr(13) & uidoc.FieldGetText("activity_document")) Call sendMail_WW(db,uidoc.Document, uidoc.Document.GetItemValue("author"),"СЗ: Ваша служебка утверждена адресатом - " + uidoc.FieldGetText("InternalNumber"),uidoc.FieldGetText("tmpComments"),"Служебную записку утвердили с коментарием") If Not uidoc.FieldGetText("sendto_copy") ="" Then Call sendMail_WW(db,uidoc.Document, uidoc.Document.GetItemValue("sendto_copy"),"СЗ: Утверждено адресатом (ознакомление) - " + uidoc.FieldGetText("InternalNumber"),uidoc.FieldGetText("tmpComments"),"Служебную записку утвердили с коментарием") End If Call uidoc.FieldSetText("tmpComments","") Call uidoc.Save Call uidoc.Document.Save(True,False) End If Else Call uidoc.Document.ReplaceItemValue("activity_document", Now() & " --> " & uidoc.FieldGetText("activity_user") & " : Служебная записка утверждена адресатом " & Chr(13) & uidoc.FieldGetText("activity_document")) Call uidoc.Save Call uidoc.Document.Save(True,False) Call sendMail_WW(db,uidoc.Document, uidoc.Document.GetItemValue("author"),"СЗ: Ваша служебка утверждена адресатом - " + uidoc.FieldGetText("InternalNumber"),Left(uidoc.FieldGetText("Body"),100),"Часть текста служебной записки") If Not uidoc.FieldGetText("sendto_copy") ="" Then Call sendMail_WW(db,uidoc.Document, uidoc.Document.GetItemValue("sendto_copy"),"СЗ: Утверждено адресатом (ознакомление) - " + uidoc.FieldGetText("InternalNumber"),Left(uidoc.FieldGetText("Body"),100),"Часть текста служебной записки") End If End If If doc.Getitemvalue("SendTo_Copy")(0)<>"" Then var = GetReaders(doc.Getitemvalue("SendTo_Copy")) Set item = doc.ReplaceItemValue("Ot_Readers",Arrayappend(doc.ot_readers,var) ) Item.IsReaders = True Item.IsSummary = True Call doc.Save(True,False) End If Call uidoc.Save() Call uidoc.Close End Sub Function GetReaders (Names As Variant) Dim rez As Variant Dim Persons As Variant Dim tmpPers As Variant ForAll Nam In names tmpPers = Split(nam,"@") rez = Evaluate(| @Do( Server := "Ezop"; DbName := "names.nsf"; View := "($LDAPCN)"; @Certificate([Subject];@DbLookup("":"NoCache"; Server : Dbname; View; @LowerCase(@Name([CN];"| & tmpPers(0) & |")); "Certificate")))|) If IsArray(persons) Then persons = ArrayAppend(Persons,rez) Else persons = rez End If End ForAll GetReaders = persons End Function Sub sendMail_WW (db As NotesDatabase,doc As NotesDocument,sendto As Variant, subject As String, body As String, HeadBody As string) Dim s As New NotesSession Dim hdr As NotesMIMEHeader Dim stream As NotesStream Dim MIMEE As NotesMIMEEntity Dim Hlink As String Dim Nlink As String Nlink = doc.Notesurl Hlink = Replace( Nlink, "нотес адрес" , "инет адрес") Hlink = Replace( Hlink, "notes:" , "https:") Set mailDoc = db.CreateDocument mailDoc.Form = "memo" mailDoc.Principal = "Хранилище типовых документов" mailDoc.SMTPOriginator = "Хранилище типовых документов" mailDoc.DisplaySent = "Mail Agent" mailDoc.From = "Внутренний документооборот" mailDoc.Subject = subject ' mailDoc.Importance = importance mailDoc.SendTo = sendto Set MIMEE = maildoc.CreateMIMEEntity("Body") Set hdr = MIMEE.CreateHeader("MIME-Version") Call hdr.SetHeaderValAndParams(|1.0|) Set stream = s.CreateStream Call stream.WriteText(|<p><font size="1" color="maroon" face="Tahoma">Данное сообщение является информационным. Для совершения требуемых действий пройдите по представленным ниже ссылкам. Отвечать на данное сообщение ненужно. </p></font>|) Call stream.WriteText(|<p><font size="2" face="Tahoma">Ссылки на документ.<br>|) Call stream.WriteText(|<a href="| + Nlink + |">Ссылка для доступа через стандартный клиент</a><br>|) Call stream.WriteText(|<br>|) Call stream.WriteText(|<a href="| + Hlink+ |">Ссылка для доступа через WEB или с мобильного клиента</a>|) Call stream.WriteText(|<br>|) Call stream.WriteText(|<br>|) Call stream.WriteText(||+HeadBody+|:<br>|) Call stream.WriteText(|<br>|) Call stream.WriteText(|</font><Table border="1"><Tbody><TR><TD>|) Call stream.WriteText(Body) Call stream.WriteText(|</TD></TR></Tbody></Table>|) stream.Position = 0& MIMEE.SetContentFromText stream, "text/html;charset=UTF-8", ENC_IDENTITY_8BIT Call maildoc.CloseMIMEEntities(True, "MIMEE") ' finalize pending changes into the document. Call mailDoc.Send(False) End Sub
Обучение наступательной кибербезопасности в игровой форме. Начать игру!