Added URLMap support (e.g. virtual hosts and mounting)
This commit is contained in:
parent
e15c32e3f7
commit
2516ff12c1
10 changed files with 54 additions and 22 deletions
20
eg/urlmap.psgi
Normal file
20
eg/urlmap.psgi
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
use lib '/data/WebGUI/lib';
|
||||
use WebGUI;
|
||||
|
||||
my $wg1 = WebGUI->new;
|
||||
my $wg2 = WebGUI->new;
|
||||
|
||||
use Plack::Builder;
|
||||
my $app = builder {
|
||||
mount "http://dev.localhost.localdomain:5000/" => $wg1;
|
||||
mount "/wg1" => $wg1;
|
||||
mount "/wg2" => $wg2;
|
||||
mount "/" => sub { [ 200, [ 'Content-Type' => 'text/html' ], [ <<END_HTML ] ] };
|
||||
<p>WebGUI + URLMap</p>
|
||||
<ul>
|
||||
<li><a href="http://dev.localhost.localdomain:5000">Virtual Host (wG instance #1)</a></li>
|
||||
<li><a href=/wg1>Nested (wG instance #1)</a></li>
|
||||
<li><a href=/wg2>Nested (wG instance #2)</a></li>
|
||||
</ul>
|
||||
END_HTML
|
||||
};
|
||||
|
|
@ -742,8 +742,8 @@ sub fixUrl {
|
|||
# fix urls used by uploads and extras
|
||||
# and those beginning with http
|
||||
my @badUrls = (
|
||||
$self->session->config->get("extrasURL"),
|
||||
$self->session->config->get("uploadsURL"),
|
||||
$self->session->url->make_urlmap_work($self->session->config->get("extrasURL")),
|
||||
$self->session->url->make_urlmap_work($self->session->config->get("uploadsURL")),
|
||||
);
|
||||
foreach my $badUrl (@badUrls) {
|
||||
$badUrl =~ s{ / $ }{}x; # Remove trailing slashes from the end of the URL
|
||||
|
|
@ -1970,7 +1970,7 @@ sub outputWidgetMarkup {
|
|||
my $assetId = $self->getId;
|
||||
my $hexId = $session->id->toHex($assetId);
|
||||
my $conf = $session->config;
|
||||
my $extras = $conf->get('extrasURL');
|
||||
my $extras = $session->url->make_urlmap_work($conf->get('extrasURL'));
|
||||
|
||||
# the widgetized version of content that has the widget macro in it is
|
||||
# executing in an iframe. this iframe doesn't have a style object.
|
||||
|
|
@ -2072,7 +2072,7 @@ sub prepareWidgetView {
|
|||
my $self = shift;
|
||||
my $templateId = shift;
|
||||
my $template = WebGUI::Asset::Template->newById($self->session, $templateId);
|
||||
my $extras = $self->session->config->get('extrasURL');
|
||||
my $extras = $self->session->url->make_urlmap_work($self->session->config->get('extrasURL'));
|
||||
|
||||
$template->prepare;
|
||||
|
||||
|
|
|
|||
|
|
@ -741,7 +741,7 @@ sub view {
|
|||
my $config = $session->config;
|
||||
my $eh = $session->errorHandler;
|
||||
|
||||
$var->{'extras'} = $config->get("extrasURL")."/wobject/ProjectManager";
|
||||
$var->{'extras'} = $session->url->make_urlmap_work($config->get("extrasURL"))."/wobject/ProjectManager";
|
||||
$var->{'project.create'} = $self->getUrl("func=editProject;projectId=new");
|
||||
$var->{'project.create.label'} = $i18n->get("project new label");
|
||||
|
||||
|
|
@ -904,7 +904,7 @@ sub www_drawGanttChart {
|
|||
|
||||
my ($dunits,$hoursPerDay) = $db->quickArray("select durationUnits,hoursPerDay from PM_project where projectId=".$db->quote($projectId));
|
||||
|
||||
$var->{'extras'} = $config->get("extrasURL")."/wobject/ProjectManager";
|
||||
$var->{'extras'} = $session->url->make_urlmap_work($config->get("extrasURL"))."/wobject/ProjectManager";
|
||||
|
||||
#Initialize display settings
|
||||
my $projectDisplay = "weeks";
|
||||
|
|
@ -1494,8 +1494,8 @@ sub www_editTask {
|
|||
});
|
||||
$var->{'form.footer'} = WebGUI::Form::formFooter($session);
|
||||
|
||||
$var->{'extras'} = $config->get("extrasURL");
|
||||
$var->{'assetExtras'} = $config->get("extrasURL").'/wobject/ProjectManager';
|
||||
$var->{'extras'} = $session->url->make_urlmap_work($config->get("extrasURL"));
|
||||
$var->{'assetExtras'} = $session->url->make_urlmap_work($config->get("extrasURL")).'/wobject/ProjectManager';
|
||||
|
||||
$var->{'task_name_label'} = $i18n->get('task name label');
|
||||
$var->{'task_start_label'} = $i18n->get('task start label');
|
||||
|
|
@ -1726,8 +1726,8 @@ sub www_viewProject {
|
|||
return $privilege->insufficient unless $self->_userCanObserveProject($user, $projectId);
|
||||
|
||||
#Set extras template variables
|
||||
my $extras = $config->get("extrasURL");
|
||||
my $assetExtras = $config->get("extrasURL")."/wobject/ProjectManager";
|
||||
my $extras = $session->url->make_urlmap_work($config->get("extrasURL"));
|
||||
my $assetExtras = $session->url->make_urlmap_work($config->get("extrasURL"))."/wobject/ProjectManager";
|
||||
$var->{'extras' } = $assetExtras;
|
||||
$var->{'extras.base'} = $extras;
|
||||
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ sub view {
|
|||
|
||||
my ($session,$privilege,$form,$db,$dt,$user,$eh,$config) = $self->getSessionVars("privilege","form","db","datetime","user","errorHandler","config");
|
||||
my $i18n = WebGUI::International->new($session,'Asset_TimeTracking');
|
||||
$var->{'extras'} = $config->get("extrasURL")."/wobject/TimeTracking";
|
||||
$var->{'extras'} = $session->url->make_urlmap_work($config->get("extrasURL"))."/wobject/TimeTracking";
|
||||
|
||||
if($user->isInGroup($self->groupToManage)) {
|
||||
$var->{'project.manage.url'} = $self->getUrl("func=manageProjects");
|
||||
|
|
@ -337,7 +337,7 @@ sub www_editProject {
|
|||
return $privilege->insufficient unless ($user->isInGroup($self->groupToManage));
|
||||
my $projectId = $_[0] || $form->get("projectId") || "new";
|
||||
my $taskError = qq|<br><span style="color:red;font-weight:bold">$_[1]</span>| if($_[1]);
|
||||
my $extras = $config->get("extrasURL")."/wobject/TimeTracking";
|
||||
my $extras = $session->url->make_urlmap_work($config->get("extrasURL"))."/wobject/TimeTracking";
|
||||
|
||||
my $project = $db->quickHashRef("select * from TT_projectList where projectId=".$db->quote($projectId));
|
||||
#Build Form
|
||||
|
|
@ -509,7 +509,7 @@ sub www_manageProjects {
|
|||
my $pnLabel = $i18n->get("manage project name label");
|
||||
my $atLabel = $i18n->get("manage project available task label");
|
||||
my $resLabel = $i18n->get("manage project resource label");
|
||||
my $extras = $config->get("extrasURL")."/wobject/TimeTracking";
|
||||
my $extras = $session->url->make_urlmap_work($config->get("extrasURL"))."/wobject/TimeTracking";
|
||||
my $errorMessage = "";
|
||||
$errorMessage = qq|<span style="color:red;font-weight:bold">$_[0]</span>| if($_[0]);
|
||||
|
||||
|
|
|
|||
|
|
@ -636,9 +636,9 @@ sub exportSymlinkExtrasUploads {
|
|||
|
||||
my $config = $session->config;
|
||||
my $extrasPath = $config->get('extrasPath');
|
||||
my $extrasUrl = $config->get('extrasURL');
|
||||
my $extrasUrl = $session->url->make_urlmap_work($config->get('extrasURL'));
|
||||
my $uploadsPath = $config->get('uploadsPath');
|
||||
my $uploadsUrl = $config->get('uploadsURL');
|
||||
my $uploadsUrl = $session->url->make_urlmap_work($config->get('uploadsURL'));
|
||||
|
||||
# we have no assurance whether the exportPath is valid or not, so check it.
|
||||
my $exportPath = WebGUI::Asset->exportCheckPath($session);
|
||||
|
|
|
|||
|
|
@ -92,8 +92,8 @@ sub process {
|
|||
|
||||
my $uploadsDir = Path::Class::Dir->new($session->config->get('uploadsPath'));
|
||||
my $extrasDir = Path::Class::Dir->new($session->config->get('extrasPath'));
|
||||
my $uploadsUrl = Path::Class::Dir->new($session->config->get('uploadsURL'));
|
||||
my $extrasUrl = Path::Class::Dir->new($session->config->get('extrasURL'));
|
||||
my $uploadsUrl = Path::Class::Dir->new($session->url->make_urlmap_work($session->config->get('uploadsURL')));
|
||||
my $extrasUrl = Path::Class::Dir->new($session->url->make_urlmap_work($session->config->get('extrasURL')));
|
||||
|
||||
##Normal mode
|
||||
if (! $session->var->isAdminOn) {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ sub process {
|
|||
|
||||
# Get location for CSS and JS files
|
||||
my $conf = $session->config;
|
||||
my $extras = $conf->get("extrasURL");
|
||||
my $extras = $session->url->make_urlmap_work($conf->get("extrasURL"));
|
||||
|
||||
# add CSS and JS to the page
|
||||
my $style = $session->style;
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ consecutive slashes in the path part of the URL will be replaced with a single s
|
|||
sub extras {
|
||||
my $self = shift;
|
||||
my $path = shift;
|
||||
my $url = $self->session->config->get("extrasURL");
|
||||
my $url = $self->session->url->make_urlmap_work($self->session->config->get("extrasURL"));
|
||||
my $cdnCfg = $self->session->config->get('cdn');
|
||||
if ( $cdnCfg and $cdnCfg->{'enabled'} and $cdnCfg->{'extrasCdn'} ) {
|
||||
unless ( $path and grep $path =~ m/$_/, @{ $cdnCfg->{'extrasExclude'} } ) {
|
||||
|
|
@ -190,7 +190,7 @@ sub gateway {
|
|||
my $pageUrl = shift;
|
||||
my $pairs = shift;
|
||||
my $skipPreventProxyCache = shift;
|
||||
my $url = $self->session->config->get("gateway").'/'.$pageUrl;
|
||||
my $url = $self->make_urlmap_work($self->session->config->get("gateway")).'/'.$pageUrl;
|
||||
$url =~ s/\/+/\//g;
|
||||
if ($self->session->setting->get("preventProxyCache") == 1 and !$skipPreventProxyCache) {
|
||||
$url = $self->append($url,"noCache=".randint(0,1000).':'.$self->session->datetime->time());
|
||||
|
|
@ -198,7 +198,19 @@ sub gateway {
|
|||
if ($pairs) {
|
||||
$url = $self->append($url,$pairs);
|
||||
}
|
||||
return $url;
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
# Temporary hack
|
||||
sub make_urlmap_work {
|
||||
my $self = shift;
|
||||
my $url = shift;
|
||||
my $uri = $self->session->request->base;
|
||||
$uri->path($uri->path . $url);
|
||||
my $path = $uri->path;
|
||||
$path =~ s{^//}{/};
|
||||
return $path;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1265,7 +1265,7 @@ If specified, we'll return a URL to the file rather than the storage location.
|
|||
sub getUrl {
|
||||
my $self = shift;
|
||||
my $file = shift;
|
||||
my $url = $self->session->config->get("uploadsURL") . '/' . $self->getPathFrag;
|
||||
my $url = $self->session->url->make_urlmap_work($self->session->config->get("uploadsURL")) . '/' . $self->getPathFrag;
|
||||
my $cdnCfg = $self->session->config->get('cdn');
|
||||
if ( $cdnCfg
|
||||
and $cdnCfg->{'enabled'}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue