Allow RSCDS to operate from a subdirectory within another virtual host,

rather than requiring it's own virtual host.
This commit is contained in:
Andrew McMillan 2006-11-30 18:09:38 +13:00
parent 4133f9dcb5
commit 2800808b90
18 changed files with 117 additions and 35 deletions

View File

@ -8,7 +8,7 @@
* @copyright Catalyst .Net Ltd
* @license http://gnu.org/copyleft/gpl.html GNU GPL v2
*/
require_once("always.php");
require_once("../inc/always.php");
dbg_error_log( "caldav", " User agent: %s", ((isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "Unfortunately Mulberry and Chandler don't send a 'User-agent' header with their requests :-(")) );
require_once("BasicAuthSession.php");

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
require_once("RSCDSSession.php");
$session->LoginRequired();

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
dbg_error_log( "freebusy", " User agent: %s", ((isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "Unfortunately Mulberry and Chandler don't send a 'User-agent' header with their requests :-(")) );
require_once("BasicAuthSession.php");

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
require_once("RSCDSSession.php");
$session->LoginRequired();

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
dbg_error_log( "ics", " User agent: %s", $_SERVER['HTTP_USER_AGENT'] );
require_once("BasicAuthSession.php");
require_once("iCalendar.php");

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
require_once("RSCDSSession.php");
$session->LoginRequired();

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
require_once("RSCDSSession.php");
$session->LoginRequired();
@ -8,7 +8,7 @@ require_once("interactive-page.php");
require_once("DataEntry.php");
require_once("DataUpdate.php");
require_once("classBrowser.php");
$c->stylesheets[] = "css/browse.css";
$c->stylesheets[] = "$c->base_url/css/browse.css";
$confirmation_required = false;
if ( ($session->AllowedTo("Admin") || $session->AllowedTo("Support")) &&
@ -60,7 +60,7 @@ require_once("interactive-page.php");
$browser->AddColumn( 'rt_isgroup', translate('To Group?'), '', '', "CASE WHEN rt_isgroup THEN 'Yes' ELSE 'No' END" );
$browser->AddColumn( 'confers', translate('Rights') );
$browser->AddColumn( 'prefix_match', translate("Prefix") );
$browser->AddColumn( 'action', translate("Action"), "", "", "'<a href=\"/relationship_types.php?action=delete&rt_id=' || rt_id || '\">".translate("Delete")."</a>'" );
$browser->AddColumn( 'action', translate("Action"), "", "", "'<a href=\"$c->base_url/relationship_types.php?action=delete&rt_id=' || rt_id || '\">".translate("Delete")."</a>'" );
$browser->SetJoins( 'relationship_type' );
@ -98,7 +98,7 @@ require_once("interactive-page.php");
'action' => '<input type="submit" name="submit" value="'.translate("Add").'" class="fsubmit">'
) );
$active_menu_pattern = "#^/relationship#";
$active_menu_pattern = "#^$c->base_url/relationship#";
include("page-header.php");

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
require_once("RSCDSSession.php");
$session->LoginRequired();

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
require_once("RSCDSSession.php");
// This page requires login.
@ -49,10 +49,10 @@
}
if ( $session->AllowedTo("Admin") )
$user_menu->AddOption(translate("New User"),"/user.php?create",translate("Add a new user"), false, 10);
$user_menu->AddOption(translate("New User"),"$c->base_url/user.php?create",translate("Add a new user"), false, 10);
if ( $user->user_no > 0 && $user->AllowedTo('update') ) {
$user_menu->AddOption(translate("View"),"/user.php?user_no=$user->user_no",translate("View this user record") );
$user_menu->AddOption(translate("Edit"),"/user.php?edit=1&user_no=$user->user_no",translate("Edit this user record"), $user->EditMode );
$user_menu->AddOption(translate("View"),"$c->base_url/user.php?user_no=$user->user_no",translate("View this user record") );
$user_menu->AddOption(translate("Edit"),"$c->base_url/user.php?edit=1&user_no=$user->user_no",translate("Edit this user record"), $user->EditMode );
}
include("page-header.php");

View File

@ -1,5 +1,5 @@
<?php
require_once("always.php");
require_once("../inc/always.php");
require_once("RSCDSSession.php");
$session->LoginRequired();
@ -14,7 +14,7 @@ require_once("interactive-page.php");
$browser->AddColumn( 'user_no', translate('No.'), 'right', '##user_link##' );
$browser->AddColumn( 'username', translate('Name') );
$browser->AddHidden( 'user_link', "'<a href=\"/user.php?user_no=' || user_no || '\">' || user_no || '</a>'" );
$browser->AddHidden( 'user_link', "'<a href=\"$c->base_url/user.php?user_no=' || user_no || '\">' || user_no || '</a>'" );
$browser->AddColumn( 'fullname', translate('Full Name') );
$browser->AddColumn( 'email', translate('EMail') );
@ -37,9 +37,9 @@ require_once("interactive-page.php");
$c->page_title = translate("Calendar Users");
if ( $session->AllowedTo("Admin") )
$user_menu->AddOption(translate("New User"),"/user.php?create",translate("Add a new user"), false, 10);
$user_menu->AddOption(translate("New User"),"$c->base_url/user.php?create",translate("Add a new user"), false, 10);
$active_menu_pattern = "#^/user#";
$active_menu_pattern = "#^$c->base_url/user#";
include("page-header.php");

View File

@ -12,8 +12,8 @@
require_once("User.php");
require_once("classBrowser.php");
$c->stylesheets[] = "css/browse.css";
$c->scripts[] = "js/browse.js";
$c->stylesheets[] = "$c->base_url/css/browse.css";
$c->scripts[] = "$c->base_url/js/browse.js";
/**
* A class for viewing and maintaining RSCDS User records
@ -87,14 +87,14 @@ class RSCDSUser extends User
$browser = new Browser("");
$browser->AddHidden( 'user_link', "'<a href=\"/user.php?user_no=' || user_no || '\">' || fullname || '</a>'" );
$browser->AddHidden( 'user_link', "'<a href=\"$c->base_url/user.php?user_no=' || user_no || '\">' || fullname || '</a>'" );
$browser->AddColumn( 'rt_name', translate('Relationship') );
$browser->AddColumn( 'fullname', translate('Linked To'), 'left', '##user_link##' );
// $browser->AddColumn( 'is_group', 'Group?', 'centre', '', "CASE WHEN rt_isgroup THEN 'Yes' ELSE 'No' END" );
$browser->AddHidden( 'confers' );
$browser->AddColumn( 'email', translate('EMail') );
if ( $ef->EditMode ) { // && $session->AllowedTo("MaintainRelationships") ) {
$browser->AddColumn( 'delete', translate('Delete'), 'centre', '', "'<a class=\"\" href=\"/user.php?edit=1&user_no=$this->user_no&action=delete_relationship&to_user=' || user_no || '\">Delete</a>'" );
$browser->AddColumn( 'delete', translate('Delete'), 'centre', '', "'<a class=\"\" href=\"$c->base_url/user.php?edit=1&user_no=$this->user_no&action=delete_relationship&to_user=' || user_no || '\">Delete</a>'" );
}
$browser->SetJoins( 'relationship NATURAL JOIN relationship_type rt LEFT JOIN usr ON (to_user = user_no)' );
@ -172,7 +172,7 @@ EOSQL;
if ( $title == null ) $title = i18n("Relationships to this user");
$browser = new Browser("");
$browser->AddHidden( 'user_link', "'<a href=\"/user.php?user_no=' || user_no || '\">' || fullname || '</a>'" );
$browser->AddHidden( 'user_link', "'<a href=\"$c->base_url/user.php?user_no=' || user_no || '\">' || fullname || '</a>'" );
$browser->AddColumn( 'fullname', translate('Linked From'), 'left', '##user_link##' );
$browser->AddColumn( 'rt_name', translate('Relationship') );
$browser->AddColumn( 'is_group', translate('Group?'), 'centre', '', "CASE WHEN rt_isgroup THEN 'Yes' ELSE 'No' END" );
@ -211,7 +211,7 @@ EOSQL;
if ( $title == null ) $title = i18n("This user's collections");
$browser = new Browser("");
$browser->AddHidden( 'collection_link', "'<a href=\"/collection.php?user_no=' || user_no || '&dav_name=' || dav_name || '\">' || dav_name || '</a>'" );
$browser->AddHidden( 'collection_link', "'<a href=\"$c->base_url/collection.php?user_no=' || user_no || '&dav_name=' || dav_name || '\">' || dav_name || '</a>'" );
$browser->AddColumn( 'dav_name', translate('Collection Path'), 'left', '##collection_link##' );
$browser->AddColumn( 'is_calendar', translate('Is a Calendar?'), 'centre', '', "CASE WHEN is_calendar THEN 'Yes' ELSE 'No' END" );
$browser->AddColumn( 'created', translate('Created On') );

View File

@ -16,13 +16,17 @@ $c->system_name = "Really Simple CalDAV Store";
$c->domain_name = $_SERVER['SERVER_NAME'];
$c->images = "/images";
$c->save_time_zone_defs = true;
$c->stylesheets = array( "/rscds.css" );
$c->collections_always_exist = true;
$c->enable_row_linking = true;
// $c->default_locale = array('es_MX', 'es_MX.UTF-8', 'es');
// $c->local_tzid = 'Pacific/Auckland'; // Perhaps we should read from /etc/timezone - I wonder how standard that is?
$c->default_locale = "en_NZ";
$c->base_url = preg_replace("#/[^/]+\.php.*$#", "", $_SERVER['SCRIPT_NAME']);
$c->base_directory = preg_replace("#/[^/]*$#", "", $_SERVER['DOCUMENT_ROOT']);
$c->stylesheets = array( $c->base_url."/rscds.css" );
// Ensure that ../inc is in our included paths as early as possible
set_include_path( '../inc'. PATH_SEPARATOR. get_include_path());
// Kind of private configuration values
$c->total_query_time = 0;
@ -44,7 +48,7 @@ $c->protocol_server_port_script = sprintf( "%s://%s%s%s", (isset($_SERVER['HTTPS
),
$_SERVER['SCRIPT_NAME'] );
dbg_error_log( "LOG", "==========> method =%s= =%s= =%s=", $_SERVER['REQUEST_METHOD'], $c->protocol_server_port_script, $_SERVER['PATH_INFO']);
dbg_error_log( "LOG", "==========> method =%s= =%s= =%s= =%s=", $_SERVER['REQUEST_METHOD'], $c->protocol_server_port_script, $_SERVER['PATH_INFO'], $c->base_url );
init_gettext( 'rscds', $c->base_directory.'/locale' );

View File

@ -1,16 +1,16 @@
<?php
require_once("MenuSet.php");
$page_menu = new MenuSet('menu', 'menu', 'menu_active');
$page_menu->AddOption(translate("Home"),"/",translate("Browse all users"), false, 3900 );
$page_menu->AddOption(translate("Help"),"/help.php",translate("Help on something or other"), false, 4500 );
$page_menu->AddOption(translate("Logout"),"/?logout",translate("Log out of the").$c->system_name, false, 5400 );
$page_menu->AddOption(translate("Home"),"$c->base_url/",translate("Browse all users"), false, 3900 );
$page_menu->AddOption(translate("Help"),"$c->base_url/help.php",translate("Help on something or other"), false, 4500 );
$page_menu->AddOption(translate("Logout"),"$c->base_url/?logout",translate("Log out of the").$c->system_name, false, 5400 );
$page_menu->AddOption(translate("Report Bug"),"http://sourceforge.net/tracker/?func=add&group_id=179845&atid=890785",translate("Report a bug in the system"), false, 9000 );
$relationship_menu = new MenuSet('submenu', 'submenu', 'submenu_active');
$user_menu = new MenuSet('submenu', 'submenu', 'submenu_active');
// $role_menu = new MenuSet('submenu', 'submenu', 'submenu_active');
$user_menu->AddOption(translate("My Details"),"/user.php?user_no=$session->user_no",translate("View my own user record"), false, 700);
$user_menu->AddOption(translate("My Details"),"$c->base_url/user.php?user_no=$session->user_no",translate("View my own user record"), false, 700);
$active_menu_pattern = '#^/(index.*)?$#'
$active_menu_pattern = "#^$c->base_url/(index.*)?$#";
?>

View File

@ -6,6 +6,8 @@ if ( !isset($c->title) ) {
function make_help_link($matches)
{
global $c;
// as usual: $matches[0] is the complete match
// $matches[1] the match for the first subpattern
// enclosed in '##...##' and so on
@ -21,7 +23,7 @@ function make_help_link($matches)
else {
$display_url = "help";
}
return " <a class=\"help\" href=\"/help.php?h=$help_topic\" title=\"".translate("Show help on")." '$help_topic'\" target=\"_new\">[$display_url]</a> ";
return " <a class=\"help\" href=\"$c->base_url/help.php?h=$help_topic\" title=\"".translate("Show help on")." '$help_topic'\" target=\"_new\">[$display_url]</a> ";
}
@ -66,8 +68,8 @@ EOHDR;
if ( isset($page_menu) && is_object($page_menu) ) {
$page_menu->AddSubMenu( $relationship_menu, translate("Relationships"),
"/relationship_types.php", translate("Browse all relationship types"), false, 4050 );
$page_menu->AddSubMenu( $user_menu, translate("Users"), "/users.php", translate("Browse all users"), false, 4100 );
"$c->base_url/relationship_types.php", translate("Browse all relationship types"), false, 4050 );
$page_menu->AddSubMenu( $user_menu, translate("Users"), "$c->base_url/users.php", translate("Browse all users"), false, 4100 );
// $page_menu->AddSubMenu( $role_menu, "Roles", "/roles.php", "Browse all roles", false, 4300 );
$page_menu->MakeSomethingActive($active_menu_pattern);
echo $page_menu->Render();

View File

@ -0,0 +1,28 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
ETag: "daca68be14cb0969dd84f1410a2764ed"
Content-Length: 560
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="UTF-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>http://mycaldav/user1/home/3F4CF6227300FD062D9EF3CDFB30D32D-0.ics</href>
<propstat>
<prop>
<getetag>"2c32a2f8aba853654eb17fe037a4db4d"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>http://mycaldav/user1/home/20061101T073004Z.ics</href>
<propstat>
<prop>
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,10 @@
#
# Do a REPORT request (test RewriteRule support)
#
TYPE=REPORT
URL=http://mycaldav/user1/home/
HEAD
HEADER=Depth: 1
HEADER=User-Agent: Evolution/1.8.1
HEADER=Content-Type: text/xml
DATA=105-Evo-REPORT-1

View File

@ -0,0 +1,28 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
ETag: "5940fad8fc254eb229f36f3176385154"
Content-Length: 596
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="UTF-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>http://myapms/calendar/caldav.php/user1/home/3F4CF6227300FD062D9EF3CDFB30D32D-0.ics</href>
<propstat>
<prop>
<getetag>"2c32a2f8aba853654eb17fe037a4db4d"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>http://myapms/calendar/caldav.php/user1/home/20061101T073004Z.ics</href>
<propstat>
<prop>
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,10 @@
#
# Do a REPORT request (test operation in subdirectory of unrelated site)
#
TYPE=REPORT
URL=http://myapms/calendar/caldav.php/user1/home/
HEAD
HEADER=Depth: 1
HEADER=User-Agent: Evolution/1.8.1
HEADER=Content-Type: text/xml
DATA=105-Evo-REPORT-1