##########################################################################
#                                                                        #
#           copyright (c) 2003 ITB, Humboldt-University Berlin           #
#           written by: Raphael Ritz, r.ritz@biologie.hu-berlin.de       #
#                                                                        #
##########################################################################
 
"""Webpublished reference main class"""
 
from zope.interface import implements
from Products.CMFBibliographyAT.interface import IWebpublishedReference
 
from AccessControl import ClassSecurityInfo
from Products.CMFCore.permissions import View
 
from Products.CMFBibliographyAT.config import CMFBAT_USES_LINGUAPLONE
 
from Products.ATContentTypes.content.base import registerATCT as registerType
from Products.ATContentTypes.content.schemata import finalizeATCTSchema
 
from Products.CMFBibliographyAT.config import PROJECTNAME
from Products.CMFBibliographyAT.content.base import BaseEntry, BaseEntrySchema
 
WebpublishedSchema = BaseEntrySchema.copy()
WebpublishedSchema.get('authors').required = 0
 
# the default AT 'description' field shall be invisible, 
# it is kept in sync with the 'abstract' field
WebpublishedSchema.get('description').widget.visible = {'view': 'invisible',
                                                        'edit': 'invisible', }
 
finalizeATCTSchema(WebpublishedSchema)
 
class WebpublishedReference(BaseEntry):
    """Content type to make reference to a webpublished (only) document.
    """
 
 
    implements(IWebpublishedReference)
 
    archetype_name = "Webpublished Reference"
    schema = WebpublishedSchema
    security = ClassSecurityInfo()
 
    security.declareProtected(View, 'Source')
    def Source(self):
        """ the default webpublished source format
        """
        try:
 
            return self.BookSource()
 
        except AttributeError:
 
            url = self.getPublication_url()
 
            source = 'Webpublished'
            if url: source += ', %s' % url
            if source and (source[-1] not in  '.!?'):
                source += '.'
 
            return source
 
    security.declareProtected(View, 'getCoinsDict')
    def getCoinsDict(self):
        """ Select which values to display in the COinS tag for this item """
        coinsData = BaseEntry.getCoinsDict(self)
        coinsData['rft.genre'] = "document"
        coinsData['rft.btitle'] = self.Title()
        coinsData['rft_val_fmt'] = "info:ofi/fmt:kev:mtx:book"
        return coinsData
 
registerType(WebpublishedReference, PROJECTNAME)