meteor/meteor

View on GitHub
docs/scripts/old-redirects.js

Summary

Maintainability
D
1 day
Test Coverage
// These are the redirects that were previously setup for the docs
var oldRedirects = function() {
  // make links backwards compatible - for example, #deps -> #tracker

  // Links from the old basic API into the closest full-api section
  var BASIC_TO_FULL_LINKS = {
    'learning-resources': 'guide',
    'command-line': 'commandline',
    'templates': 'templates_api',
    'defining-templates': 'templates_api',
    'Template-helpers': 'template_helpers',
    'Template-events': 'template_events',
    'Template-onRendered': 'template_onRendered',
    'Blaze-TemplateInstance-findAll': 'template_findAll',
    'Blaze-TemplateInstance-find': 'template_find',
    'session': 'session',
    'Session-set': 'session_set',
    'Session-get': 'session_get',
    'tracker': 'tracker',
    'Tracker-autorun': 'tracker_autorun',
    'collections': 'collections',
    'Mongo-Collection': 'mongo_collection',
    'Mongo-Collection-findOne': 'findone',
    'Mongo-Collection-find': 'find',
    'Mongo-Collection-insert': 'insert',
    'Mongo-Collection-update': 'update',
    'Mongo-Collection-remove': 'remove',
    'Mongo-Collection-allow': 'allow',
    'Mongo-Collection-deny': 'deny',
    'accounts': 'accounts_api',
    'loginButtons': 'accountsui',
    'Meteor-user': 'meteor_user',
    'Meteor-userId': 'meteor_userid',
    'Meteor-users': 'meteor_users',
    'currentUser': 'template_currentuser',
    'methods': 'methods_header',
    'Meteor-methods': 'meteor_methods',
    'Meteor-call': 'meteor_call',
    'Meteor-Error': 'meteor_error',
    'pubsub': 'publishandsubscribe',
    'Meteor-publish': 'meteor_publish',
    'Meteor-subscribe': 'meteor_subscribe',
    'environment': 'core',
    'Meteor-isClient': 'meteor_isclient',
    'Meteor-isServer': 'meteor_isserver',
    'Meteor-startup': 'meteor_startup',
    'packages': 'packages',
    'searchingforpackages': 'packages',
    'accountsui': 'accountsui',
    'coffeescript': 'coffeescript',
    'email': 'email',
    'http': 'http',
    'less': 'less',
    'markdown': 'markdown',
    'underscore': 'underscore',
    'spiderable': 'spiderable',
  };

  var BASIC_TO_GUIDE_LINKS = {
    filestructure: 'structure.html',
    buildingmobileapps: 'mobile.html',
    quickstart: '#quickstart',
  };

  var FULL_TO_GUIDE_LINKS = {
    whatismeteor: '#what-is-meteor',
    sevenprinciples: '#what-is-meteor',
    quickstart: '#quickstart',
    structuringyourapp: 'structure.html',
    dataandsecurity: 'security.html',
    livehtmltemplates: '#what-is-meteor',
    usingpackages: 'user-packages.html',
    namespacing: 'structure.html',
    deploying: 'deployment.html',
    writingpackages: 'writing-packages.html',
  };


  var getRedirect = function (hash) {
    if (hash.indexOf("deps") !== -1) {
      return hash.replace("deps", "tracker");
    }

    if (hash.indexOf("_created") !== -1) {
      return hash.replace("_created", "_onCreated");
    }

    if (hash.indexOf("_rendered") !== -1) {
      return hash.replace("_rendered", "_onRendered");
    }

    if (hash.indexOf("_destroyed") !== -1) {
      return hash.replace("_destroyed", "_onDestroyed");
    }

    if (hash === "meteor_collection") {
      return "mongo_collection";
    }

    if (hash === "collection_object_id") {
      return "mongo_object_id";
    }

    if (hash === "match") {
      return "check_package";
    }

    if (hash === "meteorbundle") {
      return "meteorbuild";
    }

    if (hash.indexOf("reactivity") !== -1) {
      return "/full/tracker";
    }

    var parts = hash.split('/');
    if (parts[1] === 'basic') {
      var fullLink = BASIC_TO_FULL_LINKS[parts[2]];
      if (fullLink) {
        return '/full/' + fullLink;
      }

      var guideLink = BASIC_TO_GUIDE_LINKS[parts[2]];
      if (guideLink) {
        window.location.replace('http://guide.meteor.com/' + guideLink);
      }
    }
    if (parts[1] === 'full') {
      var guideLink = FULL_TO_GUIDE_LINKS[parts[2]];
      if (guideLink) {
        window.location.replace('http://guide.meteor.com/' + guideLink);
      }
    }

    // don't redirect
    return false;
  };

  var curLink = window.location.hash.slice(1);
  var redirect = getRedirect(curLink);

  if (redirect) {
    window.location = "#" + redirect;
  }
}

hexo.extend.tag.register('oldRedirects', function(args) {
  return '<script>\n' +
    'var oldRedirects = ' + oldRedirects + ';\n' +
    'oldRedirects();\n' +
    '</script>';
});