diff --git a/app/schemas/models/campaign.schema.coffee b/app/schemas/models/campaign.schema.coffee index f955be498..d99e19684 100644 --- a/app/schemas/models/campaign.schema.coffee +++ b/app/schemas/models/campaign.schema.coffee @@ -107,8 +107,11 @@ _.extend CampaignSchema.properties, { level: { type: 'string', links: [{rel: 'db', href: '/db/level/{($)}/version'}], format: 'latest-version-original-reference' } type: { enum: ['heroes', 'items', 'levels'] } }} + campaign: c.shortString title: 'Campaign', description: 'Which campaign this level is part of (like "desert").', format: 'hidden' # Automatically set by campaign editor. + tasks: c.array {title: 'Tasks', description: 'Tasks to be completed for this level.'}, c.task + #- normal properties position: c.point2d() } diff --git a/app/styles/editor/campaign/campaign-editor-view.sass b/app/styles/editor/campaign/campaign-editor-view.sass index cdee91359..8ce962a8d 100644 --- a/app/styles/editor/campaign/campaign-editor-view.sass +++ b/app/styles/editor/campaign/campaign-editor-view.sass @@ -10,6 +10,10 @@ .treema-root max-height: 100% overflow: scroll + + .completion + position: absolute + right: 0 #right-column position: absolute @@ -17,12 +21,3 @@ bottom: 0 right: 0 width: 75% - - #campaign-level-view - position: absolute - top: 0 - left: 0 - right: 0 - bottom: 0 - background-color: white - z-index: 3 \ No newline at end of file diff --git a/app/styles/editor/campaign/campaign-level-view.sass b/app/styles/editor/campaign/campaign-level-view.sass new file mode 100644 index 000000000..7e9f8e686 --- /dev/null +++ b/app/styles/editor/campaign/campaign-level-view.sass @@ -0,0 +1,13 @@ +#campaign-level-view + background-color: white + position: absolute + top: 0 + left: 0 + right: 0 + z-index: 3 + + .tasks + padding: 15px + + .button.close + font-size: 63px diff --git a/app/templates/editor/campaign/campaign-level-view.jade b/app/templates/editor/campaign/campaign-level-view.jade index fd2723d52..e9163581c 100644 --- a/app/templates/editor/campaign/campaign-level-view.jade +++ b/app/templates/editor/campaign/campaign-level-view.jade @@ -1,4 +1,17 @@ .jumbotron .button.close(type="button", aria-hidden="true") × - h1= level.get('name') + h1 + span.spr= level.get('name') + a(href="/editor/level/#{level.get('slug')}", target="_blank") (edit) p= level.get('description') + + h2 TODO: actually put useful stuff in here + +if level.get('tasks') + .tasks + h3 Tasks (read only) + ul.list-unstyled + for task in level.get('tasks') + li + input(type='checkbox', checked=task.complete) + span.spl= task.name diff --git a/app/views/editor/campaign/CampaignEditorView.coffee b/app/views/editor/campaign/CampaignEditorView.coffee index 387699ed6..d320b6d8c 100644 --- a/app/views/editor/campaign/CampaignEditorView.coffee +++ b/app/views/editor/campaign/CampaignEditorView.coffee @@ -164,6 +164,7 @@ module.exports = class CampaignEditorView extends RootView @listenTo @campaignView, 'level-moved', @onCampaignLevelMoved @listenTo @campaignView, 'adjacent-campaign-moved', @onAdjacentCampaignMoved @listenTo @campaignView, 'level-clicked', @onCampaignLevelClicked + @listenTo @campaignView, 'level-double-clicked', @onCampaignLevelDoubleClicked @insertSubView @campaignView onTreemaChanged: (e, nodes) => @@ -188,8 +189,7 @@ module.exports = class CampaignEditorView extends RootView path = node.getPath() return unless _.string.startsWith path, '/levels/' original = path.split('/')[2] - level = @supermodel.getModelByOriginal Level, original - @insertSubView new CampaignLevelView({}, level) + @openCampaignLevelView @supermodel.getModelByOriginal Level, original onCampaignLevelMoved: (e) -> path = "levels/#{e.levelOriginal}/position" @@ -204,6 +204,14 @@ module.exports = class CampaignEditorView extends RootView levelTreema.select() # levelTreema.open() + onCampaignLevelDoubleClicked: (levelOriginal) -> + @openCampaignLevelView @supermodel.getModelByOriginal Level, levelOriginal + + openCampaignLevelView: (level) -> + @insertSubView campaignLevelView = new CampaignLevelView({}, level) + @listenToOnce campaignLevelView, 'hidden', => @$el.find('#campaign-view').show() + @$el.find('#campaign-view').hide() + updateRewardsForLevel: (level, rewards) -> achievements = @supermodel.getModels(Achievement) achievements = (a for a in achievements when a.get('related') is level.get('original')) @@ -250,7 +258,27 @@ class LevelsNode extends TreemaObjectNode class LevelNode extends TreemaObjectNode valueClass: 'treema-level' buildValueForDisplay: (valEl, data) -> - @buildValueForDisplaySimply valEl, data.name + name = data.name + if data.requiresSubscription + name = "[P] " + name + + status = '' + el = 'strong' + if data.adminOnly + status += " (disabled)" + el = 'span' + else if data.adventurer + status += " (adventurer)" + + completion = '' + if data.tasks + completion = "#{(t for t in data.tasks when t.complete).length} / #{data.tasks.length}" + + valEl.append $("<#{el}>").addClass('treema-shortened').text name + if status + valEl.append $('').text status + if completion + valEl.append $('').text completion populateData: -> return if @data.name? diff --git a/app/views/editor/campaign/CampaignLevelView.coffee b/app/views/editor/campaign/CampaignLevelView.coffee index b27c02aeb..1accea6a4 100644 --- a/app/views/editor/campaign/CampaignLevelView.coffee +++ b/app/views/editor/campaign/CampaignLevelView.coffee @@ -1,19 +1,24 @@ CocoView = require 'views/core/CocoView' +Level = require 'models/Level' module.exports = class CampaignLevelView extends CocoView id: 'campaign-level-view' template: require 'templates/editor/campaign/campaign-level-view' - + events: 'click .close': 'onClickClose' - + constructor: (options, @level) -> super(options) - + @fullLevel = new Level _id: @level.id + @fullLevel.fetch() + @listenToOnce @fullLevel, 'sync', => @render?() + getRenderData: -> c = super() - c.level = @level + c.level = if @fullLevel.loaded then @fullLevel else @level c onClickClose: -> - @$el.addClass('hidden') \ No newline at end of file + @$el.addClass('hidden') + @trigger 'hidden' diff --git a/app/views/play/CampaignView.coffee b/app/views/play/CampaignView.coffee index 27cd0cea7..9e7d390dd 100644 --- a/app/views/play/CampaignView.coffee +++ b/app/views/play/CampaignView.coffee @@ -34,6 +34,7 @@ module.exports = class CampaignView extends RootView events: 'click .map-background': 'onClickMap' 'click .level a': 'onClickLevel' + 'dblclick .level a': 'onDoubleClickLevel' 'click .level-info-container .start-level': 'onClickStartLevel' 'mouseenter .level a': 'onMouseEnterLevel' 'mouseleave .level a': 'onMouseLeaveLevel' @@ -236,8 +237,9 @@ module.exports = class CampaignView extends RootView @$levelInfo?.hide() levelElement = $(e.target).parents('.level') levelSlug = levelElement.data('level-slug') + levelOriginal = levelElement.data('level-original') if @editorMode - return @trigger 'level-clicked', levelSlug + return @trigger 'level-clicked', levelOriginal level = _.find _.values(@campaign.get('levels')), slug: levelSlug if application.isIPadApp @$levelInfo = @$el.find(".level-info-container[data-level-slug=#{levelSlug}]").show() @@ -256,6 +258,12 @@ module.exports = class CampaignView extends RootView @startLevel levelElement window.tracker?.trackEvent 'Clicked Level', category: 'World Map', levelID: levelSlug, ['Google Analytics'] + onDoubleClickLevel: (e) -> + return unless @editorMode + levelElement = $(e.target).parents('.level') + levelOriginal = levelElement.data('level-original') + @trigger 'level-double-clicked', levelOriginal + onClickStartLevel: (e) -> levelElement = $(e.target).parents('.level-info-container') @startLevel levelElement diff --git a/scripts/devSetup/node.py b/scripts/devSetup/node.py index 8fb1265d8..d6915e8a0 100644 --- a/scripts/devSetup/node.py +++ b/scripts/devSetup/node.py @@ -137,9 +137,9 @@ class LinuxNodeDownloader(NodeDownloader): @property def download_url(self): if self.dependency.config.mem_width == 64: - return u"http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-x64.tar.gz" + return u"http://nodejs.org/dist/v0.10.35/node-v0.10.35-linux-x64.tar.gz" else: - return u"http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-x86.tar.gz" + return u"http://nodejs.org/dist/v0.10.35/node-v0.10.35-linux-x86.tar.gz" class WindowsNodeDownloader(NodeDownloader): @property @@ -147,16 +147,16 @@ class WindowsNodeDownloader(NodeDownloader): raise NotImplementedError(u"Needs MSI to be executed to install npm") #"http://nodejs.org/dist/v0.10.24/x64/node-v0.10.24-x64.msi" if self.dependency.config.mem_width == 64: - return u"http://nodejs.org/dist/v0.10.24/x64/node.exe" + return u"http://nodejs.org/dist/v0.10.35/x64/node.exe" else: - return u"http://nodejs.org/dist/v0.10.24/node.exe" + return u"http://nodejs.org/dist/v0.10.35/node.exe" class MacNodeDownloader(NodeDownloader): @property def download_url(self): if self.dependency.config.mem_width == 64: - return u"http://nodejs.org/dist/v0.10.24/node-v0.10.24-darwin-x64.tar.gz" + return u"http://nodejs.org/dist/v0.10.35/node-v0.10.35-darwin-x64.tar.gz" else: - return u"http://nodejs.org/dist/v0.10.24/node-v0.10.24-darwin-x86.tar.gz" + return u"http://nodejs.org/dist/v0.10.35/node-v0.10.35-darwin-x86.tar.gz" diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads.coco b/scripts/windows/coco-dev-setup/batch/config/downloads.coco index f8906cbb4..6e7c3beeb 100755 --- a/scripts/windows/coco-dev-setup/batch/config/downloads.coco +++ b/scripts/windows/coco-dev-setup/batch/config/downloads.coco @@ -2,13 +2,13 @@ - http://nodejs.org/dist/v0.10.25/node-v0.10.25-x86.msi + http://nodejs.org/dist/v0.10.35/node-v0.10.35-x86.msi http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353.exe?direct http://s3.amazonaws.com/CodeCombatLargeFiles/python-32.msi http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe - http://nodejs.org/dist/v0.10.25/x64/node-v0.10.25-x64.msi + http://nodejs.org/dist/v0.10.35/x64/node-v0.10.35-x64.msi http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353-x64.exe?direct http://s3.amazonaws.com/CodeCombatLargeFiles/python-64.msi http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe @@ -20,26 +20,26 @@ - https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.0.zip + https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.8.0-rc4.zip - https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.0.zip + https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.8.0-rc4.zip - https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.0.zip + https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.8.0-rc4.zip - https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.0.zip + https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.8.0-rc4.zip - https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.0.zip + https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.8.0-rc4.zip - https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2.6.0.zip + https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.8.0-rc4.zip diff --git a/scripts/windows/coco-dev-setup/batch/localization/es.coco b/scripts/windows/coco-dev-setup/batch/localization/es.coco new file mode 100644 index 000000000..e74ce9400 --- /dev/null +++ b/scripts/windows/coco-dev-setup/batch/localization/es.coco @@ -0,0 +1,108 @@ + + + + Espanol + Espanol + Algunas sugerencias antes de comenzar la instalación: + Presiona cualquier tecla para salir... + + + Has elegido Español como tu idioma. + De ahora en adelante te enviaremos nuestro feedback en Español. + + + Para continuar con la instalación del ambiente de desarrollo + tendrás que leer y estar de acuerdo con la licencia: + ¿Has leído toda la licencia y estás de acuerdo con ella? + Esta instalación no se puede completar sin un acuerdo. + La instalación y configuración del ambiente de CodeCombat ha sido cancelada. + + + + -bit computadora detectada. + El sistema operativo + ha sido detectado. + No soportamos Windows XP, instalación cancelada. + + + ¿Ya has instalado todo el software necesario para instalar CodeCombat? + Te recomendamos que respondas negativamente si no estás seguro. + Saltando la instalación del software... + CodeCombat no pudo ser desarrollo sin third-party software. + Por eso necesitas instalar este software, + para comenzar a contribuir a nuestra comunidad. + Cancela la instalación si ya tienes la aplicación. + Asegúrate de seleccionar la opción que agrega la aplicación al Windows Path, si la opción está disponible. + ¿Ya tienes la última versión + instalada? + está descargando... + está instalando... + está descomprimiendo... + está limpiando... + Por favor especifica la ruta completa donde MongoDB debe ser isntalado + + + + + CodeCombat es opensource, como ya sabes. + Todo nuestro código puede ser encontrada online en GitHub. + Tú puedes instalar Git por tu cuenta. + Pero te recomendamos que nos permitas hacerlo nosotros. + + + ¿Quieres instalar Git por tu cuenta? + Asegurate de haber configurado tu repositorio correctamente. + No cierres estaventana por favor.. + Cuando estés listo, presiona cualquier tecla para continuar... + + + Por favor escriba la ruta completa de tu repositorio de CodeCombat de Git: + Por favor escriba la ruta completa donde quieres que se instale el ambiente de desarrollo de CodeCombat + Estainstalación necesita Git Bash. + Git bash está instalada por default en 'C:\Program Files (x86)\Git'. + Git bash está instalada por default en 'C:\Program Files\Git'. + Por favor escriba la ruta completa donde git bash está instalada o presione enter si está en el lugar default + Quieres revisar el repositorio via ssh? + + + Deberías haber hecho fork a CodeCombat at tu propia cuenta de GitHub... + Por favor ingrese su información de github para configurar el repositorio local. + Usuario: + Contraseña: + Gracias... Configurando tu repositorio local ahora mismo... + + + + ¡La instalación de tu ambiente local exitosa! + Ahora puedes cerrar esta instalación. + Después de esto, deberías abrir la configuración para configurar automáticamente tu ambiente... + + + Instalando bower, brunch, nodemon y sendwithus... + Instalando bower packages... + Instalando sass... + Instalando npm... + Iniciando brunch.... + Configurando una base de datos de MongoDB para ti... + Descargando la última version de la base de datos de CodeCombat... + + ¡No cerrar! + + + ¿Esa ruta ya existe, quieres sobreescribirla? + Esa ruta no existe. Intente de nuevo... + + + La configuración fue exitosa. + Muchas gracias por tu contribución y nos veremos pronto. + ¿Quieres leer el README para más información? + + + Puedes iniciar el ambiente + en un instance + 1) Da doble clickk + y el ambiente de desarrollo iniciará. + 2) Ahora abre 'localhost:3000' en tu browser preferido. + ¡Listo! Ya estás preparado para trabajar en CodeCombat + + diff --git a/scripts/windows/coco-dev-setup/batch/localization/languages.coco b/scripts/windows/coco-dev-setup/batch/localization/languages.coco index 2f3e2fe0d..d8e468267 100755 --- a/scripts/windows/coco-dev-setup/batch/localization/languages.coco +++ b/scripts/windows/coco-dev-setup/batch/localization/languages.coco @@ -3,4 +3,5 @@ ru nl de zh-HANT -zh-HANS \ No newline at end of file +zh-HANS +es diff --git a/scripts/windows/install-mongodb.ps1 b/scripts/windows/install-mongodb.ps1 index 503872e99..e667e0ee8 100755 --- a/scripts/windows/install-mongodb.ps1 +++ b/scripts/windows/install-mongodb.ps1 @@ -2,9 +2,9 @@ Set-ExecutionPolicy RemoteSigned $mongoDbPath = "C:\MongoDB" $mongoDbConfigPath = "$mongoDbPath\mongod.cfg" -$url = "http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.4.9.zip" +$url = "http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.8.0-rc4.zip" $zipFile = "$mongoDbPath\mongo.zip" -$unzippedFolderContent ="$mongoDbPath\mongodb-win32-x86_64-2008plus-2.4.9" +$unzippedFolderContent ="$mongoDbPath\mongodb-win32-x86_64-2008plus-2.8.0-rc4.zip" if ((Test-Path -path $mongoDbPath) -eq $True) { @@ -36,4 +36,4 @@ Remove-Item $zipFile -recurse -force & $mongoDBPath\bin\mongod.exe --config $mongoDbConfigPath --install -& net start mongodb \ No newline at end of file +& net start mongodb