On Jun 9, 2008, at 7:00 AM, Alan Gutierrez wrote:

> Stripers
>
> I'd like to develop in Stripes. Imagine a typical web shop that does
> a website for a firm, but fills in the blanks with Stripes. Wouldn't
> it be great to have a Stripes CMS that approached some of the
> functionality of WordPress if not Drupal?
>
> Anyone developing such a monster? If not, what CMS would you
> recommend to use with Stripes development?

I can talk about mine, it's not OSS either, but it's all my code (so  
in theory could become OSS).

I had some primary drivers for my system.

-- Structured content
-- Time based publishing
-- Support user change
-- Separate CMS from the actual web site.

Effectively my goal was to provide a back end to a JSP coder. For my  
sites, the vast majority of the pages are static, using a themed page  
with individual parts of the page being dynamic.

With that in mind, the base goal was to provide a generic back end  
and then build a site on top of that, but the site would in fact  
mostly just pull content from the back end.

What I have meets those basic goals (though it's far from perfect).

With it you can:

Define structured content: This means I can make a piece of content  
that has, say, Name, Description, 2 images, and a PDF. This content  
is defined through Content Templates. Each content can have an  
arbitrary number of fields, and also has an attached velocity script  
that can be used to render the final content.

Define categories of content. Each category can have 1 or more  
Templates associated with that category.

Define Page Templates: These allow you to create fill in the blank  
page templates that can be used to generate JSP pages within the site.

Define Pages: this allows you to create the actual pages.

Create Stories: The fundamental content artifact. You select a  
category for each new story, then a form is created from the default  
template of the category. At that point you can fill in the various  
fields. I have pickers for images and things like that, date fields,  
numbers, etc. No real validation (save that numbers are numbers, and  
dates are dates). If a category supports more than one template, you  
can change the template on the fly, the form will reload, keeping the  
like fields (if name was on the old template, it will remain in the  
new template). I also have a (weak) wiki markup system that works  
within text blocks.

Finally, I also have a search engine for stories and PDFs attached to  
stories.

All stories have start and stop dates and an active flag.

Each of these bits are in various levels of maturity.

In use, the site itself is basically a set of JSP pages with some  
tags to load the content. like <t:stories categoryName="In the News"/ 
 >, will populate a "stories" collection that the JSP can then  
iterate and format however it likes using JSTL or scriptlets. The JSP  
has access to the raw components of each story, as well as a  
formatted version of the story (if it happens to have a velocity  
script defined).

I also have a <t:story categoryName="In the News" id="${param.id}/>  
which gives you the latest story for a category, or, if 'id' is  
passed in the url, it will return the story with that ID (assuming  
it's active and within date).

Combined with JSP tag files for templating, it's not uncommon for a  
page to look something like: (minus JSP headers)

<t:story categoryName="In the News" id="${param.id}"/>
<t:page title="In the News">
${story.rendered}
</t:page>

For my sites, when I want more sophisticated work, I just dump in to  
raw stripes actionbeans to supplement the JSPs. The users obviously  
can not really affect the logic of the action beans (as they don't  
have the source), but they can do whatever they like with the JSPs.  
I'm not really happy with that distinction.

The CMS doesn't have much caching beyond whatever JPA provides, save  
my custom actions which are heavily cached.

I don't have anything like a menu system or navigation system within  
the CMS. Pages, while in fact just JSPs are stored in the DB I don't  
do anything with that, save a little bit for the Wiki markup stuff.

It's implemented as a CMS EAR component with has the CMS management  
WAR as well as the core of the CMS, and the applications are  
individual WARs talking to the CMS via Remote EJB. This works pretty  
well, and lets me keep a modicum of isolation between the two  
systems. While rare, it's nice when I'm working solely on the front  
end site and only have to redploy the WAR, while the CMS stays  
untouched.

Beyond basic goals, the system has basically evolved rather than been  
engineered as a cogent whole from the ground up.

I am mostly happy with the system. I would like for it to be easier  
for users to create logic on their site beyond hacking scriptlets on  
JSPs, but I think ActionBeans are a bit too much for that. I think  
the Model 1 style works great for most simple "web sites". The wiki  
markup needs more work. I would like to be able to relate structured  
content to each other (the ever terrible creating a DB within a DB  
pattern -- sigh).

At the same time, I think it would be good to step away from JSP and  
move over to a pure velocity or maybe FreeMarker system. I haven't  
tried enough with either one to see how well it would work,  
especially in regards to how I use tag files today (which I'm quite  
happy with).

I'd like more ubiquitous caching in the system. I'd especially like a  
tiered, related caching system where I can change one piece of  
content and the system "knows" all of the affected pieces and dirties  
them for me.

It could use a good, solid EMail subsystem as well (mass mailing,  
mailing list management, etc.). IF anyone knows of a reasonable  
system like that in Java (For free) I'm all ears.

I have thought about redoing the entire thing (yet again) with a  
combination JCR based back end and Javascript and Velocity based  
front end. But I haven't done any work on that. The CMS back end  
would most likely remain in Stripes, but "sites" would be built on a  
combination of Velocity presentation and Javascript logic, all stored  
in a JCR repository.

But when I think about that, I serious consider "why don't I just do  
this in PHP" or perl or whatever. And I don't have a really good  
answer for that save I'm not real experienced in those systems, but  
they would most likely be more readily deployable.

Aaron and I talked a little about the idea that it might be neat to  
be able to write Stripes Actions within JSPs. He's done some work on  
this, but it's a bit nasty. I was thinking of using the Stripes  
binding logic as a simple utility where you pass it a Request and an  
Object to populate, and it does all of the work, perhaps returning  
validation details or something. I don't know if I'd have rely on the  
form tags or not. But it would make it a bit easier to write JSP  
Model 1 style applications.

I have given no thought to a module system, or how that would be  
done, or how they work. From the ones I've seen, they're just hooks,  
interceptors, callbacks, and listeners that are wantonly plugged in  
to the system that users can dump code in to. A Javascript system  
would readily support that I think.

Anyway, that's what I've been doing.

Regards,

Will Hartung


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Stripes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-users

Reply via email to