Skip to content

Commit 47554a9

Browse files
authored
Merge pull request #361 from rakelley/absolute-urls-should-include-port
All absolute url generation should include ports
2 parents 01a4684 + 3bf453f commit 47554a9

File tree

5 files changed

+51
-7
lines changed

5 files changed

+51
-7
lines changed

Resources/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules/
2+
yarn.lock
3+
package-lock.json

Resources/js/router.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,13 +295,13 @@ class Router {
295295
// Foo-bar!
296296
url = this.context_.base_url + url;
297297
if (route.requirements && ("_scheme" in route.requirements) && this.getScheme() != route.requirements["_scheme"]) {
298-
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + url;
298+
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + ('' === port ? '' : ':' + port) + url;
299299
} else if ("undefined" !== typeof route.schemes && "undefined" !== typeof route.schemes[0] && this.getScheme() !== route.schemes[0]) {
300-
url = route.schemes[0] + "://" + (host || this.getHost()) + url;
300+
url = route.schemes[0] + "://" + (host || this.getHost()) + ('' === port ? '' : ':' + port) + url;
301301
} else if (host && this.getHost() !== host + ('' === port ? '' : ':' + port)) {
302302
url = this.getScheme() + "://" + host + ('' === port ? '' : ':' + port) + url;
303303
} else if (absolute === true) {
304-
url = this.getScheme() + "://" + this.getHost() + url;
304+
url = this.getScheme() + "://" + this.getHost() + ('' === port ? '' : ':' + port) + url;
305305
}
306306

307307
if (Object.keys(unusedParams).length > 0) {

Resources/js/router.test.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,19 @@ function testGenerateUsesAbsoluteUrl() {
183183
assertEquals('http://localhost/foo/bar', router.generate('homepage', [], true));
184184
}
185185

186+
function testGenerateUsesAbsoluteUrlWithGivenPort() {
187+
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http", port: "8000"}, {
188+
homepage: {
189+
tokens: [['text', '/bar']],
190+
defaults: {},
191+
requirements: {},
192+
hosttokens: []
193+
}
194+
});
195+
196+
assertEquals('http://localhost:8000/foo/bar', router.generate('homepage', [], true));
197+
}
198+
186199
function testGenerateUsesAbsoluteUrlWhenSchemeRequirementGiven() {
187200
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http"}, {
188201
homepage: {
@@ -196,6 +209,19 @@ function testGenerateUsesAbsoluteUrlWhenSchemeRequirementGiven() {
196209
assertEquals('http://localhost/foo/bar', router.generate('homepage', [], true));
197210
}
198211

212+
function testGenerateUsesAbsoluteUrlWithGivenPortWhenSchemeRequirementGiven() {
213+
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http", port: "8080"}, {
214+
homepage: {
215+
tokens: [['text', '/bar']],
216+
defaults: {},
217+
requirements: {"_scheme": "http"},
218+
hosttokens: []
219+
}
220+
});
221+
222+
assertEquals('http://localhost:8080/foo/bar', router.generate('homepage', [], true));
223+
}
224+
199225
function testGenerateUsesAbsoluteUrlWhenSchemeGiven() {
200226
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http"}, {
201227
homepage: {
@@ -211,6 +237,21 @@ function testGenerateUsesAbsoluteUrlWhenSchemeGiven() {
211237
assertEquals('http://localhost/foo/bar', router.generate('homepage', [], true));
212238
}
213239

240+
function testGenerateUsesAbsoluteUrlWithGivenPortWhenSchemeGiven() {
241+
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http", port:"1234"}, {
242+
homepage: {
243+
tokens: [['text', '/bar']],
244+
defaults: {},
245+
requirements: {},
246+
hosttokens: [],
247+
schemes: ['http'],
248+
methods: []
249+
}
250+
});
251+
252+
assertEquals('http://localhost:1234/foo/bar', router.generate('homepage', [], true));
253+
}
254+
214255
function testGenerateWithOptionalTrailingParam() {
215256
var router = new fos.Router({base_url: ''}, {
216257
posts: {

Resources/public/js/router.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,13 +368,13 @@ var Router = function () {
368368
// Foo-bar!
369369
url = this.context_.base_url + url;
370370
if (route.requirements && "_scheme" in route.requirements && this.getScheme() != route.requirements["_scheme"]) {
371-
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + url;
371+
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + ('' === port ? '' : ':' + port) + url;
372372
} else if ("undefined" !== typeof route.schemes && "undefined" !== typeof route.schemes[0] && this.getScheme() !== route.schemes[0]) {
373-
url = route.schemes[0] + "://" + (host || this.getHost()) + url;
373+
url = route.schemes[0] + "://" + (host || this.getHost()) + ('' === port ? '' : ':' + port) + url;
374374
} else if (host && this.getHost() !== host + ('' === port ? '' : ':' + port)) {
375375
url = this.getScheme() + "://" + host + ('' === port ? '' : ':' + port) + url;
376376
} else if (absolute === true) {
377-
url = this.getScheme() + "://" + this.getHost() + url;
377+
url = this.getScheme() + "://" + this.getHost() + ('' === port ? '' : ':' + port) + url;
378378
}
379379

380380
if (Object.keys(unusedParams).length > 0) {

Resources/public/js/router.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)