Forum OpenACS Development: Where to find a tutorial for customizing OpenACS?

After having successfully downloaded and installed OpenACS 4.x I
have been looking into documentation on how to use, modify, and
customize my new web. I have not been able to locate a good tutorial
on mainly customizing the look & feel of my web site. The start up
page (the welcome: Congratulations) does give some hints, but several
questions has arosen:

1) What is the correct way to include a background picture?
From the code I figured that it should be placed in /graphics/bg.gif
and that the variable prefer_text_only_p should be defined and set
false. That's was OK. Also the parameter GraphicsSiteAvailableP should
be set true. I couldn't find this anywhere so I tried to include it in
the <site name>.tcl file, but nothing happened. I ended up simply
editing the default-master.tcl file, which probably is totally wrong.

2) Where can I get an overview of the concepts of Groups, Permissions,
Relations, Relation Types, etc.?

3) I want to have the original welcome pages availble to me (the
administrator), but customize the home page (welcome). Where should I
move it and how do I re-link it to my own workspace?

4) If I need to make changes to the design, do I edit the .adp files
all over the place? And if I do, how about updates?

5) Someone in my organization has been using FP (M$ FrontPage)
designing several web pages (a rather complex system). How can I
'include' or convert these to OpenACS and still accomodate updates
from FP?

6) I have some old cgi files. How do I use those with OpenACS? How do
I reference them?

  Greetings,

I'm not sure that you will get too many answers because most of us picked up this stuff on our own by reading the existing code. The documentation is a good way get a general understanding of how the system works, however, it can't cover everything. You fill in the holes by looking at the code and experimenting.

That said, I'll take a shot at answering your questions.

1) If the background picture never changes, then you can probably keep the picture in the /web/openacs-4/www/ directory and reference it directly in the default-master.adp file. Otherwise, you can probably stuff it into the content repository.

2) Assuming that you read the basic documentation about permission, ACS 4.0 Permissions Tediously Explained is good at filling in the details.

3) You can check to see if you are the site admin (ad_permission_p -3 admin). I think -3 is the default_context. I could be wrong. Anyway, in your adp template, you can put a if statement around the HTML code that shows you the original page so that only the site admin can see it.

4) Edit the default-master.adp file. That changes the site wide look.

5) I have no idea. I use vi to write HTML code 😊

6) You can compile and activate nscgi. I think someone wrote up some info about nscgi. I don't know where it is.

Thanks Gilbert,

  I'm glad that someone did answer 😉.

<blockquote> 1) If the background picture never changes, then you can probably keep the picture in the /web/openacs-4/www/ directory and reference it directly in the default-master.adp file. Otherwise, you can probably stuff it into the content repository.
</blockquote>

  I did change the default-master.tcl and that worked. But first I'm worried about how to handle updates from OpenACS if I do a lot of changes to the standard files. Second, there are two variables in the default-master.adp file: prefer_text_only_p, which I assume is 'f', and ad_graphics_site_available_p (== GraphicSiteAvailableP parameter). If these last two are 'f'and 't', I'm possitive that I would get a background picture, but I can't figure out how to set the last one.

  I am afraid, I haven't gotten to the point where I understand your remark on the content repository 😟.

<blockquote> 2) Assuming that you read the basic documentation about permission, ACS 4.0 Permissions Tediously Explained is good at filling in the details.
</blockquote>

  Great I will have another look at that.

<blockquote> 3) You can check to see if you are the site admin (ad_permission_p -3 admin). I think -3 is the default_context. I could be wrong. Anyway, in your adp template, you can put a if statement around the HTML code that shows you the original page so that only the site admin can see it.
</blockquote>

  Well, I found the ad_permission_p function and using this and setting a variable (admin_p) to true/false whether this function returns admin, I can use this variable in the .adp file. Is this the correct way?

<blockquote> 4) Edit the default-master.adp file. That changes the site wide look.
</blockquote>

  Yes, it does (except for some few pages like errors).

<blockquote> 5) I have no idea. I use vi to write HTML code 😊
</blockquote>

  Any idea of where to go looking for answers? (I do like writing the HTML code directly too :=), but some 'ignorants' don't seem to like this.

<blockquote> 6) You can compile and activate nscgi. I think someone wrote up some info about nscgi. I don't know where it is.
</blockquote>

  Sounds possible, but again where/how do I reference these things from the system without having to worry about OpenACS updates??

  I guess one of my main concerns is how to customize my site and still being able to get updates from OpenACS.

  Thanks for clarifying things even more,

GraphicSiteAvailableP -- this is set somewhere with a call to ns_param.  Look in your nsd startup .tcl file; if it sources another file at the end, look in that too.  Unless this has changed in 4.x.

Syncing your changes with OpenACS updates: this is always going to be a manual thing.  I don't see any way around that.  Your best options are (1) get your changes accepted into the main source code :) and (2) change in as few places as possible.  Also get good at reading diffs. :)

I wouldn't worry about it too much.  If you're doing mostly cosmetic changes anyway, and someone else makes other cosmetic changes, what do you care? your site already looks like you wanted.  If you're really paranoid about it, don't start customizing your module until mainline development on it is finished.  You won't be doing customization on the core so you'll be able to (almost, subject to data model changes & such) drop in whatever core improvements the OpenACS team comes up with.

Parameters are set from the Site Map admin page now, not via a Tcl file sourced during start-up as was true in 3.x.
Yes, Don I noticed. But I couldn't find the GraphicSiteAvailableP flag anywhere ?!