Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- /* global define */
- define([
- 'corejs/app',
- 'jquery',
- 'moment',
- 'numeral',
- 'i18next',
- 'underscore',
- 'q',
- 'entities/project'
- ], function(app, $, moment, numeral, q) {
- var current;
- if (!app.bitbloq) {
- app.bitbloq = {};
- }
- // Prevent JQuery to parse XML responses
- $.ajaxSetup({
- converters: {
- 'text xml': window.String
- }
- });
- /**
- * This module defines custom initialization tasks
- * like defining app regions
- */
- app.addRegions({
- main: '[data-region="main"]'
- });
- app.addInitializer(function() {
- app.commands.execute('page:loader');
- current = app.bitbloq.services.current.get();
- // Process data-i18n for all dynamic modals
- $('body').on('modal:show', function() {
- $('.modal').i18n();
- });
- // Login success
- app.vent.on('login:success', function() {
- app.router.navigate('#/workspace/browser');
- });
- // Check current
- if (!current) {
- current = app.bitbloq.services.current.new();
- }
- // Add data-saved to body
- if (current.hasOwnProperty('id')) {
- $('body').attr('data-saved', 'true');
- } else {
- $('body').attr('data-saved', 'false');
- }
- // Change project saved global state
- app.vent.on('project:saved', function() {
- $('body').attr('data-saved', 'true');
- });
- app.vent.on('project:new', function() {
- $('body').attr('data-saved', 'false');
- });
- //-- Initialize entities
- //Boards
- var boardsCollection = app.reqres.request('entities:board');
- // Projects
- var projectsCollection = app.reqres.request('entities:project');
- // Releases
- var releaseCollection = app.reqres.request('entities:release');
- var user, lang;
- //initialize the user and manage the user language
- if (app.session.gatekeeper()) {
- //Logged User
- user = app.reqres.request('entity:user', app.session.get('user'));
- // check user lang
- lang = user.get('properties').language;
- if (lang === undefined) {
- lang = navigator.language || navigator.userLanguage;
- user.setProperty('language', lang);
- }
- /*
- {
- "avatar":"https://lh3.googleusercontent.com/-bkNm6MSHlIg/AAAAAAAAAAI/AAAAAAAAAW4/raXrCR2YyUE/photo.jpg?sz=50",
- "newsletter":false,
- "language":"es-ES",
- "connected":false,
- "newAvatar":"https://lh3.googleusercontent.com/-bkNm6MSHlIg/AAAAAAAAAAI/AAAAAAAAAW4/raXrCR2YyUE/photo.jpg?sz=100"
- }
- */
- // check avatar
- var avatar = user.get('properties').avatar;
- if(avatar === undefined){
- getAvatarImage(user).then(function(url) {
- // do something with url
- });
- }
- // check newsletter
- var newsletter = user.get('properties').newsletter;
- if (newsletter !== true) {
- user.setProperty('newsletter', false);
- }
- localStorage.setItem('lang', lang);
- app.session.add('user', JSON.stringify(user));
- } else {
- var userLang = localStorage.getItem('lang') || navigator.language || navigator.userLanguage;
- if (userLang.indexOf('ca') !== -1) { // true @todo
- localStorage.setItem('lang', 'ca-ES');
- } else if (userLang.indexOf('es') !== -1) {
- localStorage.setItem('lang', 'es-ES');
- } else if (userLang.indexOf('it') !== -1) {
- localStorage.setItem('lang', 'it-IT');
- } else if (userLang.indexOf('pt') !== -1) {
- localStorage.setItem('lang', 'pt-PT');
- } else {
- localStorage.setItem('lang', 'en-GB');
- }
- }
- var setBoards = function() {
- app.bitbloq.services.board.list().then(function(data) {
- boardsCollection.reset(data);
- setDefaultBoard(data);
- }).fail(function(error){
- app.log.error(error);
- setDefaultBoard();
- });
- };
- var setProjects = function() {
- app.bitbloq.services.project.list().then(function(data) {
- projectsCollection.reset(data);
- });
- };
- var setReleases = function() {
- app.bitbloq.services.release.list({
- query: [{
- '$like': {
- userId: app.session.get('user').id
- }
- }]
- }).then(function(data) {
- releaseCollection.reset(data);
- });
- };
- var setDefaultPort = function(){
- var chromeApp = app.lib.chromeapp.connect();
- chromeApp.getPorts().then(function(data){
- if(data.path[0]){
- if(!app.session.get('defaultPort') || $.isEmptyObject(app.session.get('defaultPort'))){
- app.session.add('defaultPort', data.path[0]);
- }
- }else{
- //A FALTA DE DETERMINAR CUAL ES LA MEJOR ESTRATEGIA EN ESTE CASO, DEJO LA SEGUNDA COMENTADA POR SI SE DECIDE QUE ES LA MAS CORRECTA
- //siempre que no se devuelvan puertos se pone el default a {} porque de nada sirve dejar el puerto que había antes
- app.session.add('defaultPort', {});
- //Esa estrategia pone el puerto a {} si no había uno por defecto, pero lo respeta si habia uno
- /*if(!app.session.get('defaultPort')){
- app.session.add('defaultPort', {});
- }*/
- }
- }).fail(function(error){
- app.log.error(error);
- if(!app.session.get('defaultPort')){
- app.session.add('defaultPort', {});
- }
- });
- };
- var setDefaultBoard = function(data){
- if(data){
- if($.isEmptyObject(app.session.get('defaultBoard')) || !app.session.get('defaultBoard')){
- app.session.add('defaultBoard', data[0]);
- }
- }else{
- if(!app.session.get('defaultBoard')){
- app.session.add('defaultBoard', {});
- }
- }
- };
- var setLang = function() {
- var user = app.reqres.request('entity:user');
- var lang = String(user.get('properties').language);
- var storedLang = String(localStorage.getItem('lang'));
- var i18nLang = $.i18n.lng();
- if (i18nLang !== lang) {
- $.i18n.setLng(lang);
- }
- if (storedLang !== lang) {
- localStorage.setItem('lang', lang);
- moment.lang(lang);
- try {
- numeral.language(lang);
- } catch (e) {
- app.log.warn('locale:numeral:undefined:' + lang);
- }
- }
- };
- var setInfo = function() {
- setProjects();
- setReleases();
- };
- if (app.session.gatekeeper()) {
- setInfo();
- }
- setBoards();
- setDefaultPort();
- app.vent.on('user:login', setInfo);
- // Set Lang App
- app.vent.on('app:setLang', setLang);
- });
- var getAvatarImage = function(user) {
- var def = q.defer(),
- mimeType = user.properties.imageType || 'image/png';
- if (!userId) { //poner imagen por defecto
- def.resolve(controller.getDefaultUrl());
- } else {
- var resourceProject = app.silkroad.resources.resource('bitbloq:Avatar', user.get('id'));
- resourceProject.get(mimeType, {
- binaryType: 'blob'
- }).then(function(image) {
- libImage.createImageUrl(image).then(function(url) {
- def.resolve(url);
- }).fail(function(error) {
- app.log.error(error);
- });
- }).fail(function() {
- var alternativeUrl = user.properties.avatar ? user.properties.avatar : controller.getDefaultUrl();
- def.resolve(alternativeUrl);
- });
- }
- return def.promise;
- }
- app.vent.on('workspace-bloq:inject', function() {
- current = app.bitbloq.services.current.get();
- app.lib.workspace.setXml(current.xml);
- app.lib.workspace.undoredo.reset();
- app.lib.workspace.displayProjectName();
- if (current.id) {
- app.vent.trigger('project:saved');
- } else {
- app.vent.trigger('project:new');
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement