Commit 24a5ce95 authored by 's avatar

Added Find

parent f2d507de
......@@ -10,9 +10,9 @@
<IMG ALIGN="RIGHT" HSPACE="0" SRC="<!--#var SCRIPT_NAME-->/p_/rtab">
<STRONG>
<!--#if action-->
<A HREF="<!--#var action-->"><!--#var label--></A>
<A HREF="<!--#var action-->"<!--#if target--> TARGET="<!--#var target-->"<!--#/if-->><!--#var label--></A>
<!--#else action-->
<A HREF="<!--#var URL1-->"><!--#var label--></A>
<A HREF="<!--#var URL1-->"<!--#if target--> TARGET="<!--#var target-->"<!--#/if-->><!--#var label--></A>
<!--#/if action-->
</STRONG>
......@@ -24,15 +24,17 @@
<IMG ALIGN="LEFT" HSPACE="0" SRC="<!--#var SCRIPT_NAME-->/p_/ltab">
<IMG ALIGN="RIGHT" HSPACE="0" SRC="<!--#var SCRIPT_NAME-->/p_/rtab">
<!--#if action-->
<A HREF="<!--#var action-->"><!--#var label--></A>
<A HREF="<!--#var action-->"<!--#if target--> TARGET="<!--#var target-->"<!--#/if-->><!--#var label--></A>
<!--#else action-->
<A HREF="<!--#var URL1-->"><!--#var label--></A>
<A HREF="<!--#var URL1-->"<!--#if target--> TARGET="<!--#var target-->"<!--#/if-->><!--#var label--></A>
<!--#/if action-->
</FONT>
</TD>
<!--#/if-->
<!--#/if sequence-item-->
<!--#/in manage_options-->
</TR>
</TABLE>
<!--#/if manage_options-->
......
......@@ -11,8 +11,8 @@
__doc__='''Application support
$Id: Application.py,v 1.68 1998/08/03 13:58:32 jim Exp $'''
__version__='$Revision: 1.68 $'[11:-2]
$Id: Application.py,v 1.69 1998/08/05 21:04:04 brian Exp $'''
__version__='$Revision: 1.69 $'[11:-2]
import Globals,Folder,os,regex,sys,App.Product, App.ProductRegistry
......@@ -22,6 +22,7 @@ from DateTime import DateTime
from AccessControl.User import UserFolder
from App.ApplicationManager import ApplicationManager
from Persistence import Persistent
from FindSupport import FindSupport
from ImageFile import ImageFile
from urllib import quote
......@@ -55,8 +56,9 @@ page. Thank you for your patience.</P>
<!--#endif-->
<!--#var standard_html_footer-->'''
class Application(Globals.ApplicationDefaultPermissions, Folder.Folder,
App.ProductRegistry.ProductRegistry):
App.ProductRegistry.ProductRegistry, FindSupport):
title ='Principia'
__roles__=['Manager', 'Anonymous']
__defined_roles__=('Manager','Anonymous')
......@@ -108,6 +110,8 @@ class Application(Globals.ApplicationDefaultPermissions, Folder.Folder,
'action':'manage_access', 'target':'manage_main'},
{'icon':'App/undo_icon.gif', 'label':'Undo',
'action':'manage_UndoForm', 'target':'manage_main'},
{'label':'Find', 'action':'manage_findFrame',
'target':'manage_main'},
)
_reserved_names=('standard_html_header',
......@@ -184,36 +188,7 @@ class Application(Globals.ApplicationDefaultPermissions, Folder.Folder,
"""Utility function to return current date/time"""
return DateTime()
def PrincipiaFind(self, start, _initial=None, prefix='',
type=None, substring=None, name=None,
):
if _initial is None: _initial=[]
if hasattr(start,'aq_base'): start=start.aq_base
if not hasattr(start, 'objectItems'): return _initial
try: items=start.objectItems()
except: return _initial
for oname, o in items:
if prefix: p="%s/%s" % (prefix, oname)
else: p=oname
if hasattr(o,'aq_base'): o=o.aq_base
if (
(type is None or not hasattr(o,'meta_type') or
type==o.meta_type)
and
(name is None or oname==name)
and
(substring is None or
(hasattr(o,'PrincipiaSearchSource') and
find(o.PrincipiaSearchSource(),substring) >= 0
))
):
_initial.append(p)
if hasattr(o, 'objectItems'):
self.PrincipiaFind(o,_initial,p,type,substring,name)
return _initial
class Expired(Persistent):
icon='p_/broken'
......@@ -231,6 +206,8 @@ class Expired(Persistent):
__inform_commit__=__save__
def open_bobobase():
# Open the application database
......@@ -442,6 +419,9 @@ class Misc_:
##############################################################################
#
# $Log: Application.py,v $
# Revision 1.69 1998/08/05 21:04:04 brian
# Added Find
#
# Revision 1.68 1998/08/03 13:58:32 jim
# Took out debugging code.
#
......
__doc__="""Principia Find support"""
__version__='$Revision: 1.1 $'[11:-2]
import sys, os, string, time, Globals
from DocumentTemplate.DT_Util import Eval, expr_globals
from AccessControl.Permission import name_trans
from cDocumentTemplate import *
from DateTime import DateTime
from string import find
class FindSupport:
def PrincipiaFind(self, obj, obj_ids=None, obj_metatypes=None,
obj_searchterm=None, obj_expr=None,
obj_mtime=None, obj_mspec=None,
obj_permission=None, obj_roles=None,
REQUEST=None, result=None, pre=''):
"""Principia Find interface"""
if result is None:
result=[]
if obj_metatypes and 'all' in obj_metatypes:
obj_metatypes=None
if obj_mtime and type(obj_mtime)==type('s'):
obj_mtime=DateTime(obj_mtime).timeTime()
if obj_permission:
obj_permission=p_name(obj_permission)
if obj_expr:
# Setup expr machinations
md=td()
if hasattr(REQUEST, 'AUTHENTICATED_USER'):
md.AUTHENTICATED_USER=REQUEST.AUTHENTICATED_USER
obj_expr=(Eval(obj_expr, expr_globals), md, md._push, md._pop)
base=obj
if hasattr(obj, 'aq_base'):
base=obj.aq_base
if not hasattr(base, 'objectItems'):
return result
try: items=base.objectItems()
except: return result
try: add_result=result.append
except:
raise AttributeError, `result`
for id, ob in items:
if pre: p="%s/%s" % (pre, id)
else: p=id
dflag=0
if hasattr(ob, '_p_changed') and (ob._p_changed == None):
dflag=1
if hasattr(ob, 'aq_base'):
bs=ob.aq_base
if (
(not obj_ids or absattr(bs.id) in obj_ids)
and
(not obj_metatypes or (hasattr(bs, 'meta_type') and
bs.meta_type in obj_metatypes))
and
(not obj_searchterm or
(hasattr(ob, 'PrincipiaSearchSource') and
find(ob.PrincipiaSearchSource(), obj_searchterm) >= 0
))
and
(not obj_expr or expr_match(ob, obj_expr))
and
(not obj_mtime or mtime_match(ob, obj_mtime, obj_mspec))
# (obj_modspec=='<' and hasattr(ob, '_p_mtime') and \
# ob._p_mtime < obj_modtime) or
# (obj_modspec=='>' and hasattr(ob, '_p_mtime') and \
# ob._p_mtime > obj_modtime)
# )
and
( (not obj_permission or not obj_roles) or \
role_match(ob, obj_permission, obj_roles)
)
):
add_result((p, ob))
dflag=0
if hasattr(bs, 'objectItems'):
self.PrincipiaFind(ob, obj_ids, obj_metatypes,
obj_searchterm, obj_expr,
obj_mtime, obj_mspec,
obj_permission, obj_roles,
REQUEST, result, p)
if dflag: ob._p_deactivate()
return result
class td(TemplateDict, cDocument):
pass
def expr_match(ob, ed, c=InstanceDict, r=0):
e, md, push, pop=ed
push(c(ob, md))
try: r=e.eval(md)
finally:
pop()
return r
def mtime_match(ob, t, q, fn=hasattr):
if not fn(ob, '_p_mtime'):
return 0
return q=='<' and (ob._p_mtime < t) or (ob._p_mtime > t)
def role_match(ob, permission, roles, lt=type([]), tt=type(())):
# ob=obj
pr=[]
fn=pr.append
while 1:
if hasattr(ob, permission):
p=getattr(ob, permission)
if type(p) is lt:
map(fn, p)
if hasattr(ob, 'aq_parent'):
ob=ob.aq_parent
continue
break
if type(p) is tt:
map(fn, p)
break
if p is None:
map(fn, ('Manager', 'Anonymous'))
break
if hasattr(ob, 'aq_parent'):
ob=ob.aq_parent
continue
break
for role in roles:
if not (role in pr):
return 0
return 1
# Helper functions
def absattr(attr):
if callable(attr): return attr()
return attr
def p_name(name):
return '_' + string.translate(name, name_trans) + '_Permission'
## def oldpermission_match(obj, permission, roles):
## # if not hasattr(obj, '__ac_permissions__'):
## # return 0
## r=proles(obj, permission)
## for role in roles:
## if not (role in r):
## return 0
## return 1
## def pldproles(obj, permission):
## for p in obj.__ac_permissions__:
## name, value = p[:2]
## if name==permission:
## p=Permission(name,value,obj)
## r=p.getRoles()
## if r is None: r=['Anonymous']
## if type(r) is type(()):
## r=list(r)
## if hasattr(obj, 'aq_parent'):
## o=obj.aq_parent
## n=p._p
## while 1:
## if hasattr(o, n):
## roles=getattr(o, n)
## if roles is None:
## if not ('Anonymous' in r):
## r.append('Anonymous')
## return r
## if type(roles) is type(()):
## return r+list(roles)
## r=r+list(roles)
## if hasattr(o, 'aq_parent'):
## o=o.aq_parent
## else: break
## return r
## return []
## def PrincipiaFind1(self, start, _initial=None, prefix='',
## type=None, substring=None, name=None,
## ):
## if _initial is None: _initial=[]
## if hasattr(start,'aq_base'): start=start.aq_base
## if not hasattr(start, 'objectItems'): return _initial
## try: items=start.objectItems()
## except: return _initial
## for oname, o in items:
## if prefix: p="%s/%s" % (prefix, oname)
## else: p=oname
## if hasattr(o,'aq_base'): o=o.aq_base
## if (
## (type is None or not hasattr(o,'meta_type') or
## type==o.meta_type)
## and
## (name is None or oname==name)
## and
## (substring is None or
## (hasattr(o,'PrincipiaSearchSource') and
## find(o.PrincipiaSearchSource(),substring) >= 0
## ))
## ):
## _initial.append(p)
## if hasattr(o, 'objectItems'):
## self.PrincipiaFind(o,_initial,p,type,substring,name)
## return _initial
"""Folder object
$Id: Folder.py,v 1.49 1998/08/03 13:30:57 jim Exp $"""
$Id: Folder.py,v 1.50 1998/08/05 21:04:04 brian Exp $"""
__version__='$Revision: 1.49 $'[11:-2]
__version__='$Revision: 1.50 $'[11:-2]
from Globals import HTMLFile
......@@ -62,17 +62,18 @@ class Folder(ObjectManager,RoleManager,DocumentHandler,
'target':'manage_main'},
{'label':'Undo', 'action':'manage_UndoForm',
'target':'manage_main'},
# {'label':'Help', 'action':'manage_help',
# 'target':'_new'},
{'label':'Find', 'action':'manage_findFrame',
'target':'manage_main'},
)
__ac_permissions__=(
('View', ()),
('View management screens',
('manage','manage_menu','manage_main','manage_copyright',
'manage_tabs','manage_propertiesForm','manage_UndoForm',
'manage_copyObject', 'manage_pasteObject'
)),
'manage_tabs','manage_propertiesForm','manage_UndoForm',
'manage_copyObject', 'manage_pasteObject',
'manage_findFrame', 'manage_findForm', 'manage_findAdv',
'manage_findResult', 'manage_findOpt')),
('Access contents information',
('objectIds', 'objectValues', 'objectItems','hasProperty',
'propertyIds', 'propertyValues','propertyItems',''),
......
# install Application.py
# install CopySupport.py
# install FindSupport.py
# install Document.py
# install Folder.py
# install Image.py
......@@ -25,3 +26,8 @@
# install www
# install Uninstalled.py
# install brokenEdit.dtml
# install findAdv.dtml
# install findForm.dtml
# install findFrame.dtml
# install findOpt.dtml
# install findResult.dtml
<HTML>
<HEAD>
<TITLE>Advanced Find</TITLE>
<SCRIPT LANGUAGE="javascript">
<!--
function show_smp()
{ document.location.href="<!--#var URL1-->/manage_findForm";
}
function show_adv()
{ document.location.href="<!--#var URL1-->/manage_findAdv";
}
function show_opt()
{ wnd=window.open("<!--#var URL1-->/manage_findOpt","wnd_find_options","width=400,height=200");
if (document.layers || document.all) {
wnd.focus()
}
}
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555">
<!--#var manage_tabs-->
<P>
<FORM ACTION="manage_findResult" METHOD="GET" TARGET="findResult">
<TABLE>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>Find objects of type:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<SELECT NAME="obj_metatypes:list" SIZE="4" MULTIPLE>
<OPTION VALUE="all" SELECTED> All types
<!--#in all_meta_types mapping-->
<OPTION VALUE="<!--#var name-->"> <!--#var name-->
<!--#/in-->
</SELECT>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>with ids:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="TEXT" NAME="obj_ids:tokens" SIZE="30">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>containing:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="TEXT" NAME="obj_searchterm" SIZE="30">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>expr:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<TEXTAREA NAME="obj_expr" ROWS="4" COLS="30"></TEXTAREA>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>modified:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<SELECT NAME="obj_mspec">
<OPTION VALUE="<"> before
<OPTION VALUE=">"> after
</SELECT>
<INPUT TYPE="TEXT" NAME="obj_mtime" SIZE="22">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>where the roles:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<SELECT NAME="obj_roles:list" SIZE="3" MULTIPLE>
<!--#in valid_roles-->
<OPTION VALUE="<!--#var sequence-item-->"> <!--#var sequence-item-->
<!--#/in-->
</SELECT>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>have permission:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<SELECT NAME="obj_permission">
<!--#in permission_settings mapping-->
<OPTION VALUE="<!--#var name-->"> <!--#var name-->
<!--#/in-->
</SELECT>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="SUBMIT" NAME="btn_submit" VALUE="Find">
<INPUT TYPE="BUTTON" NAME="btn_opt" VALUE="Options..."
onClick="show_opt()">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>Find</TITLE>
<SCRIPT LANGUAGE="javascript">
<!--
function show_smp()
{ document.location.href="<!--#var URL1-->/manage_findForm";
}
function show_adv()
{ document.location.href="<!--#var URL1-->/manage_findAdv";
}
function show_opt()
{ wnd=window.open("<!--#var URL1-->/manage_findOpt","wnd_find_options","width=400,height=200");
if (document.layers || document.all) {
wnd.focus()
}
}
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555">
<!--#var manage_tabs-->
<P>
<FORM ACTION="manage_findResult" METHOD="GET" TARGET="findResult">
<TABLE>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>Find objects of type:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<SELECT NAME="obj_metatypes:list" SIZE="4" MULTIPLE>
<OPTION VALUE="all" SELECTED> All types
<!--#in all_meta_types mapping-->
<OPTION VALUE="<!--#var name-->"> <!--#var name-->
<!--#/in-->
</SELECT>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>with ids:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="TEXT" NAME="obj_ids:tokens" SIZE="30">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>containing:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="TEXT" NAME="obj_searchterm" SIZE="30">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>modified:</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<SELECT NAME="obj_mspec">
<OPTION VALUE="<"> before
<OPTION VALUE=">"> after
</SELECT>
<INPUT TYPE="TEXT" NAME="obj_mtime" SIZE="22">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="SUBMIT" NAME="btn_submit" VALUE="Find">
<INPUT TYPE="BUTTON" NAME="btn_opt" VALUE="Options..."
onClick="show_opt()">
<INPUT TYPE="BUTTON" NAME="btn_adv" VALUE="Advanced..."
onClick="show_adv()">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>Find</TITLE>
</HEAD>
<FRAMESET ROWS="52%,*">
<!--#if cv_ffaf-->
<FRAME SRC="manage_findAdv" NAME="findForm"
<!--#else-->
<FRAME SRC="manage_findForm" NAME="findForm"
<!--#/if-->
MARGINWIDTH="2" MARGINHEIGHT="2" SCROLLING="auto">
<FRAME SRC="manage_findResult" NAME="findResult"
MARGINWIDTH="2" MARGINHEIGHT="0" SCROLLING="auto">
</FRAMESET>
<NOFRAMES>
Management interfaces require the use of a <B>frames-capable</B> web browser.
</NOFRAMES>
</HTML>
<HTML>
<HEAD>
<TITLE>Find Options</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555">
<!--#if btn_submit-->
<!--#in expr="('ffnw', 'ffaf')"-->
<!--#if expr="_.hasattr(REQUEST, 'fv_'+_['sequence-item']) and _.getattr(REQUEST, 'fv_'+_['sequence-item']) and not _.hasattr(REQUEST, 'cv_'+_['sequence-item'])"-->
<!--#call expr="REQUEST.RESPONSE.setCookie('cv_'+_['sequence-item'], _.getattr(REQUEST, 'fv_'+_['sequence-item']), path='/', expires='Friday, 31-Dec-99 23:59:59 GMT')"-->
<!--#elif expr="_.hasattr(REQUEST, 'cv_'+_['sequence-item']) and _.getattr(REQUEST, 'cv_'+_['sequence-item']) and not _.hasattr(REQUEST, 'fv_'+_['sequence-item'])"-->
<!--#call expr="REQUEST.RESPONSE.expireCookie('cv_'+_['sequence-item'], path='/')"-->
<!--#/if-->
<!--#/in-->
<P>
<BR><BR>
<CENTER>
<FORM>
Your preferences have been saved.
<P>
<INPUT TYPE="BUTTON" NAME="btn_close" VALUE=" Ok " onClick="window.close()">
</FORM>
<!--#else-->
<H2>Find Options</H2>
<P>
<FORM ACTION="manage_findOpt" METHOD="POST">
<TABLE>
<!--
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="CHECKBOX" NAME="fv_ffnw" VALUE="1"<!--#if cv_ffnw--> CHECKED<!--#/if-->>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>Open results in new window</STRONG>
</TD>
</TR>
-->
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="CHECKBOX" NAME="fv_ffaf" VALUE="1"<!--#if cv_ffaf--> CHECKED<!--#/if-->>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<STRONG>Always use advanced find</STRONG>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT TYPE="SUBMIT" NAME="btn_submit" VALUE=" Ok ">
<INPUT TYPE="BUTTON" NAME="btn_cancel" VALUE="Cancel" onClick="window.close()">
</TD>
</TR>
</TABLE>
</FORM>
<!--#/if-->
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>Find Results</TITLE>
<SCRIPT LANGUAGE="javascript">
<!--
function new_wnd()
{ wnd=window.open("<!--#var URL-->?<!--#var QUERY_STRING-->","find_result");
}
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555">
<P>
<!--#in expr="('obj_ids', 'obj_metatypes', 'obj_searchterm', 'obj_expr', 'obj_mtime', 'obj_mspec', 'obj_permission', 'obj_roles')"-->
<!--#else expr="_.hasattr(REQUEST, _['sequence-item'])"-->
<!--#call expr="REQUEST.set(_['sequence-item'], _.None)"-->
<!--#/else-->
<!--#/in-->
<!--#if btn_submit-->
<!--#call expr="REQUEST.set('results', PrincipiaFind(this(), obj_ids=obj_ids, obj_metatypes=obj_metatypes, obj_searchterm=obj_searchterm, obj_expr=obj_expr, obj_mtime=obj_mtime, obj_mspec=obj_mspec, obj_permission=obj_permission, obj_roles=obj_roles, REQUEST=REQUEST))"-->
<!--#call expr="REQUEST.set('result_len', _.len(results))"-->
<!--#if results-->
<HR>
<STRONG>
Found <!--#var result_len--> item<!--#if expr="result_len != 1"-->s<!--#/if-->.
</STRONG>
<HR>
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="2">
<!--#in results-->
<TR>
<TD ALIGN="LEFT" VALIGN="TOP">
<A HREF="<!--#var sequence-key-->/manage_main" TARGET="manage_main">
<IMG SRC="<!--#var SCRIPT_NAME-->/<!--#var icon-->"
ALT="Click to open this item" BORDER="0"></A>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<A HREF="<!--#var sequence-key-->/manage_main" TARGET="manage_main">
<!--#var sequence-key-->
<!--#if title-->
(<!--#var title-->)
<!--#/if-->
</A>
</TD>
</TR>
<!--#/in-->
</TABLE>
<!--#else-->
<HR>
<STRONG>
No items were found matching this query.
</STRONG>
<HR>
<!--#/if-->
<!--#/if-->
</BODY>
</HTML>
......@@ -4,7 +4,7 @@
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555">
<!--#var manage_tabs-->
<P>
<!--#if Principia-Session-->
<EM>You are currently working in session <!--#var Principia-Session--></EM>
<P>
......
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