mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-04-27 15:31:32 +00:00
Allow RSCDS to operate from a subdirectory within another virtual host,
rather than requiring it's own virtual host.
This commit is contained in:
parent
4133f9dcb5
commit
2800808b90
@ -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");
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
require_once("always.php");
|
||||
require_once("../inc/always.php");
|
||||
require_once("RSCDSSession.php");
|
||||
$session->LoginRequired();
|
||||
|
||||
|
||||
@ -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");
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
require_once("always.php");
|
||||
require_once("../inc/always.php");
|
||||
require_once("RSCDSSession.php");
|
||||
$session->LoginRequired();
|
||||
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
require_once("always.php");
|
||||
require_once("../inc/always.php");
|
||||
require_once("RSCDSSession.php");
|
||||
$session->LoginRequired();
|
||||
|
||||
|
||||
@ -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");
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
require_once("always.php");
|
||||
require_once("../inc/always.php");
|
||||
require_once("RSCDSSession.php");
|
||||
$session->LoginRequired();
|
||||
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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");
|
||||
|
||||
|
||||
@ -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') );
|
||||
|
||||
@ -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' );
|
||||
|
||||
|
||||
@ -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.*)?$#";
|
||||
?>
|
||||
@ -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();
|
||||
|
||||
28
testing/tests/regression-suite/107-Evo-REPORT-1.result
Normal file
28
testing/tests/regression-suite/107-Evo-REPORT-1.result
Normal 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>
|
||||
10
testing/tests/regression-suite/107-Evo-REPORT-1.test
Normal file
10
testing/tests/regression-suite/107-Evo-REPORT-1.test
Normal 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
|
||||
28
testing/tests/regression-suite/108-Evo-REPORT-1.result
Normal file
28
testing/tests/regression-suite/108-Evo-REPORT-1.result
Normal 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>
|
||||
10
testing/tests/regression-suite/108-Evo-REPORT-1.test
Normal file
10
testing/tests/regression-suite/108-Evo-REPORT-1.test
Normal 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
|
||||
Loading…
x
Reference in New Issue
Block a user