1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 08:42:41 +01:00

I guess this can support JS too.

This commit is contained in:
epriestley 2011-01-29 16:16:09 -08:00
parent 0c8b04d5a8
commit 9f04548ab9
5 changed files with 49 additions and 1 deletions

View file

@ -111,12 +111,24 @@ foreach ($file_map as $path => $info) {
$package_map = array(); $package_map = array();
foreach ($package_spec as $name => $package) { foreach ($package_spec as $name => $package) {
$hashes = array(); $hashes = array();
$type = null;
foreach ($package as $symbol) { foreach ($package as $symbol) {
if (empty($hash_map[$symbol])) { if (empty($hash_map[$symbol])) {
throw new Exception( throw new Exception(
"Package specification for '{$name}' includes '{$symbol}', but that ". "Package specification for '{$name}' includes '{$symbol}', but that ".
"symbol is not defined anywhere."); "symbol is not defined anywhere.");
} }
if ($type === null) {
$type = $runtime_map[$symbol]['type'];
} else {
$ntype = $runtime_map[$symbol]['type'];
if ($type !== $ntype) {
throw new Exception(
"Package specification for '{$name}' mixes resources of type ".
"'{$type}' with resources of type '{$ntype}'. Each package may only ".
"contain one type of resource.");
}
}
$hashes[] = $symbol.':'.$hash_map[$symbol]; $hashes[] = $symbol.':'.$hash_map[$symbol];
} }
$key = substr(md5(implode("\n", $hashes)), 0, 8); $key = substr(md5(implode("\n", $hashes)), 0, 8);
@ -124,7 +136,7 @@ foreach ($package_spec as $name => $package) {
'name' => $name, 'name' => $name,
'symbols' => $package, 'symbols' => $package,
'uri' => '/res/pkg/'.$key.'/'.$name, 'uri' => '/res/pkg/'.$key.'/'.$name,
'type' => 'css', // TODO LOL 'type' => $type,
); );
foreach ($package as $symbol) { foreach ($package as $symbol) {
$package_map['reverse'][$symbol] = $key; $package_map['reverse'][$symbol] = $key;

View file

@ -97,6 +97,7 @@ phutil_register_library_map(array(
'DifferentialUnitStatus' => 'applications/differential/constants/unitstatus', 'DifferentialUnitStatus' => 'applications/differential/constants/unitstatus',
'Javelin' => 'infratructure/javelin/api', 'Javelin' => 'infratructure/javelin/api',
'LiskDAO' => 'storage/lisk/dao', 'LiskDAO' => 'storage/lisk/dao',
'Phabricator404Controller' => 'applications/base/controller/404',
'PhabricatorAuthController' => 'applications/auth/controlller/base', 'PhabricatorAuthController' => 'applications/auth/controlller/base',
'PhabricatorConduitAPIController' => 'applications/conduit/controller/api', 'PhabricatorConduitAPIController' => 'applications/conduit/controller/api',
'PhabricatorConduitConnectionLog' => 'applications/conduit/storage/connectionlog', 'PhabricatorConduitConnectionLog' => 'applications/conduit/storage/connectionlog',
@ -240,6 +241,7 @@ phutil_register_library_map(array(
'DifferentialRevisionListController' => 'DifferentialController', 'DifferentialRevisionListController' => 'DifferentialController',
'DifferentialRevisionUpdateHistoryView' => 'AphrontView', 'DifferentialRevisionUpdateHistoryView' => 'AphrontView',
'DifferentialRevisionViewController' => 'DifferentialController', 'DifferentialRevisionViewController' => 'DifferentialController',
'Phabricator404Controller' => 'PhabricatorController',
'PhabricatorAuthController' => 'PhabricatorController', 'PhabricatorAuthController' => 'PhabricatorController',
'PhabricatorConduitAPIController' => 'PhabricatorConduitController', 'PhabricatorConduitAPIController' => 'PhabricatorConduitController',
'PhabricatorConduitConnectionLog' => 'PhabricatorConduitDAO', 'PhabricatorConduitConnectionLog' => 'PhabricatorConduitDAO',

View file

@ -28,6 +28,7 @@ abstract class AphrontApplicationConfiguration {
abstract public function getApplicationName(); abstract public function getApplicationName();
abstract public function getURIMap(); abstract public function getURIMap();
abstract public function buildRequest(); abstract public function buildRequest();
abstract public function build404Controller();
final public function setRequest(AphrontRequest $request) { final public function setRequest(AphrontRequest $request) {
$this->request = $request; $this->request = $request;
@ -45,6 +46,10 @@ abstract class AphrontApplicationConfiguration {
$path = $request->getPath(); $path = $request->getPath();
list($controller_class, $uri_data) = $mapper->mapPath($path); list($controller_class, $uri_data) = $mapper->mapPath($path);
if (!$controller_class) {
return $this->build404Controller();
}
PhutilSymbolLoader::loadClass($controller_class); PhutilSymbolLoader::loadClass($controller_class);
$controller = newv($controller_class, array($request)); $controller = newv($controller_class, array($request));

View file

@ -155,5 +155,9 @@ class AphrontDefaultApplicationConfiguration
return $response; return $response;
} }
public function build404Controller() {
return new Phabricator404Controller($request);
}
} }

View file

@ -0,0 +1,25 @@
<?php
/*
* Copyright 2011 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class Phabricator404Controller extends PhabricatorController {
public function processRequest() {
return new Aphront404Response();
}
}