用lotusscript动态刷新登录页表单设计

原创 2006年05月20日 09:36:00

用lotusscript动态刷新登录页表单设计
1、到服务器上查找是否有domcfg.nsf库,如果没有,直接把自己设计的domcfg.nsf库考到服务器上,如果有,执行2
2、从服务器的domcfg.nsf库中查找登录页,如果有,先将“$$LoginUserForm”表单导成dxl,然后将form节点下属的name节点的nodevalue值改成“$$LoginUserForm”+时间,然后再把dxl文件导到domcfg.nsf库中(该操作是保存原有的登录页表单)。
3、将自己设计的库中的“$$LoginUserForm”表单导成dxl,然后再导入到服务器的domcfg.nsf库中。

另:
    如果想直接修改某个表单的设计也是同样的道理。因为domino的数据库设计、表单、视图等等都是标准的xml文件,所以如果要修改表单设计,可以先把表单导成dxl文件(xml格式),然后,直接对dxl中具体的node作修改,然后重新导入dxl文件即可实现对表单设计的动态修改。

Option Public
Option Compare Nocase

Sub Initialize
 On Error Goto errhandle
 Dim session As notessession
 Dim db1 As notesdatabase
 Dim db2 As notesdatabase
 Dim nc As notesnotecollection
 Dim nc2 As notesnotecollection
 Dim stream As notesstream
 Dim exporter As NotesDXLExporter
 Dim importer As notesdxlimporter
 Dim importer0 As notesdxlimporter
 Dim form As NotesForm
 Dim nid As String
 
 Dim file1 As String
 Dim file2 As String
 Dim file3 As String
 Dim outputFile As String
 
 Dim timeStr As String
 
 Dim inputStream As NotesStream, outputStream As NotesStream
 Dim domParser As NotesDOMParser
 Dim docNode As NotesDOMDocumentNode
 Dim docRootNode As NotesDOMNode
 
 file1 = ""
 file2 = ""
 file3 = ""
 flag = False
 timeStr = Replace(Replace(Replace(Cstr(Now),"-",""),":","")," ","")
 
 Set session = New notessession
 Set db1 = session.currentdatabase
 '先判断当前服务器是否有登录库
 Set db2 = New NotesDatabase(db1.Server, "domcfg.nsf")
 '如果没有登录库
 If Not db2.IsOpen Then
  Set db2 = db1.CreateFromTemplate(db1.Server,"domcfg.nsf", True)
 Else
  Set form = db2.GetForm("$$LoginUserForm")
  '如果存在登录页,首先备份登录页''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  If Not form Is Nothing Then
   Set nc = db2.createnotecollection(False)
   Call nc.buildcollection
   Set nc2 = db2.createnotecollection(False)
   nc2.SelectForms = True
   Call nc2.BuildCollection
   nid = nc2.GetFirstNoteId 
   '查找登录页表单
   Forall f In db2.Forms
    If Not f.IsSubForm Then
     If f.name = "$$LoginUserForm" Then
      nc.Add(nid)
      Exit Forall
     End If
     nid = nc2.GetNextNoteId(nid)
    End If
   End Forall
   '将表单导成dxl文件,并存在临时文件夹中
   Set stream = session.CreateStream
   file2 = "c:/temp/login_back_" & timeStr & "1.dxl"
   Call stream.Open(file2)
   Set exporter=session.createDXLexporter(nc, stream)
   Call exporter.process
   Call stream.close
   '删除原有登录页
   Call form.Remove
   '读取刚才的dxl文件(xml格式的文件),修改登录页名称
   file3 = "c:/temp/login_back_" & timeStr & "2.dxl"
   Set session = New NotesSession
   Set outputStream =session.CreateStream
   outputStream.Open(file3)
   Set inputStream = session.CreateStream
   inputStream.Open (file2)
   If inputStream.Bytes > 0 Then
    Set domParser=session.CreateDOMParser(inputStream)
    Call domParser.Process
    Set docNode = domParser.Document
    Set docRootNode = docNode.DocumentElement
    If Not docRootNode.IsNull Then
     '修改文件中form节点的下属节点name的nodevalue的值
     Call ChangeNode(docRootNode,timeStr)
     Call domParser.setoutput(outputStream)
     Call domParser.Serialize
    End If
   End If
   '导入备份登录页
   Set importer0=session.createdxlimporter(outputStream, db2)
   importer0.designimportoption = 2
   Call importer0.process
   Set importer0 = Nothing
   Call outputStream.Truncate
   Call inputStream.Truncate
   Call outputStream.Close
   Call inputStream.Close
  End If
  
  '导入登录页'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  Set nc = db1.createnotecollection(False)
  Call nc.buildcollection
  Set nc2 = db1.createnotecollection(False)
  nc2.SelectForms = True
  Call nc2.BuildCollection
  nid = nc2.GetFirstNoteId
  '取得当前库的登录页表单
  Forall f In db1.Forms
   If Not f.IsSubForm Then
    If f.name = "$$LoginUserForm" Then
     nc.Add(nid)
     Exit Forall
    End If
    nid = nc2.GetNextNoteId(nid)
   End If
  End Forall
  '导成dxl文件,并存在临时文件夹中
  Set stream = session.CreateStream
  file1 = "c:/temp/login_" & timeStr & ".dxl"
  Call stream.Open(file1)
  '把dxl导入到domcfg库中
  Set exporter=session.createDXLexporter(nc, stream)
  Set importer=session.createdxlimporter(stream, db2)
  importer.designimportoption = 2
  Call exporter.process
  Call importer.process
  Call stream.Truncate
  Call stream.close
 End If
 
 Exit Sub
errhandle:
 Msgbox Cstr(Erl) & "  " & Error
End Sub

'修改form节点的name属性值
Sub ChangeNode(childNode2 As NotesDOMNode, str1 As String )
 On Error Goto errhandle
 Dim docNameMap As NotesDOMNamedNodeMap
 Dim childNode3 As NotesDOMNode
 Dim tempNode As NotesDOMNode
 Dim i As Integer
 
 While Not childNode2.IsNull
  If childNode2.NodeType <> 3 Then
   If childNode2.HasChildNodes Then
    Set childNode3 = childNode2.FirstChild
    While Not childNode3.IsNull
     Call ChangeNode(childNode3,str1)
     If Not childNode3.IsNull Then
      Set childNode3 = childNode3.NextSibling
     End If
    Wend
   End If
  End If
  Set docNameMap = childNode2.Attributes
  For i =1 To docNameMap.NumberOfEntries
   Set tempNode = docNameMap.GetItem(i)
   If tempNode.NodeValue = "$$LoginUserForm" Then
    tempNode.NodeValue="$$LoginUserForm_" & str1
    Exit Sub
   End If
  Next
  Set childNode2 = childNode2.NextSibling
 Wend
 Exit Sub
errhandle:
 Msgbox "ChangeNode:" & Cstr(Erl) & "," & Error$
End Sub

javascript制作一个用户登录表单提交检验网页(第一天)

firstDay:利用javascript制作一个用户登录表单提交检验网页: 代码如下: Insert title here function check(){ var name ...
  • qq_20916555
  • qq_20916555
  • 2015年10月31日 15:09
  • 1197

使用H5设计表单

使用H5设计表单 强大的HTML5,极大地增强了表单的设计能力,实现了很多以前需要大量编码才能实现的功能。下面我们一起来看看吧。 l        传统表单元素 action属性,给出绝对地址,...
  • xiaobozhu
  • xiaobozhu
  • 2015年12月16日 10:41
  • 3087

Form表单做登陆页面

登陆页面 用户名: 密  码: 显示效果:
  • kongjunchao159
  • kongjunchao159
  • 2015年08月07日 09:47
  • 3100

单页面应用在REST调用下的登录模块的设计与实现

单页面应用在REST调用下的登录模块的设计与实现 1 相关的技术概念简介 1.1 单页面应用程简介 单页面单页面引用 (SPA), 被定义成一个目的在于提供一种接近桌面应用程序的流畅用户体验单web页...
  • weibin_6388
  • weibin_6388
  • 2015年10月16日 16:51
  • 2177

tab表单三种写法及问题

html lang="en"> head> meta charset="UTF-8"> title>Titletitle> script src="js/jquery-1.8....
  • Hocen_Jonin
  • Hocen_Jonin
  • 2017年06月15日 11:32
  • 239

LotusScript基本语法知识……选择和循环语句

1.if语句if condition1 then   statement1elseif condition2 then  statement2else  statement3end if2.selec...
  • zoika
  • zoika
  • 2009年06月19日 09:51
  • 2794

创建web表单用户注册页面

html> html lang="en"> head> meta http-equiv="Content-Type" content="text/html" charset="UTF-8">...
  • pangqiandou
  • pangqiandou
  • 2016年09月27日 12:26
  • 2162

52. 模版和设计元素——Lotus Notes的代码重用

不论是理论上还是实用上,代码重用都是编程的一个重要议题。可以从两个角度来讨论代码重用。 一是逻辑上代码以怎样的方式被重用。既可以通过面向对象的思想普及以来耳熟能详的继承的方式。比如先建了一个车的基类...
  • starrow
  • starrow
  • 2013年08月29日 21:40
  • 4076

bootstrap设计的普通表单页面

bootstrap设计的表单页面: h3 { text-align: center; } 用户注册 用户注册 用户名: ...
  • zkdceo
  • zkdceo
  • 2017年12月11日 12:39
  • 347

CSS 实现 系统登录界面 (一)

设置页面背景被全部覆盖实现过程中出现,图片周边存在边框,白边。这个边是 body 标签的 边框,去除边框实现代码详细如下: 可除去页面的边界。 设置登录界面中提交表单的文本框位置,可以通过...
  • u013630349
  • u013630349
  • 2016年08月11日 18:31
  • 1318
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用lotusscript动态刷新登录页表单设计
举报原因:
原因补充:

(最多只允许输入30个字)