File:  [Repository] / lise / lise.py
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Apr 14 16:37:27 2004 UTC (20 years, 2 months ago) by wischi
Branches: wischi
CVS tags: alpha
first release

    1: import xml.parsers.expat
    2: import re
    3: import OFS.Image
    4: from types import *
    5: from OFS.Image import Image
    6: from OFS.Folder import Folder
    7: from OFS.SimpleItem import SimpleItem
    8: from OFS.Image import manage_addFile
    9: from OFS.Image import File
   10: from OFS.DTMLDocument import addDTMLDocument
   11: from Globals import DTMLFile, MessageDialog, package_home
   12: from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod
   13: from Products.PageTemplates.ZopePageTemplate import manage_addPageTemplate
   14: import os
   15: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   16: from Products.PageTemplates.PageTemplate import PageTemplate
   17: import string
   18: import urllib
   19: import xml.dom.minidom
   20: 
   21: 
   22: ###   G L O B A L S   ###
   23: allobjects = []
   24: pagearray = []
   25: objindex = 0
   26: currobj = 0
   27: currchapter = 0
   28: tagstr = ""
   29: counter = 1      # counts pages/pictures
   30: counterid = 1    # counts IDs
   31: 
   32: onpage = 0
   33: onpagename = 0
   34: onpageindex = 0
   35: onpageurl = 0
   36: onchapter = 0
   37: onchaptername = 0
   38: onstart = 0
   39: onstartname = 0
   40: onstartindex = 0
   41: onstarturl = 0
   42: onend = 0
   43: onendname = 0
   44: onendindex = 0
   45: onendurl = 0
   46: gbaseurl = ''
   47: gpictpath = ''
   48: errstr = ''
   49: 
   50: 
   51: 
   52: class lise(Folder):
   53: 	"The class lise"
   54: 	
   55: 	meta_type = 'lise'
   56: 	
   57: 	manage_options=(
   58: 		{'label': 'Contents', 'action': 'manage_main'},
   59: 		{'label': 'Welcome', 'action': 'index_html'},
   60: 		{'label': 'Schedule', 'action': 'schedule_html'},
   61: 		{'label': 'Edit Schedule', 'action': 'manage_editScheduleForm'},
   62: 	)
   63: 
   64: 	def __init__(self, id, title):
   65: 		"Initialize a new instance of lise class"
   66: 		self.id = id
   67: 		self.title = title
   68: 		self.freetext = 'hoho'
   69: 		self.schedule = 'schedule'
   70: 		self.xml = 'xml'
   71: 		self.xmlpath = 'xmlpath'
   72: 		self.xmlfilename = 'xmlfilename'
   73: 		self.link = ''
   74: 			
   75: 	def manage_editSchedule(self, title, schedule, RESPONSE=None):
   76: 		"Change attributes of a lise instance"
   77: 		self.title = title
   78: 		self.schedule = schedule
   79: 		if RESPONSE is not None:
   80: 			return MessageDialog(
   81: 				title='Edited',
   82: 				message='<strong>%s</strong> has been edited.'%self.id,
   83: 				action='./schedule_html'
   84: 			)
   85: 
   86: 	schedule_html = DTMLFile('dtml/schedule_html', globals())
   87: 	manage_editScheduleForm = DTMLFile('dtml/manage_editScheduleForm', globals())
   88: 
   89: 		
   90: # ZOPE interface
   91: manage_addliseForm = DTMLFile('dtml/manage_addliseForm', globals())
   92: 
   93: 
   94: def manage_addlise(self, id, title, pictpath, baseurl, file, RESPONSE = None):
   95: 	"add a lise instance in a folder."
   96: 	global allobjects
   97: 	global objindex
   98: 	global currchapter
   99: 	global currobj
  100: 	global tagstr
  101: 	global onpage
  102: 	global onpagename
  103: 	global onpageindex
  104: 	global onpageurl
  105: 	global onchapter
  106: 	global onchaptername
  107: 	global onstart
  108: 	global onstartname
  109: 	global onstartindex
  110: 	global onstarturl
  111: 	global onend
  112: 	global onendname
  113: 	global onendindex
  114: 	global onendurl
  115: 	global pagearray
  116: 	global errstr
  117: 	global counterid
  118: 	global gbaseurl
  119: 	global gpictpath
  120: 	
  121: 	allobjects = []
  122: 	pagearray = []
  123: 	filenames = []
  124: 	fnames = []
  125: 	id = str(id)
  126: 	title = str(title)
  127: 	if IsStr(gbaseurl):
  128: 		gbaseurl = str(baseurl)
  129: 	gpictpath = str(pictpath)
  130: 	#### lšschen nicht vergessen ###
  131: 	gpictpath = '/barker'
  132: 	thelen = len(gpictpath)
  133: 	if thelen > 0:
  134: 		fnames = os.listdir(gpictpath)
  135: 		thelen = len(filenames)
  136: 		j = 0
  137: 		for i in fnames:
  138: 			if i[0] <> '.':
  139: 				normalize_whitespace(i)
  140: 				filenames.append('file://' + gpictpath + '/' + i)
  141: 
  142: 	newObj = lise(id, title) # create new lise object
  143: 	self._setObject(id, newObj) # put it into zope
  144: 	if RESPONSE is not None:
  145: 		RESPONSE.redirect('manage_main')
  146: 	link = self.absolute_url() + '/' + id # path of new lise object
  147: 	object = getattr(self, id) # get the new lise object
  148: 	RESPONSE.redirect(link) # set path to new lise object
  149: 	
  150: 	errid = 'standard_error_message'
  151: 	error_html = DTMLFile('dtml/standard_error_message',globals())
  152: 	addDTMLDocument(object, errid, '', error_html)
  153: 	errobj = getattr(object, errid) # reference this object
  154: 	
  155: 	lisescript = manage_addExternalMethod(object, 'liseScript','liseScript','lise.liseScript','liseScript')
  156: 	
  157: 	id2 = id + '.xml'
  158: 	manage_addFile(object, id2, file, title, 'text/xml') # create new xml file
  159: 	object2 = getattr(object, id2) # reference this object
  160: 	link2 = self.absolute_url() + '/' + id + '/' + id + '.xml' # path of xml file
  161: 
  162: 	objarr = []
  163: 	retval = ''
  164: 	thelen = 42
  165: 	newObj.xmlpath = str(thelen)
  166: 	
  167: 	p = xml.parsers.expat.ParserCreate()
  168: 	taghandler = TagHandler()
  169: 	p.StartElementHandler = taghandler.expat_start_element
  170: 	p.EndElementHandler = taghandler.expat_endElement
  171: 	p.CharacterDataHandler = taghandler.characters
  172: 	p.Parse(str(object2.data))
  173: 	
  174: 	for i in allobjects:
  175: 		if hasattr(i, 'typestr'):
  176: 			if i.typestr == 'chapter':
  177: 				i.parseobjects()
  178: 		
  179: 	counterid = 1
  180: 	for i in allobjects:
  181: 		if hasattr(i, 'typestr'):
  182: 			if i.typestr == 'chapter':
  183: 				i.CreateChapter()
  184: 			if i.typestr == 'page':
  185: 				i.CreatePage()
  186: 
  187: 	pacount = 0
  188: 	for i in pagearray:
  189: 		if i.type == 'C':
  190: 			i.picturelink = 'this_is the_no_fucking_picture_error'
  191: 			i.pictindex = 0
  192: 			for j in range(pacount, len(pagearray)):
  193: 				if pagearray[j].type == 'P':
  194: 					if len(pagearray[j].picturelink) > 0:
  195: 						i.picturelink = pagearray[j].picturelink
  196: 						break
  197: 					if IsInt(pagearray[j].pictindex):
  198: 						i.pictindex = pagearray[j].pictindex
  199: 						i.picturelink = ''
  200: 						break
  201: 		pacount = pacount + 1
  202: 	
  203: 	mainid = 'main'
  204: 	main_html = PageTemplateFile('dtml/main.zpt',globals()).__of__(self)
  205: 	manage_addPageTemplate(object, mainid, '', main_html)
  206: #	addDTMLDocument(object, mainid, '', main_html)
  207: 	mainobj = getattr(object, mainid) # reference this object
  208: 	setattr(mainobj, 'pagelist', pagearray)
  209: 	setattr(mainobj, 'filenames', filenames)
  210: 	if IsStr(pagearray[0].picturelink):
  211: 		setattr(mainobj, 'currpict', pagearray[0].picturelink)
  212: 	else:
  213: 		setattr(mainobj, 'currpict', filenames[int(pagearray[0].id)])
  214: 	
  215: #	sdmid = 'sdm'
  216: #	sdm = SessionDataManager(sdmid)
  217: #	object._setObject(sdmid, sdm) # put it into lise folder
  218: 	
  219: 	if(len(errstr) > 0):
  220: 		newObj.freetext = self.absolute_url() + '/' + id + '/standard_error_message'
  221: 		errobj.error_message = errstr + '<br><br><h3>by babes</h3>'
  222: 		RESPONSE.redirect(self.absolute_url() + '/' + id + '/standard_error_message')
  223: 	else:
  224: 		RESPONSE.redirect(self.absolute_url() + '/' + id + '/main?theid=1')
  225: 
  226: 
  227: 
  228: ########################################################################################
  229: class Error_DTML(SimpleItem):
  230: 	"the ERROR message"
  231: 	meta_type = 'error_message'
  232: 	
  233: 	def __init__(self, id):
  234: 		self.id = id
  235: 
  236: 
  237: ########################################################################################
  238: class TagHandler:
  239: 	def __init__(self):
  240: 		self.tags={}
  241: 		self.name=""
  242: 		self.index = ""
  243: 		self.url = ""
  244: 		self.startname = ""
  245: 		self.startindex = 0
  246: 		self.starturl = ""
  247: 		self.endname = ""
  248: 		self.endindex = 0
  249: 		self.endurl = ""
  250: 		self.chapterindex = 0
  251: 		self.currentchapter = 0
  252: 
  253: 
  254: 	def expat_start_element(self, name, attrs):
  255: 		global allobjects
  256: 		global objindex
  257: 		global currchapter
  258: 		global currobj
  259: 		global tagstr
  260: 		global onpage
  261: 		global onpagename
  262: 		global onpageindex
  263: 		global onpageurl
  264: 		global onchapter
  265: 		global onchaptername
  266: 		global onstart
  267: 		global onstartname
  268: 		global onstartindex
  269: 		global onstarturl
  270: 		global onend
  271: 		global onendname
  272: 		global onendindex
  273: 		global onendurl
  274: 		global errstr
  275: 		
  276: 		if name == 'page':
  277: 			onstart = False
  278: 			onpage = True
  279: 			currobj = PageObject()
  280: 			if onchapter:
  281: 				thelen = len(currchapter.chapterobjects)
  282: 				if thelen > 0:
  283: 					currobj.prevref = currchapter.chapterobjects[thelen - 1]
  284: 					currchapter.chapterobjects[thelen - 1].nextref = currobj
  285: 				currchapter.chapterobjects.append(currobj)
  286: 				currobj.chapterindex = currchapter.chapterindex
  287: 			else:
  288: 				thelen = len(allobjects)
  289: 				if thelen > 0:
  290: 					currobj.prevref = allobjects[thelen - 1]
  291: 					allobjects[thelen - 1].nextref = currobj
  292: 				allobjects.append(currobj)
  293: 		
  294: 		if name == 'chapter':
  295: 			onstart = False
  296: 			onend = False
  297: 			currobj = ChapterObject(objindex)
  298: 			objindex += 1
  299: 			if onchapter:
  300: 				currobj.upref = currchapter
  301: 				thelen = len(currchapter.chapterobjects)
  302: 				if thelen > 0:
  303: 					currobj.prevref = currchapter.chapterobjects[thelen - 1]
  304: 					currchapter.chapterobjects[thelen - 1].nextref = currobj
  305: 				currchapter.chapterobjects.append(currobj)
  306: 			else:
  307: 				allobjects.append(currobj)
  308: 				onchapter = True
  309: 			currchapter = currobj
  310: 		
  311: 		if name == 'name':
  312: 			tagstr = ""
  313: 			if onpage:
  314: 				onpagename = True
  315: 			else:
  316: 				if onchapter:
  317: 					if (not onstart) and (not onend):
  318: 						onchaptername = True
  319: 					else:
  320: 						if onstart:
  321: 							onstartname = True
  322: 						if onend:
  323: 							onendname = True
  324: 				else:
  325: 					errstr = errstr + 'ERROR in XML file: \"&lt;name&gt; tag outside &lt;page&gt; or &lt;chapter&gt;\"<br>'
  326: 			
  327: 		if name == 'index':
  328: 			tagstr = ""
  329: 			if onpage:
  330: 				onpageindex = True
  331: 			else:
  332: 				if onchapter:
  333: 					if onstart:
  334: 						if not onend:
  335: 							onstartindex = True
  336: 						else:
  337: 							onendindex = True
  338: 					else:
  339: 						errstr = errstr + 'ERROR in XML file: \"&lt;index&gt; tag inside chapter but outside &lt;start&gt; or &lt;end>\"<br>'
  340: 				else:
  341: 					errstr = errstr + 'ERROR in XML file: \"&lt;index&gt; tag outside &lt;page&gt; or &lt;chapter&gt;\"<br>'
  342: 			
  343: 		if name == 'url':
  344: 			tagstr = ""
  345: 			if onpage:
  346: 				onpageurl = True
  347: 			else:
  348: 				if onchapter:
  349: 					if onstart:
  350: 						if not onend:
  351: 							onstarturl = True
  352: 						else:
  353: 							onendurl = True
  354: 					else:
  355: 						errstr = errstr + 'ERROR in XML file: \"&lt;url&gt; tag inside chapter but outside &lt;start&gt; or &lt;end&gt;\"<br>'
  356: 				else:
  357: 					errstr = errstr + 'ERROR in XML file: \"&lt;url&gt; tag outside &lt;page&gt; or &lt;chapter&gt;\"<br>'
  358: 		
  359: 		if name == 'start':
  360: 			if onchapter:
  361: 				onstart = True
  362: 				currobj = StartEndObject()
  363: 				thelen = len(currchapter.chapterobjects)
  364: 				if thelen > 0:
  365: 					currobj.prevref = currchapter.chapterobjects[thelen - 1]
  366: 					currchapter.chapterobjects[thelen - 1].nextref = currobj
  367: 				currchapter.chapterobjects.append(currobj)
  368: 			else:
  369: 				errstr = errstr + 'ERROR in XML file: \"&lt;start&gt; tag outside &lt;chapter&gt;\"<br>'
  370: 			
  371: 		if name == 'end':
  372: 			if onchapter:
  373: 				if onstart:
  374: 					onend = True
  375: 				else:
  376: 					errstr = errstr + 'ERROR in XML file: \"&lt;end&gt; tag without &lt;start&gt;\"<br>'
  377: 			else:
  378: 				errstr = errstr + 'ERROR in XML file: \"&lt;end&gt; tag outside &lt;chapter&gt;\"<br>'
  379: 	
  380: 	
  381: 	def characters(self, ch):
  382: 		global tagstr
  383: 		tagstr += ch
  384: 
  385: 
  386: 	def expat_endElement(self, name):
  387: 		global allobjects
  388: 		global objindex
  389: 		global currchapter
  390: 		global currobj
  391: 		global tagstr
  392: 		global onpage
  393: 		global onpagename
  394: 		global onpageindex
  395: 		global onpageurl
  396: 		global onchapter
  397: 		global onchaptername
  398: 		global onstart
  399: 		global onstartname
  400: 		global onstartindex
  401: 		global onstarturl
  402: 		global onend
  403: 		global onendname
  404: 		global onendindex
  405: 		global onendurl
  406: 		global errstr
  407: 		
  408: #		errstr = errstr + 'end: ' + name + ':<br>'
  409: 		if name == 'page':
  410: 			onpage = False
  411: 			
  412: 		if name == 'chapter':
  413: 			objindex -= 1
  414: 			if objindex <= 0:
  415: 				onchapter = False
  416: 				currchapter = 0
  417: 			else:
  418: 				currchapter = currchapter.upref
  419: 			
  420: 		if name == 'name':
  421: 			tagstr = normalize_whitespace(tagstr)
  422: 			if onpagename:
  423: 				onpagename = False
  424: 				currobj.name = tagstr
  425: 			if onchaptername:
  426: 				if currobj.typestr == 'chapter':
  427: 					currobj.name = tagstr
  428: 				onchaptername = False
  429: 			if onstartname:
  430: 				if currobj.typestr == 'start':
  431: 					currobj.startname = tagstr
  432: 				onstartname = False
  433: 			if onendname:
  434: 				if currobj.typestr == 'start':
  435: 					currobj.endname = tagstr
  436: 				onendname = False
  437: 			
  438: 		if name == 'index':
  439: 			tagstr = normalize_whitespace(tagstr)
  440: 			if onpageindex:
  441: 				if IsInt(tagstr):
  442: 					currobj.index = int(tagstr) - 1
  443: 				else:
  444: 					errstr = errstr + 'ERRRRROR: cannot extract number from page index.<br>'
  445: 				onpageindex = False
  446: 				
  447: 			if onstartindex:
  448: 				if IsInt(tagstr):
  449: 					currobj.startindex = int(tagstr) - 1
  450: 				else:
  451: 					errstr = errstr + 'ERRRRROR: cannot extract startnumber from startindex.<br>'
  452: 				onstartindex = False
  453: 				
  454: 			if onendindex:
  455: 				if IsInt(tagstr):
  456: 					currobj.endindex = int(tagstr) - 1
  457: 				else:
  458: 					errstr = errstr + 'ERRRRROR: cannot extract endnumber from endindex.<br>'
  459: 				onendindex = False
  460: 			
  461: 		if name == 'url':
  462: 			tagstr = normalize_whitespace(tagstr)
  463: 			if onpageurl:
  464: 				currobj.url = tagstr
  465: 				onpageurl = False
  466: 			if onstarturl:
  467: 				currobj.starturl = tagstr
  468: 				onstarturl = False
  469: 			if onendurl:
  470: 				currobj.endurl = tagstr
  471: 				onendurl = False
  472: 			
  473: 		if name == 'end':
  474: 			onstart = False
  475: 			onend = False
  476: 
  477: 
  478: ########################################################################################
  479: def normalize_whitespace(text):
  480:     "Remove redundant whitespace from a string"
  481:     return ' '.join(text.split())
  482: 
  483: 
  484: ########################################################################################
  485: def IsInt(str):
  486: 	""" Is the given string an Integer? """
  487: 	try: int(str)
  488: 	except ValueError:
  489: 		return 0
  490: 	else:
  491: 		return 1
  492: 
  493: ########################################################################################
  494: def IsStr(str):
  495: 	""" Is the given string really a string? """
  496: 	try: str + ''
  497: 	except: return 0
  498: 	else: return 1
  499: 
  500: ########################################################################################
  501: class PageObject:
  502: 	def __init__(self):
  503: 		self.name = ""
  504: 		self.index = ""
  505: 		self.pictindex = 0
  506: 		self.url = ""
  507: 		self.isselected = False
  508: 		self.typestr = "page"
  509: 		self.chapterindex = 0
  510: 		self.prevref = 0
  511: 		self.nextref = 0
  512: 		self.chapref = 0
  513: 		
  514: 	def CreatePage(self):
  515: 		global counter
  516: 		global counterid
  517: 		global gbaseurl
  518: 		global gpicpath
  519: 		global pagearray
  520: 		global errstr
  521: 		
  522: 		pageelement = PageElement()
  523: 		pageelement.id = str(counterid)
  524: 		pageelement.type = "P"
  525: 		pageelement.name = self.name
  526: 		if IsStr(self.url):
  527: 			if len(self.url) > 0:
  528: 				pageelement.picturelink = gbaseurl + '/' + self.url
  529: 			
  530: 		pageelement.level = self.chapterindex
  531: 		if IsInt(self.index):
  532: 			if int(self.index) > 0:
  533: 				pageelement.pictindex = int(self.index) - 1
  534: 			else:
  535: 				pageelement.pictindex = '9999'
  536: 		else:
  537: 			pageelement.pictindex = '9999'
  538: 
  539: 		if pageelement.level == 0:
  540: 			pageelement.open = 1
  541: 		else:
  542: 			pageelement.open = 0
  543: 			
  544: 		pagearray.append(pageelement)
  545: 		counter = counter + 1
  546: 		counterid = counterid + 1
  547: 
  548: 
  549: ########################################################################################
  550: class ChapterObject:
  551: 	def __init__(self, chapterindex):
  552: 		self.name = ""
  553: 		self.typestr = "chapter"
  554: 		self.chapterindex = chapterindex
  555: 		self.isselected = False
  556: 		self.isopen = False
  557: 		self.prevref = 0
  558: 		self.nextref = 0
  559: 		self.upref = 0
  560: 		self.chapterobjects = []
  561: 		self.pages_subchapters = []
  562: 		
  563: 	def parseobjects(self):
  564: 		thelen = len(self.chapterobjects)
  565: 		if hasattr(self, 'chapterobjects'):
  566: 			count = 0
  567: 			for i in self.chapterobjects:
  568: 				count += 1
  569: 				if hasattr(self, 'typestr'):
  570: 					if i.typestr == 'page':
  571: 						self.pages_subchapters.append(i)
  572: 					if i.typestr == 'chapter':
  573: 						i.parseobjects()
  574: 					if i.typestr == 'start':
  575: 						i.startindex = int(i.startindex)
  576: 						if i.startindex > 0:
  577: 							i.endindex = int(i.endindex)
  578: 							if i.endindex > 0:
  579: 								if i.endindex < i.startindex:
  580: 									errstr = errstr + 'ERROR in XML file: \"&lt;start&gt; index bigger then &lt;end&gt; index.\"<br>'
  581: 							else:
  582: 								startfound = False
  583: 								for j in range(count, len(self.chapterobjects)):
  584: 									if self.chapterobjects[j].typestr == 'start':
  585: 										startfound = True
  586: 										i.endindex = self.chapterobjects[j].startindex - 1
  587: 										break
  588: 									if self.chapterobjects[j].typestr == 'page':
  589: 										i.endindex = self.chapterobjects[j].index - 1	
  590: 										startfound = True
  591: 										break
  592: 										
  593: 								if not startfound:
  594: 									errstr = errstr + 'ERROR in XML file: \"&lt;start&gt; tag in chapter has no end-tag.\"<br>'
  595: #						print ' startname: ', i.startname
  596: #						print 'startindex: ', i.startindex
  597: #						print '    endurl: ', i.starturl
  598: #						print '   endname: ', i.endname
  599: #						print '  endindex: ', i.endindex
  600: #						print '    endurl: ', i.endurl, '\n'
  601: 
  602: 	def CreateChapter(self):
  603: 		global counter
  604: 		global counterid
  605: 		global baseurl
  606: 		global pagearray
  607: 		global errstr
  608: 
  609: 		thelen = len(self.chapterobjects)
  610: 		chapelement = PageElement()
  611: 		chapelement.name = self.name
  612: 		chapelement.id = counterid
  613: 		chapelement.type = "C"
  614: 		chapelement.level = self.chapterindex
  615: 		chapelement.open = 0
  616: 		chapelement.picturelink = ''
  617: 		chapelement.pictindex = 9999;
  618: 		pagearray.append(chapelement)
  619: 		counterid = counterid + 1
  620: 		if hasattr(self, 'chapterobjects'):
  621: 			count = 0
  622: 			for i in self.chapterobjects:
  623: 				count += 1
  624: 				if hasattr(self, 'typestr'):
  625: 					if i.typestr == 'page':
  626: 						i.CreatePage()
  627: 					if i.typestr == 'chapter':
  628: 						i.CreateChapter()
  629: 					if i.typestr == 'start':
  630: 						namenumber = counter
  631: 						nameprev = ""
  632: 						urlstart = 0
  633: 						urlend = 0
  634: 						if i.startname != '':
  635: 							t = re.search(r'\d*$', i.startname)
  636: 							if not IsInt(t.group(0)):
  637: 								t = re.sub('(\..*$)', '', s)
  638: 								t = re.search(r'\d*$', t)
  639: 								if IsInt(t.group(0)):
  640: 									namenumber = int(t.group(0))
  641: 									nameprev = re.sub(r'\d*$', '', i.startname)
  642: 								else:
  643: 									errstr = errstr + 'ERRRRROR: cannot extract startnumber.<br>'
  644: 							else:
  645: 								namenumber = int(t.group(0))
  646: 								nameprev = re.sub(r'\d*$', '', i.startname)
  647: 
  648: 						if ( (i.startindex > 0) and (i.endindex > 0) and (i.endindex > i.startindex) ):
  649: 							currcount = 0
  650: 							for j in range(i.startindex, i.endindex + 1):
  651: 								currnumber = namenumber + currcount
  652: 								pageelement = PageElement()
  653: 								pageelement.name = nameprev + str(currnumber)
  654: 								pageelement.level = self.chapterindex + 1
  655: 								pageelement.id = counterid
  656: 								pageelement.type = "P"
  657: 								pageelement.open = 0
  658: 								pageelement.pictindex = j
  659: 								pagearray.append(pageelement)
  660: 								currlen = len(pagearray)
  661: 								if pagearray[currlen - 2].type == 'C':
  662: 									pagearray[currlen - 2].pictindex = j
  663: 								counter = counter + 1
  664: 								counterid = counterid + 1
  665: 								currcount = currcount + 1
  666: 						else:
  667: 							t = re.search(r'\d*$', i.starturl)
  668: 							if not IsInt(t.group(0)):
  669: 								t = re.sub('(\..*$)', '', s)
  670: 								t = re.search(r'\d*$', t)
  671: 								if IsInt(t.group(0)):
  672: 									urlstart = int(t.group(0))
  673: 								else:
  674: 									errstr = errstr + 'ERRRRROR: cannot extract number from starturl.<br>'
  675: 							else:
  676: 								urlstart = int(t.group(0))
  677: 							t = re.search(r'\d*$', i.endurl)
  678: 							if not IsInt(t.group(0)):
  679: 								t = re.sub('(\..*$)', '', s)
  680: 								t = re.search(r'\d*$', t)
  681: 								if IsInt(t.group(0)):
  682: 									urlend = int(t.group(0))
  683: 								else:
  684: 									errstr = errstr + 'ERRRRROR: cannot extract from endnumber.<br>'
  685: 							else:
  686: 								urlend = int(t.group(0))
  687: 							if ( (urlstart > 0) and (urlend > 0) and (urlend > urlstart) ):
  688: 								for j in range(urlstart, urlend):
  689: 									pageelement = PageElement()
  690: 									currnumber = namenumber + j
  691: 									pageelement.name = nameprev + str(currnumber)
  692: 									pageelement.level = self.chapterindex + 1
  693: 									pageelement.id = counterid
  694: 									pageelement.type = "P"
  695: 									pageelement.open = 0
  696: 									pageelement.pictindex = j
  697: 									pagearray.append(pageelement)
  698: 
  699: 									counter = counter + 1
  700: 									counterid = counterid + 1
  701: 		
  702: 
  703: ########################################################################################
  704: class StartEndObject:
  705: 	def __init__(self):
  706: 		self.startname = ""
  707: 		self.startindex = 0
  708: 		self.starturl = ""
  709: 		self.endname = ""
  710: 		self.endindex = 0
  711: 		self.endurl = ""
  712: 		self.typestr = "start"
  713: 		self.prevref = 0
  714: 		self.nextref = 0
  715: 		self.chapref = 0
  716: 		
  717: 
  718: ########################################################################################
  719: class PageElement:
  720: 	def __init__(self):
  721: 		self.id = ""
  722: 		self.type = ""
  723: 		self.name = ""
  724: 		self.picturelink = ""
  725: 		self.pictindex = 0
  726: 		self.level = 0
  727: 		self.open = 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>