Skip to content
This repository has been archived by the owner on Jul 31, 2019. It is now read-only.

Commit

Permalink
Fix #645 - Don't use CDNs, improve requirejs config/loading
Browse files Browse the repository at this point in the history
  • Loading branch information
humphd committed Jul 20, 2015
1 parent 38272df commit 171ca47
Show file tree
Hide file tree
Showing 10 changed files with 130 additions and 140 deletions.
5 changes: 1 addition & 4 deletions bower.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
{
"name": "thimble.webmaker.org",
"dependencies": {
"zepto": "~1.1.6",
"jquery": "http://code.jquery.com/jquery-2.1.4.min.js",
"cookies-js": "~1.2.1",
"node-uuid": "~1.4.3",
"webmaker-i18n": "https://github.com/mozilla/node-webmaker-i18n/archive/v0.3.8.tar.gz"
},
"resolutions": {
"selectize": "0.10.1"
},
"version": "1.0.94"
}
21 changes: 0 additions & 21 deletions public/scripts/editor/js/require-config.js

This file was deleted.

41 changes: 41 additions & 0 deletions public/scripts/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
require.config({
baseUrl: "scripts/editor/js",
paths: {
"text": "../vendor/require.text",
"i18n": "../vendor/require.i18n",
"sso-override": "../../sso-override",
"jquery": "/bower/jquery/index",
"localized": "/bower/webmaker-i18n/localized",
"uuid": "/bower/node-uuid/uuid",
"cookies": "/bower/cookies-js/dist/cookies"
},
shim: {
"jquery": {
exports: "$"
}
},
config: {
template: {
htmlPath: "templates",
i18nPath: "fc/nls/ui"
}
}
});

define(["bramble-editor", "sso-override"], function(BrambleEditor) {
var thimbleScript = document.getElementById("thimble-script");
var appUrl = thimbleScript.getAttribute("data-app-url");
var makeDetails = thimbleScript.getAttribute("data-make-details");
var editorUrl = thimbleScript.getAttribute("data-editor-url");
var editorHost = thimbleScript.getAttribute("data-editor-host");

// unpack makedetails
makeDetails = JSON.parse(decodeURIComponent(makeDetails));

var editor = BrambleEditor({
makeDetails: makeDetails,
editorUrl: editorUrl,
editorHost: editorHost,
appUrl: appUrl
});
});
73 changes: 73 additions & 0 deletions public/scripts/sso-override.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/**
* This code ensures the "publish" button is only
* visible when the user is logged in according
* the persona SSO that we employ for webmaker.org
*/
define(["jquery", "uuid", "cookies"], function($, uuid, cookies) {
function setStateCookie(state) {
cookies.expire("state");
cookies.set("state", state);
}

var overrideElement = document.getElementById("publish-ssooverride");
var authHostname = overrideElement.getAttribute("data-login-authHostname");
var oauthClientId = overrideElement.getAttribute("data-oauth-clientid");

var user = {
username: overrideElement.getAttribute("data-oauth-username"),
avatar: overrideElement.getAttribute("data-oauth-avatar")
};

var joinEl = $('#signup-link');
var loginEl = $('#login-link');
var logoutEl = $('#logout-link');

var basicQuery = "?" + [
"client_id=" + oauthClientId,
"response_type=code",
"scopes=user email"
].join("&");

// Signup login flow
joinEl.on('click', function(e) {
e.preventDefault();

var state = uuid.v4();
var oauthRoute = "/login/oauth/authorize";

var query = authHostname + oauthRoute + basicQuery + [
"&state=" + state,
"action=signup"
].join("&");

setStateCookie(state);

window.location = query;
});

// Login flow
loginEl.on('click', function(e) {
e.preventDefault();

var state = uuid.v4();
var oauthRoute = "/login/oauth/authorize";

var query = authHostname + oauthRoute + basicQuery + [
"&state=" + state,
"action=signin"
].join("&");

setStateCookie(state);

window.location = query;
});

logoutEl.on('click', function(e) {
e.preventDefault();

var oauthRoute = "/logout";
var query = authHostname + oauthRoute + "?client_id=" + oauthClientId;

window.location = query;
});
});
74 changes: 0 additions & 74 deletions public/scripts/ssooverride.js

This file was deleted.

22 changes: 0 additions & 22 deletions public/scripts/thimble-page.js

This file was deleted.

9 changes: 0 additions & 9 deletions views/bramble.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,4 @@
{% include 'nav-options.html' %}
</div>
<div id="webmaker-bramble"></div>

<script src="/scripts/editor/js/require-config.js"></script>
<script src="scripts/editor/vendor/require.min.js"></script>
<script id="friendly-code" src="/scripts/thimble-page.js"
data-make-details="{{ makedetails }}"
data-editor-host="{{ editorHOST }}"
data-editor-url="{{ editorURL }}"
data-app-url="{{ appURL }}">
</script>
{% endblock %}
10 changes: 0 additions & 10 deletions views/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,4 @@
{% include 'userbar.html' %}
{% include 'bramble.html' %}
{% include 'publish.html' %}
{% block ssooverride %}
<script id="ssooverride" src="/scripts/ssooverride.js"
data-login-authHostname="{{ OAUTH_AUTHORIZATION_URL }}"
data-login-thimbleHostname="{{ appURL }}"
data-oauth-clientid="{{ OAUTH_CLIENT_ID }}"
data-oauth-username="{{ username }}"
data-oauth-avatar="{{ avatar }}"
async>
</script>
{% endblock %}
{% endblock %}
8 changes: 8 additions & 0 deletions views/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@
<link rel="stylesheet" href="/stylesheets/publish.css">

<script src="{{ editorHOST }}/dist/bramble.js"></script>
<script id="thimble-script"
src="scripts/editor/vendor/require.min.js"
data-main="/scripts/main.js"
data-make-details="{{ makedetails }}"
data-editor-host="{{ editorHOST }}"
data-editor-url="{{ editorURL }}"
data-app-url="{{ appURL }}">
</script>
{% if GA_ACCOUNT %}
<script id="google-analytics-js" src="/scripts/google-analytics.js"
data-ga-account="{{ GA_ACCOUNT }}"
Expand Down
7 changes: 7 additions & 0 deletions views/publish.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
{% block publishdialog %}
<div id="publish-ssooverride" class="hide"
data-login-authHostname="{{ OAUTH_AUTHORIZATION_URL }}"
data-login-thimbleHostname="{{ appURL }}"
data-oauth-clientid="{{ OAUTH_CLIENT_ID }}"
data-oauth-username="{{ username }}"
data-oauth-avatar="{{ avatar }}"
</div>
<div id="publish-underlay" class="hide"></div>
<div id="publish-dialog" class="hide">
<div id="publish-title">
Expand Down

0 comments on commit 171ca47

Please sign in to comment.