updated docs from gnrfan

This commit is contained in:
seek3r 2000-11-21 22:33:37 +00:00
parent 5739888964
commit a558326b67
37 changed files with 5180 additions and 877 deletions

View File

@ -8,11 +8,14 @@ CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="About"
HREF="p731.html"><LINK
REL="PREVIOUS"
TITLE=" API documentation"
HREF="apidocs.html"></HEAD
TITLE="About"
HREF="p731.html"></HEAD
><BODY
CLASS="PART"
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
@ -32,7 +35,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="apidocs.html"
HREF="p731.html"
>Prev</A
></TD
><TD
@ -51,20 +54,49 @@ VALIGN="bottom"
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
NAME="AEN331"
></A
><DIV
CLASS="TITLEPAGE"
CLASS="CHAPTER"
><H1
CLASS="TITLE"
>VII. About this document</H1
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN333"
></A
NAME="ABOUT"
>Chapter 29. About this document</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="about.html#AEN737"
>New versions</A
></DT
><DT
><A
HREF="about.html#AEN742"
>Comments</A
></DT
><DT
><A
HREF="about.html#AEN750"
>History</A
></DT
><DT
><A
HREF="about.html#AEN753"
>Version History</A
></DT
></DL
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN737"
>New versions</A
></H4
><P
> The newest version of this document can be found on our website <A
HREF="http://www.phpgroupware.org"
@ -76,12 +108,13 @@ CLASS="CITETITLE"
>
as SGML source, HTML, or TEXT.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN337"
NAME="AEN742"
>Comments</A
></H4
><P
@ -111,7 +144,7 @@ CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN345"
NAME="AEN750"
>History</A
></H4
><P
@ -123,7 +156,7 @@ CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN348"
NAME="AEN753"
>Version History</A
></H4
><P
@ -209,8 +242,6 @@ STYLE="list-style-type: disc"
</P
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
@ -226,7 +257,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="apidocs.html"
HREF="p731.html"
>Prev</A
></TD
><TD
@ -248,12 +279,15 @@ VALIGN="top"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>API documentation</TD
>About</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><A
HREF="p731.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"

View File

@ -1,138 +0,0 @@
<HTML
><HEAD
><TITLE
>A short History</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Introduction"
HREF="p21.html"><LINK
REL="PREVIOUS"
TITLE="Why should you use it"
HREF="why.html"><LINK
REL="NEXT"
TITLE="Copyright"
HREF="copyright.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="why.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="copyright.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="APPHIS"
>Chapter 3. A short History</A
></H1
><P
> phpGroupWare started by Jengo (Joseph Engo) as an application to satisfy his girlfriends need for a webbased calendar/todo_list/email.
At the time it was called webdistro when Seek3r (Dan Kuykendall) discovered this promising project.
The two joined up together and between Seek3r's API design and Jengo's programming skills they renamed the project phpGroupWare and started building the application around the phpgwAPI.
</P
><P
> During this period Seek3r took over project management to free Jengo up to do more development.
This duo worked hard to build a sucessful community around the project. Their efforts paid off, and the project is what it is today due to the efforts of the developers who have joined this community.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="why.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="copyright.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Why should you use it</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p21.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Copyright</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,7 +1,7 @@
<HTML
><HEAD
><TITLE
>Developing Add-On Apps</TITLE
>About developers docs</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
@ -10,15 +10,15 @@ TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p312.html"><LINK
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Developers Documentation"
HREF="p312.html"><LINK
TITLE="Using Templates"
HREF="devtemp.html"><LINK
REL="NEXT"
TITLE="add your topic seek"
HREF="etc.html"></HEAD
TITLE="About"
HREF="p731.html"></HEAD
><BODY
CLASS="CHAPTER"
CLASS="ARTICLE"
><DIV
CLASS="NAVHEADER"
><TABLE
@ -38,7 +38,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="p312.html"
HREF="devtemp.html"
>Prev</A
></TD
><TD
@ -51,7 +51,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="etc.html"
HREF="p731.html"
>Next</A
></TD
></TR
@ -60,12 +60,16 @@ HREF="etc.html"
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
CLASS="ARTICLE"
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
><A
NAME="DEVADDAPP"
>Chapter 22. Developing Add-On Apps</A
NAME="DEVABOUT"
>About developers docs</A
></H1
><HR></DIV
><DIV
CLASS="TOC"
><DL
@ -75,28 +79,39 @@ CLASS="TOC"
></DT
><DT
><A
HREF="devaddapp.html#REQUIRDEV"
>Requirements</A
HREF="devabout.html#AEN725"
>About this document</A
></DT
><DT
><A
HREF="etc.html"
>add your topic seek</A
HREF="devabout.html#AEN728"
>History</A
></DT
></DL
></DIV
><P
>text for developin add on apps (seek its your area)</P
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="REQUIRDEV"
>Requirements</A
></H1
NAME="AEN725"
>About this document</A
></H4
><P
> text for requirements
></P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN728"
>History</A
></H4
><P
> This document was written by Dan Kuykendall.
2000-09-25 documentation on lang(), codes, administration and preferences extension added by Steve Brown.
</P
></DIV
></DIV
@ -115,7 +130,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="p312.html"
HREF="devtemp.html"
>Prev</A
></TD
><TD
@ -131,7 +146,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="etc.html"
HREF="p731.html"
>Next</A
></TD
></TR
@ -140,20 +155,20 @@ HREF="etc.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Developers Documentation</TD
>Using Templates</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p312.html"
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>add your topic seek</TD
>About</TD
></TR
></TABLE
></DIV

197
doc/html/devapi.html Normal file
View File

@ -0,0 +1,197 @@
<HTML
><HEAD
><TITLE
>The API</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Infrastructure"
HREF="devinfra.html"><LINK
REL="NEXT"
TITLE="Basic functions"
HREF="x398.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="devinfra.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x398.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="DEVAPI"
>Chapter 25. The API</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="devapi.html#AEN389"
>Introduction</A
></DT
><DT
><A
HREF="x398.html"
>Basic functions</A
></DT
><DT
><A
HREF="x407.html"
>Application Functions</A
></DT
><DT
><A
HREF="x434.html"
>File functions</A
></DT
><DT
><A
HREF="x471.html"
>Email/NNTP Functions</A
></DT
></DL
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN389"
>Introduction</A
></H1
><P
> phpGroupWare attempts to provide developers with a useful API to handle common tasks.
</P
><P
> To do this we have created a multi-dimensional class $phpgw-&#62;.
</P
><P
> This allows for terrific code organization, and help developers easily identify
the file that the function is in. All the files that are part of this class are in the
<TT
CLASS="FILENAME"
>inc/core</TT
> directory
and are named to match the sub-class.
</P
><P
> Example:<TT
CLASS="CLASSNAME"
>$phpgw-&#62;send-&#62;msg()</TT
> is in the
<TT
CLASS="FILENAME"
>inc/phpgwapi/phpgw_send.inc.php</TT
> file.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="devinfra.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x398.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Infrastructure</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Basic functions</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

763
doc/html/devconfvar.html Normal file
View File

@ -0,0 +1,763 @@
<HTML
><HEAD
><TITLE
>Configuration Variables</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Email/NNTP Functions"
HREF="x471.html"><LINK
REL="NEXT"
TITLE="Using Language Support"
HREF="devlangsup.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x471.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devlangsup.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="DEVCONFVAR"
>Chapter 26. Configuration Variables</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="devconfvar.html#AEN482"
>Introduction</A
></DT
><DT
><A
HREF="devconfvar.html#AEN488"
>User information</A
></DT
><DT
><A
HREF="devconfvar.html#AEN526"
>Group information</A
></DT
><DT
><A
HREF="devconfvar.html#AEN530"
>Server information</A
></DT
><DT
><A
HREF="devconfvar.html#AEN562"
>Database information</A
></DT
><DT
><A
HREF="devconfvar.html#AEN577"
>Mail information</A
></DT
><DT
><A
HREF="devconfvar.html#AEN598"
>NNTP information</A
></DT
><DT
><A
HREF="devconfvar.html#AEN612"
>Application information</A
></DT
></DL
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN482"
>Introduction</A
></H4
><P
> phpGroupWare attempt to provide developers with as much information about the user, group,
server, and application configuration as possible. To do this we provide a multi-dimensional
array called <TT
CLASS="CLASSNAME"
>$phpgw_info[]</TT
>, which includes all the information about
your environment.Due to the multi-dimensional array approach. getting these values is easy.
</P
><P
> Here are some examples:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>&#60;?php
// To do a hello username
echo "Hello " . $phpgw_info["user"]["fullname"];
//If username first name is John and last name is Doe, prints: 'Hello John Doe'
?&#62;
&#60;?php
// To find out the location of the imap server
echo "IMAP Server is named: " . $phpgw_info["server"]["imap_server"];
//If imap is running on localhost, prints: 'IMAP Server is named: localhost'
?&#62;</PRE
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN488"
>User information</A
></H4
><P
> <P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["userid"] = </TT
>The user ID</TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["sessionid"] = </TT
>The session ID</TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["theme"] = </TT
>Selected theme</TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["private_dir"] = </TT
>Users private dir. Use phpGroupWare core functions for access to the files.</TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["firstname"] = </TT
>Users first name</TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["lastname"] = </TT
>Users last name </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["fullname"] = </TT
>Users Full Name </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["groups"] = </TT
>Groups the user is a member of </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["app_perms"] = </TT
>If the user has access to the current application </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["lastlogin"] = </TT
>Last time the user logged in. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["lastloginfrom"] = </TT
>Where they logged in from the last time. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["lastpasswd_change"] = </TT
>Last time they changed their password. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["passwd"] = </TT
>Hashed password. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["status"] = </TT
>If the user is enabled. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["logintime"] = </TT
>Time they logged into their current session. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["session_dla"] = </TT
>Last time they did anything in their current session </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["user"]["session_ip"] = </TT
>Current IP address </TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN526"
>Group information</A
></H4
><P
> <TT
CLASS="CLASSNAME"
>$phpgw_info["group"]["group_names"] = </TT
>List of groups.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN530"
>Server information</A
></H4
><P
> <P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["server_root"] = </TT
>Main installation directory </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["include_root"] = </TT
>Location of the '<TT
CLASS="CLASSNAME"
>inc</TT
>' directory. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["temp_dir"] = </TT
>Directory that can be used for temporarily storing files </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["files_dir"] = </TT
>Directory er and group files are stored </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["common_include_dir"] = </TT
>Location of the core/shared include files. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["template_dir"] = </TT
>Active template files directory. This is defaulted by the server, and changeable by the user. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["dir_separator"] = </TT
>Allows compatibility with WindowsNT directory format, </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["encrpytkey"] = </TT
>Key used for encryption functions </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["site_title"] = </TT
>Site Title will show in the title bar of each webpage. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["webserver_url"] = </TT
>URL to phpGroupWare installation. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["hostname"] = </TT
>Name of the server phpGroupWare is installed upon. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["charset"] = </TT
>default charset, default:<TT
CLASS="CLASSNAME"
>iso-8859-1</TT
> </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["version"] = </TT
>phpGroupWare version. </TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN562"
>Database information</A
></H4
><P
> It is unlikely you will need these, because <TT
CLASS="CLASSNAME"
>$phpgw_info_db</TT
> will already be loaded as a database for you to use.
<P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["db_host"] = </TT
>Address of the database server. Usually this is set to localhost. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["db_name"] = </TT
>Database name. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["db_user"] = </TT
>User name. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["db_pass"] = </TT
>Password </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["db_type"] = </TT
>Type of database. Currently MySQL and PostgreSQL are supported. </TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN577"
>Mail information</A
></H4
><P
> It is unlikely you will need these, because most email needs are services thru core phpGroupWare functions.
<P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["mail_server"] = </TT
>Address of the IMAP server. Usually this is set to localhost. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["mail_server_type"] = </TT
>IMAP or POP3 </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["imap_server_type"] = </TT
>Cyrus or Uwash </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["imap_port"] = </TT
>This is usually 143, and should only be changed if there is a good reason. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["mail_suffix] = </TT
>This is the domain name, used to add to email address </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["mail_login_type"] = </TT
>This adds support for VMailMgr. Generally this should be set to '<TT
CLASS="CLASSNAME"
>standard</TT
>'. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["smtp_server"] = </TT
>Address of the SMTP server. Usually this is set to localhost. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["smtp_port"] = </TT
>This is usually 25, and should only be changed if there is a good reason. </TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN598"
>NNTP information</A
></H4
><P
> <P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["nntp_server"] = </TT
>Address of the NNTP server. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["nntp_port"] = </TT
>This is usually XX, and should only be changed if there is a good reason. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["nntp_sender"] = </TT
>Unknown </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["nntp_organization"] = </TT
>Unknown </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["nntp_admin"] = </TT
>Unknown </TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN612"
>Application information</A
></H4
><P
> Each application has the following information available.
<P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["apps"]["appname"]["title"] = </TT
>The title of the application. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["apps"]["appname"]["enabled"] = </TT
>If the application is enabled. True or False. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["app_include_dir"] = </TT
>Location of the current application include files. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["app_template_dir"] = </TT
>Location of the current application tpl files. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["app_lang_dir"] = </TT
>Location of the current lang directory. </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["app_auth"] = </TT
>If the server and current user have access to current application </TD
></TR
><TR
><TD
><TT
CLASS="CLASSNAME"
>$phpgw_info["server"]["app_current"] = </TT
>name of the current application. </TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x471.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devlangsup.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Email/NNTP Functions</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Using Language Support</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

299
doc/html/devguid.html Normal file
View File

@ -0,0 +1,299 @@
<HTML
><HEAD
><TITLE
>Guidelines</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Introduction"
HREF="devintro.html"><LINK
REL="NEXT"
TITLE="Installing your application"
HREF="devinstall.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="devintro.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devinstall.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="DEVGUID"
>Chapter 22. Guidelines</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="devguid.html#AEN277"
>Requirements</A
></DT
><DT
><A
HREF="devguid.html#AEN300"
>Writing/porting your application</A
></DT
></DL
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN277"
>Requirements</A
></H4
><P
> These guidelines must be followed for any application that wants
considered for inclusion into phpGroupWare deluxe.
</P
><P
> <P
></P
><UL
><LI
STYLE="list-style-type: disc"
><P
>It must run on PHP3 and PHP4. </P
></LI
><LI
STYLE="list-style-type: disc"
><P
>SQL statements must be compatible with both MySQL
and PostgreSQL.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>It must use our default header.inc.php include.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>It must use our <TT
CLASS="CLASSNAME"
>$phpgw_link($url)</TT
> for all links
(this is for session support).</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>It must use "post" for forms.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>It must respect phpGW group rights and phpGW user permissions.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>It must use our directory structure, template support and lang
(multi-language) support.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>Where possible it should run on both Unix and NT platforms.</P
></LI
></UL
>
</P
><P
> For applications that do not meet these requirements, they can be
available to users via the phpGroupWare Apps project, or whatever
means the developers decide.If you need help converting your
application to templates and our lang support, we will try to
connect you with someone to help.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN300"
>Writing/porting your application</A
></H4
><P
><I
CLASS="EMPHASIS"
>Include files</I
></P
><P
> Each PHP page you write will need to include the header.inc.php along
with a few variables.This is done by putting this at the top of each PHP page.
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>&#60;?php
$phpgw_info["flags"]["currentapp"] = "appname";
include("../header.inc.php");
?&#62;
</PRE
></TD
></TR
></TABLE
>
Of course change application name to fit.
This include will provide the following things:
<P
></P
><UL
><LI
STYLE="list-style-type: disc"
><P
>The phpgwAPI - The phpGroupWare API will be loaded.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>The phpGW navbar will be loaded (by default, but can be disabled until a later point.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>appname/inc/functions.inc.php - This file is loaded just after the phpgwAPI
and before any HTML code is generated. This file should include all your application
specific functions..You are welcome to include any additional files you need from within
this file. </P
></LI
><LI
STYLE="list-style-type: disc"
><P
>appname/inc/header.inc.php - This file is loaded just after the system header/navbar,
and allows developers to use it for whatever they need to load.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>appname/inc/footer.inc.php - This file is loaded just before the system footer,
allowing developers to close connections and whatever else they need.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>The phpGW footer will be loaded, which closes several connections.</P
></LI
></UL
>
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="devintro.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devinstall.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Introduction</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Installing your application</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

295
doc/html/devinfra.html Normal file
View File

@ -0,0 +1,295 @@
<HTML
><HEAD
><TITLE
>Infrastructure</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Installing your application"
HREF="devinstall.html"><LINK
REL="NEXT"
TITLE="The API"
HREF="devapi.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="devinstall.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devapi.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="DEVINFRA"
>Chapter 24. Infrastructure</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="devinfra.html#AEN377"
>Overview</A
></DT
><DT
><A
HREF="devinfra.html#AEN380"
>Directory tree</A
></DT
><DT
><A
HREF="devinfra.html#AEN384"
>Translations</A
></DT
></DL
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN377"
>Overview</A
></H4
><P
> phpGroupWare attempts to provide developers with a sound directory
structure to work from. The directory layout may seem complex at first,
but after some use, you will see that it is designed to accommodate a
large number of applications and functions.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN380"
>Directory tree</A
></H4
><P
> <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>.-- addressbook
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | `-- footer.inc.php
| `-- templates
| `-- default
|-- admin
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | |-- footer.inc.php
| | `-- admin.inc.php
| `-- templates
| `-- default
|-- calendar
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | `-- footer.inc.php
| `-- templates
| `-- default
|-- cron
|-- doc
|-- email
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | |-- footer.inc.php
| | |-- preferences.inc.php
| | `-- admin.inc.php
| `-- templates
| `-- default
|-- filemanager
|-- files
| |-- groups
| `-- users
|-- inc
| |-- phpgwapi
| | |-- phpgw.inc.php
| | |-- phpgw_info.inc.php
| | |-- phpgw_common.inc.php
| | `-- etc...
| `-- templates
| |-- default
| | |-- addressbook
| | |-- admin
| | |-- calendar
| | |-- common
| | |-- email
| | |-- filemanager
| | |-- headlines
| | |-- preferences
| | |-- todo
| | `-- tts
| `-- icons
| |-- email
| |-- calendar
| `-- tts
|-- preferences
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | |-- footer.inc.php
| | `-- preferences.inc.php
| `-- templates
| `-- default
|-- themes
`-- todo
`-- images
| `-- navbar.gif
`-- inc
| |-- functions.inc.php
| |-- header.inc.php
| `-- footer.inc.php
`-- templates
`-- default
</PRE
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN384"
>Translations</A
></H4
><P
> The translations are now being done thru the database, and will be configurable
to use other mechanisms.We are completing a program called Transy, which will
provide developers/translators a nice GUI for building and updating translations.
In the mean time you will need to create a SQL script yourself and name it lang.sql.
You can copy the one in doc/lang.sql and use it as a template.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="devinstall.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devapi.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Installing your application</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>The API</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

436
doc/html/devinstall.html Normal file
View File

@ -0,0 +1,436 @@
<HTML
><HEAD
><TITLE
>Installing your application</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Guidelines"
HREF="devguid.html"><LINK
REL="NEXT"
TITLE="Infrastructure"
HREF="devinfra.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="devguid.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devinfra.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="DEVINSTALL"
>Chapter 23. Installing your application</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="devinstall.html#AEN321"
>Overview</A
></DT
><DT
><A
HREF="devinstall.html#AEN324"
>Automatic features</A
></DT
><DT
><A
HREF="devinstall.html#AEN339"
>Adding files, directories and icons.</A
></DT
><DT
><A
HREF="devinstall.html#AEN343"
>Making phpGroupWare aware of your application</A
></DT
><DT
><A
HREF="devinstall.html#AEN347"
>Hooking into Administration page</A
></DT
><DT
><A
HREF="devinstall.html#AEN359"
>section_start</A
></DT
><DT
><A
HREF="devinstall.html#AEN366"
>section_end</A
></DT
><DT
><A
HREF="devinstall.html#AEN370"
>Hooking into Preferences page</A
></DT
></DL
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN321"
>Overview</A
></H4
><P
>It is fairly simple to add and delete applications to/from phpGroupWare.</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN324"
>Automatic features</A
></H4
><P
> To make things easy for developers we go ahead and load the following files.
<P
></P
><UL
><LI
><P
> <TT
CLASS="FILENAME"
>appname/inc/functions.inc.php</TT
> - This file should include
all your application specific functions.</P
></LI
><LI
><P
> <TT
CLASS="FILENAME"
>appname/inc/header.inc.php</TT
> - This file is loaded by
<TT
CLASS="CLASSNAME"
>$phpgw-&#62;common-&#62;header</TT
> just after the system header/navbar,
and allows developers to use it for whatever they need to load.</P
></LI
><LI
><P
> <TT
CLASS="FILENAME"
>appname/inc/footer.inc.php</TT
> - This file is loaded by
<TT
CLASS="CLASSNAME"
>$phpgw-&#62;common-&#62;footer</TT
> just before the system footer,
allowing developers to close connections and whatever else they need.</P
></LI
></UL
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN339"
>Adding files, directories and icons.</A
></H4
><P
> You will need to create the following directories for your code
(replace 'appname' with your application name)
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
> `-- appname
`-- images
| `-- navbar.gif
`-- inc
| |-- functions.inc.php
| |-- header.inc.php
| |-- footer.inc.php
| |-- preferences.inc.php
| `-- admin.inc.php
`-- templates
`-- default
</PRE
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN343"
>Making phpGroupWare aware of your application</A
></H4
><P
> To make the application aware of your application, add your application details to the applications table. This can be done via the GUI administration screen, or via a SQL script.
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
> insert into applications (app_name, app_title, app_enabled) values ('appname', 'The App name', 1);</PRE
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN347"
>Hooking into Administration page</A
></H4
><P
> When a user goes to the Administration page, it stats appname/inc/admin.inc.php
for each application that is enabled, in alphabetical order of application title.
If the file exists, it is include()d in the hopes it will display a selection of
links to configure that application.
Simple Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>&#60;?php
$img = "/" . $appname . "/images/navbar.gif";
section_start("My Application",$img);
echo "&#60;a HREF=\"" . $phpgw-&#62;link("myAdminPage.php") . "\"&#62;";
echo lang("Change myApp settings") . "&#60;/a&#62;";
section_end();
?&#62;
</PRE
></TD
></TR
></TABLE
>
Look at headlines/inc/admin.inc.php and admin/inc/admin.inc.php for more examples.
Things to note:
<P
></P
><UL
><LI
STYLE="list-style-type: disc"
><P
>Links are relative to the <TT
CLASS="FILENAME"
>admin/index.php</TT
> file, not your
application's base directory. (so use <TT
CLASS="CLASSNAME"
>$appname</TT
> in your
<TT
CLASS="CLASSNAME"
>link()</TT
> calls)</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>The file is brought in with include() so be careful to not pollute the name-space
too much</P
></LI
></UL
>
The standard $phpgw and $phpgw_info variables are in-scope, as is $appname
which corresponds to the application name in the path.
There are 2 functions to coordinate the display of each application's links,
section_start() and section_end()
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN359"
>section_start</A
></H4
><P
> <TT
CLASS="CLASSNAME"
>section_start($title,$icon_url)</TT
>
starts the section for your application. <TT
CLASS="CLASSNAME"
>$title</TT
> is passed through
<TT
CLASS="CLASSNAME"
>lang()</TT
>
for you. <TT
CLASS="CLASSNAME"
>$icon_url</TT
> should be page-relative to admin/index.php or
an absolute URL.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN366"
>section_end</A
></H4
><P
> <TT
CLASS="CLASSNAME"
>section_end()</TT
> closes the section that was started with section_start().
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN370"
>Hooking into Preferences page</A
></H4
><P
> The mechanism to hook into the preferences page is identical to the one used to
hook into the administration page, however it looks for
<TT
CLASS="FILENAME"
>appname/inc/preferences.inc.php</TT
> instead of
<TT
CLASS="FILENAME"
>appname/inc/admin.inc.php</TT
>. The same functions and variables are defined.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="devguid.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devinfra.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Guidelines</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Infrastructure</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

185
doc/html/devintro.html Normal file
View File

@ -0,0 +1,185 @@
<HTML
><HEAD
><TITLE
>Introduction</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="NEXT"
TITLE="Guidelines"
HREF="devguid.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="p261.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devguid.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="DEVINTRO"
>Chapter 21. Introduction</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="devintro.html#AEN269"
>Overview of application writing</A
></DT
><DT
><A
HREF="devintro.html#AEN272"
>What does the phpGroupWare API provide?</A
></DT
></DL
></DIV
><P
> phpGroupWare is a web based groupware application framework (API),
for writing applications. Integrated applications such as email,
calendar, todo list, address book, and file manager are included.
</P
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN269"
>Overview of application writing</A
></H4
><P
> We have attempted to make writing application for phpGroupWare as
painless as possible. We hope any pain and suffering is cause by making
your application work, but not dealing with phpGroupWare itself.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN272"
>What does the phpGroupWare API provide?</A
></H4
><P
> The phpGroupWare API handles session management, user/group management,
has support for multiple databases, using the PHPLIB database abstraction
method, we support templates using the PHPLIB Templates class, a file
system interface, and even a network i/o interface. On top of these
standard functions, phpGroupWare provides several functions to give
you the information you need about the users environment, and to properly
plug into phpGroupWare.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="p261.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devguid.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Developers Documentation</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Guidelines</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

491
doc/html/devlangsup.html Normal file
View File

@ -0,0 +1,491 @@
<HTML
><HEAD
><TITLE
>Using Language Support</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Configuration Variables"
HREF="devconfvar.html"><LINK
REL="NEXT"
TITLE="Using Templates"
HREF="devtemp.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="devconfvar.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devtemp.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="DEVLANGSUP"
>Chapter 27. Using Language Support</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="devlangsup.html#AEN632"
>Overview</A
></DT
><DT
><A
HREF="devlangsup.html#AEN635"
>How to use lang support</A
></DT
><DT
><A
HREF="devlangsup.html#AEN644"
>The lang function</A
></DT
><DT
><A
HREF="devlangsup.html#AEN668"
>Adding translation data</A
></DT
><DT
><A
HREF="devlangsup.html#AEN672"
>The lang table</A
></DT
><DT
><A
HREF="devlangsup.html#AEN695"
>lang.sql</A
></DT
><DT
><A
HREF="devlangsup.html#AEN706"
>Common return codes</A
></DT
></DL
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN632"
>Overview</A
></H4
><P
> phpGroupWare is built using a multi-language support scheme. This means the pages can be
translated to other languages very easily. Translations of text strings are
stored in the phpGroupWare database, and can be modified by the phpGroupWare
administrator.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN635"
>How to use lang support</A
></H4
><P
> The <TT
CLASS="CLASSNAME"
>lang()</TT
> function is your application's interface to phpGroupWare's
internationalization support.
While developing your application, just wrap all your text output with calls to
lang(), as in the following code:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
> $x = 42;
echo lang("The counter is %1",$x)."&#60;br&#62;";</PRE
></TD
></TR
></TABLE
>
This will attempt to translate "The counter is %1", and return a translated version
based on the current application and language in use. Note how the position that
<TT
CLASS="CLASSNAME"
>$x</TT
> will end up is controlled by the format string, <I
CLASS="EMPHASIS"
>not</I
> by
building up the string in your code. This allows your application to be translated
to languages where the actual number is not placed at the end of the string.
When a translation is not found, the original text will be returned with a * after
the string. This makes it easy to develop your application, then go back and
add missing translations (identified by the *) later.
Without a specific translation in the lang table, the above code will print:
<TT
CLASS="CLASSNAME"
>The counter is 42*&#60;br&#62;</TT
>
If the current user speaks Italian, they string returned may instead be:
<TT
CLASS="CLASSNAME"
>il contatore è 42&#60;br&#62;</TT
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN644"
>The lang function</A
></H4
><P
> <TT
CLASS="CLASSNAME"
>lang($key, $m1="", $m2="", $m3="", $m4="", $m5="",
$m6="", $m7="", $m8="", $m9="", $m10="")
</TT
>
<P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
>$key</DT
><DD
><P
>is the string to translate and may contain replacement directives of the form <TT
CLASS="CLASSNAME"
>%n</TT
>. </P
></DD
><DT
>$m1</DT
><DD
><P
> is the first replacement value or may be an array of replacement values (in which case $m2 and above are ignored). </P
></DD
><DT
>$m2</DT
><DD
><P
>- $m10/ the 2nd through 10th replacement values if $m1 is not an array. </P
></DD
></DL
></DIV
>
The database is searched for rows with a <TT
CLASS="CLASSNAME"
>lang.message_id</TT
> that matches <TT
CLASS="CLASSNAME"
>$key</TT
>.
If a translation is not found, the original <TT
CLASS="CLASSNAME"
>$key</TT
> is used. The translation engine then replaces
all tokens of the form <TT
CLASS="CLASSNAME"
>%N</TT
> with the Nth parameter (either <TT
CLASS="CLASSNAME"
>$m1[N]</TT
> or <TT
CLASS="CLASSNAME"
>$mN</TT
>).
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN668"
>Adding translation data</A
></H4
><P
> An application called <I
CLASS="EMPHASIS"
>Transy</I
> is being developed to make this easier, until then you can create
the translation data manually.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN672"
>The lang table</A
></H4
><P
> The translation class uses the lang table for all translations.
We are concerned with 4 of the columns to create a translation:
<P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
>message_id</DT
><DD
><P
> The key to identify the message (the <TT
CLASS="CLASSNAME"
>$key</TT
> passed
to the <TT
CLASS="CLASSNAME"
>lang()</TT
> function). This is written in English.
</P
></DD
><DT
>app_name</DT
><DD
><P
> The application the translation applies to, or
<TT
CLASS="CLASSNAME"
>common</TT
> if it is common across multiple applications.
</P
></DD
><DT
>lang</DT
><DD
><P
>The code for the language the translation is in. </P
></DD
><DT
>content</DT
><DD
><P
>The translated string. </P
></DD
></DL
></DIV
>
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN695"
>lang.sql</A
></H4
><P
> Currently all applications, and the core phpGroupWare source tree
have a <TT
CLASS="CLASSNAME"
>lang.sql</TT
> file. This is the place to add translation
data. Just add lines of the form:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>REPLACE INTO lang (message_id, app_name, lang, content)
VALUES( 'account has been deleted','common','en','Account has been deleted');</PRE
></TD
></TR
></TABLE
>
translating the <TT
CLASS="CLASSNAME"
>content</TT
> to reflect the <TT
CLASS="CLASSNAME"
>message_id</TT
> string in the <TT
CLASS="CLASSNAME"
>lang</TT
> language.
If the string is specific to your application, put your application name in for <TT
CLASS="CLASSNAME"
>app_name</TT
>
otherwise use the name <TT
CLASS="CLASSNAME"
>common</TT
>. The <TT
CLASS="CLASSNAME"
>message_id</TT
> should be in lower case for a small
increase in speed.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN706"
>Common return codes</A
></H4
><P
> If you browse through the phpGroupWare sources, you may notice
a pattern to the return codes used in the higher-level functions.
The codes used are partially documented in the <TT
CLASS="CLASSNAME"
>doc/developers/CODES</TT
>
file.
Codes are used as a simple way to communicate common error and progress
conditions back to the user. They are mapped to a text string through the
<TT
CLASS="CLASSNAME"
>check_code()</TT
> function, which passes the strings through
<TT
CLASS="CLASSNAME"
>lang()</TT
> before returning.
For example, calling
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>echo check_code(13);</PRE
></TD
></TR
></TABLE
>
Would print
<TT
CLASS="CLASSNAME"
>Your message has been sent</TT
>
translated into the current language.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="devconfvar.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devtemp.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Configuration Variables</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Using Templates</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

175
doc/html/devtemp.html Normal file
View File

@ -0,0 +1,175 @@
<HTML
><HEAD
><TITLE
>Using Templates</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p261.html"><LINK
REL="PREVIOUS"
TITLE="Using Language Support"
HREF="devlangsup.html"><LINK
REL="NEXT"
TITLE="About developers docs"
HREF="devabout.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="devlangsup.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devabout.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="DEVTEMP"
>Chapter 28. Using Templates</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="devtemp.html#AEN716"
>Overview</A
></DT
><DT
><A
HREF="devtemp.html#AEN719"
>How to use templates</A
></DT
></DL
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN716"
>Overview</A
></H4
><P
> phpGroupWare is built using a templates based design. This means the display pages, stored in tpl files, can be translated to other languages, made to look completely different.
</P
></DIV
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN719"
>How to use templates</A
></H4
><P
> Some instructions on using templates.
</P
><P
> For Further info read the PHPLIBs documentation for their template class.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="devlangsup.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devabout.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Using Language Support</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p261.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>About developers docs</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

20
doc/html/docbook.css Normal file
View File

@ -0,0 +1,20 @@
.BOOK .TITLE { text-align: center }
.BOOK .SUBTITLE { text-align: center }
.BOOK .CORPAUTHOR { text-align: center }
.BOOK .AUTHOR { text-align: center }
.BOOK .AFFILIATION { text-align: center }
.BOOK .EDITEDBY { text-align: center }
.BOOK .EDITOR { text-align: center }
.BOOK .GRAPHIC { text-align: center }
.ARTICLE .TITLE { text-align: center }
.ARTICLE .SUBTITLE { text-align: center }
.ARTICLE .CORPAUTHOR { text-align: center }
.ARTICLE .AUTHOR { text-align: center }
.ARTICLE .AFFILIATION { text-align: center }
.ARTICLE .EDITEDBY { text-align: center }
.ARTICLE .EDITOR { text-align: center }
.ARTICLE .GRAPHIC { text-align: center }
.ARTICLE .ABSTRACT { margin-left: 0.5in;
margin-right: 0.5in;
font-style: italic }

View File

@ -1,7 +1,7 @@
<HTML
><HEAD
><TITLE
>Copyright</TITLE
>A short History</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
@ -12,11 +12,11 @@ REL="UP"
TITLE="Introduction"
HREF="p21.html"><LINK
REL="PREVIOUS"
TITLE="A short History"
HREF="apphis.html"><LINK
TITLE="Why should u use it"
HREF="why.html"><LINK
REL="NEXT"
TITLE="Installation"
HREF="p43.html"></HEAD
HREF="p39.html"></HEAD
><BODY
CLASS="CHAPTER"
><DIV
@ -38,7 +38,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="apphis.html"
HREF="why.html"
>Prev</A
></TD
><TD
@ -51,7 +51,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="p43.html"
HREF="p39.html"
>Next</A
></TD
></TR
@ -63,14 +63,24 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
NAME="COPYRIGHT"
>Chapter 4. Copyright</A
NAME="DOCHIS"
>Chapter 3. A short History</A
></H1
><P
> Copyright (c) Dan Kuykendall.
> This document was started by Joseph Engo and reworked by Dan Kuykendall and converted to do
DocBook By Powell Molleti.
</P
><DIV
CLASS="SIMPLESECT"
><H4
CLASS="SIMPLESECT"
><A
NAME="AEN34"
>Copyright</A
></H4
><P
> Permission is granted to copy, distribute and/or modify this document
> Copyright (c) Dan Kuykendall.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation
A copy of the license is available at
@ -85,6 +95,7 @@ CLASS="CITETITLE"
>
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
@ -100,7 +111,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="apphis.html"
HREF="why.html"
>Prev</A
></TD
><TD
@ -116,7 +127,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="p43.html"
HREF="p39.html"
>Next</A
></TD
></TR
@ -125,7 +136,7 @@ HREF="p43.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>A short History</TD
>Why should u use it</TD
><TD
WIDTH="34%"
ALIGN="center"

View File

@ -1,133 +0,0 @@
<HTML
><HEAD
><TITLE
>add your topic seek</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developing Add-On Apps"
HREF="devaddapp.html"><LINK
REL="PREVIOUS"
TITLE="Developing Add-On Apps"
HREF="devaddapp.html"><LINK
REL="NEXT"
TITLE=" API documentation"
HREF="apidocs.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="devaddapp.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 22. Developing Add-On Apps</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="apidocs.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="ETC"
>add your topic seek</A
></H1
><P
> text for the appropriate topic
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="devaddapp.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="apidocs.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Developing Add-On Apps</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="devaddapp.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>API documentation</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -59,7 +59,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
NAME="AEN237"
NAME="AEN186"
></A
><DIV
CLASS="TITLEPAGE"
@ -69,11 +69,11 @@ CLASS="TITLE"
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN239"
NAME="AEN188"
></A
><P
> Using phpGroupWare is a cake walk , thats what people say :-). Reading this doc would
definitely give a head start. If you ever come cross any problem please report to
definitely give a head start. If u ever comea cross any problem please report to
</P
></DIV
><DIV
@ -84,52 +84,52 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
>9. <A
>8. <A
HREF="logingin.html"
>Loging into phpgw</A
></DT
><DT
>10. <A
>9. <A
HREF="checkmail.html"
>checking Email</A
></DT
><DT
>11. <A
>10. <A
HREF="addressbook.html"
>Using Addressbook</A
></DT
><DT
>12. <A
>11. <A
HREF="calender.html"
>Using Calender</A
></DT
><DT
>13. <A
>12. <A
HREF="fileman.html"
>Managing Files with file manager</A
></DT
><DT
>14. <A
>13. <A
HREF="headlines.html"
>Getting Headlines</A
></DT
><DT
>15. <A
>14. <A
HREF="hr.html"
>Human Resources</A
></DT
><DT
>16. <A
>15. <A
HREF="pref.html"
>Preferences</A
></DT
><DT
>17. <A
>16. <A
HREF="todo.html"
>Using todo</A
></DT
><DT
>18. <A
>17. <A
HREF="tobtick.html"
>Using Trouble ticket</A
></DT

View File

@ -59,7 +59,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
NAME="AEN274"
NAME="AEN223"
></A
><DIV
CLASS="TITLEPAGE"
@ -69,7 +69,7 @@ CLASS="TITLE"
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN276"
NAME="AEN225"
></A
><P
> To administer phpGroupWare you need not be a PHP hacker. All you need to do is again just
@ -85,17 +85,17 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
>19. <A
>18. <A
HREF="useracc.html"
>User Accounts</A
></DT
><DT
>20. <A
>19. <A
HREF="groupacc.html"
>Group Accounts</A
></DT
><DT
>21. <A
>20. <A
HREF="app.html"
>Applications</A
></DT

194
doc/html/p261.html Normal file
View File

@ -0,0 +1,194 @@
<HTML
><HEAD
><TITLE
>Developers Documentation</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="PREVIOUS"
TITLE="Updating"
HREF="updata.html"><LINK
REL="NEXT"
TITLE="Introduction"
HREF="devintro.html"></HEAD
><BODY
CLASS="PART"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="updata.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devintro.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
NAME="AEN261"
></A
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
>V. Developers Documentation</H1
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN263"
></A
><P
> Dan Kuykendall &#60;dan@kuykendall.org&#62;
</P
><P
> This document explains phpGroupWare's infrastructure and API, along with
what is required to integrate applications into it.
</P
></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>21. <A
HREF="devintro.html"
>Introduction</A
></DT
><DT
>22. <A
HREF="devguid.html"
>Guidelines</A
></DT
><DT
>23. <A
HREF="devinstall.html"
>Installing your application</A
></DT
><DT
>24. <A
HREF="devinfra.html"
>Infrastructure</A
></DT
><DT
>25. <A
HREF="devapi.html"
>The API</A
></DT
><DT
>26. <A
HREF="devconfvar.html"
>Configuration Variables</A
></DT
><DT
>27. <A
HREF="devlangsup.html"
>Using Language Support</A
></DT
><DT
>28. <A
HREF="devtemp.html"
>Using Templates</A
></DT
><DT
><A
HREF="devabout.html"
>About developers docs</A
></DT
></DL
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="updata.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devintro.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Updating</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Introduction</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -9,8 +9,8 @@ REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="PREVIOUS"
TITLE="Copyright"
HREF="copyright.html"><LINK
TITLE="A short History"
HREF="dochis.html"><LINK
REL="NEXT"
TITLE="Requirements"
HREF="requirements.html"></HEAD
@ -35,7 +35,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="copyright.html"
HREF="dochis.html"
>Prev</A
></TD
><TD
@ -59,7 +59,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
NAME="AEN43"
NAME="AEN39"
></A
><DIV
CLASS="TITLEPAGE"
@ -69,18 +69,12 @@ CLASS="TITLE"
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN45"
NAME="AEN41"
></A
><P
>&#13;<P
CLASS="LITERALLAYOUT"
>Installation/Upgrade&nbsp;and&nbsp;Configuration&nbsp;of&nbsp;phpGroupWare&nbsp;has&nbsp;been&nbsp;made&nbsp;as&nbsp;easy&nbsp;as&nbsp;possible.&nbsp;<br>
Most&nbsp;of&nbsp;the&nbsp;work&nbsp;is&nbsp;point&nbsp;and&nbsp;click.&nbsp;<br>
By&nbsp;carefully&nbsp;reading&nbsp;this&nbsp;document&nbsp;you&nbsp;can&nbsp;easly&nbsp;install&nbsp;phpGroupWare.</P
>
</P
><P
> Since this is still a beta version we do expect some bugs.
> Installation and Configuration of phpGroupWare has never been easy. Just point and click , yeah
its very easy :-). Since this is still a beta version we do expect some bugs . By carefully reading
this document you can easly install phpGroupWare.
</P
></DIV
><DIV
@ -91,23 +85,23 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
>5. <A
>4. <A
HREF="requirements.html"
>Requirements</A
></DT
><DT
>6. <A
>5. <A
HREF="obtaining.html"
>Obtaining phpGroupWare</A
></DT
><DT
>7. <A
>6. <A
HREF="installing.html"
>Installation Steps</A
>Installing on Tested Systems</A
></DT
><DT
>8. <A
HREF="troubleshoot.html"
>7. <A
HREF="trobleshooting.html"
>Trouble Shooting</A
></DT
></DL
@ -129,7 +123,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="copyright.html"
HREF="dochis.html"
>Prev</A
></TD
><TD
@ -154,7 +148,7 @@ HREF="requirements.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Copyright</TD
>A short History</TD
><TD
WIDTH="34%"
ALIGN="center"

View File

@ -1,7 +1,7 @@
<HTML
><HEAD
><TITLE
>Developers Documentation</TITLE
>About</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
@ -9,11 +9,11 @@ REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="PREVIOUS"
TITLE="Updating"
HREF="updata.html"><LINK
TITLE="About developers docs"
HREF="devabout.html"><LINK
REL="NEXT"
TITLE="Developing Add-On Apps"
HREF="devaddapp.html"></HEAD
TITLE="About this document"
HREF="about.html"></HEAD
><BODY
CLASS="PART"
><DIV
@ -35,7 +35,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="updata.html"
HREF="devabout.html"
>Prev</A
></TD
><TD
@ -48,7 +48,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="devaddapp.html"
HREF="about.html"
>Next</A
></TD
></TR
@ -59,23 +59,20 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
NAME="AEN312"
NAME="AEN731"
></A
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
>V. Developers Documentation</H1
>VII. About</H1
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN314"
NAME="AEN733"
></A
><P
> This documentation is for developers who want to hack into the core of the
phpGroupWare. Please follow this documentation carefully before u take a jump into
the code :)
</P
></P
></DIV
><DIV
CLASS="TOC"
@ -85,14 +82,9 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
>22. <A
HREF="devaddapp.html"
>Developing Add-On Apps</A
></DT
><DT
>23. <A
HREF="apidocs.html"
>API documentation</A
>29. <A
HREF="about.html"
>About this document</A
></DT
></DL
></DIV
@ -113,7 +105,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="updata.html"
HREF="devabout.html"
>Prev</A
></TD
><TD
@ -129,7 +121,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="devaddapp.html"
HREF="about.html"
>Next</A
></TD
></TR
@ -138,7 +130,7 @@ HREF="devaddapp.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Updating</TD
>About developers docs</TD
><TD
WIDTH="34%"
ALIGN="center"
@ -148,7 +140,7 @@ VALIGN="top"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Developing Add-On Apps</TD
>About this document</TD
></TR
></TABLE
></DIV

View File

@ -10,10 +10,10 @@ TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Installation"
HREF="p43.html"><LINK
HREF="p39.html"><LINK
REL="PREVIOUS"
TITLE="Installing additional applications"
HREF="x161.html"><LINK
HREF="x114.html"><LINK
REL="NEXT"
TITLE="It seems to hang when I try to read my mail"
HREF="trob2.html"></HEAD
@ -38,7 +38,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x161.html"
HREF="x114.html"
>Prev</A
></TD
><TD
@ -63,8 +63,8 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
NAME="TROUBLESHOOT"
>Chapter 8. Trouble Shooting</A
NAME="TROBLESHOOTING"
>Chapter 7. Trouble Shooting</A
></H1
><DIV
CLASS="TOC"
@ -75,7 +75,7 @@ CLASS="TOC"
></DT
><DT
><A
HREF="troubleshoot.html#TROB1"
HREF="trobleshooting.html#TROB1"
>I get "Unable to open mailbox" when using the email application</A
></DT
><DT
@ -101,20 +101,18 @@ CLASS="WARNING"
></P
><TABLE
CLASS="WARNING"
BORDER="1"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><B
>Warning</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> phpGroupWare is still Beta software, expect some bugs
along the way. If you run into a problem not discussed here, contact us
@ -175,7 +173,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x161.html"
HREF="x114.html"
>Prev</A
></TD
><TD
@ -206,7 +204,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p43.html"
HREF="p39.html"
>Up</A
></TD
><TD

View File

@ -9,14 +9,14 @@ REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Installation Steps"
TITLE="Installing on Tested Systems"
HREF="installing.html"><LINK
REL="PREVIOUS"
TITLE="Setup / Configure phpGroupWare"
HREF="x112.html"><LINK
HREF="x85.html"><LINK
REL="NEXT"
TITLE="Installing additional applications"
HREF="x161.html"></HEAD
HREF="x114.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
@ -38,20 +38,20 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x112.html"
HREF="x85.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 7. Installation Steps</TD
>Chapter 6. Installing on Tested Systems</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x161.html"
HREF="x114.html"
>Next</A
></TD
></TR
@ -64,7 +64,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN156"
NAME="AEN109"
>Testing the install</A
></H1
><P
@ -95,7 +95,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x112.html"
HREF="x85.html"
>Prev</A
></TD
><TD
@ -111,7 +111,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x161.html"
HREF="x114.html"
>Next</A
></TD
></TR

View File

@ -1,342 +0,0 @@
<HTML
><HEAD
><TITLE
>Setup / Configure phpGroupWare</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Installation Steps"
HREF="installing.html"><LINK
REL="PREVIOUS"
TITLE="Installing from CVS"
HREF="cvsins.html"><LINK
REL="NEXT"
TITLE="Testing the install"
HREF="x156.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="cvsins.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 7. Installation Steps</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x156.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN112"
>Setup / Configure phpGroupWare</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN114"
>The config file</A
></H2
><P
> Copy the <TT
CLASS="FILENAME"
>header.inc.php.sample</TT
> file to
<TT
CLASS="FILENAME"
>header.inc.php</TT
> and edit the file, following the
directions in the comments.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN119"
>Create database in MySQL</A
></H2
><P
> An empty database will be needed for phpGroupWare. Here are the instructions for doing so with MySQL.
First create the database:
<P
><B
CLASS="COMMAND"
>mysqladmin create phpgroupware -p</B
> </P
>
Then login to the mysql:
<P
><B
CLASS="COMMAND"
>mysql -p</B
> </P
>
Finally grant the needed security rights:
<P
><B
CLASS="COMMAND"
>grant all on phpgroupware.* to phpgroupware@localhost identified by "some_password";</B
> </P
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN128"
>Create database in PostreSQL</A
></H2
><P
> An empty database will be needed for phpGroupWare. Here are the instructions for doing so with PostgreSQL.
Create the database:
<P
><B
CLASS="COMMAND"
>postmaster -i -D /home/[username]/[dataDir]</B
> </P
>
You will probably need to review PostgreSQL documentation for futher details.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN133"
>The Setup Program</A
></H2
><P
> Then point your browser to phpgroupware/setup/ which will
create (or upgrade) the database tables.
You wil be asked to login, using the password set in
<TT
CLASS="FILENAME"
>header.inc.php</TT
>. Setup will attempt to determine what version
of the phpGroupWare database you have installed, and upgrade to the most recent
version.
</P
><DIV
CLASS="NOTE"
><P
></P
><TABLE
CLASS="NOTE"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TH
ALIGN="LEFT"
VALIGN="CENTER"
><B
>Note</B
></TH
></TR
><TR
><TD
>&nbsp;</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> The developers are concentrating on getting the beta
working, and have not spent a great deal of time building upgrade scripts from the
alpha versions of phpGroupWare. You are advised to backup your existing alpha
database before running the setup script to avoid problems!
</P
></TD
></TR
></TABLE
></DIV
><P
> If you get no error messages, continue on to phpgroupware/setup/config.php
to configure phpGroupWare to your system.
</P
><P
> If you are using the email system you will need to create a temporary directory
where file uploads will be stored. For security reasons, you should <TT
CLASS="CONSTANT"
>chown
nobody.nobody</TT
> and <TT
CLASS="CONSTANT"
>chmod 700</TT
> to that directory. Depending on your system configuration.
Default installs of Apache normally run as the user nobody. You may need your system
administrator to do this for you if you do not have root access.
</P
><P
> If you do not have access to root, create this file and run it.
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>?php
if (mkdir("/path/to/temp/directory",0700)) {
echo "Directory created successfully";
} else {
echo "Error creating directory";
}
?
</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN146"
>The phpGroupWare Daemon</A
></H2
><P
> If you have access to cron, you may want to setup the files in the cron
directory.
</P
><P
> stalesessions.pl - There are 2 reasons for this file.
<P
></P
><UL
><LI
STYLE="list-style-type: disc"
><P
>Users always forget to logout. This way the session doesn't sit around forever, creating a possible security risk.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>The email system requires plain text passwords which are stored in the sessions table.</P
></LI
></UL
>
This file is not required, you can simply disable cron_apps in the admin -&#62; applications section
to clean out the sessions table during login and logout
</P
><P
> stale_uploads.pl - This will delete file attachments for messages that where not
completed. If a users browser crashes, Internet connection dies, etc, their
files will sit there forever unless deleted. You could add a few lines to
logout.php that will look in the temp directory for any stale uploads and delete
them. But, once again, it becomes a performance issue.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="cvsins.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x156.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Installing from CVS</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="installing.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Testing the install</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -9,14 +9,14 @@ REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Installation Steps"
TITLE="Installing on Tested Systems"
HREF="installing.html"><LINK
REL="PREVIOUS"
TITLE="Testing the install"
HREF="x156.html"><LINK
HREF="x109.html"><LINK
REL="NEXT"
TITLE="Trouble Shooting"
HREF="troubleshoot.html"></HEAD
HREF="trobleshooting.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
@ -38,20 +38,20 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x156.html"
HREF="x109.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 7. Installation Steps</TD
>Chapter 6. Installing on Tested Systems</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="troubleshoot.html"
HREF="trobleshooting.html"
>Next</A
></TD
></TR
@ -64,7 +64,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN161"
NAME="AEN114"
>Installing additional applications</A
></H1
><P
@ -108,20 +108,24 @@ CLASS="CITETITLE"
><LI
STYLE="list-style-type: disc"
><P
>Download the .tar.gz file for the application, or check out the source with cvs with
<P
><B
CLASS="COMMAND"
>export CVSROOT=':pserver:anonymous@cvs.phpgroupware.sourceforge.net:/cvsroot/phpgwapps'</B
> <BR><B
CLASS="COMMAND"
>cvs login (just hit enter if prompted for a password)</B
> <BR><B
CLASS="COMMAND"
>cvs co headlines</B
> <BR></P
>
</P
>Download the .tar.gz file for the application, or check out the source
with cvs with
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>export CVSROOT=':pserver:anonymous@cvs.phpgroupware.sourceforge.net:/cvsroot/phpgwapps'
cvs login (just hit enter if prompted for a password)
cvs co headlines
</PRE
></TD
></TR
></TABLE
></P
></LI
><LI
STYLE="list-style-type: disc"
@ -204,8 +208,7 @@ STYLE="list-style-type: disc"
><P
>Once you enable a few of the Headlines sites through the Administration page link, you
should see headlines grabbed from the sites you selected when you click on the Headlines
icon in the navigation bar.
</P
icon in the navigation bar.</P
></LI
></UL
>
@ -226,7 +229,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x156.html"
HREF="x109.html"
>Prev</A
></TD
><TD
@ -242,7 +245,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="troubleshoot.html"
HREF="trobleshooting.html"
>Next</A
></TD
></TR

170
doc/html/x398.html Normal file
View File

@ -0,0 +1,170 @@
<HTML
><HEAD
><TITLE
>Basic functions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="The API"
HREF="devapi.html"><LINK
REL="PREVIOUS"
TITLE="The API"
HREF="devapi.html"><LINK
REL="NEXT"
TITLE="Application Functions"
HREF="x407.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="devapi.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 25. The API</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x407.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN398"
>Basic functions</A
></H1
><P
></P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN401"
>$phpgw-&#62;link</A
></H2
><P
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;link($url)</TT
>
</P
><P
> Add support for session management. ALL links must use this, that includes href's form actions and header location's.
If you are just doing a form action back to the same page, you can use it without any parameters.
This function is right at the core of the class because it is used so often, we wanted to save developers a few keystrokes.
Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>&#60;form name=copy method=post action="&#60;?php echo $phpgw-&#62;link();?&#62;"&#62;
/* If session management is done via passing url parameters */
/* The the result would be */
/* &#60;form name=copy method=post action="somepage.php?sessionid=87687693276?kp3=kjh98u80"&#62; */
</PRE
></TD
></TR
></TABLE
>
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="devapi.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x407.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The API</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="devapi.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Application Functions</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

227
doc/html/x407.html Normal file
View File

@ -0,0 +1,227 @@
<HTML
><HEAD
><TITLE
>Application Functions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="The API"
HREF="devapi.html"><LINK
REL="PREVIOUS"
TITLE="Basic functions"
HREF="x398.html"><LINK
REL="NEXT"
TITLE="File functions"
HREF="x434.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x398.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 25. The API</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x434.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN407"
>Application Functions</A
></H1
><P
></P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN410"
>$phpgw-&#62;common-&#62;phpgw_header</A
></H2
><P
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;phpgw_header()</TT
>
</P
><P
> Print out the start of the HTML page, including the navigation bar
and includes <TT
CLASS="FILENAME"
>appname/inc/header.php</TT
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN416"
>$phpgw-&#62;common-&#62;phpgw_footer</A
></H2
><P
><TT
CLASS="CLASSNAME"
>$phpgw-&#62;phpgw_footer()</TT
></P
><P
> Prints the system footer, and includes <TT
CLASS="FILENAME"
>appname/inc/footer.php</TT
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN422"
>$phpgw-&#62;common-&#62;appsession</A
></H2
><P
><TT
CLASS="CLASSNAME"
>$phpgw-&#62;common-&#62;appsession($data)</TT
></P
><P
> Store important information session information that your
application needs.
</P
><P
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;appsession</TT
> will return the value of your session data is
you leave the parameter empty [i.e. <TT
CLASS="CLASSNAME"
>$phpgw-&#62;appsession("")</TT
>], otherwise
it will store whatever data you send to it.
</P
><P
> You can also store a comma delimited string and use <TT
CLASS="CLASSNAME"
>explode()</TT
>
to turn it back into an array when you receive the value back.
</P
><P
> Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
> $phpgw-&#62;common-&#62;appsession("/path/to/something");
echo "Dir: " . $phpgw-&#62;common-&#62;appsession();</PRE
></TD
></TR
></TABLE
>
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x398.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x434.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Basic functions</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="devapi.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>File functions</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

309
doc/html/x434.html Normal file
View File

@ -0,0 +1,309 @@
<HTML
><HEAD
><TITLE
>File functions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="The API"
HREF="devapi.html"><LINK
REL="PREVIOUS"
TITLE="Application Functions"
HREF="x407.html"><LINK
REL="NEXT"
TITLE="Email/NNTP Functions"
HREF="x471.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x407.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 25. The API</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x471.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN434"
>File functions</A
></H1
><P
></P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN437"
>$phpgw-&#62;vfs-&#62;read_file</A
></H2
><P
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;vfs-&#62;read_file($file)</TT
> Returns the data from
<TT
CLASS="CLASSNAME"
>$file</TT
>.
You must send the complete path to the file.
</P
><P
> Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>$data = $phpgw-&#62;vfs-&#62;read_file("/some/dir/to/file.txt");</PRE
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN444"
>$phpgw-&#62;vfs-&#62;write_file</A
></H2
><P
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;vfs-&#62;write_file($file, $contents)</TT
>
Write data to <TT
CLASS="CLASSNAME"
>$file</TT
>.
You must send the complete path to the file.
</P
><P
> Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>$data = $phpgw-&#62;vfs-&#62;write_file("/some/dir/to/file.txt");</PRE
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN451"
>$phpgw-&#62;vfs-&#62;read_userfile</A
></H2
><P
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;vfs-&#62;read_userfile($file)</TT
>
Returns the data from <TT
CLASS="CLASSNAME"
>$file</TT
>, which resides
in the users private dir.
</P
><P
> Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>$data = $phpgw-&#62;vfs-&#62;read_userfile("file.txt");</PRE
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN458"
>$phpgw-&#62;vfs-&#62;write_userfile</A
></H2
><P
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;write_userfile($file, $contents)</TT
>
Writes data to <TT
CLASS="CLASSNAME"
>$file</TT
>, which resides in the
users private dir.
</P
><P
> Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>$data = $phpgw-&#62;vfs-&#62;write_userfile("file.txt");</PRE
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN465"
>$phpgw-&#62;vfs-&#62;list_userfiles</A
></H2
><P
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;vfs-&#62;list_userfiles()</TT
>
Returns an array which has the list of files in the users private dir.
</P
><P
> Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>$filelist = array();
$filelist = $phpgw-&#62;vfs-&#62;list_userfiles();</PRE
></TD
></TR
></TABLE
>
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x407.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x471.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Application Functions</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="devapi.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Email/NNTP Functions</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -1,7 +1,7 @@
<HTML
><HEAD
><TITLE
> API documentation</TITLE
>Email/NNTP Functions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
@ -9,16 +9,16 @@ REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Developers Documentation"
HREF="p312.html"><LINK
TITLE="The API"
HREF="devapi.html"><LINK
REL="PREVIOUS"
TITLE="add your topic seek"
HREF="etc.html"><LINK
TITLE="File functions"
HREF="x434.html"><LINK
REL="NEXT"
TITLE="About this document"
HREF="p331.html"></HEAD
TITLE="Configuration Variables"
HREF="devconfvar.html"></HEAD
><BODY
CLASS="CHAPTER"
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
@ -38,20 +38,20 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="etc.html"
HREF="x434.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
>Chapter 25. The API</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="p331.html"
HREF="devconfvar.html"
>Next</A
></TD
></TR
@ -60,26 +60,48 @@ HREF="p331.html"
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="APIDOCS"
>Chapter 23. API documentation</A
NAME="AEN471"
>Email/NNTP Functions</A
></H1
><P
>
text for the API documentation chapter
</P
></P
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="FUNCTION1"
>function1(or what ever)</A
></H1
NAME="AEN474"
>$phpgw-&#62;send-&#62;msg</A
></H2
><P
> the function you want to include seek.
> <TT
CLASS="CLASSNAME"
>$phpgw-&#62;msg-&#62;send($service, $to, $subject, $body, $msgtype, $cc, $bcc)</TT
>
Send a message via email or NNTP and returns any error codes.
</P
><P
> Example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>$to = "someuser@domain.com";
$subject = "Hello buddy";
$body = "Give me a call\n Been wondering what your up to.";
$errors = $phpgw-&#62;msg-&#62;send("email", $to, $subject, $body);</PRE
></TD
></TR
></TABLE
>
</P
></DIV
></DIV
@ -98,7 +120,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="etc.html"
HREF="x434.html"
>Prev</A
></TD
><TD
@ -114,7 +136,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="p331.html"
HREF="devconfvar.html"
>Next</A
></TD
></TR
@ -123,20 +145,20 @@ HREF="p331.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>add your topic seek</TD
>File functions</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p312.html"
HREF="devapi.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>About this document</TD
>Configuration Variables</TD
></TR
></TABLE
></DIV

236
doc/html/x85.html Normal file
View File

@ -0,0 +1,236 @@
<HTML
><HEAD
><TITLE
>Setup / Configure phpGroupWare</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="phpGroupWare Docs V0.05"
HREF="book1.html"><LINK
REL="UP"
TITLE="Installing on Tested Systems"
HREF="installing.html"><LINK
REL="PREVIOUS"
TITLE="Installing from CVS"
HREF="cvsins.html"><LINK
REL="NEXT"
TITLE="Testing the install"
HREF="x109.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>phpGroupWare Docs V0.05</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="cvsins.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Installing on Tested Systems</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x109.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN85"
>Setup / Configure phpGroupWare</A
></H1
><P
> Copy the <TT
CLASS="FILENAME"
>header.inc.php.sample</TT
> file to
<TT
CLASS="FILENAME"
>header.inc.php</TT
> and edit the file, following the
directions in the comments.
</P
><P
> Then point your browser to phpgroupware/setup/ which will
create (or upgrade) the database tables.
You wil be asked to login, using the password set in
<TT
CLASS="FILENAME"
>header.inc.php</TT
>. Setup will attempt to determine what version
of the phpGroupWare database you have installed, and upgrade to the most recent
version.
</P
><DIV
CLASS="NOTE"
><BLOCKQUOTE
CLASS="NOTE"
><P
><B
>Note: </B
> The developers are concentrating on getting the beta
working, and have not spent a great deal of time building upgrade scripts from the
alpha versions of phpGroupWare. You are advised to backup your existing alpha
database before running the setup script to avoid problems!
</P
></BLOCKQUOTE
></DIV
><P
> If you get no error messages, continue on to phpgroupware/setup/config.php
to configure phpGroupWare to your system.
</P
><P
> If you are using the email system you will need to create a temporary directory
where file uploads will be stored. For security reasons, you should <TT
CLASS="CONSTANT"
>chown
nobody.nobody</TT
> and <TT
CLASS="CONSTANT"
>chmod 700</TT
> to that directory. Depending on your system configuration.
Default installs of Apache normally run as the user nobody. You may need your system
administrator to do this for you if you do not have root access.
</P
><P
> If you do not have access to root, create this file and run it.
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
> &#60;?php
if (mkdir("/path/to/temp/directory",0700)) {
echo "Directory created successfully";
} else {
echo "Error creating directory";
}
?&#62;
</PRE
></TD
></TR
></TABLE
><P
> If you have access to cron, you may want to setup the files in the cron
directory.
</P
><P
> stalesessions.pl - There are 2 reasons for this file.
<P
></P
><UL
><LI
STYLE="list-style-type: disc"
><P
>Users always forget to logout. This way the session doesn't sit around forever, creating a possible security risk.</P
></LI
><LI
STYLE="list-style-type: disc"
><P
>The email system requires plain text passwords which are stored in the sessions table.</P
></LI
></UL
>
This file is not required, you can simply disable cron_apps in the admin -&#62; applications section
to clean out the sessions table during login and logout
</P
><P
> stale_uploads.pl - This will delete file attachments for messages that where not
completed. If a users browser crashes, Internet connection dies, etc, their
files will sit there forever unless deleted. You could add a few lines to
logout.php that will look in the temp directory for any stale uploads and delete
them. But, once again, it becomes a performance issue.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="cvsins.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x109.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Installing from CVS</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="installing.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Testing the install</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

16
doc/sgml/devabout.sgml Normal file
View File

@ -0,0 +1,16 @@
<article id="devabout">
<title>About developers docs</title>
<simplesect>
<title>About this document</title>
<para></para>
</simplesect>
<simplesect>
<title>History</title>
<para>
This document was written by Dan Kuykendall.
2000-09-25 documentation on lang(), codes, administration and preferences extension added by Steve Brown.
</para>
</simplesect>
</article>

192
doc/sgml/devapi.sgml Normal file
View File

@ -0,0 +1,192 @@
<chapter id="devapi">
<title>The API</title>
<sect1>
<title>Introduction</title>
<para>
phpGroupWare attempts to provide developers with a useful API to handle common tasks.
</para>
<para>
To do this we have created a multi-dimensional class $phpgw->.
</para>
<para>
This allows for terrific code organization, and help developers easily identify
the file that the function is in. All the files that are part of this class are in the
<filename>inc/core</filename> directory
and are named to match the sub-class.
</para>
<para>
Example:<classname>$phpgw->send->msg()</classname> is in the
<filename>inc/phpgwapi/phpgw_send.inc.php</filename> file.
</para>
</sect1>
<sect1>
<title>Basic functions</title>
<para></para>
<sect2>
<title>$phpgw->link</title>
<para>
<classname>$phpgw->link($url)</classname>
</para>
<para>
Add support for session management. ALL links must use this, that includes href's form actions and header location's.
If you are just doing a form action back to the same page, you can use it without any parameters.
This function is right at the core of the class because it is used so often, we wanted to save developers a few keystrokes.
Example:
<programlisting>
&lt;form name=copy method=post action="&lt;?php echo $phpgw-&gt;link();?&gt;"&gt;
/* If session management is done via passing url parameters */
/* The the result would be */
/* &lt;form name=copy method=post action="somepage.php?sessionid=87687693276?kp3=kjh98u80"&gt; */
</programlisting>
</para>
</sect2>
</sect1>
<sect1>
<title>Application Functions</title>
<para></para>
<sect2>
<title>$phpgw->common->phpgw_header</title>
<para>
<classname>$phpgw->phpgw_header()</classname>
</para>
<para>
Print out the start of the HTML page, including the navigation bar
and includes <filename>appname/inc/header.php</filename>
</para>
</sect2>
<sect2>
<title>$phpgw->common->phpgw_footer</title>
<para><classname>$phpgw->phpgw_footer()</classname></para>
<para>
Prints the system footer, and includes <filename>appname/inc/footer.php</filename>
</para>
</sect2>
<sect2>
<title>$phpgw->common->appsession</title>
<para><classname>$phpgw->common->appsession($data)</classname></para>
<para>
Store important information session information that your
application needs.
</para>
<para>
<classname>$phpgw->appsession</classname> will return the value of your session data is
you leave the parameter empty [i.e. <classname>$phpgw->appsession("")</classname>], otherwise
it will store whatever data you send to it.
</para>
<para>
You can also store a comma delimited string and use <classname>explode()</classname>
to turn it back into an array when you receive the value back.
</para>
<para>
Example:
<programlisting>
$phpgw->common->appsession("/path/to/something");
echo "Dir: " . $phpgw->common->appsession();
</programlisting>
</para>
</sect2>
</sect1>
<sect1>
<title>File functions</title>
<para></para>
<sect2>
<title>$phpgw->vfs->read_file</title>
<para>
<classname>$phpgw->vfs->read_file($file)</classname> Returns the data from
<classname>$file</classname>.
You must send the complete path to the file.
</para>
<para>
Example:
<programlisting>
$data = $phpgw->vfs->read_file("/some/dir/to/file.txt");
</programlisting>
</para>
</sect2>
<sect2>
<title>$phpgw->vfs->write_file</title>
<para>
<classname>$phpgw->vfs->write_file($file, $contents)</classname>
Write data to <classname>$file</classname>.
You must send the complete path to the file.
</para>
<para>
Example:
<programlisting>
$data = $phpgw->vfs->write_file("/some/dir/to/file.txt");
</programlisting>
</para>
</sect2>
<sect2>
<title>$phpgw->vfs->read_userfile</title>
<para>
<classname>$phpgw->vfs->read_userfile($file)</classname>
Returns the data from <classname>$file</classname>, which resides
in the users private dir.
</para>
<para>
Example:
<programlisting>
$data = $phpgw->vfs->read_userfile("file.txt");
</programlisting>
</para>
</sect2>
<sect2>
<title>$phpgw->vfs->write_userfile</title>
<para>
<classname>$phpgw->write_userfile($file, $contents)</classname>
Writes data to <classname>$file</classname>, which resides in the
users private dir.
</para>
<para>
Example:
<programlisting>
$data = $phpgw->vfs->write_userfile("file.txt");
</programlisting>
</para>
</sect2>
<sect2>
<title>$phpgw->vfs->list_userfiles</title>
<para>
<classname>$phpgw->vfs->list_userfiles()</classname>
Returns an array which has the list of files in the users private dir.
</para>
<para>
Example:
<programlisting>
$filelist = array();
$filelist = $phpgw->vfs->list_userfiles();
</programlisting>
</para>
</sect2>
</sect1>
<sect1>
<title>Email/NNTP Functions</title>
<para></para>
<sect2>
<title>$phpgw->send->msg</title>
<para>
<classname>$phpgw->msg->send($service, $to, $subject, $body, $msgtype, $cc, $bcc)</classname>
Send a message via email or NNTP and returns any error codes.
</para>
<para>
Example:
<programlisting>
$to = "someuser@domain.com";
$subject = "Hello buddy";
$body = "Give me a call\n Been wondering what your up to.";
$errors = $phpgw->msg->send("email", $to, $subject, $body);
</programlisting>
</para>
</sect2>
</sect1>
</chapter>

137
doc/sgml/devconfvar.sgml Normal file
View File

@ -0,0 +1,137 @@
<chapter id="devconfvar">
<title>Configuration Variables</title>
<simplesect>
<title>Introduction</title>
<para>
phpGroupWare attempt to provide developers with as much information about the user, group,
server, and application configuration as possible. To do this we provide a multi-dimensional
array called <classname>$phpgw_info[]</classname>, which includes all the information about
your environment.Due to the multi-dimensional array approach. getting these values is easy.
</para>
<para>
Here are some examples:
<programlisting>
&lt;?php
// To do a hello username
echo "Hello " . $phpgw_info["user"]["fullname"];
//If username first name is John and last name is Doe, prints: 'Hello John Doe'
?&gt;
&lt;?php
// To find out the location of the imap server
echo "IMAP Server is named: " . $phpgw_info["server"]["imap_server"];
//If imap is running on localhost, prints: 'IMAP Server is named: localhost'
?&gt;
</programlisting>
</para>
</simplesect>
<simplesect>
<title>User information</title>
<para>
<simplelist type=vert columns=1>
<member><classname>$phpgw_info["user"]["userid"] = </classname>The user ID</member>
<member><classname>$phpgw_info["user"]["sessionid"] = </classname>The session ID</member>
<member><classname>$phpgw_info["user"]["theme"] = </classname>Selected theme</member>
<member><classname>$phpgw_info["user"]["private_dir"] = </classname>Users private dir. Use phpGroupWare core functions for access to the files.</member>
<member><classname>$phpgw_info["user"]["firstname"] = </classname>Users first name</member>
<member><classname>$phpgw_info["user"]["lastname"] = </classname>Users last name </member>
<member><classname>$phpgw_info["user"]["fullname"] = </classname>Users Full Name </member>
<member><classname>$phpgw_info["user"]["groups"] = </classname>Groups the user is a member of </member>
<member><classname>$phpgw_info["user"]["app_perms"] = </classname>If the user has access to the current application </member>
<member><classname>$phpgw_info["user"]["lastlogin"] = </classname>Last time the user logged in. </member>
<member><classname>$phpgw_info["user"]["lastloginfrom"] = </classname>Where they logged in from the last time. </member>
<member><classname>$phpgw_info["user"]["lastpasswd_change"] = </classname>Last time they changed their password. </member>
<member><classname>$phpgw_info["user"]["passwd"] = </classname>Hashed password. </member>
<member><classname>$phpgw_info["user"]["status"] = </classname>If the user is enabled. </member>
<member><classname>$phpgw_info["user"]["logintime"] = </classname>Time they logged into their current session. </member>
<member><classname>$phpgw_info["user"]["session_dla"] = </classname>Last time they did anything in their current session </member>
<member><classname>$phpgw_info["user"]["session_ip"] = </classname>Current IP address </member>
</simplelist>
</para>
</simplesect>
<simplesect>
<title>Group information</title>
<para>
<classname>$phpgw_info["group"]["group_names"] = </classname>List of groups.
</para>
</simplesect>
<simplesect>
<title>Server information</title>
<para>
<simplelist type=vert columns=1>
<member><classname>$phpgw_info["server"]["server_root"] = </classname>Main installation directory </member>
<member><classname>$phpgw_info["server"]["include_root"] = </classname>Location of the '<classname>inc</classname>' directory. </member>
<member><classname>$phpgw_info["server"]["temp_dir"] = </classname>Directory that can be used for temporarily storing files </member>
<member><classname>$phpgw_info["server"]["files_dir"] = </classname>Directory er and group files are stored </member>
<member><classname>$phpgw_info["server"]["common_include_dir"] = </classname>Location of the core/shared include files. </member>
<member><classname>$phpgw_info["server"]["template_dir"] = </classname>Active template files directory. This is defaulted by the server, and changeable by the user. </member>
<member><classname>$phpgw_info["server"]["dir_separator"] = </classname>Allows compatibility with WindowsNT directory format, </member>
<member><classname>$phpgw_info["server"]["encrpytkey"] = </classname>Key used for encryption functions </member>
<member><classname>$phpgw_info["server"]["site_title"] = </classname>Site Title will show in the title bar of each webpage. </member>
<member><classname>$phpgw_info["server"]["webserver_url"] = </classname>URL to phpGroupWare installation. </member>
<member><classname>$phpgw_info["server"]["hostname"] = </classname>Name of the server phpGroupWare is installed upon. </member>
<member><classname>$phpgw_info["server"]["charset"] = </classname>default charset, default:<classname>iso-8859-1</classname> </member>
<member><classname>$phpgw_info["server"]["version"] = </classname>phpGroupWare version. </member>
</simplelist>
</para>
</simplesect>
<simplesect>
<title>Database information</title>
<para>
It is unlikely you will need these, because <classname>$phpgw_info_db</classname> will already be loaded as a database for you to use.
<simplelist type=vert columns=1>
<member><classname>$phpgw_info["server"]["db_host"] = </classname>Address of the database server. Usually this is set to localhost. </member>
<member><classname>$phpgw_info["server"]["db_name"] = </classname>Database name. </member>
<member><classname>$phpgw_info["server"]["db_user"] = </classname>User name. </member>
<member><classname>$phpgw_info["server"]["db_pass"] = </classname>Password </member>
<member><classname>$phpgw_info["server"]["db_type"] = </classname>Type of database. Currently MySQL and PostgreSQL are supported. </member>
</simplelist>
</para>
</simplesect>
<simplesect>
<title>Mail information</title>
<para>
It is unlikely you will need these, because most email needs are services thru core phpGroupWare functions.
<simplelist type=vert columns=1>
<member><classname>$phpgw_info["server"]["mail_server"] = </classname>Address of the IMAP server. Usually this is set to localhost. </member>
<member><classname>$phpgw_info["server"]["mail_server_type"] = </classname>IMAP or POP3 </member>
<member><classname>$phpgw_info["server"]["imap_server_type"] = </classname>Cyrus or Uwash </member>
<member><classname>$phpgw_info["server"]["imap_port"] = </classname>This is usually 143, and should only be changed if there is a good reason. </member>
<member><classname>$phpgw_info["server"]["mail_suffix] = </classname>This is the domain name, used to add to email address </member>
<member><classname>$phpgw_info["server"]["mail_login_type"] = </classname>This adds support for VMailMgr. Generally this should be set to '<classname>standard</classname>'. </member>
<member><classname>$phpgw_info["server"]["smtp_server"] = </classname>Address of the SMTP server. Usually this is set to localhost. </member>
<member><classname>$phpgw_info["server"]["smtp_port"] = </classname>This is usually 25, and should only be changed if there is a good reason. </member>
</simplelist>
</para>
</simplesect>
<simplesect>
<title>NNTP information</title>
<para>
<simplelist type=vert columns=1>
<member><classname>$phpgw_info["server"]["nntp_server"] = </classname>Address of the NNTP server. </member>
<member><classname>$phpgw_info["server"]["nntp_port"] = </classname>This is usually XX, and should only be changed if there is a good reason. </member>
<member><classname>$phpgw_info["server"]["nntp_sender"] = </classname>Unknown </member>
<member><classname>$phpgw_info["server"]["nntp_organization"] = </classname>Unknown </member>
<member><classname>$phpgw_info["server"]["nntp_admin"] = </classname>Unknown </member>
</simplelist>
</para>
</simplesect>
<simplesect>
<title>Application information</title>
<para>
Each application has the following information available.
<simplelist type=vert columns=1>
<member><classname>$phpgw_info["apps"]["appname"]["title"] = </classname>The title of the application. </member>
<member><classname>$phpgw_info["apps"]["appname"]["enabled"] = </classname>If the application is enabled. True or False. </member>
<member><classname>$phpgw_info["server"]["app_include_dir"] = </classname>Location of the current application include files. </member>
<member><classname>$phpgw_info["server"]["app_template_dir"] = </classname>Location of the current application tpl files. </member>
<member><classname>$phpgw_info["server"]["app_lang_dir"] = </classname>Location of the current lang directory. </member>
<member><classname>$phpgw_info["server"]["app_auth"] = </classname>If the server and current user have access to current application </member>
<member><classname>$phpgw_info["server"]["app_current"] = </classname>name of the current application. </member>
</simplelist>
</para>
</simplesect>
</chapter>

63
doc/sgml/devguid.sgml Normal file
View File

@ -0,0 +1,63 @@
<chapter id="devguid">
<title>Guidelines</title>
<simplesect>
<title>Requirements</title>
<para>
These guidelines must be followed for any application that wants
considered for inclusion into phpGroupWare deluxe.
</para>
<para>
<itemizedlist mark=bullet>
<listitem><para>It must run on PHP3 and PHP4. </para></listitem>
<listitem><para>SQL statements must be compatible with both MySQL
and PostgreSQL.</para></listitem>
<listitem><para>It must use our default header.inc.php include.</para></listitem>
<listitem><para>It must use our <classname>$phpgw_link($url)</classname> for all links
(this is for session support).</para></listitem>
<listitem><para>It must use "post" for forms.</para></listitem>
<listitem><para>It must respect phpGW group rights and phpGW user permissions.</para></listitem>
<listitem><para>It must use our directory structure, template support and lang
(multi-language) support.</para></listitem>
<listitem><para>Where possible it should run on both Unix and NT platforms.</para></listitem>
</itemizedlist>
</para>
<para>
For applications that do not meet these requirements, they can be
available to users via the phpGroupWare Apps project, or whatever
means the developers decide.If you need help converting your
application to templates and our lang support, we will try to
connect you with someone to help.
</para>
</simplesect>
<simplesect>
<title>Writing/porting your application</title>
<para><emphasis>Include files</emphasis></para>
<para>
Each PHP page you write will need to include the header.inc.php along
with a few variables.This is done by putting this at the top of each PHP page.
<programlisting>
&lt;?php
$phpgw_info["flags"]["currentapp"] = "appname";
include("../header.inc.php");
?&gt;
</programlisting>
Of course change application name to fit.
This include will provide the following things:
<itemizedlist mark=bullet>
<listitem><para>The phpgwAPI - The phpGroupWare API will be loaded.</para></listitem>
<listitem><para>The phpGW navbar will be loaded (by default, but can be disabled until a later point.</para></listitem>
<listitem><para>appname/inc/functions.inc.php - This file is loaded just after the phpgwAPI
and before any HTML code is generated. This file should include all your application
specific functions..You are welcome to include any additional files you need from within
this file. </para></listitem>
<listitem><para>appname/inc/header.inc.php - This file is loaded just after the system header/navbar,
and allows developers to use it for whatever they need to load.</para></listitem>
<listitem><para>appname/inc/footer.inc.php - This file is loaded just before the system footer,
allowing developers to close connections and whatever else they need.</para></listitem>
<listitem><para>The phpGW footer will be loaded, which closes several connections.</para></listitem>
</itemizedlist>
</para>
</simplesect>
</chapter>

117
doc/sgml/devinfra.sgml Normal file
View File

@ -0,0 +1,117 @@
<chapter id="devinfra">
<title>Infrastructure</title>
<simplesect>
<title>Overview</title>
<para>
phpGroupWare attempts to provide developers with a sound directory
structure to work from. The directory layout may seem complex at first,
but after some use, you will see that it is designed to accommodate a
large number of applications and functions.
</para>
</simplesect>
<simplesect>
<title>Directory tree</title>
<para>
<programlisting>
.-- addressbook
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | `-- footer.inc.php
| `-- templates
| `-- default
|-- admin
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | |-- footer.inc.php
| | `-- admin.inc.php
| `-- templates
| `-- default
|-- calendar
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | `-- footer.inc.php
| `-- templates
| `-- default
|-- cron
|-- doc
|-- email
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | |-- footer.inc.php
| | |-- preferences.inc.php
| | `-- admin.inc.php
| `-- templates
| `-- default
|-- filemanager
|-- files
| |-- groups
| `-- users
|-- inc
| |-- phpgwapi
| | |-- phpgw.inc.php
| | |-- phpgw_info.inc.php
| | |-- phpgw_common.inc.php
| | `-- etc...
| `-- templates
| |-- default
| | |-- addressbook
| | |-- admin
| | |-- calendar
| | |-- common
| | |-- email
| | |-- filemanager
| | |-- headlines
| | |-- preferences
| | |-- todo
| | `-- tts
| `-- icons
| |-- email
| |-- calendar
| `-- tts
|-- preferences
| `-- images
| | `-- navbar.gif
| `-- inc
| | |-- functions.inc.php
| | |-- header.inc.php
| | |-- footer.inc.php
| | `-- preferences.inc.php
| `-- templates
| `-- default
|-- themes
`-- todo
`-- images
| `-- navbar.gif
`-- inc
| |-- functions.inc.php
| |-- header.inc.php
| `-- footer.inc.php
`-- templates
`-- default
</programlisting>
</para>
</simplesect>
<simplesect>
<title>Translations</title>
<para>
The translations are now being done thru the database, and will be configurable
to use other mechanisms.We are completing a program called Transy, which will
provide developers/translators a nice GUI for building and updating translations.
In the mean time you will need to create a SQL script yourself and name it lang.sql.
You can copy the one in doc/lang.sql and use it as a template.
</para>
</simplesect>
</chapter>

115
doc/sgml/devinst.sgml Normal file
View File

@ -0,0 +1,115 @@
<chapter id="devinstall">
<title>Installing your application</title>
<simplesect>
<title>Overview</title>
<para>It is fairly simple to add and delete applications to/from phpGroupWare.</para>
</simplesect>
<simplesect>
<title>Automatic features</title>
<para>
To make things easy for developers we go ahead and load the following files.
<itemizedlist>
<listitem><para> <filename>appname/inc/functions.inc.php</filename> - This file should include
all your application specific functions.</para></listitem>
<listitem><para> <filename>appname/inc/header.inc.php</filename> - This file is loaded by
<classname>$phpgw->common->header</classname> just after the system header/navbar,
and allows developers to use it for whatever they need to load.</para></listitem>
<listitem><para> <filename>appname/inc/footer.inc.php</filename> - This file is loaded by
<classname>$phpgw->common->footer</classname> just before the system footer,
allowing developers to close connections and whatever else they need.</para></listitem>
</itemizedlist>
</para>
</simplesect>
<simplesect>
<title>Adding files, directories and icons.</title>
<para>
You will need to create the following directories for your code
(replace 'appname' with your application name)
<programlisting>
`-- appname
`-- images
| `-- navbar.gif
`-- inc
| |-- functions.inc.php
| |-- header.inc.php
| |-- footer.inc.php
| |-- preferences.inc.php
| `-- admin.inc.php
`-- templates
`-- default
</programlisting>
</para>
</simplesect>
<simplesect>
<title>Making phpGroupWare aware of your application</title>
<para>
To make the application aware of your application, add your application details to the applications table. This can be done via the GUI administration screen, or via a SQL script.
<programlisting>
insert into applications (app_name, app_title, app_enabled) values ('appname', 'The App name', 1);
</programlisting>
</para>
</simplesect>
<simplesect>
<title>Hooking into Administration page</title>
<para>
When a user goes to the Administration page, it stats appname/inc/admin.inc.php
for each application that is enabled, in alphabetical order of application title.
If the file exists, it is include()d in the hopes it will display a selection of
links to configure that application.
Simple Example:
<programlisting>
&lt;?php
$img = "/" . $appname . "/images/navbar.gif";
section_start("My Application",$img);
echo "&lt;a HREF=\"" . $phpgw->link("myAdminPage.php") . "\"&gt;";
echo lang("Change myApp settings") . "&lt;/a&gt;";
section_end();
?&gt;
</programlisting>
Look at headlines/inc/admin.inc.php and admin/inc/admin.inc.php for more examples.
Things to note:
<itemizedlist mark=bullet>
<listitem><para>Links are relative to the <filename>admin/index.php</filename> file, not your
application's base directory. (so use <classname>$appname</classname> in your
<classname>link()</classname> calls)</para></listitem>
<listitem><para>The file is brought in with include() so be careful to not pollute the name-space
too much</para></listitem>
</itemizedlist>
The standard $phpgw and $phpgw_info variables are in-scope, as is $appname
which corresponds to the application name in the path.
There are 2 functions to coordinate the display of each application's links,
section_start() and section_end()
</para>
</simplesect>
<simplesect>
<title>section_start</title>
<para>
<classname>section_start($title,$icon_url)</classname>
starts the section for your application. <classname>$title</classname> is passed through
<classname>lang()</classname>
for you. <classname>$icon_url</classname> should be page-relative to admin/index.php or
an absolute URL.
</para>
</simplesect>
<simplesect>
<title>section_end</title>
<para>
<classname>section_end()</classname> closes the section that was started with section_start().
</para>
</simplesect>
<simplesect>
<title>Hooking into Preferences page</title>
<para>
The mechanism to hook into the preferences page is identical to the one used to
hook into the administration page, however it looks for
<filename>appname/inc/preferences.inc.php</filename> instead of
<filename>appname/inc/admin.inc.php</filename>. The same functions and variables are defined.
</para>
</simplesect>
</chapter>

29
doc/sgml/devintro.sgml Normal file
View File

@ -0,0 +1,29 @@
<chapter id="devintro">
<title>Introduction</title>
<para>
phpGroupWare is a web based groupware application framework (API),
for writing applications. Integrated applications such as email,
calendar, todo list, address book, and file manager are included.
</para>
<simplesect>
<title>Overview of application writing</title>
<para>
We have attempted to make writing application for phpGroupWare as
painless as possible. We hope any pain and suffering is cause by making
your application work, but not dealing with phpGroupWare itself.
</para>
</simplesect>
<simplesect>
<title>What does the phpGroupWare API provide?</title>
<para>
The phpGroupWare API handles session management, user/group management,
has support for multiple databases, using the PHPLIB database abstraction
method, we support templates using the PHPLIB Templates class, a file
system interface, and even a network i/o interface. On top of these
standard functions, phpGroupWare provides several functions to give
you the information you need about the users environment, and to properly
plug into phpGroupWare.
</para>
</simplesect>
</chapter>

162
doc/sgml/devlangsup.sgml Normal file
View File

@ -0,0 +1,162 @@
<chapter id="devlangsup">
<title>Using Language Support</title>
<simplesect>
<title>Overview</title>
<para>
phpGroupWare is built using a multi-language support scheme. This means the pages can be
translated to other languages very easily. Translations of text strings are
stored in the phpGroupWare database, and can be modified by the phpGroupWare
administrator.
</para>
</simplesect>
<simplesect>
<title>How to use lang support</title>
<para>
The <classname>lang()</classname> function is your application's interface to phpGroupWare's
internationalization support.
While developing your application, just wrap all your text output with calls to
lang(), as in the following code:
<programlisting>
$x = 42;
echo lang("The counter is %1",$x)."&lt;br&gt;";
</programlisting>
This will attempt to translate "The counter is %1", and return a translated version
based on the current application and language in use. Note how the position that
<classname>$x</classname> will end up is controlled by the format string, <emphasis>not</emphasis> by
building up the string in your code. This allows your application to be translated
to languages where the actual number is not placed at the end of the string.
When a translation is not found, the original text will be returned with a * after
the string. This makes it easy to develop your application, then go back and
add missing translations (identified by the *) later.
Without a specific translation in the lang table, the above code will print:
<classname>
The counter is 42*&lt;br&gt;
</classname>
If the current user speaks Italian, they string returned may instead be:
<classname>
il contatore è 42&lt;br&gt;
</classname>
</para>
</simplesect>
<simplesect>
<title>The lang function</title>
<para>
<classname>lang($key, $m1="", $m2="", $m3="", $m4="", $m5="",
$m6="", $m7="", $m8="", $m9="", $m10="")
</classname>
<variablelist>
<varlistentry>
<term>$key</term>
<listitem>
<para>is the string to translate and may contain replacement directives of the form <classname>%n</classname>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>$m1</term>
<listitem>
<para> is the first replacement value or may be an array of replacement values (in which case $m2 and above are ignored). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>$m2</term>
<listitem>
<para>- $m10/ the 2nd through 10th replacement values if $m1 is not an array. </para>
</listitem>
</varlistentry>
</variablelist>
The database is searched for rows with a <classname>lang.message_id</classname> that matches <classname>$key</classname>.
If a translation is not found, the original <classname>$key</classname> is used. The translation engine then replaces
all tokens of the form <classname>%N</classname> with the Nth parameter (either <classname>$m1[N]</classname> or <classname>$mN</classname>).
</para>
</simplesect>
<simplesect>
<title>Adding translation data</title>
<para>
An application called <emphasis>Transy</emphasis> is being developed to make this easier, until then you can create
the translation data manually.
</para>
</simplesect>
<simplesect>
<title>The lang table</title>
<para>
The translation class uses the lang table for all translations.
We are concerned with 4 of the columns to create a translation:
<variablelist>
<varlistentry>
<term>message_id</term>
<listitem>
<para>
The key to identify the message (the <classname>$key</classname> passed
to the <classname>lang()</classname> function). This is written in English.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>app_name</term>
<listitem>
<para>
The application the translation applies to, or
<classname>common</classname> if it is common across multiple applications.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>lang</term>
<listitem>
<para>The code for the language the translation is in. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>content</term>
<listitem>
<para>The translated string. </para>
</listitem>
</varlistentry>
</variablelist>
</para>
</simplesect>
<simplesect>
<title>lang.sql</title>
<para>
Currently all applications, and the core phpGroupWare source tree
have a <classname>lang.sql</classname> file. This is the place to add translation
data. Just add lines of the form:
<programlisting>
REPLACE INTO lang (message_id, app_name, lang, content)
VALUES( 'account has been deleted','common','en','Account has been deleted');
</programlisting>
translating the <classname>content</classname> to reflect the <classname>message_id</classname> string in the <classname>lang</classname> language.
If the string is specific to your application, put your application name in for <classname>app_name</classname>
otherwise use the name <classname>common</classname>. The <classname>message_id</classname> should be in lower case for a small
increase in speed.
</para>
</simplesect>
<simplesect>
<title>Common return codes</title>
<para>
If you browse through the phpGroupWare sources, you may notice
a pattern to the return codes used in the higher-level functions.
The codes used are partially documented in the <classname>doc/developers/CODES</classname>
file.
Codes are used as a simple way to communicate common error and progress
conditions back to the user. They are mapped to a text string through the
<classname>check_code()</classname> function, which passes the strings through
<classname>lang()</classname> before returning.
For example, calling
<programlisting>
echo check_code(13);
</programlisting>
Would print
<classname>
Your message has been sent
</classname>
translated into the current language.
</para>
</simplesect>
</chapter>

19
doc/sgml/devtemp.sgml Normal file
View File

@ -0,0 +1,19 @@
<chapter id="devtemp">
<title>Using Templates</title>
<simplesect>
<title>Overview</title>
<para>
phpGroupWare is built using a templates based design. This means the display pages, stored in tpl files, can be translated to other languages, made to look completely different.
</para>
</simplesect>
<simplesect>
<title>How to use templates</title>
<para>
Some instructions on using templates.
</para>
<para>
For Further info read the PHPLIBs documentation for their template class.
</para>
</simplesect>
</chapter>