[Zope-Annce] NeoBoard 1.1b has been released
Sun, 15 Dec 2002 10:13:15 +0900
I'm pleased to announce that NeoBoard 1.1b has been released.
For info on upgrading from previous versions, please read UPGRADE.txt.
Especially users of 1.03 version MUST follow the exact upgrade steps
specified in the document.
>From NeoBoard 1.1b on, NeoPortal Library is required.
If you want to use NeoBoard 1.1b in a CMFPone site. Please upgrade to
What is NeoBoard?
NeoBoard is a threaded message board product. NeoBoard is unique in
that it can be used either as a standalone Zope product or as a CMF
product or even as a CMF Plone product. It retains the same **Plonish**
look and feel with or without Plone.
You can test out NeoBoard at the Boards Section of the <a
You can download NeoBoard at the Download Section of the <a
NeoBoard bases most of its core features on NeoPortal Library.
Bare Zope and CMF/Plone Support ( new since 1.1a )
NeoBoard can be used either as a standalone Zope product or as a
CMF or Plone product. NeoBoard retains the same look and feel no matter
where you install it.
CMF-like Skins ( new since 1.1a )
NeoBoard's skins work exactly the same as CMF's. NeoBoard's skin
system is modeled after CMF. If a skin works with CMF, it'll work with
Plone is not a must for NeoBoard to work, but NeoBoard borrowed
much from Plone's skins. With or without Plone, NeoBoard looks
Collapsible Views ( new since 1.1b )
NeoBoard's article list can be collapsed or expanded.
When the list is in the collapsed view, articles with replies
will show *the number of replies* after their titles.
When the list is in the expaneded view, articles with inline
comments will show *the number of comments* after their titles.
Sortable Views ( new since 1.1a )
NeoBoard's articles can be sorted on a number of properties:
creation date (default), category, the number of accesses, and the
number of ratings.
Click on a corresponding table header and you'll get a sorted
list on that property. Clicking the same header again will give you a
reverse-sorted list on that property.
Minimal Article Workflow Support ( new since 1.0b )
NeoBoard Articles should be approved for public viewing. The
auto-approval option can be turned on if approving articles ( or
moderating them ) seems cumbersome.
NeoBoard managers can disapprove ( retract ) articles at any
Publishing ( new since 1.0b )
NeoBoard can be published or retracted. You can even set a date
on which to publish an NeoBoard instance.
Simple Local Roles ( new since 1.0b )
The owner of a NeoBoard instance can delegate his/her manager
role to other normal users via NeoBoard Managers form.
NeoBoard managers are **NOT** Zope managers. Their roles are
restricted to maintaining the given NeoBoard instance.
Article Categories ( new since 1.0b )
NeoBoard Mangaers can define article categories under which to
group NeoBoard Articles. These categories don't have anything to do with
One can view only those articles that fall under a selected
Flexible Authentication Schemes ( new since 1.0b )
NeoBoard can either use ACL authentication or its own
password-based per-article authentication scheme depending on the
'use_acl_auth' option value.
When using ACL authentication, NeoBoard causes a login popup
menu to appear by raising the 'Unauthorized' error when a
unauthenticated user tries to access restricted resources such as an
article posting form.
When not using ACL authentication, NeoBoard presents
username/password fields for posting/modifying/deleting articles or
Anonymous Posting ( new since 1.1b )
NeoBoard managers can choose to allow anonymous users to post
articles/comments even when ACL user authentication is in use.
Batch Actions ( new since 1.0b )
NeoBoard managers can copy, move, delete, approve, disapprove
articles in a batch.
Cataloging ( new since 1.0b )
NeoBoard articles and their attachments are all catalog-aware.
One can search NeoBoard articles on any combinations of the following
- Attachment ( title, description, filename combined)
Note that NeoBoard's search capability relies on ZCatalog,
which, in turn, is dependent upon the underlying splitters. If your
language lacks a splitter, you're out of luck.
Don't come complaining about searching not working unless you're
**DAMN** sure you have a right splitter.
I, myself, can't search my own NeoBoards since there's no Korean
splitter yet:-( Some day... I might develop one;-)
Content Caching ( new since 1.1b )
NeoBoard Articles can cache rendered content. NeoBoard Articles
have two common properties: 'text' and 'cooked_text'.
The 'text' property holds the raw content while the
'cooked_text' property contains the rendered content.
Content Iconization ( new since 1.1b )
NeoBoard Articles inherit the 'NeoPortalIconizableContent'
mix-in class from NeoPortal Library.
As its name implies, **NeoPortal Iconizable Content** turn
simple text notations into graphic icons, emoticons, for example::
':-)' becomes a smiling icon ( :-) ) when rendered.
Object Embedding ( new since 1.1b )
NeoBoard Articles can embed other objects. Embedded objects are
rendered automatically in embedding object's view. Any changes in
embedded objects are automatically updated in embedding object's view.
Even inline comments can embed and render other objects;
NeoPortal object embedding follows the rules of acquisition.
Embeddable objects must provide a view named 'call_view'. For
instance. NeoPortal Article Attachment comes with a call_view template
'neoboard_article_attachment_call_view.pt', which returns only the
rendered content without any HTML or site headers.
Embedding syntax is pretty simple:
- __(id)__ # two underscores + opening '(' + the id of
the object to embed +closing ')' + two underscores
- __(image_1)__ # embeds an object whose id is 'image_1'
Requested objects get rendered with their 'call_view' templates
or replaced with the following error messages.
- __(REQUESTED_OBJECT_DOES_NOT_SUPPORT_EMBEDDING: image_1)__
# not NeoPortal Content Type objects
image_1)__ # pure authorization errors
- __(CANNOT_CROSS_EMBED: page_1)__
# page_1 alread embeded the current object; might fall into an infinite
image_1)__ # not owner of the object and it's not published
image_1)__ # NeoPortal Content Type objects but no call views found
- __(REQUESTED_OBJECT_NOT_FOUND: image_1)__
# not found
These error messages are only saved in the rendered ( cached )
content of the object. When embedded objects become available and you
re-edit the embedding object, their call views will get rendered into
the embedding object's cached content storage: 'cooked_text'.
An article can embed its attachments, for example, to render
their 'call views' anywhere in the article body.
Inline Commenting ( new since 1.1a )
NeoBoard Articles are inline-commentable. Backtalk like inline
comments can be added and users can view only selected commentor's
comments ( works like MS-Word's annotations ) or can choose to view or
not to view all the comments on the fly.
When a user chooese not to view comments or to view only a
certain person's commments, NeoBoard Articles re-render their content
instead of resorting to their content caching machinery.
Note that articles with inline comments cannot be deleted by
their posters. If a creator of an article attempts to delete an embedded
inline comment, it'll still appear as a comment that lost its context (
The above restriction doesn't apply when a NeoBoard manager
IP-based Spam Blocking ( new since 1.1b )
NeoBoard Articles are spam-blockable. IP-based spam blocking
prevents duplicate postings in a given interval from the same IP
address. One can't comment on an article twice in less than 10 seconds,
for example, to prevent DOS-like malicious duplicate postings.
IP-based Daily Access Log ( new since 1.1b )
IP-based access logs are saved in a special container inside
NeoBoard Articles and the container is purgeable by a given interval.
Logs are viewable via 'log' button in an article view.
Content Rating ( new since 1.1b )
NeoBoard Articles are ratable. The max and min rating values can
be changed via the configuration menu.
Only one rating value can be stored from a single IP address:
that is, one can't rate the same content twice but can change his/her
rating value by rating the content again with a different value.
DTML Handling ( new since 1.0b )
NeoBoard Articles can render DTML tags in a given context if
'DTML' is chosen for a renderable format.
Moving or Copying Articles Between Multiple NeoBoards ( new since
NeoBoard managers can copy or move NeoBoard Articles between two
Two restrictions apply:
- Both instances must be using the same authentication scheme
- Both instances must be using the same attachment storage type
( attachment wrapper )
Unlimited Number of Attachments ( new since 1.0b )
NeoBoard Articles can have an unlimited number of attachments
either as stock Zope Files or NeoPortal External Files. If the size of
attachments is of concern, you can opt for NeoPortal External Files as
Attachments are content-type-aware, which means, they'll display
icons corresponding to their content types.
Note the following when you choose to use the filesystem for
1. NeoPortal External Files are just wrappers for actual files
on the filesystem. When you copy or move articles, their attached files
on the filesystem get also copied or moved to proper locations. However,
if you delete articles with attachments, their linked files on the
filesystem are **not** deleted but renamed to filename+**._temp**. You
should manually delete these remnants. ( For those who're curious why...
You can't distinguish when Zope is copying/moving or deleting these
files. In any case, Zope first **DELETES** these files. If it's a copy
or move operation, NeoBoard can smartly figure that out. But deleting is
a whole lot different matter. )
2. If you copy your NeoBoard instance, its archive path gets
also renamed. Before **RENAMING** the copied NeoBoard instance, go to
the manger optioins menu and rename the archive path first. That's the
only chance you got. NeoBoard doesn't allow you to change its archive
path with one or more articles in it.
NeoPortal External File Attachment Security ( new since 1.1b )
You can set authorized file bases inside a file called
'file_bases.props' that resides in the 'data' directory under the
NeoPortal Library package directory::
# filepath bases - multiple bases allowed
# unused bases may be commented out
# zero base means you'll allow any directory depending
# on Zope user's file permissions
#/home/ZopeHome/archives for unix/linux
#\\ZopeHime for windows
For example, if you set '/home/ZopeHome/archives' as the only
authorized file base inside this file, users with permissions to add
NeoBoard/CMFNeoBoard instances cannot set their archive paths above this
authorized archive path: /home/Zopehome/archives/my_dir
unauthorized archive path: /home/archives
Automatic Upgrade ( new since 1.1b )
Old NeoBoard instances can detect updated NeoBoard classes when
you install a newer version of NeoBoard.
Upgrading from previous versions of products has never been
easier: a click-and-go upgrade.
i18n ( new since 1.1a )
NeoBoard supports i18n of its messages. See the 'i18n.txt' in
the NeoPortal Library package directory for more info on how to activate
the i18n machinery.
Note that all internal messages NeoBoard spews out go into a
'neoportal' domain message catalog. You should have a message catalog
with 'neoportal' domain for this to work.
When exporting/importing a NeoBoard instance, all articles lose
their creation date values.
There's a workaround: first set the export flag using the
manager menu before you export an instance.
Then when you finished importing that instance, revisit the
manager menu and follow the instruction NeoBoard presents; the imported
NeoBoard instance will refuse to work until you do that.
To the dedicated staff at NeoQuest, language is not a problem
to be dealt with, but an art waiting to be performed.
NeoQuest Communications, Inc.
3rd Floor, HMC Bldg., 730-14, Yoksam-dong, Kangnam-gu
Tel: 82-2 - 501 - 7124 Fax: 82-2-501-7058
Corporate Home: http://www.neoqst.com
Personal Home: http://www.neoboard.net