From: Adam Heath<doo...@brainfood.com>
To: Jacques Le Roux<jacques.le.r...@les7arts.com>
Cc: Joe Schaefer<joe_schae...@yahoo.com>; dev@ofbiz.apache.org;
infrastruct...@apache.org
Sent: Tue, September 21, 2010 5:34:10 PM
Subject: Re: ofbiz wiki(confluence)
On 09/21/2010 03:53 PM, Jacques Le Roux wrote:
Thanks Joe,
I quickly tried through Subclipse and got an error.
I guess now Adam has a better idea of what I was talking about.
I mean maybe Webslinger could be used, just my 2 cts...
I will attempt to describe webslinger for those who haven't ever heard of it
before.
The major features(bullet points) of webslinger-core are:
* Content data stored as raw files. This is to allow normal programs, like
grep, find, vim, dreamweaver, photoshop, git, svn work without modifications.
* Makes use of commons-vfs, and a custom set of layered filesystems.
* One layered filesystem is called 'flat'. Arbitrary attributes
(FileObject.getContent().getAttribute(name)) are stored as path/to/file@, into
separate files. Again, this allows for easy integration with other systems.
* Another layered filesystem is called 'wsvfs'. This is an overlay/cow type
filesystem, where multiple real filesystems are combined on the fly, giving
merged directory listings, with support for up-copy and whiteout. Any point of
the tree can 'overlay' any other part of the tree, altho this feature isn't
normally nescessary.
* Automatic extension resolution. This allows for pretty urls that don't have
extensions, and allow the implementation on the server to be changed as
nescessary. End-users have problems with extensions, so that is hidden.
* Any 'path' can be configured to do it's own sub-path management. This allows
for nice urls like /shop/product/$productId/detail and
/shop/cart/add/$productId and /Login/Path/To/Protected/Page. These urls then
show up nicely in hit reports. They are also easier for end-users to remember.
* Automatic attribute inheritance. Extensions are used to find the mime-type
of a file. Or the mime-type can be set directly on the file. Then, any
attribute files set in /WEB-INF/DefaultMimeAttributes/$mime/$type are inherited
for the resource in question. This allows mapping all ${page}.cf to
application/x-server-side-confluence, creating an attribute called 'type' with
a value of 'confluence-page'. More on the types in a bit.
* Every resource has a type, and a handler. Standard types are jsp, cgi,
binary. Base types are event(bsf-based), code, template. Type can also be
servlet, or, even more advanced(but not ready to be released) is 'vaadin' as a
type.
* Several languages are integrated: template: freemarker/velocity/text,
bsf+code: groovy/janino(java)/jython/rhino/bsh/quercus(php).
* Macros called by a template language can be implemented in *any* webslinger
resource(any type, any language). Each integrated template type has proxies
implemented that allow it to call back into webslinger macros. velocity->
#Merge("/path/to/file", "/template/to/wrap/it/with"), freemarker-> <@Merge
path="/path/to-file" template0="/template/to/wrap/it/with"/>. Support for
macros with content bodies is fully supported as well.
* Support for one-type 'wrapper' of a text output, and then different page
styles. Partial-ajax page updates can then skip this, and do smart updates of
regions of the browser.
The above list is an non-inclusive list of features in webslinger-core. It's
really generic, and not tied to any particular implementation.
The other major thing different about it, is that webslinger is *itself* a
servlet container, just like catalina or glashfish. However, what sets it apart
from all others, is that it doesn't run standalone; instead, it is installed
into a parent container. It then fakes/wraps everything, to support it's fancy
stuff. It supports running standard servlets, but then get backed by
commons-vfs, with overlay support, etc. This implementation isn't perfect, and
really needs to be improved upon.
I've been working on a demo for the ofbiz community to play with. However, the
existing embedded site in the repository was rather small, so I wrote an
importer to pull stuff from cwiki, which is what then started this thread.
ps: the license on all our code is asl 2.0
Jacques
From: "Joe Schaefer"<joe_schae...@yahoo.com>
The url is here
https://svn.apache.org/repos/infra/infrastructure/trunk/projects/cms
and is publicly readable.
----- Original Message ----
From: Adam Heath<doo...@brainfood.com>
To: Jacques Le Roux<jacques.le.r...@les7arts.com>
Cc: dev@ofbiz.apache.org; infrastruct...@apache.org
Sent: Tue, September 21, 2010 3:42:35 PM
Subject: Re: ofbiz wiki(confluence)
On 09/21/2010 02:07 PM, Jacques Le Roux wrote:
From: "Adam Heath"<doo...@brainfood.com>
>> On 09/21/2010 11:53 AM, Jacques Le Roux wrote:
>>> From: "Adam Heath"<doo...@brainfood.com>
>>>> So, I need some admin help with cwiki.apache.org, or at least
advice.
I've got a script that uses xmlrpc to confluence, and fetches all
previous page(+versions), comments, attachments(+versions), tracks
>>>> renames, usernames, and commit messages. I then take all this
data and
convert it into a long series of git commits, with the files
layed out
in a proper webslinger design. The author of each git commit is the
person who changed the page, added a comment, or uploaded a new
attachment.
This webslinger layout is still in flux, as is my script. The basic
logic works, however, by fetching all meta data, storing most of the
bulk of that in a temporary cache folder(only for the duration of the
script), then sorting each item by date, and replaying the set of
changes one by one.
It's optimized by storing the 'lastFoo' stuff for each
page/comment/attachment/(title->pageId mapping) as needed, so that it
can detect newer versions, etc, and not have to do anything. A
refresh
after a full download against the OFBIZ space takes 2 minutes, with
nothing new to fetch.
The issue I am having is the confluence installed on cwiki is old.
Newer versions support returning the
PageHistorySummary.versionComment
>>>> thru the rpc; currently, I have to fall back and do a screen
scrape of
the viewpreviousversions.action page.
>> CONFDEV docs definately list a versionComment field on
>> PageHistorySummary, that is not exposed in 3.2.0 installed on cwiki.
Where should I ask for help on this, getting this new api
implemented?
infra team: infrastruct...@apache.org
>>>
I put them in copy
>>
Thanks. I'm putting more information in this email; I've left
d...@ofbiz on the cc for this email, as others might be interested in
what I have discovered.
I also have suggestions to make the api more lightweight, when
doing
incremental updates(which my system supports).
Here are the suggestions:
I can fetch all attachments for a page. But the attachment data
returned doesn't include the current version as a field. I have to
split the download url(which is sub-optimal; it includes the current
version as a parameter). It might be nice to have an
AttachmentSummary
type record.
What if uploads an attachment, then a new version of the attachment,
then changes the page, then deletes the attachment? How could I fetch
that information? I don't see a way to fetch all attachments for all
time against a particular history. This is also a problem for deleted
pages, comments, and labels(probably others).
Comments in confluence support editting. Is this history stored, and
if so, can I get access to it?
>>
Are labels versioned?
>>
Children of pages are versioned, only because pages themselves are
versioned, which includes the value of the parentId at the time the
page was changed. However, the frontend doesn't let you see older
children, when looking at previous versions.
>>
It'd be nice if when calling getPageHistory, I could request a subset
of the list, instead of *all* page versions. If a page has 271
versions, and I have already fetched them, and the current page has a
version of 274, then I only really need to fetch 3 PageHistorySummary
records(to get the versionComment from newer versions of confluence).
>> BlogEntrySummary doesn't include version, but BlogEntry does. And I
can't fetch old versions of blogs.
>>
>>>>
As a side note, there is a severe lack of version comments. This
script ends up producing 3117 commits. Some of those are page
>>>> renames/comments/attachments, which don't have a commit message.
Most
are page commits. There are only 70 change messages. It'd be
nice if
people would comment when they change a page, but I don't see a
way to
enforce that.
>>>
Adam,
>
There is currently a beginning effort to create a CMS for apache.org
> (infrastructure/trunk/projects/cms) is yours related to this effort?
No, it's not. Based on how much time I've spent already(started my
imoprter last friday), and how familiar I am with ofbiz, it'd
probably take me a 2 months to get mostly feature compatible with
confluence(that's for a single person working in his spare time).
Jacques
PS: Not sure how to access to infrastructure/trunk/projects/cms/README
with the rights I have
You mean it's not public?