Просмотр исходного кода

Merge pull request #333 from sharelatex/support-package-versions

Support package versions
Brian Gough 10 лет назад
Родитель
Сommit
2d1a0b34d5

+ 4 - 3
services/web/Gruntfile.coffee

@@ -1,4 +1,5 @@
 fs = require "fs"
+PackageVersions = require "./app/coffee/infrastructure/PackageVersions"
 
 module.exports = (grunt) ->
 	grunt.loadNpmTasks 'grunt-contrib-coffee'
@@ -157,12 +158,12 @@ module.exports = (grunt) ->
 					inlineText: false
 					preserveLicenseComments: false
 					paths:
-						"moment": "libs/moment-2.9.0"
+						"moment": "libs/#{PackageVersions.lib('moment')}"
 						"mathjax": "/js/libs/mathjax/MathJax.js?config=TeX-AMS_HTML"
-						"libs/pdf": "libs/pdfjs-1.3.91p1/pdf"
+						"libs/pdf": "libs/#{PackageVersions.lib('pdfjs')}/pdf"
 					shim:
 						"libs/pdf":
-							deps: ["libs/pdfjs-1.3.91p1/compatibility"]
+							deps: ["libs/#{PackageVersions.lib('pdfjs')}/compatibility"]
 
 					skipDirOptimize: true
 					modules: [

+ 2 - 1
services/web/app/coffee/Features/Project/ProjectController.coffee

@@ -19,6 +19,7 @@ ProjectUpdateHandler = require("./ProjectUpdateHandler")
 ProjectGetter = require("./ProjectGetter")
 PrivilegeLevels = require("../Authorization/PrivilegeLevels")
 AuthenticationController = require("../Authentication/AuthenticationController")
+PackageVersions = require("../../infrastructure/PackageVersions")
 
 module.exports = ProjectController =
 
@@ -333,7 +334,7 @@ defaultSettingsForAnonymousUser = (user_id)->
 
 THEME_LIST = []
 do generateThemeList = () ->
-	files = fs.readdirSync __dirname + '/../../../../public/js/ace'
+	files = fs.readdirSync __dirname + '/../../../../public/js/' + PackageVersions.lib('ace')
 	for file in files
 		if file.slice(-2) == "js" and file.match(/^theme-/)
 			cleanName = file.slice(0,-3).slice(6)

+ 8 - 6
services/web/app/coffee/infrastructure/ExpressLocals.coffee

@@ -10,17 +10,18 @@ _ = require("underscore")
 async = require("async")
 Modules = require "./Modules"
 Url = require "url"
-
+PackageVersions = require "./PackageVersions"
 fingerprints = {}
 Path = require 'path'
 
-
 jsPath =
 	if Settings.useMinifiedJs
 		"/minjs/"
 	else
 		"/js/"
 
+ace = PackageVersions.lib('ace')
+pdfjs = PackageVersions.lib('pdfjs')
 
 getFileContent = (filePath)->
 	filePath = Path.join __dirname, "../../../", "public#{filePath}"
@@ -38,10 +39,10 @@ pathList = [
 	["#{jsPath}ide.js"]
 	["#{jsPath}main.js"]
 	["#{jsPath}libs.js"]
-	["#{jsPath}ace/ace.js","#{jsPath}ace/mode-latex.js", "#{jsPath}ace/snippets/latex.js"]
-	["#{jsPath}libs/pdfjs-1.3.91p1/pdf.js"]
-	["#{jsPath}libs/pdfjs-1.3.91p1/pdf.worker.js"]
-	["#{jsPath}libs/pdfjs-1.3.91p1/compatibility.js"]
+	["#{jsPath}#{ace}/ace.js","#{jsPath}#{ace}/mode-latex.js", "#{jsPath}#{ace}/snippets/latex.js"]
+	["#{jsPath}libs/#{pdfjs}/pdf.js"]
+	["#{jsPath}libs/#{pdfjs}/pdf.worker.js"]
+	["#{jsPath}libs/#{pdfjs}/compatibility.js"]
 	["/stylesheets/style.css"]
 ]
 
@@ -92,6 +93,7 @@ module.exports = (app, webRouter, apiRouter)->
 
 		res.locals.jsPath = jsPath
 		res.locals.fullJsPath = Url.resolve(staticFilesBase, jsPath)
+		res.locals.lib = PackageVersions.lib
 
 		res.locals.buildJsPath = (jsFile, opts = {})->
 			path = Path.join(jsPath, jsFile)

+ 14 - 0
services/web/app/coffee/infrastructure/PackageVersions.coffee

@@ -0,0 +1,14 @@
+version = {
+	"pdfjs": "1.3.91p1"
+	"moment": "2.9.0"
+}
+
+module.exports = {
+	version: version
+
+	lib: (name) ->
+		if version[name]?
+			return "#{name}-#{version[name]}"
+		else
+			return "#{name}"
+}

+ 6 - 1
services/web/app/views/layout.jade

@@ -126,7 +126,12 @@ html(itemscope, itemtype='http://schema.org/Product')
 				window.requirejs = {
 					"urlArgs" : "fingerprint=#{fingerprint(jsPath + 'main.js')}-#{fingerprint(jsPath + 'libs.js')}",
 					"paths" : {
-						"moment": "libs/moment-2.7.0"
+						"moment": "libs/#{lib('moment')}"
+					},
+					"config":{
+						"moment":{
+							"noGlobal": true
+						}
 					}
 				};
 			script(

+ 13 - 12
services/web/app/views/project/editor.jade

@@ -101,36 +101,37 @@ block content
 		window.requirejs = {
 			"paths" : {
 				"mathjax": "#{buildJsPath('/libs/mathjax/MathJax.js', {cdn:false, fingerprint:false, qs:{config:'TeX-AMS_HTML'}})}",
-				"moment": "libs/moment-2.7.0",
-				"libs/pdf": "libs/pdfjs-1.3.91p1/pdf",
+				"moment": "libs/#{lib('moment')}",
+				"libs/pdf": "libs/#{lib('pdfjs')}/pdf",
+				"ace": "#{lib('ace')}"
 			},
 			"urlArgs" : "fingerprint=#{fingerprint(jsPath + 'ide.js')}-#{fingerprint(jsPath + 'libs.js')}",
 			"waitSeconds": 0,
 			"shim": {
 				"libs/pdf": {
-					deps: ["libs/pdfjs-1.3.91p1/compatibility"]
+					"deps": ["libs/#{lib('pdfjs')}/compatibility"]
 				},
 				"ace/ext-searchbox": {
-					deps: ["ace/ace"]
+					"deps": ["ace/ace"]
 				},
 				"ace/ext-language_tools": {
-					deps: ["ace/ace"]
+					"deps": ["ace/ace"]
 				}
 			},
-			config:{
-				moment:{
-					noGlobal: true
+			"config":{
+				"moment":{
+					"noGlobal": true
 				}
 			}
 		};
-		window.aceFingerprint = "#{fingerprint(jsPath + 'ace/ace.js')}"
+		window.aceFingerprint = "#{fingerprint(jsPath + lib('ace') + '/ace.js')}"
 
 	- locals.suppressDefaultJs = true
 
-	- var pdfPath = 'libs/pdfjs-1.3.91p1/pdf.worker.js'
+	- var pdfPath = "libs/" + lib('pdfjs') + "/pdf.worker.js"
 	- var fingerprintedPath = fingerprint(jsPath+pdfPath)
 	- var pdfJsWorkerPath = buildJsPath(pdfPath, {cdn:false,qs:{fingerprint:fingerprintedPath}}) // don't use worker for cdn
-	- var aceWorkerPath = user.betaProgram ? buildJsPath("ace", {cdn:false,fingerprint:false}) : "" // don't use worker for cdn
+	- var aceWorkerPath = user.betaProgram ? buildJsPath(lib('ace'), {cdn:false,fingerprint:false}) : "" // don't use worker for cdn
 
 	script(type='text/javascript').
 		window.pdfJsWorkerPath = "#{pdfJsWorkerPath}";
@@ -139,7 +140,7 @@ block content
 	script(
 		data-main=buildJsPath("ide.js", {fingerprint:false}),
 		baseurl=fullJsPath,
-		data-ace-base=buildJsPath('ace', {fingerprint:false}),
+		data-ace-base=buildJsPath(lib('ace'), {fingerprint:false}),
 		src=buildJsPath('libs/require.js')
 	)
 

+ 2 - 2
services/web/public/coffee/filters/formatDate.coffee

@@ -1,6 +1,6 @@
 define [
 	"base"
-	"libs/moment-2.9.0"
+	"moment"
 ], (App, moment) ->
 	moment.locale "en", calendar:
 		lastDay : '[Yesterday]'
@@ -16,4 +16,4 @@ define [
 
 	App.filter "relativeDate", () ->
 		(date) ->
-			moment(date).calendar()
+			moment(date).calendar()

+ 2 - 1
services/web/public/coffee/ide/track-changes/TrackChangesManager.coffee

@@ -1,8 +1,9 @@
 define [
+	"moment"
 	"ide/track-changes/controllers/TrackChangesListController"
 	"ide/track-changes/controllers/TrackChangesDiffController"
 	"ide/track-changes/directives/infiniteScroll"
-], () ->
+], (moment) ->
 	class TrackChangesManager
 		constructor: (@ide, @$scope) ->
 			@reset()

+ 1 - 1
services/web/public/coffee/libs.coffee

@@ -1,5 +1,5 @@
 define [
-	"libs/moment-2.9.0"
+	"moment"
 	"libs/angular-autocomplete/angular-autocomplete"
 	"libs/ui-bootstrap"
 	"libs/ng-context-menu-0.1.4"