使用Domino表单构建Web页面
Domino单账号登陆问题

单账号登陆问题在web端单账号登陆的问题,即通过浏览器打开系统时,一个账号只能在一个IP下登陆,设计的原理为:1、当用户登陆时进行判断(onload事件),当前用户是不是该账号最后登录的用户(从登陆日志中查找根据IP),通过webqueryopen执行的代理进行处理,如果不是最后登录的则给域fldLastlogin赋值为“1”,在onload的js中进行处理,删除当前用户的cookie打开登陆界面。
如果是最后登录的账户,则进行正常的登录,记录最新的登录时间。
2、如果是已经登陆的页面,则在用户进行操作时进行判断(页面的onMousedown事件),进行判断当前用户是否为最后登录的账号。
3、登陆日志的记录,对于在同一天同一账户同一IP只记录一条登陆记录,只是登陆时间是最后一次的登录时间。
主要处理涉及以下两个库:1、系统管理库(ldconfig.ncf)1)表单(homepage)修改A、增加两个域B、Onload事件的修改C、增加表单的onMousedown事件2)代理A、HomepageOpen(修改)主要增加一个函数用于判断(CheckLoginStat)代码如下:Sub CheckLoginStat()On Error Goto ErrHandleDim session As New notessessionDim db As NotesDatabaseDim LoginDB As NotesDatabaseDim doc As notesdocumentDim LoginDoc As NotesDocumentSet db = session.CurrentDatabaseSet doc=session.documentcontextDim UserName As StringDim Directory As StringDirectory = doc.CurDbDirectory(0)UserName = erName(0)'Directory = GetParaValue(doc.Query_String_Decoded(0),"Directory","")'UserName = GetParaValue(doc.Query_String_Decoded(0),"UserName","") Set LoginDB=session.GetDatabase(db.Server,Directory + "\LoginLog.nsf")Dim view As NotesViewSet view = LoginDB.GetView("LoginLogtime")view.RefreshDim strsearch(1 To 2) As Stringstrsearch(1) = UserNamestrsearch(2) = Str(Today())'Set LoginDoc = Logincon.GetFirstDocumentSet LoginDoc = view.GetDocumentByKey(strsearch,True)'If LoginDoc Is Nothing ThenIf LoginDoc Is Nothing ThenElseIf doc.Remote_Addr(0) <> LoginDoc.LoginIP(0) Then'Msgbox doc.Remote_Addr(0)+"Add"'Msgbox LoginDoc.LoginIP(0)+"Ip"LoginDoc.LoginIP = doc.Remote_Addr(0)doc.fldLastLogin = "1"End IfEnd IfExit SubErrHandle:ErrLog "CheckLoginStat"Exit SubEnd SubB、Loginlog(修改)主要修改写登陆日志的部分,不同IP登陆页要记录C、Loginlogchk(增加)主要是用于onMousedown事件是进行判断用,代码如下:Sub InitializeOn Error Goto alertDim session As New notessessionDim db As NotesDatabaseDim LoginDB As NotesDatabaseDim doc As notesdocumentSet db = session.CurrentDatabaseSet doc=session.documentcontextDim UserName As StringDim Directory As StringDirectory = GetParaValue(doc.Query_String_Decoded(0),"Directory","")UserName = GetParaValue(doc.Query_String_Decoded(0),"UserName","")Set LoginDB=session.GetDatabase(db.Server,Directory + "\LoginLog.nsf")Dim view As NotesViewSet view = LoginDB.GetView("LoginLogtime")view.RefreshDim strsearch(1 To 2) As Stringstrsearch(1) = UserNamestrsearch(2) = Str(Today())'Set LoginDoc = Logincon.GetFirstDocumentSet LoginDoc = view.GetDocumentByKey(strsearch,True)'If LoginDoc Is Nothing Then'Msgbox doc.Remote_Addr(0)+"Addchk"'Msgbox LoginDoc.LoginIP(0)+"Ipchk"If LoginDoc Is Nothing Then'loginlogchk = "0"ElseIf doc.Remote_Addr(0) <> LoginDoc.LoginIP(0) ThenLoginDoc.LoginIP = doc.Remote_Addr(0)doc.fldLastLogin = "1"'Print |alert("该账户已在别处登录,请您重新登录系统!");|'Print |delCookie("SysLogin");|'Print |fnLogout();|'Print |return false;|PrintXML "logined"'loginlogchk = "1"End IfEnd IfExit Subalert:ErrLog "(系统)记录人员登陆|loginlog"End Sub2、登陆日志库(loginlog.nsf)对于登陆日志库主要是对视图进行处理视图处理A、视图(searchLoginUser)(修改该视图),主要是增加第三例的排序,用于写登陆日志时查找登陆日志文档。
在Domino中定制HTML登录表单的方法

在Domino中定制HTML登录表单的方法基于大家对domcfg.nsf数据库的登陆表单的设置问题比较多,特整理了一篇文章,希望对大家有所帮助,同时也希望大家完善。
Domino 提供缺省的HTML 登录表单,它允许用户输入名称和口令,然后将该名称和口令用于整个用户会话。
此表单在“Domino 配置”数据库(DOMCFG.NSF) 中创建并配置。
用户可以通定制此表单以包含其他信息。
一、创建“Domino 配置”数据库。
1、打开Notes 客户机,选择“文件”“数据库”“新建”。
2、在“服务器”域中输入Web 服务器的名称。
3、选择“Domino Web 服务器配置”模板(DOMCFG5.NTF)4、输入数据库的标题并将此数据库命名为(DOMCFG.NTF)。
5、单击“确定”。
6、将“匿名”的项目添加到数据库的存取控制列表中,并赋予“读者”的存取级别。
二、创建定制表单创建登录表单最简单的方法是修改“Domino 配置”数据库中$$LoginUserForm 表单的拷贝。
用户还可以“从头”新建登录表单。
1、打开Domino Designer 客户机,并打开“Domino 配置”数据库(DOMCFG.NSF)。
2、选择“视图”“设计”。
3、使用$$LoginUserForm 创建定制的表单,应先拷贝$$LoginUserForm,然后双击拷贝$$LoginUserForm 将它打开,进行定制、重命名。
要新建表单,单击“新建表单”。
4、当完成定制表单后,保存并关闭它。
三、指定定制表单为登录表单1、打开Notes 客户机,并打开“Domino 配置”数据库(DOMCFG.NSF)。
2、选择“创建”“映射登录表单”。
3、为Web 服务器选择正确服务器类型。
4、输入包含定制表单的数据库的名称。
此数据库应为DOMCFG.NSF,除非将这个定制表单存储在其他数据库数据库中。
5、输入定制的登录表单名称,如CustomLoginForm。
初学domino--学习心得

一、我们可以把自己做的东西在IndiOffice 的地址树中创建索引我们可以把自己做的表单、页面、数据库在IndiOffice的地址树里进行链接。
还记得以前我们做得人事管理系统吗?我们把人事管理系统分了几个模块像人员管理、培训管理、薪资管理等。
然后我们在主页面的左栏里为这几个模块创建索引。
这个和IndiOfficce的地址树很像,不知道你们跟我有没有同样的感觉。
而我们以前用Java做的时候一般习惯为每个模块至少创建两个索引,一个浏览还有一个添加。
其实在浏览里我们就可以进行增、删、改、查的操作了。
但我们习惯把添加又单独拿出来创建一个链接索引。
其实我觉得我们以前的“浏览”和我们现在Domino里的myview表单很相似。
在myview表单里我们同样可以通过各视图浏览数据库里的信息,也可以进行创建等操作。
所以我就想能不能把创建表单也单独哪出来。
后来我发现了可以,而且很简单。
在管理引擎里新建系统模块,新建表单里有一栏“此模块是”,默认是“Domino 数据库”,我们可以把自己做的数据库考到Domino服务器的Data目录里,然后在“数据库文件名”进行链接。
我们可以选择“外部连接URL”,然后在“外部链接URL地址”这一栏里写入URL地址。
这样我们就可以为一个表单或是视图在地址树里创建一个索引。
二、设置在浏览器的默认打开内容不知道大家有没有注意到,我们用模版创建的数据库,在浏览器打开时默认都是打开myview表单,默认打开的视图一般都是vwDocByDate。
在数据库属性的启动副签中设置“在浏览器中打开时”为“打开指定的页面”然后在“页面”中选择默认要显示的页面,在选择的页面中可以定义默认显示的表单或视图。
在模版中它默认打开的页面一般都是“$$ViewTemplateDefault”。
这是我这几天的一点学习心得,也不知道有没有用,先跟大家分享一下。
呵呵。
xpage读法

xpage读法XPages是IBM Lotus Domino平台上的一种技术,用于开发Web 应用程序。
它基于Java和JavaServer Faces(JSF)框架,提供了一种快速、简便的方式来构建功能强大的企业级Web应用程序。
XPages的核心概念是将应用程序的界面和逻辑分离,使开发人员可以专注于业务逻辑的实现。
通过使用XPages,开发人员可以轻松地创建各种类型的表单、视图和导航,以及处理和显示数据的逻辑。
XPages还提供了一组强大的控件和功能,如数据绑定、事件处理、验证和安全性等,使开发人员能够快速构建出现代化的Web 应用程序。
在XPages中,开发人员可以使用标准的HTML、CSS和JavaScript来创建用户界面。
同时,XPages还提供了一些自定义标签和属性,以简化开发过程和增强用户体验。
开发人员可以使用这些标签和属性来创建交互式的表单、数据表格和图表等元素,以及实现动态效果和用户反馈。
XPages还支持各种类型的数据源,如关系数据库、文档数据库和Web服务等。
开发人员可以使用XPages的数据绑定功能,将这些数据源与应用程序的界面进行绑定,实现数据的展示、输入和处理。
同时,XPages还提供了一套强大的搜索和过滤功能,以帮助用户快速找到所需的数据。
除了基本的Web应用程序开发功能外,XPages还提供了一些高级功能,如多语言支持、主题和样式管理、移动设备适配等。
这些功能使开发人员能够更好地满足用户的需求,并提供更好的用户体验。
总的来说,XPages是一种功能强大、易于使用的开发技术,适用于构建各种类型的企业级Web应用程序。
它的出现大大简化了开发人员的工作,提高了开发效率,同时还提供了丰富的功能和灵活性,使开发人员能够更好地满足用户的需求。
无论是初学者还是经验丰富的开发人员,都可以通过学习和使用XPages来创建出色的Web应用程序。
Domino系统实施

基本概念(2)
domino 目录:公共地址本 个人文档 服务器文档
连接、复制信息
验证信息 服务器配置文档
admin4.nsf:管理请求,所有管理请求经过该库,系统自动建立
load adminp tell admi,存放所有与验证有关的改动,手动建立
行长,部门经理,人事部经理,普通员工对数据库和文档享有 不同的读写权限
总结:
系 统 管 理 员 ( Doctor Notes ) : 对 整 个 系 统 ( 特 别 是 names.nsf)具有管理权限,但对系统不一定具有管理者权 限,只要具有管理权限就行(如作者、编辑者等等),不一 定有权管理所有的事情,例如,可以删除邮箱,但不能打开 邮箱; 服务器管理员(Apps01):对服务器具有管理权限,由系 统管理员在服务器文档中配置,权限比系统管理员低。修改 不了names.nsf(包括系统安全性),有时只对其具有读者 权限;应用管理员:对应的数据库管理员, 对个人来讲,是管理自己的应用数据库,例如管理自己的 邮箱; 管理服务器(names.nsf/ACL表/高级/管理服务器): 对任何一数据库的管理服务器应为指定的一台,当任务提 交后,只有管理服务器才能把任务分解掉,分解成好几条管 理进程,也就是说,只有管理服务器才能去分解管理请求。
Lotus domino/Notes体系结构
基于Client/Server模式的体系结构
支持C/S结构,也支持B/S结构
在安装时有区别,界面也不一样(Domino Server界面与Notes界面) Lotus客户端有两个功能:访问本地资源、访问服务器资源
注意:Client 端不能访问其他的Client,因为Lotus不是文件服务器,不支持文件共享。
客户端界面介绍包括管理界面和开发界面3license介绍dominonotes应用介绍应用架构模式基于数据库的应用数据库的内核基于文档的管理文档管理的机制设计元素和数据元素的结合权限控制机制不同级别的用户享有不同的权限行长部门经理人事部经理普通员工对数据库和文档享有不同的读写权限系统管理员doctornotes
Domino_webservice应用技巧

Domino webservice应用技巧一、创建webservice1、Domino中的webservice界面打开Designer端,打开一个Notes数据库,展开到web service,如下图:图 1上图中的web服务中心库,是indioffice自带的一个存放webservice的数据库,你也可以自己创建一个新的数据库或使用其他已有的数据库来创建你自己的webservice。
2、设置数据库ACL目前indioffice提供的webservice所在数据库是匿名可访问的,可以通过webservice传入参数中的用户名密码来控制webservice是否执行。
但是理论上,将数据库设置为匿名不可访问,通过类似soapHeader传入用户名密码,来控制访问应该也是可以实现的,不过目前由于产品这边没有合适的环境,还没有尝试,项目如果有机会可以试一下,如果可以还请把测试结果向产品反馈一下。
3、建立webservice在“图1”中,点击“新建web service”按钮,进入webservice新建页面。
详细步骤参见附件一:《Domino中运用webservice》。
下面为简要步骤:A、Webservice属性的第一个页签名称:这个webservice的名称,是暴露给调用方的,例如上图中的webservice,调用方可通过下面这个url打开:http://域名/indishare/webservice所在数据库.nsf /wsForGetNews?wsdlPortType类:Web 服务接口的类的名称,必须同代码中的Class类名一致。
B、第二个页签按缺省设置即可:C、第三个页签D、代码设计Webservice可以是用Java写的或者用lotusscript写,一般在处理Domino文档时,用lotusscript编写webservice会更方便,但对于一些特殊操作,比如一些xml操作(虽然ls提供了部分xml操作类,但是不够用)还是必须用java实现。
Domino基础——开发

设计元素 — 视图
Domino的核心元素、是重要的数据展示手段: 通过指定选择公式确定要显示的文档; 通过视图列公式指定要显示的字段; 通过列属性指定排序,显示样式等; 每个数据库至少要有一个视图 类似RDB的视图
设计元素 — 页面
Domino的重要元素、用于显示信息: 可以包含图像、文本、大纲、表格、区段 可以作为网页、图片、附件夹来理解
关于表单
表单是Notes 应用的基础,它们决定了数据在输入输出过程中的显示方式;在一
定程度上决定了在数据库中信息是如何存储的。如果没有设计漂亮的表单,就不 会有精美的D o m i n o应用。 如果你熟悉H T M L的表单,开始时你可能会被Lotus Notes 的表单弄糊涂。 和H T M L表单一样, N o t e s的表单被用来从用户那儿获取信息(通常是通过 可编辑的域)。和H T M L表单不一样的是,N o t e s的表单也被用来显示已经 获取的信息。这些信息存储在称为文档的容器之中。 当你打开一个N o t e s表单时,填写完信息,选择保存。此时,在数据库中保 存一个新文档。这个文档中包含了一个F o r m域,它的值确认用来创建文档的表 单名,当你打开文档时,这个表单被用来显示信息。文档是数据的一部分,表单 是数据库设计的一部分。这和一个数据库中的记录(称为数据)与表(称为基础 组织)二者之间的关系相类似。在H T M L表单和N o t e s表单中,另一个不同 的地方是访问的模式。在默认情况下,当你打开一个N o t e s文档时,它处于只 读模式;读者所看到的都是在一个字处理器中创建的文档,不包含任何文本域或 下拉列表。如果你将此文档改成编辑模式,则它有着明显的不同:可编辑文本域, 下拉列表,以及其他元素都变得可见了,好像是在一个H T M L的表单之中。然 而,你所见到的并非是一个表单,确切地说,你所看到的文档,是通过一个表单 显示出来的。
数据导出-Domino浏览器端(网页端)数据导出实现

数据导出-Domino浏览器端(网页端)数据导出实现简介:本文介绍了两种导出domino数据的实现方法,一种使用代理,一种使用XPage。
一、使用代理导出数据导出代理使用LotusScript实现,基本原理涉及输出信息到网页,设置网页内容类型:1、print()方法可输出信息到网页2、设置输出HTML页面类型 为附件 “Content-Disposition:Attachment;”参考代码:%REMSub exportDataBSDescription: 数据导出,参数为导出的数据%END REMSub exportDataBS(dataTable As String)Dim attSetting As StringDim htmlHeader As String'Generate HTML PageattSetting="Content-Disposition:Attachment; filename=" & Format(Now,"YYYYMM DDHHMM") & ".xls" & Chr$(13)htmlHeader=|<html><head><meta content="text/html; charset=GB2312" http-equiv="Content-Type"/>| & Chr$(13) & _|<style type="text/css">body {background-color:transparent;font-family: Arial;}table {font-size:12;border: 1px black solid;border-collapse:collapse;}th,td {border: 1px black solid;}</style>| & _|</head><body>|Print attSetting & htmlHeader & dataTable & |</body></html>|End Sub3、通过对请求页面可获取GET和POST类型参数值参考代码:Set context=s.DocumentcontextREQUEST_CONTENT=context.Getitemvalue("REQUEST_CONTENT")(0) 'POST参数 Query_String_Decoded=context.Getitemvalue("Query_String_Decoded")(0) 'URL参数 '<<<<<<Get dataIf REQUEST_CONTENT<>"" Then'Export selected documentids=Trim(StrToken(REQUEST_CONTENT,"ids=",2))If ids<>"" ThenaryIDs=Split(ids,".")ForAll Noteid In aryIDsSet request=db.Getdocumentbyid(Noteid)If Not request Is Nothing ThentbHTML=tbHTML & getDocInfoHTML(request)ElsetbHTML=tbHTML & "<tr><td>" & Noteid & "</td><td>" & "File not fo und" & "</td></tr>"End If ' get request doc objectEnd ForAll 'loop note idsEnd IfElseIf Query_String_Decoded<>"" Then'Export as conditiondtType=GetParameter("type",Query_String_Decoded)startDate =GetParameter("start",Query_String_Decoded)endDate = GetParameter("end",Query_String_Decoded)matType=GetParameter("matType",Query_String_Decoded)'导出处理代码...ElsePrint "未获取到导出参数!"GoTo endSubEnd If其他辅助函数:* 获取URL参数Function GetParameter(strParamName As String, strQuery As String) As StringDim i As IntegerDim s As StringDim v As VariantGetParameter = ""i = InStr(UCase(strQuery),"&" & UCase(strParamName) & "=")If i <> 0 Thens = StrRight(Mid(strQuery, i),"=")If InStr(s, "&") Thens = StrLeft(s, "&")End Ifv = Evaluate("@UrlDecode(""Domino""; """ & s & """)")GetParameter = CStr(v(0))End IfEnd Function* 特殊字符转换Function PCDATA(ByVal phrase$) As String%REM当需要输出HTML格式文本时,可使用此函数将输出字符中的特殊字符转换为&#unicode格式%END REMOn Error GoTo errorHandlerDim begin%, found%, oldPhrase$If phrase$="" Then GoTo endSuboldPhrase= phraseDim a As LongDim ch As Stringphrase$=""For a=1 To Len(oldphrase)ch=Mid$(oldphrase,a,1)If Uni(ch)=32 Or Uni(ch)>47 And Uni(ch)<58 Or _ '0-9Uni(ch)>64 And Uni(ch)<91 Or _ 'A-ZUni(ch)>96 And Uni(ch)<123 Then 'a-zphrase$=phrase$ & chElsephrase$=phrase$ & "&#" & Uni(ch) & ";"End IfNextPCDATA = phraseendSub:Exit FunctionerrorHandler:PCDATA = oldPhraseResume endSubEnd Function二、通过设置XPage返回信息来导出数据设置导出功能的XPage,需设置Xpage的"rendered"属性为false,并在XPage的“afterRenderResponse()”事件中编写导出数据代码,使用SSJS编写,可以导出特殊字符(不用做处理),基本要点是:* 设置输出页面类型var exCon:javax.faces.context.ExternalContext = facesContext.getExternalContext();var writer:javax.faces.context.ResponseWriter = facesContext.getResponseWriter();var response:javax.servlet.http.HttpServletResponse = exCon.getResponse();response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Cache-Control", "no-cache");response.setHeader("Content-Disposition","attachment; filename=\"export.xls\"");* 设置输出页面及样式writer.write("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/></head>"); writer.write("<body style=\"background-color:transparent;font-family: Arial\">");.....writer.write("</body></html>");writer.endDocument();* 实现代码参考(输出指定视图内容)function getSerialTimeNo():string{var nt:Date=@Now();var y=@Year(nt);var mon=@Month(nt);var d=@Day(nt);var h=@Hour(nt);var m=@Minute(nt);var s=@Second(nt);var day=y+(@Length(mon)==1?"0":"")+mon+(@Length(d)==1?"0":"")+d;var time=(@Length(h)==1?"0":"")+h+(@Length(m)==1?"0":"")+m+(@Length(s)==1?"0":"")+s;return day+time;}function export2Excel(){try {//javax.faces.context.FacesContextvar exCon:javax.faces.context.ExternalContext = facesContext.getExternalContext();var writer:javax.faces.context.ResponseWriter = facesContext.getResponseWriter();var response:javax.servlet.http.HttpServletResponse = exCon.getResponse();response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Cache-Control", "no-cache");response.setHeader("Content-Disposition","attachment; filename=\"export"+getSerialTimeNo()+".xls\"");writer.write("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/></hea d>");writer.write("<body style=\"background-color:transparent;font-family: Arial\">");try{//////////////////////////输出代码开始///////////////////////////////页面参数传递var condition=sessionScope.parts;sessionScope.parts=null;var vw:NotesView = null;var vc:NotesViewEntryCollection = null;var ve:NotesViewEntry = null;var veTmp:NotesViewEntry = null;vw = database.getView("Request");vc = vw.getAllEntries();if(vc.getCount()>0){//输出表格及表格标题writer.write("<table border=\"1px black solid\">");writer.write("<tr>");var columns=vw.getColumnNames();for(j = 0 ; j < vw.getColumnCount() ; j++){writer.write("<th>" + columns[j] + "</th>");}writer.write("</tr>");//输出表格行:视图数据ve = vc.getFirstEntry();while (ve) {v = ve.getColumnValues();//条件判断if(condition==null || condition==v.elementAt(0)){writer.write("<tr>");for (i = 0; i < v.size(); i++) {writer.write("<td>"+v.elementAt(i).toString()+"</td>");}}veTmp = vc.getNextEntry(ve);ve.recycle();ve= veTmp;}writer.write("</table>");}else{//没有数据writer.write("No Data");}//////////////////////////输出代码结束/////////////////////////////}catch(e){writer.write("ERROR: "+e.toString());}writer.write("</body></html>");writer.endDocument();} catch (e) {print("sysExportToExcel: "+e);}}Use the context global variable to get an XSPContext object representing the current context.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
o
<FORMMETHOD=postACTION="/test.nsf/a?OpenForm&Seq=1"NA ME="_a"> o <INPUTTYPE=hiddenNAME="__Click"VALUE="0"></FORM> o </BODY> o </HTML>
设计表单前的必备知识
o 表单的一些基本设置
• Domino表单和HTML页面之间的关系
表单是Notes应用的基础,它们决定了数据在输入输 出过程中的显示方式;HTML页面也经常为用户提供 数据显示录入功能 由于Domino数据库的特殊结构,表单用于显示使用 该表单创建的文档。他们之间有一种对应关系HTML 页面则不具备这样的特性。
使用Domino表单构建Web页面
• 通常做法:
• 1. 利用FrontPage等页面制作工具,把页面的制作好。 • 2. 把页面中的<body></body>之间的代码拷贝到 Domino表单上,并做内嵌 • 3. 把页面中Head部分HTML代码拷入HTMLHead属性
设置
往Domino表单中添加域
• 在表单中添加域,设置域的HTML属性
使用Domino表单构建Web页面
大纲
• Domino表单和HTML页面之间的关系 • Notes元素在Web上HTML代码转换 • 熟悉DominoDesignerWeb开发环境 • 设计表单前的必备知识
• 如何使用表单构建Web页面
• 几种特殊的Web表单 • 图象资源的管理
使用Domino表单构建Web页面
• Notes元素在Web上HTML代码转换
复选框 DominoWeb页面把Notes复选框转换成 <input type=“checkbox”name=[域名]value="域值 ">
文本框
<input type=“text”name=[域名]value="域值">
使用Domino表单构建Web页面
如何使用表单构建Web页面
• 1. 构建页面框架 • 2. 往Domino表单中添加域 • 3. 添加操作
构建页面框架
方法:
• 1. 在Notes表单上使用Notes的格式化工具构建Web页 面 • 2. 使用其他Web开发工具构建Web页面,导入到 Domino表单 • 3. 二者结合使用
构建页面框架
添加操作
方法: • 1.使用Domino的操作 • 2.使用文字热点和图片热点 • 3.使用HTML标记<ahref=…..
添加操作
方法:
在操作中写公式完成简单应用,(不能写Ls)
有一部分公式在Web上不能用。针对Notes端
UIDocument的方法和命令都不能用
实用的表单操作按钮
Domino保留域
2.使o内嵌HTML的使用(实例分析)
Domino内嵌HTML与表单元素的混用
Domino表格的基本使用
Web上表格的美化
Domino表格的基本使用
Domino表格的基本使用(实例)
计算文本的使用
计算文本可以用来创建基于Notes@公式的文本。创
使用Domino表单构建Web页面
• Notes元素在Web上HTML代码转换
表单 DominoWeb页面会自动在页面上产生<form>和 </form>标记 表格
DominoWeb页面把Notes表格翻译成HTML语言 <table>、<TR>/<TD>等等,但Notes上的一些特效不 转换
使用Domino表单构建Web页面
建一个计算文本类似于创建一个文本类型的域,它在 计算后显示。 计算文本不在一个文档中存储,而是在每一次文档 被打开,重载,或是更新时被计算出。在页面中计算
文本特别有用。
上载控件的使用
上载控件是Notes提供的上载附件的工具, 使用方法 在表单种添加
附件存储方式
附件存储在文档种
表单隐藏公式
和Notes端编写隐藏公式方法基本上一样,主要了解 Web端隐藏和Notes端隐藏的设置
几种特殊的Web表单
• $$Search表单
• 当你选择一个连接到视图的搜索链接的时候, Domino在当前数据库中寻找一个名为$$Search的表单。 如果存在,Domino显示这个表单,否则,它显示默 认的视图搜索表单。
使用隐藏域
1. 在Web下隐藏的域 2. 在web下不显示的域
图象资源的管理
• Domino表单和HTML页面之间的关系
当你想通过Web来创建一个新文档时,你通过打开 表单OpenFormURL命令打开一个适当的表单。例如, 下面的URL在Jobe数据库中打开了JobApplication的 表单。 。 http://server/Jobs.nsf/Job+Application?OpenForm
Domino将Notes表单转化成一个HTML表单以响应 你的请求。
使用Domino表单构建Web页面
• Domino表单和HTML页面之间的关系
在你的Notes表单或文档中使用域和大部分格式都能 被Domino服务器翻译成HTML语言,例如:左对齐、 右对齐、居中;粗体、斜体、下划线和背景色;表; 等等
CGI变量
• CGI变量是能把服务器端信息传递到其他CGI 程序或脚本中的环境变量。典型情况下,当 用户提交表单的时候,CGI变量被设置,处理 表单的CGI程序从环境中获得这些变量。
CGI变量列表
• • • • • • • • • • • • • • HTTP_ACCEPT列出客户端可以接受的多媒体类型 HTTP_COOKIE任何属于当前服务器的用户的COOKIE数据 HTTP_REFERER能被用户激活并到达此处的URL HTTP_USER_AGENT浏览器类型 PATH_INFO当前URL,不包括协议和服务器信息 QUERY_STRING在URL问号后面附加的查询信息 QUERY_STRING_Decode在URL问号后面附加的查询信息 REMOTE_ADDR用户的IP地址 REMOTE_USER用户登录名 REQUEST_METHOD发出请求的方法(常常是一个表单中的URL链接或邮件) SERVER_NAMEHTTP服务器的IP地址 SERVER_PORTDomino服务器端口(默认为80) SERVER_PROTOCOL发出请求的协议版本和名称 SERVER_SOFTWARE响应请求的服务器软件版本和名称
以上方法的分析:
• 1. NotesDesigner不是专业的Web开发工具。功能不强 大,但有些设计元素是所见即所得如:表格 • 2. 专业的Web开发工具,能快速得开发Html页面, 功能强大、专业。但引入到Domino表单中都是 HTML代码,维护比较麻烦 • 3. 二者结合取长补短
构建页面框架
在Domino中捕获CGI变量有下面两种方式:
• 在Domino表单中创建一个特别的域。 • 在LotusScript或Java中创建一个 DocumentContext对象并访问它的属性。
几种特殊的Web表单
• $$ViewTemplate表单
• 你可以让Domino总是使用一个表单来显示一 个特殊的视图。为此,给此视图命名为: • $$ViewTemplateforviewname • 在此,viewname是视图的名字或别名。例如, 一个用来显示AllbyData视图的表单可以 • 命名为$$ViewTemplateforAllbyDate。
设计表单前的必备知识
o 表单的一些基本设置
o 1. HTMLHead属性设置和HTMLBody设置
设计表单前的必备知识
o 产生的代码
o o o o o o <HTML> <!--Lotus-Domino(Release5.0.5-September22,2000onWindowsNT/Intel)-> <HEAD> HTMLHead代码写在这 </HEAD> <BODYTEXT="000000"BGCOLOR="FFFFFF"HTMLBody属性写在 这>
o 2. 表单属性设置
设计表单前的必备知识
设计表单前的必备知识
Domino域的HTML属性设置
代码转换
Domino内嵌HTML的使用
•添加HTML的最简单的方法就是像在表单中输入静态
文本一样,直接键入HTML代码,然后选中这段代码, 在菜单中选择“文本->内置HTML”即可
•域公式中使用内嵌HTML。 1.在公式计算的值头尾加方括号 “[<ahref=“”>新浪</a>]”
• Notes元素在Web上HTML代码转换
单选框 Input type=“radio” value=“域值” checkedname="域名 "> RTF域
<text arearows="2"name="域名"cols="20">
使用Domino表单构建Web页面
• Notes元素在Web上HTML代码转换
热点,操作 <Ahref=“…..”Onclick=。。。。>操作名</a> 另外: 计算类型的域,不被转换成HTML元素只在Web上产 生域值 在Web下隐藏的域,不产生域的HTNL代码,除非使 用“在表单中产生所有的域”
使用Domino表单构建Web页面
• Domino表单在读写模式下HTML页面 转换的差异