Index: openacs-4/packages/acs-templating/www/doc/design.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/design.adp,v
diff -u -r1.2.2.4 -r1.2.2.5
--- openacs-4/packages/acs-templating/www/doc/design.adp 9 Jun 2016 13:03:12 -0000 1.2.2.4
+++ openacs-4/packages/acs-templating/www/doc/design.adp 5 Jul 2016 12:14:22 -0000 1.2.2.5
@@ -15,7 +15,7 @@
procedures show up here. To minimize dependencies across packages,
in particular on ad_proc
from acs-kernel
,
this package uses proc
.
ad_template_sample_users
that some of the
demonstrations use.-A common solution. Programmers and designers should only -have to learn a single system that serves as a UI substrate for all -the functionally specific modules used on a site. The system should -not make any assumptions about how pages should look or function. -Designers should be able to change the default presentation of any -module using a single metholodogy with minimal exposure to -code.
-Separation of code (Tcl, Java and SQL) and layout (HTML). -Programmers should be able to specify the data sources and other -properties of the template independently of the HTML template used -to present the data. HTML authors should be to able to write -templates that reference the data sources and properties without -further intervention from the programmer to produce a finished -page.
-Separation of page components. There should be provisions -so that pages can be broken into discrete components to simplify -maintenance of the HTML code and allow for reuse in different -contexts. Examples of common page components include a navigation -bar, a search box, or a section of a report or story. Another -common example is a portal page that allows the user to choose from -a palette of features to display.
-Global control over presentation. There should be a way -to define one or more standard master templates used by most pages -on a site, so that changes to the overall look and feel of a site -can be made in one place.
-Dynamic selection of presentation style. Given that the -same data may be presented in many different ways, there should be -a general mechanism for selecting a specific presentation +A common solution. Programmers and designers +should only have to learn a single system that serves as a UI +substrate for all the functionally specific modules used on a site. +The system should not make any assumptions about how pages should +look or function. Designers should be able to change the default +presentation of any module using a single metholodogy with minimal +exposure to code.
+Separation of code (Tcl, Java and SQL) and layout +(HTML). Programmers should be able to specify the data +sources and other properties of the template independently of the +HTML template used to present the data. HTML authors should be to +able to write templates that reference the data sources and +properties without further intervention from the programmer to +produce a finished page.
+Separation of page components. There should be +provisions so that pages can be broken into discrete components to +simplify maintenance of the HTML code and allow for reuse in +different contexts. Examples of common page components include a +navigation bar, a search box, or a section of a report or story. +Another common example is a portal page that allows the user to +choose from a palette of features to display.
+Global control over presentation. There should +be a way to define one or more standard master templates used by +most pages on a site, so that changes to the overall look and feel +of a site can be made in one place.
+Dynamic selection of presentation style. Given +that the same data may be presented in many different ways, there +should be a general mechanism for selecting a specific presentation (including file format, layout, character set and language) for each page request, depending on characteristics such as user preference, location, browser type and/or device.
-Usability. Programmers should be able to develop template -specifications using their standard tools for writing and -maintaining code on the server. HTML authors should be able to -access information about template specifications and work on -templates remotely without needing shell access to the server.
What this package is not intended to allow users to accomplish.
action=
target of a form.
-They typically call ad_returnredirect
after completing
-their job.action=
target
+of a form. They typically call ad_returnredirect
after
+completing their job.ad_page_contract
(from the acs kernel)
should be used to specify what makes the dynamic part of the page.
-There's also an API for creating forms and for creating and
+There's also an API for creating forms and for creating and
manipulating multirow data sources.<master>
tag specifies a master
@@ -94,22 +95,22 @@
Karl Goldstein designed the templating system. First it was
-called "Karl's Templates" or "The New Templating System" to
-distinguish it from the obsolescent templates or "Styles" by Philip
-Greenspun. An extended and improved version was named "Dynamic
-Publishing System". It wasn't part of the ACS yet, but client
-projects like iluvCAMP used it successfully. Newcomers were
-consistently puzzled by the .data
files, which
-specified the datasources in an apparently unfamiliar XML syntax.
-(The .form
files specified elements in an HTML form
-similarly.) To mitigate this initial shock, Karl redesigned
-templates to let the programmer specify datasources and forms in a
-.tcl
script. The system is present as packages
-templates
and form-manager
in ACS 3.4.
-Both these packages are now merged and appear as
-acs-templating
starting in ACS 4.0. The architecture
-of the package was changed several times to meet the emerging
-coding/style constraints of ACS 4.0.
.data
files, which specified the datasources in an
+apparently unfamiliar XML syntax. (The .form
files
+specified elements in an HTML form similarly.) To mitigate this
+initial shock, Karl redesigned templates to let the programmer
+specify datasources and forms in a .tcl
script. The
+system is present as packages templates
and
+form-manager
in ACS 3.4. Both these packages are now
+merged and appear as acs-templating
starting in ACS
+4.0. The architecture of the package was changed several times to
+meet the emerging coding/style constraints of ACS 4.0.
As indicated above, the primary attribute that the page tries to
achieve is the separation of code and layout. The primary sacrifice
@@ -152,15 +153,15 @@
tcl
extensions.
.adp
or .tcl
file. As both invoke the
-same handler, it doesn't matter that adp take precendence..tcl
file is present, its ad_page_contract
+same handler, it doesn't matter that adp take precendence..tcl
file is present, its ad_page_contract
in the -properties
block indicates a set of data
sources that will be made available to the template.Below is a diagram of the typical call stack when processing a page without dependent pages. To conform to the Tcl notion of -what's up and down (as in upvar), the stack grows down.
+what's up and down (as in upvar), the stack +grows down.
Level Procedure Arguments @@ -251,29 +253,29 @@ the adp and tcl sources, and re-processes any requested file if the cached version is no longer current. Consequently, this cacheing is transparent in normal use. -To emphasize that "normal" use essentially always applies, -here's a scenario for abnormal use: Save version n of a -file at 11:36:05.1; request a page that uses it at 11:36:05.3; -modify and save version n+1 of the file at 11:36:05.9. -If you work that fast (!), the new version will have the same -modification time -- kept with 1 second resolution in Unix --, and -will not be refreshed.
+To emphasize that "normal" use essentially always +applies, here's a scenario for abnormal use: Save version +n of a file at 11:36:05.1; request a page that uses it +at 11:36:05.3; modify and save version n+1 of the file +at 11:36:05.9. If you work that fast (!), the new version will have +the same modification time -- kept with 1 second resolution in Unix +--, and will not be refreshed.
For timing measurements and performance tuning, you can set the parameter
RefreshCache
in sectiontemplate
tonever
oralways
. The former suppresses checking mtime and may improve performance on -a production server, where the content pages don't change. The +a production server, where the content pages don't change. The latter is only inteded for testing.VII. Data Model Discussion
-This packages doesn't need a data model.
+This packages doesn't need a data model.
It comes with its own database interfaces, one for using ns_ora, the Oracle driver from ArsDigita, and one for ns_db, the builtin database interface of the AOL server. If you are programming under the ACS, you should use neither of these, but rather the
db_*
interface, in particulardb_multirow
.VIII. User Interface
-This packages doesn't have a user interface. It is the +
This packages doesn't have a user interface. It is the substrate of all user interfaces, be it user or admin pages.
IX. Configuration/Parameters
@@ -289,9 +291,10 @@X. Future Improvements/Areas of Likely Change
Passing datasources by reference is new. The acs-templating -syntax
+syntax&formal="actual"
is different from the -independent ATS, which usedformal="\@actual.*\@"
. The -latter is phased out.&formal="actual"
is different +from the independent ATS, which used +formal="\@actual.*\@"
. The latter is phased +out.We intend to add a
Christian Brechbuehler -Last modified: $Id: design.html,v 1.4 2015/06/16 08:53:38 gustafn -Exp $ +Last modified: $Id: design.html,v 1.4.2.1 2016/06/22 07:48:43 +gustafn Exp $<which>
,<switch>
, or<case>
tag, to complement sequential nested @@ -324,5 +327,5 @@