From 39864ba464c19e5e1e65d8e08fc55a2e62e6d123 Mon Sep 17 00:00:00 2001
From: Tom Robinson <tlrobinson@gmail.com>
Date: Thu, 13 Apr 2017 13:17:13 -0700
Subject: [PATCH] Fix public link URLs

---
 .../settings/components/widgets/PublicLinksListing.jsx     | 4 ++--
 .../metabase/dashboard/containers/DashboardEmbedWidget.jsx | 2 +-
 frontend/src/metabase/lib/urls.js                          | 7 +++++--
 .../query_builder/containers/QuestionEmbedWidget.jsx       | 2 +-
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/frontend/src/metabase/admin/settings/components/widgets/PublicLinksListing.jsx b/frontend/src/metabase/admin/settings/components/widgets/PublicLinksListing.jsx
index 892ba549ca6..49f5dfc9e88 100644
--- a/frontend/src/metabase/admin/settings/components/widgets/PublicLinksListing.jsx
+++ b/frontend/src/metabase/admin/settings/components/widgets/PublicLinksListing.jsx
@@ -152,7 +152,7 @@ export const PublicLinksDashboardListing = () =>
         revoke={DashboardApi.deletePublicLink}
         type='Public Dashboard Listing'
         getUrl={({ id }) => Urls.dashboard(id)}
-        getPublicUrl={({ public_uuid }) => window.location.origin + Urls.publicDashboard(public_uuid)}
+        getPublicUrl={({ public_uuid }) => Urls.publicDashboard(public_uuid)}
         noLinksMessage="No dashboards have been publicly shared yet."
     />;
 
@@ -162,7 +162,7 @@ export const PublicLinksQuestionListing = () =>
         revoke={CardApi.deletePublicLink}
         type='Public Card Listing'
         getUrl={({ id }) => Urls.question(id)}
-        getPublicUrl={({ public_uuid }) => window.location.origin + Urls.publicCard(public_uuid)}
+        getPublicUrl={({ public_uuid }) => Urls.publicCard(public_uuid)}
         noLinksMessage="No questions have been publicly shared yet."
     />;
 
diff --git a/frontend/src/metabase/dashboard/containers/DashboardEmbedWidget.jsx b/frontend/src/metabase/dashboard/containers/DashboardEmbedWidget.jsx
index cd76a516159..72dd16754d8 100644
--- a/frontend/src/metabase/dashboard/containers/DashboardEmbedWidget.jsx
+++ b/frontend/src/metabase/dashboard/containers/DashboardEmbedWidget.jsx
@@ -32,7 +32,7 @@ export default class DashboardEmbedWidget extends Component {
                 onDisablePublicLink={() => deletePublicLink(dashboard)}
                 onUpdateEnableEmbedding={(enableEmbedding) => updateEnableEmbedding(dashboard, enableEmbedding)}
                 onUpdateEmbeddingParams={(embeddingParams) => updateEmbeddingParams(dashboard, embeddingParams)}
-                getPublicUrl={({ public_uuid }) => window.location.origin + Urls.publicDashboard(public_uuid)}
+                getPublicUrl={({ public_uuid }) => Urls.publicDashboard(public_uuid)}
             />
         );
     }
diff --git a/frontend/src/metabase/lib/urls.js b/frontend/src/metabase/lib/urls.js
index 7c2eba73166..8ea28ce358e 100644
--- a/frontend/src/metabase/lib/urls.js
+++ b/frontend/src/metabase/lib/urls.js
@@ -1,4 +1,5 @@
 import { serializeCardForUrl } from "metabase/lib/card";
+import MetabaseSettings from "metabase/lib/settings"
 
 // provides functions for building urls to things we care about
 
@@ -59,11 +60,13 @@ export function label(label) {
 }
 
 export function publicCard(uuid, type = null) {
-    return `/public/question/${uuid}` + (type ? `.${type}` : ``);
+    const siteUrl = MetabaseSettings.get("site-url");
+    return `${siteUrl}/public/question/${uuid}` + (type ? `.${type}` : ``);
 }
 
 export function publicDashboard(uuid) {
-    return `/public/dashboard/${uuid}`;
+    const siteUrl = MetabaseSettings.get("site-url");
+    return `${siteUrl}/public/dashboard/${uuid}`;
 }
 
 export function embedCard(token, type = null) {
diff --git a/frontend/src/metabase/query_builder/containers/QuestionEmbedWidget.jsx b/frontend/src/metabase/query_builder/containers/QuestionEmbedWidget.jsx
index 5ad4562fd56..fef991cbcf2 100644
--- a/frontend/src/metabase/query_builder/containers/QuestionEmbedWidget.jsx
+++ b/frontend/src/metabase/query_builder/containers/QuestionEmbedWidget.jsx
@@ -32,7 +32,7 @@ export default class QuestionEmbedWidget extends Component {
                 onDisablePublicLink={() => deletePublicLink(card)}
                 onUpdateEnableEmbedding={(enableEmbedding) => updateEnableEmbedding(card, enableEmbedding)}
                 onUpdateEmbeddingParams={(embeddingParams) => updateEmbeddingParams(card, embeddingParams)}
-                getPublicUrl={({ public_uuid }, extension) => window.location.origin + Urls.publicCard(public_uuid, extension)}
+                getPublicUrl={({ public_uuid }, extension) => Urls.publicCard(public_uuid, extension)}
                 extensions={["csv", "json"]}
             />
         );
-- 
GitLab