diff options
| author | Misko Hevery | 2012-02-24 16:20:35 -0800 | 
|---|---|---|
| committer | Misko Hevery | 2012-06-02 16:02:05 -0700 | 
| commit | 581f93ae56ebb0086d0c0989df69a28656395006 (patch) | |
| tree | 01f6833ae6d3cbc74c47e8761911cac0811b9756 /docs/src/templates/docs.js | |
| parent | 6933fb7924cd1ef01e9259c53bf76023a87d61aa (diff) | |
| download | angular.js-581f93ae56ebb0086d0c0989df69a28656395006.tar.bz2 | |
docs(ngdocs): cleaned up directive titles
Diffstat (limited to 'docs/src/templates/docs.js')
| -rw-r--r-- | docs/src/templates/docs.js | 164 | 
1 files changed, 164 insertions, 0 deletions
| diff --git a/docs/src/templates/docs.js b/docs/src/templates/docs.js new file mode 100644 index 00000000..b385952f --- /dev/null +++ b/docs/src/templates/docs.js @@ -0,0 +1,164 @@ +DocsController.$inject = ['$scope', '$location', '$window', '$cookies', '$filter']; +function DocsController(scope, $location, $window, $cookies, $filter) { +  window.$root = scope.$root; + +  var OFFLINE_COOKIE_NAME = 'ng-offline', +      DOCS_PATH = /^\/(api)|(guide)|(cookbook)|(misc)|(tutorial)/, +      INDEX_PATH = /^(\/|\/index[^\.]*.html)$/, +      filter = $filter('filter'); + +  scope.$location = $location; +  scope.versionNumber = angular.version.full; +  scope.version = angular.version.full + "  " + angular.version.codeName; +  scope.subpage = false; +  scope.offlineEnabled = ($cookies[OFFLINE_COOKIE_NAME] == angular.version.full); +  scope.futurePartialTitle = null; +  scope.loading = 0; + +  if (!$location.path() || INDEX_PATH.test($location.path())) { +    $location.path('/api').replace(); +  } + +  scope.$watch('$location.path()', function(path) { +    // ignore non-doc links which are used in examples +    if (DOCS_PATH.test(path)) { +      var parts = path.split('/'); +      scope.sectionId = parts[1]; +      scope.partialId = parts[2] || 'index'; +      scope.pages = filter(NG_PAGES, {section: scope.sectionId}); + +      var i = scope.pages.length; +      while (i--) { +        if (scope.pages[i].id == scope.partialId) break; +      } +      if (i<0) { +        scope.partialTitle = 'Error: Page Not Found!'; +        delete scope.partialId; +      } else { +        // TODO(i): this is not ideal but better than updating the title before a partial arrives, +        //   which results in the old partial being displayed with the new title +        scope.futurePartialTitle = scope.pages[i].name; +        scope.loading++; +      } +    } +  }); + +  scope.getUrl = function(page) { +    return page.section + (page.id == 'index' ? '' : '/' + page.id); +  }; + +  scope.getCurrentPartial = function() { +    return this.partialId +        ? ('./partials/' + this.sectionId + '/' + this.partialId.replace('angular.Module', 'angular.IModule') + '.html') +        : ''; +  }; + +  scope.getClass = function(page) { +    var depth = page.depth, +        cssClass = 'level-' + depth + (page.name == this.partialId ? ' selected' : ''); + +    if (page.section == 'api') +      cssClass += ' monospace'; + +    return cssClass; +  }; + +  scope.selectedSection = function(section) { +    return section == scope.sectionId ? 'current' : ''; +  }; + +  scope.selectedPartial = function(partial) { +    return partial.id == scope.partialId ? 'current' : ''; +  }; + +  scope.afterPartialLoaded = function() { +    var currentPageId = $location.path(); +    scope.loading--; +    scope.partialTitle = scope.futurePartialTitle; +    SyntaxHighlighter.highlight(); +    $window._gaq.push(['_trackPageview', currentPageId]); +    loadDisqus(currentPageId); +  }; + +  /** stores a cookie that is used by apache to decide which manifest ot send */ +  scope.enableOffline = function() { +    //The cookie will be good for one year! +    var date = new Date(); +    date.setTime(date.getTime()+(365*24*60*60*1000)); +    var expires = "; expires="+date.toGMTString(); +    var value = angular.version.full; +    document.cookie = OFFLINE_COOKIE_NAME + "="+value+expires+"; path=" + $location.path; + +    //force the page to reload so server can serve new manifest file +    window.location.reload(true); +  }; + +  // bind escape to hash reset callback +  angular.element(window).bind('keydown', function(e) { +    if (e.keyCode === 27) { +      scope.$apply(function() { +        scope.subpage = false; +      }); +    } +  }); + +  function loadDisqus(currentPageId) { +    // http://docs.disqus.com/help/2/ +    window.disqus_shortname = 'angularjs'; +    window.disqus_identifier = currentPageId; +    window.disqus_url = 'http://docs-next.angularjs.org' + currentPageId; + +    if ($location.host() == 'localhost') { +      return; // don't display disqus on localhost, comment this out if needed +      //window.disqus_developer = 1; +    } + +    // http://docs.disqus.com/developers/universal/ +    (function() { +        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; +      dsq.src = 'http://angularjs.disqus.com/embed.js'; +      (document.getElementsByTagName('head')[0] || +        document.getElementsByTagName('body')[0]).appendChild(dsq); +    })(); + +    angular.element(document.getElementById('disqus_thread')).html(''); +  } +} + +SyntaxHighlighter['defaults'].toolbar = false; +SyntaxHighlighter['defaults'].gutter = true; + +/** + * Controller for tutorial instructions + * @param $cookieStore + * @constructor + */ +function TutorialInstructionsCtrl($cookieStore) { +  this.selected = $cookieStore.get('selEnv') || 'git-mac'; + +  this.currentCls = function(id, cls) { +    return this.selected == id  ? cls || 'current' : ''; +  }; + +  this.select = function(id) { +    this.selected = id; +    $cookieStore.put('selEnv', id); +  }; +} + +angular.module('ngdocs', ['ngdocs.directives'], function($locationProvider, $filterProvider, $compileProvider) { +  $locationProvider.html5Mode(true).hashPrefix('!'); + +  $filterProvider.register('title', function(){ +    return function(text) { +      return text && text.replace(/^angular\.module\.([^\.]+)(\.(.*))?$/, function(_, module, _0, name){ +        name = name.replace('$compileProvider.directive.', 'directive - ') +        return 'Module ' + module + (name ? ' - ' + name : ''); +      }); +    }; +  }); + +  $compileProvider.directive('code', function() { +    return { terminal: true }; +  }); +}); | 
