##############################################################
# zNote Bibliography Management Tool v0.6
#
# copyright 2001, 2002 John Maxwell - jmax@portal.ca
#
# This product is licensed under the GNU General Public License. 
# Please see license.txt for details.
#
#  zNote is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published
#  by the Free Software Foundation; either version 2 of the License, 
#  or (at your option) any later version.
# 
#  zNote is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#################################################################


import string
 
def newEntryMethod( self, 
      formAuths, 
      formDate, 
      formTitle, 
      formEdToggle='authors',
      formBook='', 
      formEds='', 
      formCity='', 
      formPublisher='', 
      formEdition='', 
      formSTrans='', 
      formBTrans='', 
      formJournal='',
      formVolume='', 
      formNumber='',
      formIssueDate='',
      formPages='', 
      formISBN='', 
      formLCNUM='', 
      formURL='', 
      kind='oops' ):
      
    
    "Handle form input to create new zNote entry"
    # one big method for all 6 forms
    
    # need to have something here to validate the form req's elements
    
    # Authors are coming in as a LINES field.
    # and get rid of nasty blank lines:
    AuthsList = formAuths.split('\012')
    while '\r' in AuthsList: AuthsList.remove('\r')
    while '' in AuthsList: AuthsList.remove('')
    if formEds: 
        EdsList = formEds.split('\012')
        while '\r' in EdsList: EdsList.remove('\r')
        while '' in EdsList: EdsList.remove('')
    if formSTrans: 
        STransList = formSTrans.split('\012')
        while '\r' in STransList: STransList.remove('\r')
        while '' in STransList: STransList.remove('')
    if formBTrans: 
        BTransList = formBTrans.split('\012')
        while '\r' in BTransList: BTransList.remove('\r')
        while '' in BTransList: BTransList.remove('')

    
    
    # Start building XML:
    if kind == 'Add Book':
        self.oprint('<book>')
    elif kind == 'Add Book Section':
        self.oprint('<booksection>')
    elif kind == 'Add Journal Article':
        self.oprint('<jarticle>')
    elif kind == 'Add Thesis':
        self.oprint('<thesis>')
    elif kind == 'Add E-Source':
        self.oprint('<esource>')
    elif kind == 'Add Proceedings':
        self.oprint('<proceedings>')
    else:
        return 'not a book, not a...'
        
    if formEdToggle == 'authors':
        for a in AuthsList:
            self.oprint('<author>')
            if self.parseName(a)['first']:
                self.oprint('<firstname>' + self.parseName(a)['first'] + '</firstname>')
            if self.parseName(a)['last']:
                self.oprint('<lastname>' + self.parseName(a)['last'] + '</lastname>')
            self.oprint('</author>')
    else:
        for e in AuthsList:
            self.oprint('<editor>')
            if self.parseName(e)['first']:
                self.oprint('<firstname>' + self.parseName(e)['first'] + '</firstname>')
            if self.parseName(e)['last']:
                self.oprint('<lastname>' + self.parseName(e)['last'] + '</lastname>')
            self.oprint('</editor>')
    
    self.oprint('<date>' + formDate + '</date>')
    self.oprint('<title>' + formTitle + '</title>')
    
    if formSTrans:
        for t in STransList:
            self.oprint('<trans>')
            if self.parseName(t)['first']:
                self.oprint('<firstname>' + self.parseName(t)['first'] + '</firstname>')
            if self.parseName(t)['last']:
                self.oprint('<lastname>' + self.parseName(t)['last'] + '</lastname>')
            self.oprint('</trans>')
    
    if kind == 'Add Book Section':
        self.oprint('<inb>')
        self.oprint('<title>' + formBook + '</title>')
        
        
    if formEdition: self.oprint('<edition>' + formEdition + '</edition>')

    if formEds:        
        for e in EdsList:
            self.oprint('<editor>')
            if self.parseName(e)['first']:
                self.oprint('<firstname>' + self.parseName(e)['first'] + '</firstname>')
            if self.parseName(e)['last']:
                self.oprint('<lastname>' + self.parseName(e)['last'] + '</lastname>')
            self.oprint('</editor>')
        
    if formBTrans:
        for t in BTransList:
            self.oprint('<trans>')
            if self.parseName(t)['first']:
                self.oprint('<firstname>' + self.parseName(t)['first'] + '</firstname>')
            if self.parseName(t)['last']:
                self.oprint('<lastname>' + self.parseName(t)['last'] + '</lastname>')
            self.oprint('</trans>')
    
    if formPublisher:
        self.oprint('<pubinfo>')
        if formCity: self.oprint('<city>' + formCity + '</city>')
        self.oprint('<publisher>' + formPublisher + '</publisher>')
        self.oprint('</pubinfo>')

    if kind == "Add Journal Article":
        self.oprint('<inj>')
        self.oprint('<journal>' + formJournal + '</journal>')
        self.oprint('<volume>' + formVolume + '</volume>')
        if formNumber: self.oprint('<number>' + formNumber + '</number>')
        if formIssueDate: self.oprint('<date>' + formIssueDate + '</date>')

    if formPages: self.oprint('<pages>' + formPages + '</pages>')        
    if formISBN: self.oprint('<isbn>' + formISBN + '</isbn>')
    if formLCNUM: self.oprint('<lcnum>' + formLCNUM + '</lcnum>')
    
    if kind == 'Add Book Section':
        self.oprint('</inb>')
    elif kind == 'Add Journal Article':
        self.oprint('</inj>')
    
    if formURL: self.oprint('<url>' + formURL + '</url>')
    
    # easier to add a blank one here than have to figure out
    # if the node is there or not later
    self.oprint('<notes>')
    self.oprint('</notes>')
    
    if kind == 'Add Book':
        self.oprint('</book>')
    elif kind == 'Add Book Section':
        self.oprint('</booksection>')
    elif kind == 'Add Journal Article':
        self.oprint('</jarticle>')
    elif kind == 'Add Thesis':
        self.oprint('</thesis>')
    elif kind == 'Add E-Source':
        self.oprint('</esource>')
    elif kind == 'Add Proceedings':
        self.oprint('</proceedings>')
    else:
        return "shouldn'ta got this far"
    
    # Do the real work of adding the object:
    newNID = 'z' + string.zfill(str(self.NID + 1), 5) + '.xml'
    myTitle = self.composeTitle(AuthsList, formDate, formTitle)
    fileString = string.join(self.tempbuffer, '\n')
    fileString = fileString.replace('&', '&amp;')
    self.manage_addProduct['ParsedXML'].manage_addParsedXML(id=newNID,  title=myTitle, file=fileString, useNamespaces=0 )
    self.tempbuffer = []
    self.NID = self.NID + 1
    
    confirmStr = '<P><A HREF="' + newNID + '/View">' + myTitle + '</A> successfully added.</P>' 
    return confirmStr
