[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Phpgroupware-cvs] CVS: sitemgr/doc modules.dvi,1.1,1.2 modules.html,1.
From: |
Michael Totschnig <address@hidden> |
Subject: |
[Phpgroupware-cvs] CVS: sitemgr/doc modules.dvi,1.1,1.2 modules.html,1.1,1.2 modules.lyx,1.1,1.2 modules.pdf,1.1,1.2 modules.ps,1.1,1.2 modules.sgml,1.1,1.2 modules.txt,1.1,1.2 |
Date: |
Sat, 18 Jan 2003 00:24:42 -0500 |
Update of /cvsroot/phpgroupware/sitemgr/doc
In directory subversions:/tmp/cvs-serv30412
Modified Files:
modules.dvi modules.html modules.lyx modules.pdf modules.ps
modules.sgml modules.txt
Log Message:
lang_ vars in template documented
Index: modules.dvi
===================================================================
RCS file: /cvsroot/phpgroupware/sitemgr/doc/modules.dvi,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
Binary files /tmp/cvsPRPp5p and /tmp/cvsabA5oF differ
Index: modules.html
===================================================================
RCS file: /cvsroot/phpgroupware/sitemgr/doc/modules.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** modules.html 17 Jan 2003 03:37:52 -0000 1.1
--- modules.html 18 Jan 2003 05:24:38 -0000 1.2
***************
*** 66,75 ****
><DT
><A
! HREF="#AEN77"
>User manual</A
></DT
><DT
><A
! HREF="#AEN106"
>Administrator manual<A
NAME="ADMINISTRATOR-MANUAL"
--- 66,75 ----
><DT
><A
! HREF="#AEN79"
>User manual</A
></DT
><DT
><A
! HREF="#AEN108"
>Administrator manual<A
NAME="ADMINISTRATOR-MANUAL"
***************
*** 79,83 ****
><DT
><A
! HREF="#AEN140"
>Template designer manual<A
NAME="TEMPLATE-DESIGNER-MANUAL"
--- 79,83 ----
><DT
><A
! HREF="#AEN142"
>Template designer manual<A
NAME="TEMPLATE-DESIGNER-MANUAL"
***************
*** 87,91 ****
><DT
><A
! HREF="#AEN155"
>Application developper manual<A
NAME="APPLICATION-DEVELOPPER-MANUAL"
--- 87,91 ----
><DT
><A
! HREF="#AEN157"
>Application developper manual<A
NAME="APPLICATION-DEVELOPPER-MANUAL"
***************
*** 110,114 ****
NAME="AEN13">Template</H3
><P
! >Sitemgr builds web sites from templates. Those are stored in the directory
sitemgr/sitemg-site/templates. Each of them has a directory of its own. The
file main.tpl defines the template of the whole site, there can be other files
that define code for separate areas of the page or for specific modules.
Templates contain four kinds of variables. These are explained here since the
types 2,3 and 4 can be used both in the template as in the page content a
module generates.</P
><P
></P
--- 110,114 ----
NAME="AEN13">Template</H3
><P
! >Sitemgr builds web sites from templates. Those are stored in the directory
sitemgr/sitemg-site/templates. Each of them has a directory of its own. The
file main.tpl defines the template of the whole site, there can be other files
that define code for separate areas of the page or for specific modules.
Templates contain four kinds of variables. These are explained here since the
types 2,3 and 4 and 5 can be used both in the template as in the page content a
module generates.</P
><P
></P
***************
*** 142,145 ****
--- 142,149 ----
><LI
><P
+ >{lang_translatable_string} This lets you make the template
internationalized. The translatable string is sent through phpgroupware's lang
function. Thus you can add it to the lang files in the setup directory and
install it through the setup programm.</P
+ ></LI
+ ><LI
+ ><P
>{variable} Finally there are some simple variables you can use to retrieve
metainformation about the page or about the user's context:</P
><P
***************
*** 180,184 ****
CLASS="SECT2"
><A
! NAME="AEN43">Module</H3
><P
>The main function of a sitemgr module is to generate dynamic web site
content. To make the development of new modules, and the use of modules easy
and convenient, sitemgr defines an “abstract” class module which
each module should extend. This parent of all modules, provides one essential
service: It hooks the module into the content managment interface and permits
the editing of the module's arguments that determine what content will be
generated. Thus in order to create a new module, all you have to do, is to
extend the abstract super module, define the modules arguments, and write a
get_content function that returns the content that should be displayed on the
website. More on this in chapter<A
--- 184,188 ----
CLASS="SECT2"
><A
! NAME="AEN45">Module</H3
><P
>The main function of a sitemgr module is to generate dynamic web site
content. To make the development of new modules, and the use of modules easy
and convenient, sitemgr defines an “abstract” class module which
each module should extend. This parent of all modules, provides one essential
service: It hooks the module into the content managment interface and permits
the editing of the module's arguments that determine what content will be
generated. Thus in order to create a new module, all you have to do, is to
extend the abstract super module, define the modules arguments, and write a
get_content function that returns the content that should be displayed on the
website. More on this in chapter<A
***************
*** 192,196 ****
CLASS="SECT2"
><A
! NAME="AEN47">Argument/Content</H3
><P
>A module can be seen as a transformation of input arguments into generated
content. It is important to understand that the input arguments can be of
completely different kinds. On the one hand there can be arguments that are as
close as possible to the generated content. For example the html module's only
argument is named “htmlcontent” and in normal circumstances it is
not transformed at all but handed over as is to the page generation engine. On
the other hand arguments can play any conceivable role in the generation of
content that is driven by data coming from other phpgroupware applications.
They can be used to select between different categories of content, they can
choose a certain format of presentation, they can function as search terms,
etc.</P
--- 196,200 ----
CLASS="SECT2"
><A
! NAME="AEN49">Argument/Content</H3
><P
>A module can be seen as a transformation of input arguments into generated
content. It is important to understand that the input arguments can be of
completely different kinds. On the one hand there can be arguments that are as
close as possible to the generated content. For example the html module's only
argument is named “htmlcontent” and in normal circumstances it is
not transformed at all but handed over as is to the page generation engine. On
the other hand arguments can play any conceivable role in the generation of
content that is driven by data coming from other phpgroupware applications.
They can be used to select between different categories of content, they can
choose a certain format of presentation, they can function as search terms,
etc.</P
***************
*** 201,205 ****
CLASS="SECT2"
><A
! NAME="AEN50">Properties</H3
><P
>A module can define properties. Properties are accessible to the modules
get_content function in the same way as arguments, but they differ from them in
two ways:</P
--- 205,209 ----
CLASS="SECT2"
><A
! NAME="AEN52">Properties</H3
><P
>A module can define properties. Properties are accessible to the modules
get_content function in the same way as arguments, but they differ from them in
two ways:</P
***************
*** 225,229 ****
CLASS="SECT2"
><A
! NAME="AEN59">Blocks, content areas and scope</H3
><P
>There are three ways a module can generate content that will be displayed on
a web page:</P
--- 229,233 ----
CLASS="SECT2"
><A
! NAME="AEN61">Blocks, content areas and scope</H3
><P
>There are three ways a module can generate content that will be displayed on
a web page:</P
***************
*** 253,257 ****
CLASS="SECT2"
><A
! NAME="AEN69">Transformer</H3
><P
>The architecture for sitemgr modules provides for the distinction between
some form of raw content a module produces and the way it should get displayed
on the web site, with the future possibility to plug other display types into
the same framework. The idea is that the raw content of a module gets passed
through different transformers, possibly even several transformers in a
sequence at the time of content generation. Additionally this provides for a
use of modules outside of sitemgr, for example remote retrieval of information
with something like XML-RPC. </P
--- 257,261 ----
CLASS="SECT2"
><A
! NAME="AEN71">Transformer</H3
><P
>The architecture for sitemgr modules provides for the distinction between
some form of raw content a module produces and the way it should get displayed
on the web site, with the future possibility to plug other display types into
the same framework. The idea is that the raw content of a module gets passed
through different transformers, possibly even several transformers in a
sequence at the time of content generation. Additionally this provides for a
use of modules outside of sitemgr, for example remote retrieval of information
with something like XML-RPC. </P
***************
*** 266,270 ****
CLASS="SECT2"
><A
! NAME="AEN74">Translations</H3
><P
>Sitemgr in its new modularized architecture continues to be fully
multilingual. It is very simple to have a new module use this feature. All that
is needed is to use a special flag in the definition of the module's arguments.
All arguments that have this flag will be stored in a language specific
database table, and can be translated in the translation manager, very similar
to the way category and page definitions could already be translated to several
languages.</P
--- 270,274 ----
CLASS="SECT2"
><A
! NAME="AEN76">Translations</H3
><P
>Sitemgr in its new modularized architecture continues to be fully
multilingual. It is very simple to have a new module use this feature. All that
is needed is to use a special flag in the definition of the module's arguments.
All arguments that have this flag will be stored in a language specific
database table, and can be translated in the translation manager, very similar
to the way category and page definitions could already be translated to several
languages.</P
***************
*** 276,280 ****
CLASS="SECT1"
><A
! NAME="AEN77">User manual</H2
><P
>The most important difference for site contributors between the modularized
sitemgr and its older versions is that in the page manager now there are two
different interfaces for each page:</P
--- 280,284 ----
CLASS="SECT1"
><A
! NAME="AEN79">User manual</H2
><P
>The most important difference for site contributors between the modularized
sitemgr and its older versions is that in the page manager now there are two
different interfaces for each page:</P
***************
*** 337,341 ****
CLASS="SECT1"
><A
! NAME="AEN106">Administrator manual<A
NAME="ADMINISTRATOR-MANUAL"
></A
--- 341,345 ----
CLASS="SECT1"
><A
! NAME="AEN108">Administrator manual<A
NAME="ADMINISTRATOR-MANUAL"
></A
***************
*** 346,350 ****
CLASS="SECT2"
><A
! NAME="AEN109">Installation</H3
><P
></P
--- 350,354 ----
CLASS="SECT2"
><A
! NAME="AEN111">Installation</H3
><P
></P
***************
*** 402,406 ****
><LI
><P
! >You're almost set to go. Log in to phpGroupWare as an adminis trator. Make
sure you gave yourself the sitemgr and sitemgr-link applications so that you
see them on your navbar. Go to the sitemgr application and select "Configure
SiteMgr". Fill in “URL to sitemgr-site” and “Filesystem path
to sitemgr-site directory”, and the anonymous user's name and password.
Then click on save, and you should know select the template for your site.</P
></LI
><LI
--- 406,410 ----
><LI
><P
! >You're almost set to go. Log in to phpGroupWare as an administrator. Make
sure you gave yourself the sitemgr and sitemgr-link applications so that you
see them on your navbar. Go to the sitemgr application and select "Configure
SiteMgr". Fill in “URL to sitemgr-site” and “Filesystem path
to sitemgr-site directory”, and the anonymous user's name and password.
Then click on save, and you should now select the template for your site.</P
></LI
><LI
***************
*** 415,419 ****
CLASS="SECT2"
><A
! NAME="AEN130">Maintenance</H3
><P
>As a site administrator, you have three privileges/responsibilies:</P
--- 419,423 ----
CLASS="SECT2"
><A
! NAME="AEN132">Maintenance</H3
><P
>As a site administrator, you have three privileges/responsibilies:</P
***************
*** 445,449 ****
CLASS="SECT1"
><A
! NAME="AEN140">Template designer manual<A
NAME="TEMPLATE-DESIGNER-MANUAL"
></A
--- 449,453 ----
CLASS="SECT1"
><A
! NAME="AEN142">Template designer manual<A
NAME="TEMPLATE-DESIGNER-MANUAL"
></A
***************
*** 481,485 ****
CLASS="SECT1"
><A
! NAME="AEN155">Application developper manual<A
NAME="APPLICATION-DEVELOPPER-MANUAL"
></A
--- 485,489 ----
CLASS="SECT1"
><A
! NAME="AEN157">Application developper manual<A
NAME="APPLICATION-DEVELOPPER-MANUAL"
></A
Index: modules.lyx
===================================================================
RCS file: /cvsroot/phpgroupware/sitemgr/doc/modules.lyx,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** modules.lyx 17 Jan 2003 03:37:52 -0000 1.1
--- modules.lyx 18 Jan 2003 05:24:38 -0000 1.2
***************
*** 78,83 ****
files that define code for separate areas of the page or for specific
modules.
Templates contain four kinds of variables.
! These are explained here since the types 2,3 and 4 can be used both in
! the template as in the page content a module generates.
\layout Enumerate
--- 78,83 ----
files that define code for separate areas of the page or for specific
modules.
Templates contain four kinds of variables.
! These are explained here since the types 2,3 and 4 and 5 can be used both
! in the template as in the page content a module generates.
\layout Enumerate
***************
*** 125,128 ****
--- 125,134 ----
\layout Enumerate
+ {lang_translatable_string} This lets you make the template internationalized.
+ The translatable string is sent through phpgroupware's lang function.
+ Thus you can add it to the lang files in the setup directory and install
+ it through the setup programm.
+ \layout Enumerate
+
{variable} Finally there are some simple variables you can use to retrieve
metainformation about the page or about the user's context:
***************
*** 548,552 ****
You're almost set to go.
! Log in to phpGroupWare as an adminis trator.
Make sure you gave yourself the sitemgr and sitemgr-link applications so
that you see them on your navbar.
--- 554,558 ----
You're almost set to go.
! Log in to phpGroupWare as an administrator.
Make sure you gave yourself the sitemgr and sitemgr-link applications so
that you see them on your navbar.
***************
*** 569,573 ****
, and the anonymous user's name and password.
! Then click on save, and you should know select the template for your site.
\layout Enumerate
--- 575,579 ----
, and the anonymous user's name and password.
! Then click on save, and you should now select the template for your site.
\layout Enumerate
Index: modules.pdf
===================================================================
RCS file: /cvsroot/phpgroupware/sitemgr/doc/modules.pdf,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
Binary files /tmp/cvsxPayej and /tmp/cvsgQQeJr differ
Index: modules.ps
===================================================================
RCS file: /cvsroot/phpgroupware/sitemgr/doc/modules.ps,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** modules.ps 17 Jan 2003 03:37:52 -0000 1.1
--- modules.ps 18 Jan 2003 05:24:38 -0000 1.2
***************
*** 11,15 ****
%DVIPSCommandLine: dvips -o modules.ps modules.dvi
%DVIPSParameters: dpi=600, compressed
! %DVIPSSource: TeX output 2003.01.16:1709
%%BeginProcSet: texc.pro
%!
--- 11,15 ----
%DVIPSCommandLine: dvips -o modules.ps modules.dvi
%DVIPSParameters: dpi=600, compressed
! %DVIPSSource: TeX output 2003.01.18:0040
%%BeginProcSet: texc.pro
%!
***************
*** 350,354 ****
20 100.457 /Helvetica-Bold rf /Fh 137[46 51 28 37 32
1[51 46 51 74 28 2[28 1[46 1[42 51 37 1[42 11[65 55 10[32
! 7[65 7[42 42 42 1[42 1[42 4[21 46[{TeXBase1Encoding ReEncodeFont}26
83.022 /Palatino-Bold rf /Fi 31[42 75[42 42 22[50 1[42
46 43 69 47 50 27 35 33 46 50 45 48 73 24 46 19 24 48
--- 350,354 ----
20 100.457 /Helvetica-Bold rf /Fh 137[46 51 28 37 32
1[51 46 51 74 28 2[28 1[46 1[42 51 37 1[42 11[65 55 10[32
! 7[65 7[42 42 42 42 2[42 4[21 46[{TeXBase1Encoding ReEncodeFont}26
83.022 /Palatino-Bold rf /Fi 31[42 75[42 42 22[50 1[42
46 43 69 47 50 27 35 33 46 50 45 48 73 24 46 19 24 48
***************
*** 469,473 ****
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
! Black(.)p Black Black(.)p Black 0 TeXcolorgray -1 w(5)p
Black 0 TeXcolorgray 596 2036 a(Administrator)e(manual)p
Black Black 1 w(.)p Black Black -3 w(.)p Black Black(.)p
--- 469,473 ----
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
! Black(.)p Black Black(.)p Black 0 TeXcolorgray -1 w(6)p
Black 0 TeXcolorgray 596 2036 a(Administrator)e(manual)p
Black Black 1 w(.)p Black Black -3 w(.)p Black Black(.)p
***************
*** 592,610 ****
y(code)d(for)h(separate)e(ar)o(eas)h(of)g(the)i(page)e(or)h(for)g
(speci\002c)f(modules.)i(T)-8 b(emplates)27 b(contain)g(four)596
! 1350 y(kinds)i(of)h(variables.)e(These)h(ar)o(e)f(explained)g(her)o(e)h
! (since)g(the)h(types)f(2,3)f(and)h(4)g(can)g(be)g(used)596
! 1442 y(both)21 b(in)g(the)g(template)f(as)h(in)g(the)g(page)f(content)h
! (a)g(module)g(generates.)p Black 712 1657 a(1.)p Black
! 20 w Fe(f)p Fi(contentar)o(ea:)36 b(ar)o(eaname)p Fe(g)h
! Fi(These)h(de\002ne)h(wher)o(e)f(administrator)g(and)g(contributor)795
! 1749 y(pr)o(ovided)30 b(content)i(go.)f(The)g(names)h(and)e(the)i
! (number)f(of)g(contentar)o(eas)g(a)f(template)795 1840
! y(de\002nes)21 b(ar)o(e)e(almost)i(arbitrary)-9 b(.)p
! Black 712 1973 a(2.)p Black 20 w Fe(f)p Fi(appname.modulename\(?ar)o
! (guments\))p Fe(g)p Fi(These)54 b(let)i(you)h(har)o(dcode)f(a)g(call)g
! (to)h(a)795 2064 y(module)25 b(into)i(a)e(template.)f(Ar)o(guments)h
! (ar)o(e)f(in)i(the)g(HTTP)f(GET)g(query)h(string)g(syntax)795
! 2156 y(\(?key1=value1&key2=value2\).)16 b(At)k(the)g(moment,)g(if)g
! (you)h(use)f(this)g(type)g(of)g(variables,)795 2247 y(you)33
b(have)g(to)g(urlencode)f(the)h(query)h(string)f(yourself.)g(Futur)o(e)
f(versions)i(of)e(sitemgr)795 2338 y(might)38 b(pr)o(ovide)f(a)g
--- 592,611 ----
y(code)d(for)h(separate)e(ar)o(eas)h(of)g(the)i(page)e(or)h(for)g
(speci\002c)f(modules.)i(T)-8 b(emplates)27 b(contain)g(four)596
! 1350 y(kinds)g(of)g(variables.)f(These)h(ar)o(e)f(explained)g(her)o(e)g
! (since)i(the)f(types)g(2,3)f(and)h(4)f(and)h(5)f(can)h(be)596
! 1442 y(used)20 b(both)h(in)h(the)f(template)f(as)g(in)i(the)e(page)h
! (content)g(a)f(module)h(generates.)p Black 712 1657 a(1.)p
! Black 20 w Fe(f)p Fi(contentar)o(ea:)36 b(ar)o(eaname)p
! Fe(g)h Fi(These)h(de\002ne)h(wher)o(e)f(administrator)g(and)g
! (contributor)795 1749 y(pr)o(ovided)30 b(content)i(go.)f(The)g(names)h
! (and)e(the)i(number)f(of)g(contentar)o(eas)g(a)f(template)795
! 1840 y(de\002nes)21 b(ar)o(e)e(almost)i(arbitrary)-9
! b(.)p Black 712 1973 a(2.)p Black 20 w Fe(f)p Fi
! (appname.modulename\(?ar)o(guments\))p Fe(g)p Fi(These)54
! b(let)i(you)h(har)o(dcode)f(a)g(call)g(to)h(a)795 2064
! y(module)25 b(into)i(a)e(template.)f(Ar)o(guments)h(ar)o(e)f(in)i(the)g
! (HTTP)f(GET)g(query)h(string)g(syntax)795 2156 y
! (\(?key1=value1&key2=value2\).)16 b(At)k(the)g(moment,)g(if)g(you)h
! (use)f(this)g(type)g(of)g(variables,)795 2247 y(you)33
b(have)g(to)g(urlencode)f(the)h(query)h(string)f(yourself.)g(Futur)o(e)
f(versions)i(of)e(sitemgr)795 2338 y(might)38 b(pr)o(ovide)f(a)g
***************
*** 630,990 ****
b(For)h(example)g Fe(f)p Fi(?phpgw:/addr)o(essbook,or)o
(der=n_given&sort=ASC)p Fe(g)p Fi(.)p Black 712 3733
! a(4.)p Black 20 w Fe(f)p Fi(variable)p Fe(g)37 b Fi(Finally)k(ther)o(e)
! d(ar)o(e)h(some)h(simple)g(variables)f(you)h(can)g(use)f(to)h(r)o
! (etrieve)795 3824 y(metainformation)21 b(about)g(the)g(page)f(or)h
! (about)f(the)h(user)6 b('s)21 b(context:)p Black 911
! 3957 a(a.)p Black 20 w Fe(f)p Fi(title)p Fe(g)f Fi(the)h(page)f(title)p
! Black 907 4090 a(b.)p Black 20 w Fe(f)p Fi(subtitle)p
! Fe(g)g Fi(the)h(page)f(subtitle)p Black 916 4223 a(c.)p
Black 20 w Fe(f)p Fi(sitename)p Fe(g)p Fi(the)g(sitename)h(the)g
(administrator)f(has)h(chosen)h(for)e(the)h(site)p Black
! 902 4356 a(d.)p Black 20 w Fe(f)p Fi(footer)p Fe(g)p
Fi(the)f(administrator)h(edited)f(footer)p Black 913
! 4488 a(e.)p Black 20 w Fe(f)p Fi(header)p Fe(g)p Fi(the)f
! (administrator)i(edited)e(header)p Black 925 4621 a(f.)p
Black 20 w Fe(f)p Fi(user)p Fe(g)p Fi(the)h(user)6 b('s)21
! b(account)g(name)596 5062 y Ff(Module)596 5199 y Fi(The)j(main)h
! (function)h(of)f(a)f(sitemgr)h(module)g(is)g(to)h(generate)e(dynamic)g
! (web)h(site)g(content.)g(T)-8 b(o)596 5290 y(make)30
! b(the)h(development)f(of)h(new)g(modules,)g(and)f(the)g(use)h(of)g
! (modules)g(easy)f(and)g(conve-)596 5382 y(nient,)20 b(sitemgr)g
! (de\002nes)h(an)e(\223abstract\224)f(class)i(module)h(which)g(each)e
! (module)i(should)g(extend.)596 5473 y(This)k(par)o(ent)f(of)g(all)h
! (modules,)g(pr)o(ovides)f(one)i(essential)f(service:)f(It)h(hooks)h
! (the)f(module)g(into)p Black 3642 5585 a Fd(3)p Black
! eop
%%Page: 4 4
4 3 bop Black 0 TeXcolorgray Black 197 -132 a Fd(Intr)o(oduction)19
! b(to)h(sitemgr)h(modules)p Black 596 89 a Fi(the)f(content)h(managment)
! f(interface)g(and)f(permits)i(the)f(editing)h(of)f(the)g(module's)h(ar)
! o(guments)596 180 y(that)k(determine)g(what)g(content)h(will)g(be)f
(generated.)f(Thus)i(in)g(or)o(der)e(to)i(cr)o(eate)d(a)i(new)h(mod-)
! 596 272 y(ule,)g(all)g(you)h(have)g(to)g(do,)f(is)h(to)g(extend)f(the)h
(abstract)e(super)i(module,)f(de\002ne)h(the)f(modules)596
! 363 y(ar)o(guments,)d(and)g(write)h(a)f(get_content)h(function)h(that)e
(r)o(eturns)h(the)f(content)i(that)f(should)g(be)596
! 454 y(displayed)c(on)h(the)g(website.)g(Mor)o(e)e(on)j(this)f(in)g
! (chapter)p 0 TeXcolorgray(5)p Black(.)596 762 y Ff(Ar)o(gument/Content)
! 596 899 y Fi(A)c(module)g(can)h(be)f(seen)g(as)g(a)g(transformation)h
! (of)g(input)g(ar)o(guments)f(into)h(generated)e(content.)596
! 991 y(It)j(is)g(important)h(to)g(understand)e(that)h(the)h(input)g(ar)o
! (guments)e(can)h(be)g(of)g(completely)h(dif)o(fer)o(ent)596
! 1082 y(kinds.)27 b(On)i(the)f(one)g(hand)f(ther)o(e)g(can)g(be)h(ar)o
! (guments)f(that)h(ar)o(e)e(as)h(close)h(as)f(possible)i(to)f(the)596
! 1173 y(generated)d(content.)h(For)h(example)e(the)h(html)h(module's)g
! (only)g(ar)o(gument)f(is)g(named)g(\223html-)596 1265
! y(content\224)i(and)g(in)h(normal)f(cir)o(cumstances)g(it)h(is)f(not)h
! (transformed)f(at)g(all)g(but)g(handed)g(over)596 1356
! y(as)22 b(is)h(to)g(the)g(page)f(generation)h(engine.)g(On)g(the)g
(other)g(hand)g(ar)o(guments)f(can)h(play)f(any)h(con-)596
! 1447 y(ceivable)j(r)o(ole)g(in)i(the)f(generation)g(of)g(content)h
(that)f(is)g(driven)g(by)g(data)f(coming)i(fr)o(om)f(other)596
! 1539 y(phpgr)o(oupwar)o(e)21 b(applications.)h(They)h(can)f(be)g(used)g
(to)h(select)g(between)f(dif)o(fer)o(ent)e(categories)596
! 1630 y(of)32 b(content,)h(they)f(can)g(choose)h(a)f(certain)g(format)g
(of)g(pr)o(esentation,)g(they)g(can)g(function)h(as)596
! 1721 y(sear)o(ch)19 b(terms,)i(etc.)596 2029 y Ff(Pr)n(oper)r(ties)596
! 2166 y Fi(A)d(module)h(can)g(de\002ne)g(pr)o(operties.)f(Pr)o(operties)
g(ar)o(e)f(accessible)i(to)g(the)g(modules)h(get_content)596
! 2258 y(function)h(in)g(the)g(same)g(way)f(as)h(ar)o(guments,)f(but)h
(they)g(dif)o(fer)e(fr)o(om)h(them)h(in)h(two)f(ways:)p
! Black 596 2473 a Fc(\225)p Black 43 w Fi(Pr)o(operties)e(ar)o(e)f
(edited)h(by)h(the)g(site)h(administrator)-6 b(.)19 b(Their)h(intended)
! g(r)o(ole)f(is)h(to)h(put)e(certain)679 2565 y(constrains)k(on)g(the)f
(workings)i(of)e(the)h(module,)f(so)h(that)f(a)g(site)h(administrator)f
! (can)g(enfor)o(ce)679 2656 y(certain)h(r)o(ules.)h(For)g(example)f(the)
g(standar)o(d)g(html)h(module)g(de\002nes)g(a)f(pr)o(operty)g(called)g
! (st-)679 2747 y(riphtml.)16 b(If)g(this)h(boolean)g(pr)o(operty)e(is)i
(set)f(the)g(module)h(r)o(eplaces)e(all)h(html)h(in)g(the)f(generated)
! 679 2839 y(content)21 b(with)h(entities.)p Black 596
! 2972 a Fc(\225)p Black 43 w Fi(Pr)o(operties)17 b(ar)o(e)f(not)i
(de\002ned)g(with)g(r)o(espect)f(to)h(a)f(certain)h(generated)e
! (content)j(block,)f(but)f(ar)o(e)679 3063 y(de\002ned)23
b(either)g(on)h(a)f(site-wide)h(level)f(or)h(on)g(the)g(level)f(of)h
! (speci\002c)f(categories.)g(Addition-)679 3154 y(ally)h(you)h(can)g
(dif)o(fer)o(enciate)d(on)j(each)f(scope)h(pr)o(operties)f(for)g(each)g
! (content)i(ar)o(ea.)c(When)j(a)679 3246 y(content)17
b(block)g(is)g(generated,)e(pr)o(operties)h(ar)o(e)f(sear)o(ched)g(for)
i(in)g(a)f(cascading)g(way)-9 b(,)16 b(i.e.)g(when)679
! 3337 y(the)j(block)h(is)g(speci\002c)g(to)g(a)f(speci\002c)h(page)f
(and)g(contentar)o(ea)f(and)i(the)f(module's)i(pr)o(operties)679
! 3428 y(ar)o(e)15 b(not)i(de\002ned)f(for)g(the)h(combination)h(of)e
(the)h(contentar)o(ea)e(and)h(the)h(page's)f(category)-9
! b(,)15 b(then)679 3520 y(pr)o(operties)k(de\002ned)i(for)f(higher)i
(scopes)f(ar)o(e)e(looked)i(for)g(in)g(a)f(certain)h(or)o(der)-6
! b(.)19 b(Mor)o(e)h(on)h(this)679 3611 y(in)g(chapter)p
! 0 TeXcolorgray(3)p Black(.)596 3919 y Ff(Bloc)n(ks,)k(content)g(areas)f
! (and)h(scope)596 4056 y Fi(Ther)o(e)20 b(ar)o(e)g(thr)o(ee)h(ways)h(a)f
(module)h(can)f(generate)g(content)h(that)g(will)g(be)g(displayed)f(on)
! h(a)f(web)596 4147 y(page:)p Black 712 4363 a(1.)p Black
20 w(A)k(template)g(can)h(contain)g(har)o(dcoded)e(calls)h(to)h
! (modules)g(that)g(will)g(generate)f(content)795 4454
y(visible)c(on)g(each)f(page.)g(Thus)h(you)g(could)g(put)f(dynamic)h
! (content)g(that)g(is)g(visible)g(acr)o(oss)795 4546 y(the)i(whole)h
(site)g(on)g(a)e(place)h(of)g(its)h(own)g(dir)o(ectly)e(into)i(the)g
! (template.)e(But)h(bewar)o(e)f(that)795 4637 y(r)o(estrictions)d
(de\002ned)g(by)g(the)h(administrator)f(also)g(apply)g(to)h(these)f
! (har)o(dcoded)f(module)795 4728 y(calls.)p Black 712
! 4861 a(2.)p Black 20 w(A)35 b(template)h(de\002nes)g(several)f(content)
h(ar)o(eas.)e(This)j(is)f(one)g(important)h(dif)o(fer)o(enced)795
! 4953 y(between)20 b(the)g(modularized)f(sitemgr)h(and)g(pr)o(evious)g
! (versions)g(wher)o(e)g(ther)o(e)f(wer)o(e)g(was)795 5044
! y(only)24 b(one)h(place)d(wher)o(e)i(contributor)g(edited)f(content)h
! (went)g(\(page_content\))f(and)g(two)795 5135 y(places)41
! b(for)g(administrator)h(con\002gur)o(ed)f(blocks)i(\(right_blocks,)f
! (left_blocks\).)e(Now)795 5226 y(templates)g(can)g(de\002ne)h(any)g
! (practical)e(number)i(of)f(content)i(ar)o(eas)d(with)i(arbitrary)795
! 5318 y(names.)26 b(And)f(ther)o(e)g(is)i(no)f(mor)o(e)g(much)g(dif)o
! (fer)o(ence)e(between)i(central)f(and)h(peripheric)795
! 5409 y(ar)o(eas.)17 b(All)i(can)g(show)h(administrator)f(and)g
! (contributor)h(pr)o(ovided)e(block)h(content.W)-5 b(ith)p
! Black 197 5585 a Fd(4)p Black eop
%%Page: 5 5
5 4 bop Black 0 TeXcolorgray Black 2602 -132 a Fd(Intr)o(oduction)19
! b(to)i(sitemgr)f(modules)p Black 795 89 a Fi(one)44 b(exeption:)f(The)g
! (name)g(\223center\224)f(is)i(special)f(in)h(that)f(special)g(pages)g
! (that)g(get)795 180 y(generated)18 b(by)h(special)g(URLs)g(like)h
(\223?toc\224)e(and)h(\223?index\224)f(or)i
! (\223?category_id=number\224)795 272 y(always)28 b(put)h(ther)o(e)e
(page)h(content)h(\(which)g(is)g(internally)g(generated)e(by)i(nothing)
! h(else)795 363 y(than)22 b(a)g(module\))g(into)h(this)g(content)f(ar)o
(ea.)e(If)i(your)g(template)g(does)g(not)h(have)f(a)f(content)795
! 454 y(ar)o(ea)g(called)h(\223center\224)g(these)h(special)f(URLs)h
(won't)h(work.)f(Content)h(ar)o(eas)d(can)i(display)795
! 546 y(module)d(output,)h(as)f(edited)g(by)g(the)h(page's)f
(contributors.)g(W)-8 b(e)21 b(r)o(efer)e(to)h(each)g(output)h(of)795
! 637 y(a)37 b(module)i(as)f(a)f(block.)h(Her)o(e)f(is)i(another)f
(important)h(dif)o(fer)o(ence)c(to)k(how)f(sitemgr)795
! 728 y(used)28 b(to)h(work:)g(Until)g(now)g(ther)o(e)f(was)h(a)f(sharp)g
! (distinction)i(between)e(page)g(content)795 820 y(which)d(r)o(eplaces)f
! (the)h(template)f(variable)f(page_content,)h(and)h(side)f(blocks)i
! (which)f(got)795 911 y(de\002ned)e(in)i(a)e(special)h(\002le)g(called)f
! (blockcon\002g)i(and)f(r)o(eplaced)d(the)k(template)e(varialbes)795
! 1002 y(right_blocks)g(and)f(left_blocks.)g(Now)g(fr)o(om)g(the)h
! (perspective)e(of)i(the)f(page)g(generation)795 1094
! y(engine)42 b(ther)o(e)f(is)h(no)g(mor)o(e)g(any)g(dif)o(fer)o(ence)d
! (between)i(content)i(ar)o(eas,)d(all)h(display)795 1185
! y(blocks)25 b(of)g(content)g(generated)f(by)h(modules.)g(The)g(blocks)g
! (one)h(content)f(ar)o(ea)e(displays)795 1276 y(can)i(be)g(de\002ned)g
! (on)h(dif)o(fer)o(ent)d(levels)i(of)h(scope:)f(Ther)o(e)f(ar)o(e)g
! (site)i(wide)f(blocks)h(that)f(ar)o(e)795 1368 y(visible)32
! b(acr)o(oss)e(the)i(whole)g(site,)g(category)f(wide)g(blocks,)h(that)f
! (ar)o(e)g(visible)g(on)h(pages)795 1459 y(that)c(belong)h(to)g(the)f
! (category)g(or)g(any)h(of)f(its)h(childr)o(en,)e(and)h(\002nally)h(ar)o
! (e)e(page)g(blocks)795 1550 y(that)20 b(de\002ne)g(what)g
! (distinguishes)i(the)e(page)f(fr)o(om)h(other)g(pages,)g(and)g
! (normally)g(will)h(be)795 1642 y(that)f(what)h(you'd)g(call)g(the)g
! (page's)f(main)h(content.)p Black 712 1774 a(3.)p Black
! 20 w(The)g(block)h(content)g(generated)e(by)h(a)g(module)h(can)f
! (contain)h(template)e(variables)h(of)g(the)795 1866 y(same)16
! b(type)h(as)g(those)h(that)e(can)h(be)g(har)o(dcoded.)e(This)i(is)g
! (mostly)i(useful)d(for)h(modules)h(like)795 1957 y(the)24
! b(html)i(module,)e(wher)o(e)g(the)h(contributor)g(speci\002ed)f(ar)o
! (gument)g(is)h(nearly)f(identical)795 2048 y(to)c(the)h(generated)e
! (content.)h(Thus)h(a)f(contributor)g(can)g(embed)g(module)g(calls)g
! (inside)h(the)795 2140 y(content)k(of)g(a)f(certain)h(block.)g(This)g
! (is)g(done)g(only)h(once)f(without)h(any)f(r)o(ecursion,)f(i.e.)g(if)
! 795 2231 y(a)g(embedded)g(module)h(call)f(r)o(eturns)g(itself)h(a)f
! (template)h(variable)e(it)i(is)g(not)h(parsed)d(and)795
! 2322 y(pr)o(ocessed)d(again.)596 2630 y Ff(T)-7 b(ransf)n(ormer)596
! 2767 y Fi(The)17 b(ar)o(chitectur)o(e)f(for)h(sitemgr)h(modules)h(pr)o
! (ovides)e(for)g(the)h(distinction)h(between)f(some)g(form)596
! 2859 y(of)25 b(raw)g(content)g(a)g(module)h(pr)o(oduces)e(and)h(the)g
! (way)g(it)h(should)g(get)f(displayed)g(on)h(the)f(web)596
! 2950 y(site,)20 b(with)h(the)g(futur)o(e)e(possibility)j(to)f(plug)f
! (other)h(display)f(types)h(into)g(the)f(same)h(framework.)596
! 3041 y(The)d(idea)f(is)i(that)f(the)h(raw)f(content)h(of)f(a)g(module)h
(gets)f(passed)g(thr)o(ough)h(dif)o(fer)o(ent)d(transform-)596
! 3133 y(ers,)24 b(possibly)i(even)f(several)g(transformers)g(in)g(a)g
(sequence)g(at)g(the)g(time)h(of)f(content)h(genera-)596
! 3224 y(tion.)21 b(Additionally)g(this)h(pr)o(ovides)f(for)g(a)f(use)h
(of)g(modules)h(outside)g(of)f(sitemgr)-6 b(,)21 b(for)g(example)596
! 3315 y(r)o(emote)f(r)o(etrieval)f(of)i(information)g(with)h(something)g
! (like)f(XML-RPC.)596 3448 y(At)27 b(the)h(moment,)h(a)e(module)h(does)g
(not)h(need)e(to)h(use)g(transformers)g(on)g(its)g(own,)h(it)f(can)f
! (di-)596 3539 y(r)o(ectly)19 b(generate)f(html)j(content,)f(but)g(if)f
(it)h(does,)g(sitemgr)g(pr)o(ovides)f(for)g(an)h(easy)f(way)h(to)g
! (chain)596 3631 y(dif)o(fer)o(ent)25 b(transformers)i(together)-6
b(.)28 b(Thus)g(a)f(module)h(can)f(be)g(constr)o(ucted)h(in)g(dif)o
! (fer)o(ent)d(lay-)596 3722 y(ers)f(of)h(functionality)-9
b(.)25 b(For)h(example)e(a)g(module's)i(get_content)f(function)h(could)
! f(r)o(eturn)f(data)596 3813 y(inXML,)i(and)h(it)g(de\002nes)h(a)e(XSL)
-6 b(T)27 b(transformation)g(to)h(r)o(eor)o(ganize)d(this)j(data,)d
! (and)i(a)g(second)596 3905 y(transformer)20 b(for)g(cr)o(eating)g(a)g
! (user)h(interface)f(for)g(display)-9 b(.)596 4038 y(T)i(ransformers)32
b(ar)o(e)g(also)i(used)f(on)h(the)g(level)f(of)g(the)h(site)g
! (template,)e(insofar)i(as)f(each)g(con-)596 4129 y(tentar)o(ea)14
b(can)i(have)g(an)g(associated)f(transformer)-6 b(,)16
b(which)h(wraps)f(the)g(dif)o(fer)o(ent)e(content)j(blocks)596
! 4220 y(into)26 b(a)g(common)h(display)f(format.)f(This)h(does)g(the)g
(same)g(thing)h(as)e(the)h(\002le)g(sideblock.tpl)g(in)596
! 4312 y(former)20 b(versions)h(of)g(sitemgr)-6 b(.)596
! 4620 y Ff(T)f(ranslations)596 4757 y Fi(Sitemgr)24 b(in)i(its)f(new)g
(modularized)f(ar)o(chitectur)o(e)f(continues)j(to)g(be)e(fully)i
! (multilingual.)g(It)f(is)596 4848 y(very)30 b(simple)h(to)g(have)g(a)f
(new)h(module)g(use)g(this)h(featur)o(e.)d(All)h(that)h(is)g(needed)f
! (is)h(to)h(use)e(a)596 4939 y(special)h(\003ag)h(in)h(the)f
(de\002nition)h(of)f(the)g(module's)h(ar)o(guments.)e(All)h(ar)o
! (guments)f(that)h(have)596 5031 y(this)21 b(\003ag)h(will)g(be)f(stor)o
! (ed)f(in)i(a)f(language)g(speci\002c)g(database)e(table,)i(and)f(can)h
! (be)g(translated)f(in)596 5122 y(the)g(translation)g(manager)-6
! b(,)19 b(very)h(similar)g(to)h(the)f(way)g(category)g(and)f(page)g
! (de\002nitions)j(could)596 5213 y(alr)o(eady)c(be)j(translated)f(to)h
! (several)f(languages.)p Black 3642 5585 a Fd(5)p Black
eop
%%Page: 6 6
6 5 bop Black 0 TeXcolorgray Black 197 -132 a Fd(Intr)o(oduction)19
! b(to)h(sitemgr)h(modules)p Black 197 89 a Fg(User)27
! b(man)o(ual)596 231 y Fi(The)17 b(most)h(important)g(dif)o(fer)o(ence)d
! (for)i(site)h(contributors)g(between)f(the)h(modularized)e(sitemgr)596
! 322 y(and)23 b(its)h(older)f(versions)h(is)g(that)f(in)h(the)g(page)f
(manager)g(now)h(ther)o(e)f(ar)o(e)f(two)i(dif)o(fer)o(ent)e(inter)o(-)
! 596 413 y(faces)d(for)i(each)f(page:)p Black 712 629
a(1.)p Black 20 w(When)30 b(you)h(cr)o(eate)d(a)i(new)g(page)f(or)i
(when)f(you)h(click)f(on)h(the)f(Edit)g(button)h(which)g(is)795
! 720 y(associated)21 b(with)h(an)g(existing)g(page,)f(you)h(no)g(longer)
! g(edit)f(the)h(page)f(content,)h(but)g(only)795 812 y(some)i(basic)g
! (metainformation)g(about)g(the)g(page)f(as)g(its)i(name,)e(title,)h
! (subtitle)g(and)g(sort)795 903 y(or)o(der)-6 b(,)19 b(and)h(you)i(can)e
! (change)h(the)g(category)f(the)h(page)f(belongs)i(to.)p
! Black 712 1036 a(2.)p Black 20 w(Ther)o(e)15 b(is)h(a)g(new)g
! (interface)f(that)h(gets)h(displayed)e(when)i(you)f(click)h(on)f(a)g
! (page's)g(\223Manage)795 1127 y(content\224)21 b(button.)g(It)g(is)g
! (her)o(e)f(that)h(you)g(cr)o(eate)e(the)i(content)g(blocks)h(for)e
! (each)g(page.)596 1260 y(The)f(second)h(dif)o(fer)o(ence)d(is)j(that)g
! (now)h(a)e(contributor)i(can)e(also)h(de\002ne)f(content)i(blocks)f
! (for)g(the)596 1351 y(whole)26 b(category)g(he)g(has)g(write)g(access)f
! (for)-6 b(.)25 b(These)h(category)g(wide)g(blocks)g(will)h(be)e(seen)h
! (on)596 1443 y(each)e(page)h(that)g(belongs)h(to)f(the)h(category)e(or)
! i(to)f(any)g(of)h(its)f(subcategories.)g(Ther)o(e)f(ar)o(e)g(also)596
! 1534 y(side)c(wide)h(content)g(blocks)h(that)e(only)i(the)f(site)g
! (administrator)g(can)f(cr)o(eate.)596 1667 y(The)25 b(interface)f(for)h
! (cr)o(eating)f(content)i(blocks)g(is)g(the)f(same)g(on)h(each)f(level)g
! (of)g(scope,)g(besides)596 1758 y(that)g(when)h(editing)g(blocks)g(on)g
! (a)f(lower)h(level)f(you)h(can)f(see)h(all)f(the)h(blocks)g(that)f
! (have)g(been)596 1850 y(de\002ned)30 b(on)h(a)f(higher)h(level,)f(and)g
! (will)i(be)e(displayed)g(on)h(the)g(website)g(together)f(with)i(the)596
! 1941 y(blocks)21 b(you)g(ar)o(e)f(editing.)g(I)h(will)h(r)o(efer)d(to)i
(this)g(interface)f(as)g(the)h(content)h(manager)-6 b(.)596
! 2074 y(In)22 b(each)g(content)g(manager)-6 b(,)21 b(ther)o(e)h(is)g(a)g
(section)h(for)f(each)f(content)i(ar)o(ea,)d(wher)o(e)h(you)i(can)f
! (add)596 2165 y(blocks)k(selected)f(fr)o(om)g(a)g(menu)h(of)g(all)f
(available)f(modules.)i(Once)g(you)g(have)f(added)f(a)i(new)596
! 2256 y(block,)20 b(it)h(appears)f(amidst)h(all)f(other)h(blocks)h(of)e
(the)h(content)h(ar)o(ea.)c(Those)k(de\002ned)e(on)h(higher)596
! 2348 y(level)g(scopes)h(ar)o(e)e(only)j(displayed,)d(those)j
(pertaining)e(to)h(the)g(scope)g(\(site-wide,)f(category)g(or)596
! 2439 y(page\))e(you)h(ar)o(e)f(managing)i(ar)o(e)d(editable.)h(Ther)o
(e)h(ar)o(e)e(four)i(standar)o(d)f(interface)g(elements)h(you)596
! 2530 y(can)g(edit)g(for)h(each)f(block:)197 2746 y(T)-5
! b(itle)p Black Black 762 2879 a(Each)23 b(module)h(de\002nes)f(a)h
(default)e(title)i(for)g(blocks)g(it)g(generates.)f(The)g(block)h
! (title)g(is)g(not)762 2970 y(necessarily)f(displayed)f(in)i(each)f
(content)h(ar)o(ea.)d(It)j(depends)e(on)i(the)g(block)f(transformer)762
! 3062 y(de\002ned)d(for)g(the)h(content)h(ar)o(ea)d(by)i(the)g(site)g
(template)f(you)h(use.)g(Her)o(e)f(you)h(can)g(override)762
! 3153 y(the)j(default)g(title)h(with)g(a)f(customized)h(title)g(that)f
(will)i(only)f(be)g(used)f(by)h(the)f(block)h(you)762
! 3244 y(ar)o(e)19 b(editing.)197 3419 y(Actif)p Black
! Black 762 3552 a(When)i(you)i(cr)o(eate)c(a)i(new)h(block,)g(it)f(is)h
(not)g(immediately)g(visible)g(on)g(the)g(web)f(site.)g(This)762
! 3643 y(makes)27 b(sense)g(since)h(you)g(need)e(to)i(edit)f(its)h(ar)o
(guments)f(\002rst.)g(When)h(you)f(ar)o(e)f(\002nished)762
! 3734 y(de\002ning)e(a)f(blocks)h(ar)o(guments,)g(you)g(have)f(to)h
(check)g(the)g(actif)f(\003ag)g(to)i(make)e(it)h(visible.)762
! 3825 y(This)c(can)g(also)g(be)g(practical)e(if)i(you)h(want)f(to)g
(hide)g(some)h(content)f(temporarily)g(fr)o(om)g(the)762
! 3917 y(web)g(site)h(without)h(deleting)f(it)g(fr)o(om)f(the)h
! (database.)197 4091 y(Seenby)p Black Black 762 4224 a(Y)-8
b(ou)21 b(can)e(contr)o(ol)h(the)g(visibility)h(of)f(each)f(block)i
(for)e(the)h(dif)o(fer)o(ent)e(user)i(r)o(oles)f(de\002ned)h(by)762
! 4315 y(sitemgr:)26 b(site)h(administrators,)f(phpgr)o(oupwar)o(e)f
! (users)i(\(which)g(include)f(site)h(adminis-)762 4407
y(trators\))21 b(and)h(the)g(anonymous)h(user)-6 b(.)22
b(Evidently)g(you)g(can)g(also)g(make)g(the)g(block)h(visible)762
! 4498 y(for)d(everyone)h(which)g(is)g(the)g(default.)197
! 4672 y(Sortor)o(der)p Black Black 762 4805 a(Her)o(e)h(you)j(can)e
(change)h(the)g(or)o(der)f(in)h(which)h(the)f(blocks)g(ar)o(e)f
! (displayed)g(by)h(de\002ning)g(a)762 4896 y(dif)o(fer)o(ent)18
! b(integer)j(for)g(each)f(block.)596 5029 y(After)27 b(these,)h(you)g
! (have)g(to)h(edit)e(the)i(module)f(speci\002c)g(ar)o(guments,)g(each)g
! (of)g(which)h(is)f(pr)o(e-)596 5121 y(ceded)21 b(by)h(an)g(explanatory)
! f(label.)h(The)g(input)h(elements)f(for)g(ar)o(guments)g(can)g(be)g(of)
! g(dif)o(fer)o(ent)596 5212 y(types:)e(checkboxes,)h(selectboxes,)g
! (textar)o(eas,)d(text\002elds.)j(In)g(the)g(case)g(of)g(text)f(input,)i
! (you)f(can)596 5303 y(use)26 b(the)h(same)g(template)f(variables)g(as)g
! (ar)o(e)f(used)i(in)g(the)g(site)g(template.)f(But)h(be)f(awar)o(e)f
! (that)p Black 197 5585 a Fd(6)p Black eop
%%Page: 7 7
7 6 bop Black 0 TeXcolorgray Black 2602 -132 a Fd(Intr)o(oduction)19
! b(to)i(sitemgr)f(modules)p Black 596 89 a Fi(this)i(only)g(works)g(if)f
! (the)g(module)h(puts)f(the)h(same)f(variable)f(into)i(its)g(output,)f
! (which)h(need)f(not)596 180 y(necessarily)f(be)h(the)g(case.)197
! 498 y Fg(Administrator)30 b(man)o(ual)596 750 y Ff(Installation)p
! Black 712 979 a Fi(1.)p Black 20 w(Once)k(you)g(have)f(the)h(sitemgr)g
! (dir)o(ectory)f(inside)h(your)h(phpgr)o(oupwar)o(e)d(install)i(you)795
! 1070 y(can)24 b(setup)h(it)g(like)h(any)e(other)i(phpgr)o(oupwar)o(e)d
! (application)i(with)h(the)f(setup)g(pr)o(ogram)795 1161
y(\(http://yourmachine/phpgw-path/setup/\).)73 b(Y)-8
! b(ou)73 b(should)f(also)g(install)h(the)795 1253 y(sitemgr)o(-link)24
b(application,)f(which)i(is)f(is)g(inside)h(sitemgr)f(and)f(has)h(to)g
! (be)g(moved)g(up)f(in)795 1344 y(the)e(dir)o(ectory)f(hierar)o(chy)-9
! b(.)795 1468 y Fb(cd)44 b(sitemgr)795 1550 y(mv)g(sitemgr-link)f(..)795
! 1683 y Fi(and)20 b(then)h(install)h(sitemgr)o(-link)f(with)g(setup)p
! Black 712 1948 a(2.)p Black 20 w(Log)27 b(in)g(to)g(phpGr)o(oupW)-8
b(ar)o(e)26 b(as)g(an)g(admin)h(and)f(cr)o(eate)f(an)i(anonymous)h
! (phpgw)f(user)795 2040 y(and)20 b(assign)g(it)h(a)e(passwor)o(d.)h(The)
g(only)h(app)f(\(I)f(assume\))h(that)g(they)h(should)g(have)f(access)
! 795 2131 y(to)28 b(is)h(sitemgr)o(-link.)f(sitemgr)o(-link)g(is)g(a)g
(dummy)h(application)e(that)h(r)o(edir)o(ects)e(phpGW)795
! 2222 y(users)21 b(to)g(the)g(generated)e(site.)p Black
! 712 2355 a(3.)p Black 20 w(Users)27 b(who)i(you)f(wish)g(to)h(see)e
(sitemgr)h(\(aka)f(contributors\))h(must)g(be)g(given)g(acces)f(to)795
! 2447 y(sitemgr)-6 b(,)21 b(users)h(who)g(you)h(want)e(to)h(be)g(able)e
(to)i(link)h(to)f(the)g(sitemgr)g(site)f(fr)o(om)g(phpGW)795
! 2538 y(must)h(be)g(given)g(rights)g(to)g(sitemgr)o(-link.)g(The)g
(easiest)g(way)f(to)h(do)g(this)h(is)f(to)g(go)g(to)h(User)795
! 2629 y(gr)o(oups)d(and)h(give)g(gr)o(oups)f(permissions)i(to)f(use)g
! (the)g(applications.)p Black 712 2762 a(4.)p Black 20
w(The)j(sitemgr)o(-site)h(is)g(the)f(dir)o(ectory)g(that)h(serves)f
(the)g(dynamic)h(web)f(site.)h(It)g(is)g(located)795
! 2853 y(inside)35 b(sitemgr)g(and)g(works)h(without)g(moving)g(it)f
! (somewher)o(e)g(else.)g(But)f(it)i(can)e(be)795 2945
y(located)i(anywher)o(e.)g(For)h(example,)e(you)i(could)g(put)g(it)g
! (in)g(/var/www/html.)h(Y)-8 b(ou)795 3036 y(could)31
b(make)h(the)f(r)o(oot)h(location)g(of)g(your)g(web)f(server)g(point)h
! (to)g(it,)g(if)f(you)h(wish)h(\(ie,)795 3127 y(http://yourmachine/)k(r)
o(efers)e(to)h(/var/www/html/sitemgr)o(-site)i(if)e(you)h(moved)795
! 3219 y(the)29 b(dir)o(ectory)-9 b(,)29 b(or)g(to)h(/path/to/phpgr)o
(oupwar)o(e/sitemgr/sitemgr)o(-site)g(if)f(you)h(did)795
! 3310 y(not\).)22 b(Make)e(a)i(mental)g(note)g(of)g(the)g(dir)o(ectory)e
(wher)o(e)i(you)g(put)g(it)g(and)f(the)h(url)g(that)g(it)g(is)795
! 3401 y(accessed)d(by)-9 b(.)p Black 712 3534 a(5.)p Black
20 w(In)20 b(the)g(sitemgr)o(-site)f(dir)o(ectory)g(is)h(a)f(\002le)h
(called)f(con\002g.inc.php.)h(Y)-8 b(ou)21 b(only)g(have)e(to)h(edit)
! 795 3625 y(it)h(if)f(you)i(moved)e(the)h(dir)o(ectory)-9
! b(.)20 b(Change)g(the)h(value)g(of)f(the)h(line)795 3749
! y Fb('phpgw_path')491 b(=>)44 b('../../',)795 3882 y
Fi(so)189 b(that)g(the)h(value)e(of)h($sitemgr_info['phpgw_path'])g(is)
! 795 3973 y('/path/to/phpgr)o(oupwar)o(e/')p Black 712
! 4239 a(6.)p Black 20 w(Y)-8 b(ou'r)o(e)28 b(almost)h(set)f(to)g(go.)g
! (Log)h(in)f(to)h(phpGr)o(oupW)-8 b(ar)o(e)27 b(as)g(an)h(adminis)h
! (trator)-6 b(.)27 b(Make)795 4330 y(sur)o(e)h(you)i(gave)e(yourself)i
! (the)f(sitemgr)g(and)g(sitemgr)o(-link)h(applications)f(so)g(that)g
! (you)795 4422 y(see)d(them)g(on)h(your)g(navbar)-6 b(.)25
! b(Go)i(to)f(the)h(sitemgr)f(application)g(and)g(select)g("Con\002gur)o
! (e)795 4513 y(SiteMgr".)21 b(Fill)j(in)f(\223URL)f(to)i(sitemgr)o
! (-site\224)e(and)g(\223Filesystem)i(path)e(to)i(sitemgr)o(-site)e(di-)
! 795 4604 y(r)o(ectory\224,)k(and)g(the)i(anonymous)h(user)6
b('s)27 b(name)g(and)g(passwor)o(d.)g(Then)g(click)h(on)g(save,)795
! 4696 y(and)20 b(you)h(should)h(know)g(select)e(the)h(template)g(for)f
! (your)h(site.)p Black 712 4828 a(7.)p Black 20 w(That's)j(it.)h(Go)g
(to)g(the)g(Category)f(manager)-6 b(,)23 b(add)h(a)g(category)g(or)h
! (thr)o(ee)e(and)i(check)f(who)795 4920 y(can)j(view)g(and)g(edit)f
(them,)i(then)f(go)h(to)g(the)f(page)f(manager)-6 b(,)27
! b(add)f(a)g(page)h(or)g(thr)o(ee)g(to)795 5011 y(each)16
b(category)-9 b(,)17 b(set)g(up)g(your)h(site)g(header)-6
b(,)15 b(site)j(footer)-6 b(,)17 b(etc.,)f(and)h(go)h(view)f(your)h(r)o
! (ecently)795 5102 y(cr)o(eated)h(site)h(by)h(clicking)h(on)f(the)g
(sitemgr)o(-link)g(application.)g(V)-9 b(oil\340!)p Black
3642 5585 a Fd(7)p Black eop
--- 631,1000 ----
b(For)h(example)g Fe(f)p Fi(?phpgw:/addr)o(essbook,or)o
(der=n_given&sort=ASC)p Fe(g)p Fi(.)p Black 712 3733
! a(4.)p Black 20 w Fe(f)p Fi(lang_translatable_string)p
! Fe(g)27 b Fi(This)j(lets)g(you)g(make)f(the)h(template)f
! (internationalized.)795 3824 y(The)17 b(translatable)g(string)h(is)g
! (sent)g(thr)o(ough)g(phpgr)o(oupwar)o(e's)f(lang)g(function.)h(Thus)g
! (you)795 3916 y(can)h(add)g(it)h(to)g(the)g(lang)g(\002les)h(in)f(the)g
! (setup)g(dir)o(ectory)f(and)g(install)i(it)f(thr)o(ough)g(the)g(setup)
! 795 4007 y(pr)o(ogramm.)p Black 712 4140 a(5.)p Black
! 20 w Fe(f)p Fi(variable)p Fe(g)37 b Fi(Finally)k(ther)o(e)d(ar)o(e)h
! (some)h(simple)g(variables)f(you)h(can)g(use)f(to)h(r)o(etrieve)795
! 4231 y(metainformation)21 b(about)g(the)g(page)f(or)h(about)f(the)h
! (user)6 b('s)21 b(context:)p Black 911 4364 a(a.)p Black
! 20 w Fe(f)p Fi(title)p Fe(g)f Fi(the)h(page)f(title)p
! Black 907 4497 a(b.)p Black 20 w Fe(f)p Fi(subtitle)p
! Fe(g)g Fi(the)h(page)f(subtitle)p Black 916 4630 a(c.)p
Black 20 w Fe(f)p Fi(sitename)p Fe(g)p Fi(the)g(sitename)h(the)g
(administrator)f(has)h(chosen)h(for)e(the)h(site)p Black
! 902 4762 a(d.)p Black 20 w Fe(f)p Fi(footer)p Fe(g)p
Fi(the)f(administrator)h(edited)f(footer)p Black 913
! 4895 a(e.)p Black 20 w Fe(f)p Fi(header)p Fe(g)p Fi(the)f
! (administrator)i(edited)e(header)p Black 925 5028 a(f.)p
Black 20 w Fe(f)p Fi(user)p Fe(g)p Fi(the)h(user)6 b('s)21
! b(account)g(name)p Black 3642 5585 a Fd(3)p Black eop
%%Page: 4 4
4 3 bop Black 0 TeXcolorgray Black 197 -132 a Fd(Intr)o(oduction)19
! b(to)h(sitemgr)h(modules)p Black 596 89 a Ff(Module)596
! 226 y Fi(The)j(main)h(function)h(of)f(a)f(sitemgr)h(module)g(is)g(to)h
! (generate)e(dynamic)g(web)h(site)g(content.)g(T)-8 b(o)596
! 317 y(make)30 b(the)h(development)f(of)h(new)g(modules,)g(and)f(the)g
! (use)h(of)g(modules)g(easy)f(and)g(conve-)596 409 y(nient,)20
! b(sitemgr)g(de\002nes)h(an)e(\223abstract\224)f(class)i(module)h(which)
! g(each)e(module)i(should)g(extend.)596 500 y(This)k(par)o(ent)f(of)g
! (all)h(modules,)g(pr)o(ovides)f(one)i(essential)f(service:)f(It)h
! (hooks)h(the)f(module)g(into)596 591 y(the)20 b(content)h(managment)f
! (interface)g(and)f(permits)i(the)f(editing)h(of)f(the)g(module's)h(ar)o
! (guments)596 683 y(that)k(determine)g(what)g(content)h(will)g(be)f
(generated.)f(Thus)i(in)g(or)o(der)e(to)i(cr)o(eate)d(a)i(new)h(mod-)
! 596 774 y(ule,)g(all)g(you)h(have)g(to)g(do,)f(is)h(to)g(extend)f(the)h
(abstract)e(super)i(module,)f(de\002ne)h(the)f(modules)596
! 865 y(ar)o(guments,)d(and)g(write)h(a)f(get_content)h(function)h(that)e
(r)o(eturns)h(the)f(content)i(that)f(should)g(be)596
! 957 y(displayed)c(on)h(the)g(website.)g(Mor)o(e)e(on)j(this)f(in)g
! (chapter)p 0 TeXcolorgray(5)p Black(.)596 1265 y Ff(Ar)o
! (gument/Content)596 1402 y Fi(A)c(module)g(can)h(be)f(seen)g(as)g(a)g
! (transformation)h(of)g(input)g(ar)o(guments)f(into)h(generated)e
! (content.)596 1493 y(It)j(is)g(important)h(to)g(understand)e(that)h
! (the)h(input)g(ar)o(guments)e(can)h(be)g(of)g(completely)h(dif)o(fer)o
! (ent)596 1584 y(kinds.)27 b(On)i(the)f(one)g(hand)f(ther)o(e)g(can)g
! (be)h(ar)o(guments)f(that)h(ar)o(e)e(as)h(close)h(as)f(possible)i(to)f
! (the)596 1676 y(generated)d(content.)h(For)h(example)e(the)h(html)h
! (module's)g(only)g(ar)o(gument)f(is)g(named)g(\223html-)596
! 1767 y(content\224)i(and)g(in)h(normal)f(cir)o(cumstances)g(it)h(is)f
! (not)h(transformed)f(at)g(all)g(but)g(handed)g(over)596
! 1858 y(as)22 b(is)h(to)g(the)g(page)f(generation)h(engine.)g(On)g(the)g
(other)g(hand)g(ar)o(guments)f(can)h(play)f(any)h(con-)596
! 1950 y(ceivable)j(r)o(ole)g(in)i(the)f(generation)g(of)g(content)h
(that)f(is)g(driven)g(by)g(data)f(coming)i(fr)o(om)f(other)596
! 2041 y(phpgr)o(oupwar)o(e)21 b(applications.)h(They)h(can)f(be)g(used)g
(to)h(select)g(between)f(dif)o(fer)o(ent)e(categories)596
! 2132 y(of)32 b(content,)h(they)f(can)g(choose)h(a)f(certain)g(format)g
(of)g(pr)o(esentation,)g(they)g(can)g(function)h(as)596
! 2224 y(sear)o(ch)19 b(terms,)i(etc.)596 2532 y Ff(Pr)n(oper)r(ties)596
! 2669 y Fi(A)d(module)h(can)g(de\002ne)g(pr)o(operties.)f(Pr)o(operties)
g(ar)o(e)f(accessible)i(to)g(the)g(modules)h(get_content)596
! 2760 y(function)h(in)g(the)g(same)g(way)f(as)h(ar)o(guments,)f(but)h
(they)g(dif)o(fer)e(fr)o(om)h(them)h(in)h(two)f(ways:)p
! Black 596 2976 a Fc(\225)p Black 43 w Fi(Pr)o(operties)e(ar)o(e)f
(edited)h(by)h(the)g(site)h(administrator)-6 b(.)19 b(Their)h(intended)
! g(r)o(ole)f(is)h(to)h(put)e(certain)679 3067 y(constrains)k(on)g(the)f
(workings)i(of)e(the)h(module,)f(so)h(that)f(a)g(site)h(administrator)f
! (can)g(enfor)o(ce)679 3158 y(certain)h(r)o(ules.)h(For)g(example)f(the)
g(standar)o(d)g(html)h(module)g(de\002nes)g(a)f(pr)o(operty)g(called)g
! (st-)679 3250 y(riphtml.)16 b(If)g(this)h(boolean)g(pr)o(operty)e(is)i
(set)f(the)g(module)h(r)o(eplaces)e(all)h(html)h(in)g(the)f(generated)
! 679 3341 y(content)21 b(with)h(entities.)p Black 596
! 3474 a Fc(\225)p Black 43 w Fi(Pr)o(operties)17 b(ar)o(e)f(not)i
(de\002ned)g(with)g(r)o(espect)f(to)h(a)f(certain)h(generated)e
! (content)j(block,)f(but)f(ar)o(e)679 3565 y(de\002ned)23
b(either)g(on)h(a)f(site-wide)h(level)f(or)h(on)g(the)g(level)f(of)h
! (speci\002c)f(categories.)g(Addition-)679 3657 y(ally)h(you)h(can)g
(dif)o(fer)o(enciate)d(on)j(each)f(scope)h(pr)o(operties)f(for)g(each)g
! (content)i(ar)o(ea.)c(When)j(a)679 3748 y(content)17
b(block)g(is)g(generated,)e(pr)o(operties)h(ar)o(e)f(sear)o(ched)g(for)
i(in)g(a)f(cascading)g(way)-9 b(,)16 b(i.e.)g(when)679
! 3839 y(the)j(block)h(is)g(speci\002c)g(to)g(a)f(speci\002c)h(page)f
(and)g(contentar)o(ea)f(and)i(the)f(module's)i(pr)o(operties)679
! 3931 y(ar)o(e)15 b(not)i(de\002ned)f(for)g(the)h(combination)h(of)e
(the)h(contentar)o(ea)e(and)h(the)h(page's)f(category)-9
! b(,)15 b(then)679 4022 y(pr)o(operties)k(de\002ned)i(for)f(higher)i
(scopes)f(ar)o(e)e(looked)i(for)g(in)g(a)f(certain)h(or)o(der)-6
! b(.)19 b(Mor)o(e)h(on)h(this)679 4113 y(in)g(chapter)p
! 0 TeXcolorgray(3)p Black(.)596 4421 y Ff(Bloc)n(ks,)k(content)g(areas)f
! (and)h(scope)596 4558 y Fi(Ther)o(e)20 b(ar)o(e)g(thr)o(ee)h(ways)h(a)f
(module)h(can)f(generate)g(content)h(that)g(will)g(be)g(displayed)f(on)
! h(a)f(web)596 4649 y(page:)p Black 712 4865 a(1.)p Black
20 w(A)k(template)g(can)h(contain)g(har)o(dcoded)e(calls)h(to)h
! (modules)g(that)g(will)g(generate)f(content)795 4957
y(visible)c(on)g(each)f(page.)g(Thus)h(you)g(could)g(put)f(dynamic)h
! (content)g(that)g(is)g(visible)g(acr)o(oss)795 5048 y(the)i(whole)h
(site)g(on)g(a)e(place)h(of)g(its)h(own)g(dir)o(ectly)e(into)i(the)g
! (template.)e(But)h(bewar)o(e)f(that)795 5139 y(r)o(estrictions)d
(de\002ned)g(by)g(the)h(administrator)f(also)g(apply)g(to)h(these)f
! (har)o(dcoded)f(module)795 5231 y(calls.)p Black 712
! 5363 a(2.)p Black 20 w(A)35 b(template)h(de\002nes)g(several)f(content)
h(ar)o(eas.)e(This)j(is)f(one)g(important)h(dif)o(fer)o(enced)795
! 5455 y(between)20 b(the)g(modularized)f(sitemgr)h(and)g(pr)o(evious)g
! (versions)g(wher)o(e)g(ther)o(e)f(wer)o(e)g(was)p Black
! 197 5585 a Fd(4)p Black eop
%%Page: 5 5
5 4 bop Black 0 TeXcolorgray Black 2602 -132 a Fd(Intr)o(oduction)19
! b(to)i(sitemgr)f(modules)p Black 795 89 a Fi(only)k(one)h(place)d(wher)
! o(e)i(contributor)g(edited)f(content)h(went)g(\(page_content\))f(and)g
! (two)795 180 y(places)41 b(for)g(administrator)h(con\002gur)o(ed)f
! (blocks)i(\(right_blocks,)f(left_blocks\).)e(Now)795
! 272 y(templates)g(can)g(de\002ne)h(any)g(practical)e(number)i(of)f
! (content)i(ar)o(eas)d(with)i(arbitrary)795 363 y(names.)26
! b(And)f(ther)o(e)g(is)i(no)f(mor)o(e)g(much)g(dif)o(fer)o(ence)e
! (between)i(central)f(and)h(peripheric)795 454 y(ar)o(eas.)17
! b(All)i(can)g(show)h(administrator)f(and)g(contributor)h(pr)o(ovided)e
! (block)h(content.W)-5 b(ith)795 546 y(one)44 b(exeption:)f(The)g(name)g
! (\223center\224)f(is)i(special)f(in)h(that)f(special)g(pages)g(that)g
! (get)795 637 y(generated)18 b(by)h(special)g(URLs)g(like)h
(\223?toc\224)e(and)h(\223?index\224)f(or)i
! (\223?category_id=number\224)795 728 y(always)28 b(put)h(ther)o(e)e
(page)h(content)h(\(which)g(is)g(internally)g(generated)e(by)i(nothing)
! h(else)795 820 y(than)22 b(a)g(module\))g(into)h(this)g(content)f(ar)o
(ea.)e(If)i(your)g(template)g(does)g(not)h(have)f(a)f(content)795
! 911 y(ar)o(ea)g(called)h(\223center\224)g(these)h(special)f(URLs)h
(won't)h(work.)f(Content)h(ar)o(eas)d(can)i(display)795
! 1002 y(module)d(output,)h(as)f(edited)g(by)g(the)h(page's)f
(contributors.)g(W)-8 b(e)21 b(r)o(efer)e(to)h(each)g(output)h(of)795
! 1094 y(a)37 b(module)i(as)f(a)f(block.)h(Her)o(e)f(is)i(another)f
(important)h(dif)o(fer)o(ence)c(to)k(how)f(sitemgr)795
! 1185 y(used)28 b(to)h(work:)g(Until)g(now)g(ther)o(e)f(was)h(a)f(sharp)
! g(distinction)i(between)e(page)g(content)795 1276 y(which)d(r)o
! (eplaces)f(the)h(template)f(variable)f(page_content,)h(and)h(side)f
! (blocks)i(which)f(got)795 1368 y(de\002ned)e(in)i(a)e(special)h(\002le)
! g(called)f(blockcon\002g)i(and)f(r)o(eplaced)d(the)k(template)e
! (varialbes)795 1459 y(right_blocks)g(and)f(left_blocks.)g(Now)g(fr)o
! (om)g(the)h(perspective)e(of)i(the)f(page)g(generation)795
! 1550 y(engine)42 b(ther)o(e)f(is)h(no)g(mor)o(e)g(any)g(dif)o(fer)o
! (ence)d(between)i(content)i(ar)o(eas,)d(all)h(display)795
! 1642 y(blocks)25 b(of)g(content)g(generated)f(by)h(modules.)g(The)g
! (blocks)g(one)h(content)f(ar)o(ea)e(displays)795 1733
! y(can)i(be)g(de\002ned)g(on)h(dif)o(fer)o(ent)d(levels)i(of)h(scope:)f
! (Ther)o(e)f(ar)o(e)g(site)i(wide)f(blocks)h(that)f(ar)o(e)795
! 1824 y(visible)32 b(acr)o(oss)e(the)i(whole)g(site,)g(category)f(wide)g
! (blocks,)h(that)f(ar)o(e)g(visible)g(on)h(pages)795 1916
! y(that)c(belong)h(to)g(the)f(category)g(or)g(any)h(of)f(its)h(childr)o
! (en,)e(and)h(\002nally)h(ar)o(e)e(page)g(blocks)795 2007
! y(that)20 b(de\002ne)g(what)g(distinguishes)i(the)e(page)f(fr)o(om)h
! (other)g(pages,)g(and)g(normally)g(will)h(be)795 2098
! y(that)f(what)h(you'd)g(call)g(the)g(page's)f(main)h(content.)p
! Black 712 2231 a(3.)p Black 20 w(The)g(block)h(content)g(generated)e
! (by)h(a)g(module)h(can)f(contain)h(template)e(variables)h(of)g(the)795
! 2322 y(same)16 b(type)h(as)g(those)h(that)e(can)h(be)g(har)o(dcoded.)e
! (This)i(is)g(mostly)i(useful)d(for)h(modules)h(like)795
! 2414 y(the)24 b(html)i(module,)e(wher)o(e)g(the)h(contributor)g
! (speci\002ed)f(ar)o(gument)g(is)h(nearly)f(identical)795
! 2505 y(to)c(the)h(generated)e(content.)h(Thus)h(a)f(contributor)g(can)g
! (embed)g(module)g(calls)g(inside)h(the)795 2596 y(content)k(of)g(a)f
! (certain)h(block.)g(This)g(is)g(done)g(only)h(once)f(without)h(any)f(r)
! o(ecursion,)f(i.e.)g(if)795 2688 y(a)g(embedded)g(module)h(call)f(r)o
! (eturns)g(itself)h(a)f(template)h(variable)e(it)i(is)g(not)h(parsed)d
! (and)795 2779 y(pr)o(ocessed)d(again.)596 3087 y Ff(T)-7
! b(ransf)n(ormer)596 3224 y Fi(The)17 b(ar)o(chitectur)o(e)f(for)h
! (sitemgr)h(modules)h(pr)o(ovides)e(for)g(the)h(distinction)h(between)f
! (some)g(form)596 3315 y(of)25 b(raw)g(content)g(a)g(module)h(pr)o
! (oduces)e(and)h(the)g(way)g(it)h(should)g(get)f(displayed)g(on)h(the)f
! (web)596 3407 y(site,)20 b(with)h(the)g(futur)o(e)e(possibility)j(to)f
! (plug)f(other)h(display)f(types)h(into)g(the)f(same)h(framework.)596
! 3498 y(The)d(idea)f(is)i(that)f(the)h(raw)f(content)h(of)f(a)g(module)h
(gets)f(passed)g(thr)o(ough)h(dif)o(fer)o(ent)d(transform-)596
! 3589 y(ers,)24 b(possibly)i(even)f(several)g(transformers)g(in)g(a)g
(sequence)g(at)g(the)g(time)h(of)f(content)h(genera-)596
! 3681 y(tion.)21 b(Additionally)g(this)h(pr)o(ovides)f(for)g(a)f(use)h
(of)g(modules)h(outside)g(of)f(sitemgr)-6 b(,)21 b(for)g(example)596
! 3772 y(r)o(emote)f(r)o(etrieval)f(of)i(information)g(with)h(something)g
! (like)f(XML-RPC.)596 3905 y(At)27 b(the)h(moment,)h(a)e(module)h(does)g
(not)h(need)e(to)h(use)g(transformers)g(on)g(its)g(own,)h(it)f(can)f
! (di-)596 3996 y(r)o(ectly)19 b(generate)f(html)j(content,)f(but)g(if)f
(it)h(does,)g(sitemgr)g(pr)o(ovides)f(for)g(an)h(easy)f(way)h(to)g
! (chain)596 4087 y(dif)o(fer)o(ent)25 b(transformers)i(together)-6
b(.)28 b(Thus)g(a)f(module)h(can)f(be)g(constr)o(ucted)h(in)g(dif)o
! (fer)o(ent)d(lay-)596 4179 y(ers)f(of)h(functionality)-9
b(.)25 b(For)h(example)e(a)g(module's)i(get_content)f(function)h(could)
! f(r)o(eturn)f(data)596 4270 y(inXML,)i(and)h(it)g(de\002nes)h(a)e(XSL)
-6 b(T)27 b(transformation)g(to)h(r)o(eor)o(ganize)d(this)j(data,)d
! (and)i(a)g(second)596 4361 y(transformer)20 b(for)g(cr)o(eating)g(a)g
! (user)h(interface)f(for)g(display)-9 b(.)596 4494 y(T)i(ransformers)32
b(ar)o(e)g(also)i(used)f(on)h(the)g(level)f(of)g(the)h(site)g
! (template,)e(insofar)i(as)f(each)g(con-)596 4586 y(tentar)o(ea)14
b(can)i(have)g(an)g(associated)f(transformer)-6 b(,)16
b(which)h(wraps)f(the)g(dif)o(fer)o(ent)e(content)j(blocks)596
! 4677 y(into)26 b(a)g(common)h(display)f(format.)f(This)h(does)g(the)g
(same)g(thing)h(as)e(the)h(\002le)g(sideblock.tpl)g(in)596
! 4768 y(former)20 b(versions)h(of)g(sitemgr)-6 b(.)596
! 5076 y Ff(T)f(ranslations)596 5213 y Fi(Sitemgr)24 b(in)i(its)f(new)g
(modularized)f(ar)o(chitectur)o(e)f(continues)j(to)g(be)e(fully)i
! (multilingual.)g(It)f(is)596 5305 y(very)30 b(simple)h(to)g(have)g(a)f
(new)h(module)g(use)g(this)h(featur)o(e.)d(All)h(that)h(is)g(needed)f
! (is)h(to)h(use)e(a)596 5396 y(special)h(\003ag)h(in)h(the)f
(de\002nition)h(of)f(the)g(module's)h(ar)o(guments.)e(All)h(ar)o
! (guments)f(that)h(have)p Black 3642 5585 a Fd(5)p Black
eop
%%Page: 6 6
6 5 bop Black 0 TeXcolorgray Black 197 -132 a Fd(Intr)o(oduction)19
! b(to)h(sitemgr)h(modules)p Black 596 89 a Fi(this)g(\003ag)h(will)g(be)
! f(stor)o(ed)f(in)i(a)f(language)g(speci\002c)g(database)e(table,)i(and)
! f(can)h(be)g(translated)f(in)596 180 y(the)g(translation)g(manager)-6
! b(,)19 b(very)h(similar)g(to)h(the)f(way)g(category)g(and)f(page)g
! (de\002nitions)j(could)596 272 y(alr)o(eady)c(be)j(translated)f(to)h
! (several)f(languages.)197 673 y Fg(User)27 b(man)o(ual)596
! 814 y Fi(The)17 b(most)h(important)g(dif)o(fer)o(ence)d(for)i(site)h
! (contributors)g(between)f(the)h(modularized)e(sitemgr)596
! 906 y(and)23 b(its)h(older)f(versions)h(is)g(that)f(in)h(the)g(page)f
(manager)g(now)h(ther)o(e)f(ar)o(e)f(two)i(dif)o(fer)o(ent)e(inter)o(-)
! 596 997 y(faces)d(for)i(each)f(page:)p Black 712 1213
a(1.)p Black 20 w(When)30 b(you)h(cr)o(eate)d(a)i(new)g(page)f(or)i
(when)f(you)h(click)f(on)h(the)f(Edit)g(button)h(which)g(is)795
! 1304 y(associated)21 b(with)h(an)g(existing)g(page,)f(you)h(no)g
! (longer)g(edit)f(the)h(page)f(content,)h(but)g(only)795
! 1396 y(some)i(basic)g(metainformation)g(about)g(the)g(page)f(as)g(its)i
! (name,)e(title,)h(subtitle)g(and)g(sort)795 1487 y(or)o(der)-6
! b(,)19 b(and)h(you)i(can)e(change)h(the)g(category)f(the)h(page)f
! (belongs)i(to.)p Black 712 1620 a(2.)p Black 20 w(Ther)o(e)15
! b(is)h(a)g(new)g(interface)f(that)h(gets)h(displayed)e(when)i(you)f
! (click)h(on)f(a)g(page's)g(\223Manage)795 1711 y(content\224)21
! b(button.)g(It)g(is)g(her)o(e)f(that)h(you)g(cr)o(eate)e(the)i(content)
! g(blocks)h(for)e(each)g(page.)596 1844 y(The)f(second)h(dif)o(fer)o
! (ence)d(is)j(that)g(now)h(a)e(contributor)i(can)e(also)h(de\002ne)f
! (content)i(blocks)f(for)g(the)596 1935 y(whole)26 b(category)g(he)g
! (has)g(write)g(access)f(for)-6 b(.)25 b(These)h(category)g(wide)g
! (blocks)g(will)h(be)e(seen)h(on)596 2026 y(each)e(page)h(that)g
! (belongs)h(to)f(the)h(category)e(or)i(to)f(any)g(of)h(its)f
! (subcategories.)g(Ther)o(e)f(ar)o(e)g(also)596 2118 y(side)c(wide)h
! (content)g(blocks)h(that)e(only)i(the)f(site)g(administrator)g(can)f
! (cr)o(eate.)596 2251 y(The)25 b(interface)f(for)h(cr)o(eating)f
! (content)i(blocks)g(is)g(the)f(same)g(on)h(each)f(level)g(of)g(scope,)g
! (besides)596 2342 y(that)g(when)h(editing)g(blocks)g(on)g(a)f(lower)h
! (level)f(you)h(can)f(see)h(all)f(the)h(blocks)g(that)f(have)g(been)596
! 2433 y(de\002ned)30 b(on)h(a)f(higher)h(level,)f(and)g(will)i(be)e
! (displayed)g(on)h(the)g(website)g(together)f(with)i(the)596
! 2525 y(blocks)21 b(you)g(ar)o(e)f(editing.)g(I)h(will)h(r)o(efer)d(to)i
(this)g(interface)f(as)g(the)h(content)h(manager)-6 b(.)596
! 2657 y(In)22 b(each)g(content)g(manager)-6 b(,)21 b(ther)o(e)h(is)g(a)g
(section)h(for)f(each)f(content)i(ar)o(ea,)d(wher)o(e)h(you)i(can)f
! (add)596 2749 y(blocks)k(selected)f(fr)o(om)g(a)g(menu)h(of)g(all)f
(available)f(modules.)i(Once)g(you)g(have)f(added)f(a)i(new)596
! 2840 y(block,)20 b(it)h(appears)f(amidst)h(all)f(other)h(blocks)h(of)e
(the)h(content)h(ar)o(ea.)c(Those)k(de\002ned)e(on)h(higher)596
! 2931 y(level)g(scopes)h(ar)o(e)e(only)j(displayed,)d(those)j
(pertaining)e(to)h(the)g(scope)g(\(site-wide,)f(category)g(or)596
! 3023 y(page\))e(you)h(ar)o(e)f(managing)i(ar)o(e)d(editable.)h(Ther)o
(e)h(ar)o(e)e(four)i(standar)o(d)f(interface)g(elements)h(you)596
! 3114 y(can)g(edit)g(for)h(each)f(block:)197 3330 y(T)-5
! b(itle)p Black Black 762 3463 a(Each)23 b(module)h(de\002nes)f(a)h
(default)e(title)i(for)g(blocks)g(it)g(generates.)f(The)g(block)h
! (title)g(is)g(not)762 3554 y(necessarily)f(displayed)f(in)i(each)f
(content)h(ar)o(ea.)d(It)j(depends)e(on)i(the)g(block)f(transformer)762
! 3645 y(de\002ned)d(for)g(the)h(content)h(ar)o(ea)d(by)i(the)g(site)g
(template)f(you)h(use.)g(Her)o(e)f(you)h(can)g(override)762
! 3737 y(the)j(default)g(title)h(with)g(a)f(customized)h(title)g(that)f
(will)i(only)f(be)g(used)f(by)h(the)f(block)h(you)762
! 3828 y(ar)o(e)19 b(editing.)197 4002 y(Actif)p Black
! Black 762 4135 a(When)i(you)i(cr)o(eate)c(a)i(new)h(block,)g(it)f(is)h
(not)g(immediately)g(visible)g(on)g(the)g(web)f(site.)g(This)762
! 4227 y(makes)27 b(sense)g(since)h(you)g(need)e(to)i(edit)f(its)h(ar)o
(guments)f(\002rst.)g(When)h(you)f(ar)o(e)f(\002nished)762
! 4318 y(de\002ning)e(a)f(blocks)h(ar)o(guments,)g(you)g(have)f(to)h
(check)g(the)g(actif)f(\003ag)g(to)i(make)e(it)h(visible.)762
! 4409 y(This)c(can)g(also)g(be)g(practical)e(if)i(you)h(want)f(to)g
(hide)g(some)h(content)f(temporarily)g(fr)o(om)g(the)762
! 4501 y(web)g(site)h(without)h(deleting)f(it)g(fr)o(om)f(the)h
! (database.)197 4675 y(Seenby)p Black Black 762 4808 a(Y)-8
b(ou)21 b(can)e(contr)o(ol)h(the)g(visibility)h(of)f(each)f(block)i
(for)e(the)h(dif)o(fer)o(ent)e(user)i(r)o(oles)f(de\002ned)h(by)762
! 4899 y(sitemgr:)26 b(site)h(administrators,)f(phpgr)o(oupwar)o(e)f
! (users)i(\(which)g(include)f(site)h(adminis-)762 4990
y(trators\))21 b(and)h(the)g(anonymous)h(user)-6 b(.)22
b(Evidently)g(you)g(can)g(also)g(make)g(the)g(block)h(visible)762
! 5082 y(for)d(everyone)h(which)g(is)g(the)g(default.)197
! 5256 y(Sortor)o(der)p Black Black 762 5389 a(Her)o(e)h(you)j(can)e
(change)h(the)g(or)o(der)f(in)h(which)h(the)f(blocks)g(ar)o(e)f
! (displayed)g(by)h(de\002ning)g(a)762 5480 y(dif)o(fer)o(ent)18
! b(integer)j(for)g(each)f(block.)p Black 197 5585 a Fd(6)p
! Black eop
%%Page: 7 7
7 6 bop Black 0 TeXcolorgray Black 2602 -132 a Fd(Intr)o(oduction)19
! b(to)i(sitemgr)f(modules)p Black 596 89 a Fi(After)27
! b(these,)h(you)g(have)g(to)h(edit)e(the)i(module)f(speci\002c)g(ar)o
! (guments,)g(each)g(of)g(which)h(is)f(pr)o(e-)596 180
! y(ceded)21 b(by)h(an)g(explanatory)f(label.)h(The)g(input)h(elements)f
! (for)g(ar)o(guments)g(can)g(be)g(of)g(dif)o(fer)o(ent)596
! 272 y(types:)e(checkboxes,)h(selectboxes,)g(textar)o(eas,)d
! (text\002elds.)j(In)g(the)g(case)g(of)g(text)f(input,)i(you)f(can)596
! 363 y(use)26 b(the)h(same)g(template)f(variables)g(as)g(ar)o(e)f(used)i
! (in)g(the)g(site)g(template.)f(But)h(be)f(awar)o(e)f(that)596
! 454 y(this)d(only)g(works)g(if)f(the)g(module)h(puts)f(the)h(same)f
! (variable)f(into)i(its)g(output,)f(which)h(need)f(not)596
! 546 y(necessarily)f(be)h(the)g(case.)197 864 y Fg(Administrator)30
! b(man)o(ual)596 1116 y Ff(Installation)p Black 712 1344
! a Fi(1.)p Black 20 w(Once)k(you)g(have)f(the)h(sitemgr)g(dir)o(ectory)f
! (inside)h(your)h(phpgr)o(oupwar)o(e)d(install)i(you)795
! 1435 y(can)24 b(setup)h(it)g(like)h(any)e(other)i(phpgr)o(oupwar)o(e)d
! (application)i(with)h(the)f(setup)g(pr)o(ogram)795 1527
y(\(http://yourmachine/phpgw-path/setup/\).)73 b(Y)-8
! b(ou)73 b(should)f(also)g(install)h(the)795 1618 y(sitemgr)o(-link)24
b(application,)f(which)i(is)f(is)g(inside)h(sitemgr)f(and)f(has)h(to)g
! (be)g(moved)g(up)f(in)795 1709 y(the)e(dir)o(ectory)f(hierar)o(chy)-9
! b(.)795 1833 y Fb(cd)44 b(sitemgr)795 1915 y(mv)g(sitemgr-link)f(..)795
! 2048 y Fi(and)20 b(then)h(install)h(sitemgr)o(-link)f(with)g(setup)p
! Black 712 2314 a(2.)p Black 20 w(Log)27 b(in)g(to)g(phpGr)o(oupW)-8
b(ar)o(e)26 b(as)g(an)g(admin)h(and)f(cr)o(eate)f(an)i(anonymous)h
! (phpgw)f(user)795 2405 y(and)20 b(assign)g(it)h(a)e(passwor)o(d.)h(The)
g(only)h(app)f(\(I)f(assume\))h(that)g(they)h(should)g(have)f(access)
! 795 2496 y(to)28 b(is)h(sitemgr)o(-link.)f(sitemgr)o(-link)g(is)g(a)g
(dummy)h(application)e(that)h(r)o(edir)o(ects)e(phpGW)795
! 2588 y(users)21 b(to)g(the)g(generated)e(site.)p Black
! 712 2721 a(3.)p Black 20 w(Users)27 b(who)i(you)f(wish)g(to)h(see)e
(sitemgr)h(\(aka)f(contributors\))h(must)g(be)g(given)g(acces)f(to)795
! 2812 y(sitemgr)-6 b(,)21 b(users)h(who)g(you)h(want)e(to)h(be)g(able)e
(to)i(link)h(to)f(the)g(sitemgr)g(site)f(fr)o(om)g(phpGW)795
! 2903 y(must)h(be)g(given)g(rights)g(to)g(sitemgr)o(-link.)g(The)g
(easiest)g(way)f(to)h(do)g(this)h(is)f(to)g(go)g(to)h(User)795
! 2995 y(gr)o(oups)d(and)h(give)g(gr)o(oups)f(permissions)i(to)f(use)g
! (the)g(applications.)p Black 712 3127 a(4.)p Black 20
w(The)j(sitemgr)o(-site)h(is)g(the)f(dir)o(ectory)g(that)h(serves)f
(the)g(dynamic)h(web)f(site.)h(It)g(is)g(located)795
! 3219 y(inside)35 b(sitemgr)g(and)g(works)h(without)g(moving)g(it)f
! (somewher)o(e)g(else.)g(But)f(it)i(can)e(be)795 3310
y(located)i(anywher)o(e.)g(For)h(example,)e(you)i(could)g(put)g(it)g
! (in)g(/var/www/html.)h(Y)-8 b(ou)795 3401 y(could)31
b(make)h(the)f(r)o(oot)h(location)g(of)g(your)g(web)f(server)g(point)h
! (to)g(it,)g(if)f(you)h(wish)h(\(ie,)795 3493 y(http://yourmachine/)k(r)
o(efers)e(to)h(/var/www/html/sitemgr)o(-site)i(if)e(you)h(moved)795
! 3584 y(the)29 b(dir)o(ectory)-9 b(,)29 b(or)g(to)h(/path/to/phpgr)o
(oupwar)o(e/sitemgr/sitemgr)o(-site)g(if)f(you)h(did)795
! 3675 y(not\).)22 b(Make)e(a)i(mental)g(note)g(of)g(the)g(dir)o(ectory)e
(wher)o(e)i(you)g(put)g(it)g(and)f(the)h(url)g(that)g(it)g(is)795
! 3767 y(accessed)d(by)-9 b(.)p Black 712 3899 a(5.)p Black
20 w(In)20 b(the)g(sitemgr)o(-site)f(dir)o(ectory)g(is)h(a)f(\002le)h
(called)f(con\002g.inc.php.)h(Y)-8 b(ou)21 b(only)g(have)e(to)h(edit)
! 795 3991 y(it)h(if)f(you)i(moved)e(the)h(dir)o(ectory)-9
! b(.)20 b(Change)g(the)h(value)g(of)f(the)h(line)795 4114
! y Fb('phpgw_path')491 b(=>)44 b('../../',)795 4247 y
Fi(so)189 b(that)g(the)h(value)e(of)h($sitemgr_info['phpgw_path'])g(is)
! 795 4339 y('/path/to/phpgr)o(oupwar)o(e/')p Black 712
! 4604 a(6.)p Black 20 w(Y)-8 b(ou'r)o(e)30 b(almost)h(set)g(to)g(go.)f
! (Log)h(in)g(to)f(phpGr)o(oupW)-8 b(ar)o(e)30 b(as)g(an)g(administrator)
! -6 b(.)30 b(Make)795 4696 y(sur)o(e)e(you)i(gave)e(yourself)i(the)f
! (sitemgr)g(and)g(sitemgr)o(-link)h(applications)f(so)g(that)g(you)795
! 4787 y(see)d(them)g(on)h(your)g(navbar)-6 b(.)25 b(Go)i(to)f(the)h
! (sitemgr)f(application)g(and)g(select)g("Con\002gur)o(e)795
! 4878 y(SiteMgr".)21 b(Fill)j(in)f(\223URL)f(to)i(sitemgr)o(-site\224)e
! (and)g(\223Filesystem)i(path)e(to)i(sitemgr)o(-site)e(di-)795
! 4970 y(r)o(ectory\224,)k(and)g(the)i(anonymous)h(user)6
b('s)27 b(name)g(and)g(passwor)o(d.)g(Then)g(click)h(on)g(save,)795
! 5061 y(and)20 b(you)h(should)h(now)g(select)e(the)h(template)f(for)h
! (your)g(site.)p Black 712 5194 a(7.)p Black 20 w(That's)j(it.)h(Go)g
(to)g(the)g(Category)f(manager)-6 b(,)23 b(add)h(a)g(category)g(or)h
! (thr)o(ee)e(and)i(check)f(who)795 5285 y(can)j(view)g(and)g(edit)f
(them,)i(then)f(go)h(to)g(the)f(page)f(manager)-6 b(,)27
! b(add)f(a)g(page)h(or)g(thr)o(ee)g(to)795 5376 y(each)16
b(category)-9 b(,)17 b(set)g(up)g(your)h(site)g(header)-6
b(,)15 b(site)j(footer)-6 b(,)17 b(etc.,)f(and)h(go)h(view)f(your)h(r)o
! (ecently)795 5468 y(cr)o(eated)h(site)h(by)h(clicking)h(on)f(the)g
(sitemgr)o(-link)g(application.)g(V)-9 b(oil\340!)p Black
3642 5585 a Fd(7)p Black eop
Index: modules.sgml
===================================================================
RCS file: /cvsroot/phpgroupware/sitemgr/doc/modules.sgml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** modules.sgml 17 Jan 2003 03:37:52 -0000 1.1
--- modules.sgml 18 Jan 2003 05:24:39 -0000 1.2
***************
*** 6,10 ****
See http://www.lyx.org/ for more information -->
<articleinfo><title>Introduction to sitemgr modules</title><date>January 1,
2003</date><author><firstname>Michael</firstname>
<surname>Totschnig</surname></author><abstract><para>This text provides an
overview of sitemgr's proposed new modularized architecture and contains the
information users, administrators, template designers and application
devellopers need in order to get started using sitemgr as a flexible web site
managment system that can easily make any information and business logic
phpgroupware knows about publicly accessible. This text also serves as a
request for comments, so that sitemgr's new generation can be adapted quickly
to the needs of PHPgroupware's user community. Please be aware that at the
moment the new sitemgr is still experimental and that there are some areas of
its functionnality that need further
developpment.</para></abstract></articleinfo>
! <sect1><title>Introduction</title><para>For the next generaton of
phpgroupware's web site managment application sitemgr, we propose a new page
generation architecture whose fundamental idea is that all dynamic web site
content is built by modules. In this section, I will sketch a short outline of
how this architecture works and I will present the concepts it makes use
of.</para><sect2><title>Template</title><para>Sitemgr builds web sites from
templates. Those are stored in the directory sitemgr/sitemg-site/templates.
Each of them has a directory of its own. The file main.tpl defines the template
of the whole site, there can be other files that define code for separate areas
of the page or for specific modules. Templates contain four kinds of variables.
These are explained here since the types 2,3 and 4 can be used both in the
template as in the page content a module
generates.</para><orderedlist><listitem><para>{contentarea: areaname}
These define where administrator and contributor provided content go. The names
and the number of contentareas a template defines are almost
arbitrary.</para></listitem><listitem><para>{appname.modulename(?arguments)}These
let you hardcode a call to a module into a template. Arguments are in the HTTP
GET query string syntax (?key1=value1&key2=value2). At the moment, if you
use this type of variables, you have to urlencode the query string yourself.
Future versions of sitemgr might provide a simpler notation. For
example,{sitemgr.lang_block] creates the select box for multilingual
sites.</para></listitem><listitem><para>{?(phpgw|sitemgr:)link} This
lets you create links either to other pages of your website, or to phpgroupware
applications:</para><orderedlist><listitem><para>Links to sitemgr either start
with '?sitemgr:' or only with '?'. You can either link to a page with
{?page_name=downloads] and [?page_id=4}, to a category's
index (?category_id=5), to the site index (?index), to the site's table of
contents (?toc). Just [?] or {?sitemgr:} links to the
administrator defined home page.</para></listitem><listitem><para>Links to
phpgw start with '?phpgw:' . You have to name the application followed by a
comma, and optionnally arguments the application can interpret. For example
{?phpgw:/addressbook,order=n_given&sort=ASC}.</para></listitem></orderedlist></listitem><listitem><para>{variable}
Finally there are some simple variables you can use to retrieve
metainformation about the page or about the user's
context:</para><orderedlist><listitem><para>{title} the page
title</para></listitem><listitem><para>{subtitle} the page
subtitle</para></listitem><listitem><para>{sitename}the sitename the
administrator has chosen for the
site</para></listitem><listitem><para>{footer}the administrator
edited footer</para></listitem><listitem><para>{header}the
administrator edited
header</para></listitem><listitem><para>{user}the user's account
name</para></listitem></orderedlist></listitem></orderedlist></sect2>
<sect2><title>Module</title><para>The main function of a sitemgr module is to
generate dynamic web site content. To make the development of new modules, and
the use of modules easy and convenient, sitemgr defines an
“abstract” class module which each module should extend. This
parent of all modules, provides one essential service: It hooks the module into
the content managment interface and permits the editing of the module's
arguments that determine what content will be generated. Thus in order to
create a new module, all you have to do, is to extend the abstract super
module, define the modules arguments, and write a get_content function that
returns the content that should be displayed on the website. More on this in
chapter<link linkend="Application-developper-manual">5</link>.</para></sect2>
<sect2><title>Argument/Content</title><para>A module can be seen as a
transformation of input arguments into generated content. It is important to
understand that the input arguments can be of completely different kinds. On
the one hand there can be arguments that are as close as possible to the
generated content. For example the html module's only argument is named
“htmlcontent” and in normal circumstances it is not transformed at
all but handed over as is to the page generation engine. On the other hand
arguments can play any conceivable role in the generation of content that is
driven by data coming from other phpgroupware applications. They can be used to
select between different categories of content, they can choose a certain
format of presentation, they can function as search terms, etc.</para></sect2>
--- 6,10 ----
See http://www.lyx.org/ for more information -->
<articleinfo><title>Introduction to sitemgr modules</title><date>January 1,
2003</date><author><firstname>Michael</firstname>
<surname>Totschnig</surname></author><abstract><para>This text provides an
overview of sitemgr's proposed new modularized architecture and contains the
information users, administrators, template designers and application
devellopers need in order to get started using sitemgr as a flexible web site
managment system that can easily make any information and business logic
phpgroupware knows about publicly accessible. This text also serves as a
request for comments, so that sitemgr's new generation can be adapted quickly
to the needs of PHPgroupware's user community. Please be aware that at the
moment the new sitemgr is still experimental and that there are some areas of
its functionnality that need further
developpment.</para></abstract></articleinfo>
! <sect1><title>Introduction</title><para>For the next generaton of
phpgroupware's web site managment application sitemgr, we propose a new page
generation architecture whose fundamental idea is that all dynamic web site
content is built by modules. In this section, I will sketch a short outline of
how this architecture works and I will present the concepts it makes use
of.</para><sect2><title>Template</title><para>Sitemgr builds web sites from
templates. Those are stored in the directory sitemgr/sitemg-site/templates.
Each of them has a directory of its own. The file main.tpl defines the template
of the whole site, there can be other files that define code for separate areas
of the page or for specific modules. Templates contain four kinds of variables.
These are explained here since the types 2,3 and 4 and 5 can be used both in
the template as in the page content a module
generates.</para><orderedlist><listitem><para>{contentarea: areaname}
These define where administrator and contributor provided content go. The names
and the number of contentareas a template defines are almost
arbitrary.</para></listitem><listitem><para>{appname.modulename(?arguments)}These
let you hardcode a call to a module into a template. Arguments are in the HTTP
GET query string syntax (?key1=value1&key2=value2). At the moment, if you
use this type of variables, you have to urlencode the query string yourself.
Future versions of sitemgr might provide a simpler notation. For
example,{sitemgr.lang_block] creates the select box for multilingual
sites.</para></listitem><listitem><para>{?(phpgw|sitemgr:)link} This
lets you create links either to other pages of your website, or to phpgroupware
applications:</para><orderedlist><listitem><para>Links to sitemgr either start
with '?sitemgr:' or only with '?'. You can either link to a page with
{?page_name=downloads] and [?page_id=4}, to a category's
index (?category_id=5), to the site index (?index), to the site's table of
contents (?toc). Just [?] or {?sitemgr:} links to the
administrator defined home page.</para></listitem><listitem><para>Links to
phpgw start with '?phpgw:' . You have to name the application followed by a
comma, and optionnally arguments the application can interpret. For example
{?phpgw:/addressbook,order=n_given&sort=ASC}.</para></listitem></orderedlist></listitem><listitem><para>{lang_translatable_string}
This lets you make the template internationalized. The translatable string is
sent through phpgroupware's lang function. Thus you can add it to the lang
files in the setup directory and install it through the setup
programm.</para></listitem><listitem><para>{variable} Finally there
are some simple variables you can use to retrieve metainformation about the
page or about the user's
context:</para><orderedlist><listitem><para>{title} the page
title</para></listitem><listitem><para>{subtitle} the page
subtitle</para></listitem><listitem><para>{sitename}the sitename the
administrator has chosen for the
site</para></listitem><listitem><para>{footer}the administrator
edited footer</para></listitem><listitem><para>{header}the
administrator edited
header</para></listitem><listitem><para>{user}the user's account
name</para></listitem></orderedlist></listitem></orderedlist></sect2>
<sect2><title>Module</title><para>The main function of a sitemgr module is to
generate dynamic web site content. To make the development of new modules, and
the use of modules easy and convenient, sitemgr defines an
“abstract” class module which each module should extend. This
parent of all modules, provides one essential service: It hooks the module into
the content managment interface and permits the editing of the module's
arguments that determine what content will be generated. Thus in order to
create a new module, all you have to do, is to extend the abstract super
module, define the modules arguments, and write a get_content function that
returns the content that should be displayed on the website. More on this in
chapter<link linkend="Application-developper-manual">5</link>.</para></sect2>
<sect2><title>Argument/Content</title><para>A module can be seen as a
transformation of input arguments into generated content. It is important to
understand that the input arguments can be of completely different kinds. On
the one hand there can be arguments that are as close as possible to the
generated content. For example the html module's only argument is named
“htmlcontent” and in normal circumstances it is not transformed at
all but handed over as is to the page generation engine. On the other hand
arguments can play any conceivable role in the generation of content that is
driven by data coming from other phpgroupware applications. They can be used to
select between different categories of content, they can choose a certain
format of presentation, they can function as search terms, etc.</para></sect2>
***************
*** 24,28 ****
]]><![CDATA[mv sitemgr-link ..
]]></programlisting><para>and then install sitemgr-link with
setup</para></listitem><listitem><para>Log in to phpGroupWare as an admin and
create an anonymous phpgw user and assign it a password. The only app (I
assume) that they should have access to is sitemgr-link. sitemgr-link is a
dummy application that redirects phpGW users to the generated
site.</para></listitem><listitem><para>Users who you wish to see sitemgr (aka
contributors) must be given acces to sitemgr, users who you want to be able to
link to the sitemgr site from phpGW must be given rights to sitemgr-link. The
easiest way to do this is to go to User groups and give groups permissions to
use the applications. </para></listitem><listitem><para>The sitemgr-site is the
directory that serves the dynamic web site. It is located inside sitemgr and
works without moving it somewhere else. But it can be located anywhere. For
example, you could put it in /var/www/html. You could make the root location of
your web server point to it, if you wish (ie, http://yourmachine/ refers to
/var/www/html/sitemgr-site if you moved the directory, or to
/path/to/phpgroupware/sitemgr/sitemgr-site if you did not). Make a mental note
of the directory where you put it and the url that it is accessed
by.</para></listitem><listitem><para>In the sitemgr-site directory is a file
called config.inc.php. You only have to edit it if you moved the directory.
Change the value of the line</para><programlisting><![CDATA['phpgw_path'
=> '../../',
! ]]></programlisting><para>so that the value of
$sitemgr_info['phpgw_path'] is
'/path/to/phpgroupware/'</para></listitem><listitem><para>You're almost set to
go. Log in to phpGroupWare as an adminis trator. Make sure you gave yourself
the sitemgr and sitemgr-link applications so that you see them on your navbar.
Go to the sitemgr application and select "Configure SiteMgr". Fill in
“URL to sitemgr-site” and “Filesystem path to sitemgr-site
directory”, and the anonymous user's name and password. Then click on
save, and you should know select the template for your
site.</para></listitem><listitem><para>That's it. Go to the Category manager,
add a category or three and check who can view and edit them, then go to the
page manager, add a page or three to each category, set up your site header,
site footer, etc., and go view your recently created site by clicking on the
sitemgr-link application. VoilĂ !</para></listitem></orderedlist></sect2>
<sect2><title>Maintenance</title><para>As a site administrator, you have
three privileges/responsibilies:</para><orderedlist><listitem><para>Define site
wide content blocks. These are edited in the same interface as category and
page specific blocks.</para></listitem><listitem><para>Choose permitted
modules: If you choose “Manage site-wide module properties” from
sitemgr's main menu, you will see several rows which all contain four elements:
a select box, a button labelled “Select allowed modules', another select
box and a button labelled “Configure module properties”. The first
select box and its adjacent button in each row permits to choose lists of
permitted modules. The first row defines a master list for the whole site which
is used when no more specific lists are found for content areas or categories.
The following rows each pertain to the different content areas of your site
template. Here you can choose to allow some modules for one content areas, and
other modules for another one.
In the category manager, there is a button “Manage Modules”
associated with each category. There you can use the same interface to define
lists specific to one category (and all its subcategories, unless overriden).
Again you have the choice between one list that pertains to all content areas,
and specific lists for each category.
--- 24,28 ----
]]><![CDATA[mv sitemgr-link ..
]]></programlisting><para>and then install sitemgr-link with
setup</para></listitem><listitem><para>Log in to phpGroupWare as an admin and
create an anonymous phpgw user and assign it a password. The only app (I
assume) that they should have access to is sitemgr-link. sitemgr-link is a
dummy application that redirects phpGW users to the generated
site.</para></listitem><listitem><para>Users who you wish to see sitemgr (aka
contributors) must be given acces to sitemgr, users who you want to be able to
link to the sitemgr site from phpGW must be given rights to sitemgr-link. The
easiest way to do this is to go to User groups and give groups permissions to
use the applications. </para></listitem><listitem><para>The sitemgr-site is the
directory that serves the dynamic web site. It is located inside sitemgr and
works without moving it somewhere else. But it can be located anywhere. For
example, you could put it in /var/www/html. You could make the root location of
your web server point to it, if you wish (ie, http://yourmachine/ refers to
/var/www/html/sitemgr-site if you moved the directory, or to
/path/to/phpgroupware/sitemgr/sitemgr-site if you did not). Make a mental note
of the directory where you put it and the url that it is accessed
by.</para></listitem><listitem><para>In the sitemgr-site directory is a file
called config.inc.php. You only have to edit it if you moved the directory.
Change the value of the line</para><programlisting><![CDATA['phpgw_path'
=> '../../',
! ]]></programlisting><para>so that the value of
$sitemgr_info['phpgw_path'] is
'/path/to/phpgroupware/'</para></listitem><listitem><para>You're almost set to
go. Log in to phpGroupWare as an administrator. Make sure you gave yourself the
sitemgr and sitemgr-link applications so that you see them on your navbar. Go
to the sitemgr application and select "Configure SiteMgr". Fill in
“URL to sitemgr-site” and “Filesystem path to sitemgr-site
directory”, and the anonymous user's name and password. Then click on
save, and you should now select the template for your
site.</para></listitem><listitem><para>That's it. Go to the Category manager,
add a category or three and check who can view and edit them, then go to the
page manager, add a page or three to each category, set up your site header,
site footer, etc., and go view your recently created site by clicking on the
sitemgr-link application. VoilĂ !</para></listitem></orderedlist></sect2>
<sect2><title>Maintenance</title><para>As a site administrator, you have
three privileges/responsibilies:</para><orderedlist><listitem><para>Define site
wide content blocks. These are edited in the same interface as category and
page specific blocks.</para></listitem><listitem><para>Choose permitted
modules: If you choose “Manage site-wide module properties” from
sitemgr's main menu, you will see several rows which all contain four elements:
a select box, a button labelled “Select allowed modules', another select
box and a button labelled “Configure module properties”. The first
select box and its adjacent button in each row permits to choose lists of
permitted modules. The first row defines a master list for the whole site which
is used when no more specific lists are found for content areas or categories.
The following rows each pertain to the different content areas of your site
template. Here you can choose to allow some modules for one content areas, and
other modules for another one.
In the category manager, there is a button “Manage Modules”
associated with each category. There you can use the same interface to define
lists specific to one category (and all its subcategories, unless overriden).
Again you have the choice between one list that pertains to all content areas,
and specific lists for each category.
Index: modules.txt
===================================================================
RCS file: /cvsroot/phpgroupware/sitemgr/doc/modules.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** modules.txt 17 Jan 2003 03:37:52 -0000 1.1
--- modules.txt 18 Jan 2003 05:24:39 -0000 1.2
***************
*** 40,45 ****
of the page or for specific modules. Templates contain
four kinds of variables. These are explained here since
! the types 2,3 and 4 can be used both in the template as
! in the page content a module generates.
1. {contentarea: areaname} These define where
--- 40,45 ----
of the page or for specific modules. Templates contain
four kinds of variables. These are explained here since
! the types 2,3 and 4 and 5 can be used both in the
! template as in the page content a module generates.
1. {contentarea: areaname} These define where
***************
*** 76,80 ****
{?phpgw:/addressbook,order=n_given&sort=ASC}.
! 4. {variable} Finally there are some simple variables
you can use to retrieve metainformation about the
page or about the user's context:
--- 76,86 ----
{?phpgw:/addressbook,order=n_given&sort=ASC}.
! 4. {lang_translatable_string} This lets you make the
! template internationalized. The translatable string
! is sent through phpgroupware's lang function. Thus
! you can add it to the lang files in the setup
! directory and install it through the setup programm.
!
! 5. {variable} Finally there are some simple variables
you can use to retrieve metainformation about the
page or about the user's context:
***************
*** 395,399 ****
6. You're almost set to go. Log in to phpGroupWare as
! an adminis trator. Make sure you gave yourself the
sitemgr and sitemgr-link applications so that you see
them on your navbar. Go to the sitemgr application
--- 401,405 ----
6. You're almost set to go. Log in to phpGroupWare as
! an administrator. Make sure you gave yourself the
sitemgr and sitemgr-link applications so that you see
them on your navbar. Go to the sitemgr application
***************
*** 401,406 ****
and "Filesystem path to sitemgr-site directory", and
the anonymous user's name and password. Then click on
! save, and you should know select the template for
! your site.
7. That's it. Go to the Category manager, add a
--- 407,411 ----
and "Filesystem path to sitemgr-site directory", and
the anonymous user's name and password. Then click on
! save, and you should now select the template for your site.
7. That's it. Go to the Category manager, add a
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Phpgroupware-cvs] CVS: sitemgr/doc modules.dvi,1.1,1.2 modules.html,1.1,1.2 modules.lyx,1.1,1.2 modules.pdf,1.1,1.2 modules.ps,1.1,1.2 modules.sgml,1.1,1.2 modules.txt,1.1,1.2,
Michael Totschnig <address@hidden> <=
- Prev by Date:
[Phpgroupware-cvs] CVS: sitemgr/sitemgr-site/inc class.bo.inc.php,1.9,1.10 class.ui.inc.php,1.10,1.11 class.Template3.inc.php,1.1,1.2
- Next by Date:
[Phpgroupware-cvs] CVS: sitemgr/inc class.module_meta.inc.php,1.1,NONE
- Previous by thread:
[Phpgroupware-cvs] CVS: sitemgr/sitemgr-site/inc class.bo.inc.php,1.9,1.10 class.ui.inc.php,1.10,1.11 class.Template3.inc.php,1.1,1.2
- Next by thread:
[Phpgroupware-cvs] CVS: sitemgr/inc class.module_meta.inc.php,1.1,NONE
- Index(es):