# $Id: README,v 1.1.1.1 2003/07/09 22:57:26 cvs Exp $

OGo Publisher
=============
[EXPERIMENTAL ! (v0.9.x)]
[REQUIRES: SOPE, GDL, Logic, DocumentAPI, WebUI]

This is a simple extension to OGo projects which allow you to implemented
template driven exports of static HTML servers.
Suitable for small webservers, used for www.opengroupware.org :-)


Links
=====

  Links in templates are always relative to the template location.
  *Exported* links from templates are made relative to the content page 
  (obviously ;-) !

Defaults
========

  ProfilePubRequestHandler - bool
    profiling info in pub-request-handler

  ProfilePubResourceManager - bool
    profiling info in pub-resource-manager

  ProfileSKYOBJ - bool
    profiling info for SKYOBJ tags

  LogTemplates - bool
  
  SkyPubDebugEnabled    - bool - enable debug logs
  SkyPubCoreOnException - bool - dump core if SkyPubComponent catched an 
				 exception

Special XML Tags
================

  <entity name="lt"/>
  
  <comment>sdkajfkjhasdfjhf</comment>

  <ssi element="virtual" .../>

SKY -> OGo Tags
==================

Keys:
  SKY                     OGo JavaScript            OGo KVC
  body                    getContent()              -
  self                    this                      self
  contentType             contentType               NGFileMimeType
  lastChanged             lastChanged               NSFileModificationDate
  hasSuperLinks           hasSuperLinks             -
  id                      id                        self.globalID
  isRoot                  isRoot                    -
  path                    path                      NSFilePath
  name                    name                      NSFileName
  objType                 objType                   -
  objClass                objClass                  -
  prefixPath                                        -
  title                   title                     NSFileSubject
  version                 getLastVersion()          SkyVersionName
  visibleName             name                      NSFileName
  visiblePath             path                      NSFilePath
  parent                  getParentDocument()       -
  index                   getIndexDocument()        -
  toclist                 getTocList()              -
  children                getChildList()            -
  relatedLinks            -                         -
  objectsToRoot           getDocumentsToRoot()      -

Insertvalue-var
  SKY:
    <SKYOBJ insertvalue="var" name="title2"/>
  OGo:
    <var:string value="title2"/>

Insertvalue-anchor
  SKY:
    <SKYOBJ insertvalue="anchor" name="self">blah</SKYOBJ>
    <SKYOBJ insertvalue="anchor" name="link">blah</SKYOBJ>
  OGo:
    <a js:href="this">blah</a>
    <a var:href="link">blah</a>

Listen:
  SKY:
    <SKYOBJ list="toclist">
    <SKYOBJ list="children">
    <SKYOBJ list="objectsToRoot">
  OGo:
    <var:foreach list="getTocList()">
    <var:foreach list="getChildList()">
    <var:foreach list="getDocumentsToRoot()">

  Parameter
    SKY  query -> const:qualifier

Conditions:
  SKY:
    <SKYOBJ condition="isEqual" name1="color" value2="red">
    <SKYOBJ condition="isNotEqual" name1="color" value2="red">
    <SKYOBJ condition="isEqual" name1="color" value2="red">
  OGo:
    <var:if js:condition="getAttribute('color')=='red'">
    <var:ifnot js:condition="getAttribute('color')=='red'">
    <var:if value1="color" const:value2="red">

NOTES
=====

- SkyPubDirectAction.m is used for "online" previews
  - creates a WORequest object for a path
  - creates a WOContext for the request
  - attaches a pubResourceManager to the request

SkyDocument
  NGLocalFileDocument
  SkyProjectDocument

Class & Category Notes
======================

DOM Extensions
==============

DOMElement(LinkElems)
DOMElement(Links)
DOMNode(LinkElems)

NS/EO/WO Extensions
===================

EODataSource(PubDS)
NSObject(SKYValueForKey)
NSObject(PubFileManager)
WOResourceManager(Additions)

OGo Extensions
==============

SkyDocument(SKYEmul)
- adds methods for SKY compatibility: 
  - npsDocumentType		(returns "publication", "template", etc)
  - npsDocumentClassName	(same as above)
  - npsValueForKey:inContext:	(keys like objClass,objType,prefixPath)
  - npsFolderValueForKey:inContext: (same, but on index-document ?)

SkyDocument(Pub)
- adds:
  - pubFileManager
  - pubChildDataSource	(uses dataSourceAtPath: on fm)
  - pubURL		(calls urlForPath:[self pubPath])
  - pubPath		(return cleaned up NSFilePath)
  - pubStandardizePath: (use fm's standardizePath:)
  - pubMakeAbsolutePath:
  - pubMakeRelativePath:
  - pubIsValidLink:
  - pubRelativeTargetPathForLink:
  - pubAbsoluteTargetPathForLink:
  - parentDocument	(return the parent-doc by ".." in fm, documentAtPath:)
  - nextDocument	(sort the dir-contents, then select sibling)
  - previousDocument	(same as above)
  - pubDocumentAtPath:	(make abspath, the ask pubFileManager)
  - pubIndexFilePath	(locate index.xhtml or index.html [or IndexFile])
  - pubIndexDocument	(above, then documentAtPath:)
Lists:
  - pubChildListDocuments
  - pubAllDocuments
  - pubAllFromDataSourceOfClass: (fetch using a specified datasource)
  - pubAllPersons
  - pubAllEnterprises
  - pubAllAccounts
  - pubAllJobs
  - pubAllAppointments
  - pubAllProjects
  - pubAllTeams
  - pubTocListDocuments
  - pubRelatedLinkDocuments
  - pubFolderDocumentsToRoot

SkyDocument(PubJS)
- adds props: 
  - objType		(npsDocumentType)
  - objClass		(npsDocumentClassName)
  - isRoot		(checks for / or index-doc in /)
  - contentType		(NSFileMimeType)
  - lastChanged		(NSFileModificationDate)
  - hasSuperLinks	(always NO)
  - id			(globalID)
  - name		(NSFileName)
  - title		(NSFileSubject)
- adds funcs:
  - getParentDocument()	(parentDocument [can be called multiple times])
  - getIndexDocument()	(pubIndexDocument)
  - getChildList()	(pubChildListDocuments)
  - getTocList()	(pubTocListDocuments)
  - getDocumentsToRoot()(pubFolderDocumentsToRoot)

SkyDocument(PubResponse)
- adds:
  - generateGenericPubResponseInContext:
  - generateImagePubResponseInContext:
  - generateXMLPubResponseInContext:
  - generateXHTMLPubResponseInContext:
  - generateHTMLPubResponseInContext:
  - generateDirPubResponseInContext:
  - generatePubResponseInContext:	(check NSFileMimeType and dispatch)

Publisher Classes
=================

SkyPubComponent (inherits from WOComponent)
- the component representation of publisher documents and templates
- ivars: fileManager, document, linkManager, isTemplate, rm, template
- JS:    shadow, didEvaluate

SkyPubComponent(JSSupport)
- seems to be *really* similiar to SkyFormComponent, NGObjWeb or NGObjDOM 
  should probably provide a proper superclass
- -jsMapContext relies on an active mapping context
- shadow is created on-the-fly by _shadow (like in SkyFormComponent)
- JS props: 
  - objType, objClass, isRoot, contentType, lastChanged, hasSuperLinks
  - id, name, title
  - document, isTemplate, fileManager
- JS funcs:
  - getParentDocument()
  - getIndexDocument()
  - getChildList()
  - getTocList()
  - getDocumentsToRoot()
  - SkyDate(), Date()
  - print()
  - FileManager()

SkyPubComponentDefinition

SkyPubDataSource
SkyPubDirectAction
SkyPubFileManager
SkyPubInlineViewer
SkyPubPartPreview
SkyPubPartSourceViewer
SkyPubRequestHandler
SkyPubResourceManager

* Export Renderer
SKYNodeRenderer
SkyPubAnkerNodeRenderer
SkyPubAnkerSourceNodeRenderer
SkyPubCommentNodeRenderer
SkyPubEntityNodeRenderer
SkyPubHTMLNodeRenderer
SkyPubImgNodeRenderer
SkyPubImgSourceNodeRenderer
SkyPubSSINodeRenderer
SkyPubScriptNodeRenderer
SkyPubSourceNodeRenderer
SkyPubSourceTextNodeRenderer
SkyPubTextAreaNodeRenderer
SkyPubTextNodeRenderer

* Preview Renderer
SkyPubAnkerPreviewNodeRenderer
SkyPubHTMLPreviewNodeRenderer
SkyPubImgPreviewNodeRenderer
SkyPubInputPreviewNodeRenderer
SkyPubLinkPreviewNodeRenderer
SkyPubNoTagPreviewNodeRenderer
SkyPubPreviewTextNodeRenderer
SkyPubSSIPreviewNodeRenderer
SkyPubScriptPreviewNodeRenderer

* Links
SkyPubAnkerLink
SkyPubBGImgLink
SkyPubFormLink
SkyPubImgLink
SkyPubInputLink
SkyPubLink
SkyPubLink(Activation)
SkyPubLinkLink
SkyPubLinkManager
SkyPubLinks
SkyPubScriptLink
SkyPubXLink

* Render Factories
SkyPubNodeRenderFactory
SkyPubPreviewNodeRenderFactory
SkyPubSourceNodeRenderFactory
