コード例 #1
0
ファイル: application.js プロジェクト: CAvancouver/Misago
export default MisagoRoute.extend({
  actions: {
    // Loading handler

    loading: function() {
      document.title = this.get('settings.forum_name');
      return true;
    },

    // Error handlers

    error: function(reason) {
      if (reason.status === 0) {
        return this.intermediateTransitionTo('error-0');
      }

      if (typeof reason.responseJSON !== 'undefined' && typeof reason.responseJSON.ban !== 'undefined') {
        return this.intermediateTransitionTo('error-banned', reason.responseJSON.ban);
      }

      if (reason.status === 403) {
        var final_error = {status: 403, message: null};
        if (typeof reason.responseJSON !== 'undefined' && typeof reason.responseJSON.detail !== 'undefined' && reason.responseJSON.detail !== 'Permission denied') {
          final_error.message = reason.responseJSON.detail;
        }

        return this.intermediateTransitionTo('error-403', final_error);
      }

      if (reason.status === 404) {
        return this.intermediateTransitionTo('error-404');
      }

      this.set('title', gettext('Error'));
      return true;
    }
  }
});
コード例 #2
0
ファイル: activate.js プロジェクト: KinKir/Misago
import MisagoRoute from 'misago/routes/misago';

export default MisagoRoute.extend({
  model: function(params) {
    return this.ajax.post('auth/activate-account/' + params.user_id + '/' + params.token);
  },

  afterModel: function(model) {
    this.modal.show('login-modal');
    this.toast.success(model.detail);
    return this.transitionTo('index');
  },

  actions: {
    loading: function() {
      this.set('title', gettext('Activating account...'));
      return true;
    },

    error: function(reason) {
      if (reason.status === 400) {
        this.toast.error(reason.responseJSON.detail);
        return this.transitionTo('activation');
      }

      return true;
    }
  }
});
コード例 #3
0
ファイル: options.js プロジェクト: KinKir/Misago
import MisagoRoute from 'misago/routes/misago';

export default MisagoRoute.extend({
  beforeModel: function() {
    this.auth.denyAnonymous(gettext('You have to sign in to change options.'));
  }
});
コード例 #4
0
ファイル: not-found.js プロジェクト: KinKir/Misago
import MisagoRoute from 'misago/routes/misago';

export default MisagoRoute.extend({
  actions: {
    didTransition: function() {
      // Not found route transitions to error404
      throw {status: 404};
    }
  }
});
コード例 #5
0
ファイル: forgotten-password.js プロジェクト: herrdu/Misago
import MisagoRoute from 'misago/routes/misago';

export default MisagoRoute.extend({
  beforeModel: function() {
    this.auth.denyAuthenticated(gettext('Only guests can change forgotten password.'));
  }
});
コード例 #6
0
ファイル: change-form.js プロジェクト: Backenkoehler/Misago
import MisagoRoute from 'misago/routes/misago';
import ResetScroll from 'misago/mixins/reset-scroll';

export default MisagoRoute.extend(ResetScroll, {
  model: function(params) {
    return this.rpc.ajax('change-password/' + params.user_id + '/' + params.token + '/validate-token');
  },

  actions: {
    didTransition: function() {
      this.set('title', gettext('Change forgotten password'));
    },

    error: function(reason) {
      if (reason.status === 404) {
        this.toast.error(reason.responseJSON.detail);
        return this.transitionTo('forgotten-password');
      }

      return true;
    }
  }
});
コード例 #7
0
ファイル: index.js プロジェクト: KinKir/Misago
import MisagoRoute from 'misago/routes/misago';

export default MisagoRoute.extend({
  actions: {
    didTransition: function() {
      document.title = this.get('settings.forum_index_title') || this.get('settings.forum_name');
    }
  }
});
コード例 #8
0
ファイル: error-banned.js プロジェクト: Backenkoehler/Misago
import MisagoRoute from 'misago/routes/misago';

export default MisagoRoute.extend({
  setTitle: function() {
    this.set('title', gettext('You are banned'));
  }.on('activate')
});
コード例 #9
0
ファイル: signature.js プロジェクト: KinKir/Misago
import MisagoRoute from 'misago/routes/misago';

export default MisagoRoute.extend({
  actions: {
    didTransition: function() {
      this.set('title', gettext('Edit signature'));
    }
  }
});
コード例 #10
0
ファイル: privacy-policy.js プロジェクト: KinKir/Misago
export default MisagoRoute.extend({
  page: 'privacy-policy',
  defaultTitle: gettext('Privacy policy'),

  setting: function() {
    return this.get('page').replace(/-/g, '_');
  }.property('page'),

  title: function() {
    return this.get('settings.' + this.get('setting') + '_title') || this.get('defaultTitle');
  }.property('defaultTitle', 'settings'),

  link: function() {
    return this.get('settings.' + this.get('setting') + '_link');
  }.property('settings'),

  beforeModel: function(transition) {
    if (this.get('link')) {
      transition.abort();
      window.location.replace(this.get('link'));
    }
  },

  model: function() {
    var preloadedPage = this.preloadStore.pop(this.get('page'));
    if (preloadedPage) {
      this.store.push('legal-page', preloadedPage);
    }

    return this.store.find('legal-page', this.get('page'));
  },

  afterModel: function(model, transition) {
    if (model.get('link')) {
      transition.abort();
      window.location.replace(model.get('link'));
    }
  },

  actions: {
    didTransition: function() {
      this.set('title', this.get('title'));
    }
  }
});