/** * ownCloud - News * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. * * @author Bernhard Posselt * @copyright Bernhard Posselt 2014 */ app.config(function ($routeProvider, $provide, $httpProvider) { 'use strict'; var getResolve, feedType; feedType = { FEED: 0, FOLDER: 1, STARRED: 2, SUBSCRIPTIONS: 3, SHARED: 4 }; // constants $provide.constant('REFRESH_RATE', 60); // seconds, how often feeds and folders shoudl be refreshed $provide.constant('ITEM_BATCH_SIZE', 50); // how many items to autopage by $provide.constant('BASE_URL', OC.generateUrl('/apps/news')); $provide.constant('FEED_TYPE', feedType); // make sure that the CSRF header is only sent to the ownCloud domain $provide.factory('CSRFInterceptor', function ($q, BASE_URL) { return { request: function (config) { if (config.url.indexOf(BASE_URL) === 0) { config.headers.requesttoken = oc_requesttoken; } return config || $q.when(config); } }; }); $httpProvider.interceptors.push('CSRFInterceptor'); // routing getResolve = function (type) { return { // request to items also returns feeds data: [ '$http', '$route', '$q', 'BASE_URL', 'ITEM_BATCH_SIZE', function ($http, $route, $q, BASE_URL, ITEM_BATCH_SIZE) { var parameters, deferred; parameters = { type: type, limit: ITEM_BATCH_SIZE }; if ($route.current.params.id !== undefined) { parameters.id = $route.current.params.id; } deferred = $q.defer(); $http({ url: BASE_URL + '/items', method: 'GET', params: parameters }).success(function (data) { deferred.resolve(data); }); return deferred.promise; } ] }; }; $routeProvider .when('/items', { controller: 'ContentController', templateUrl: 'content.html', resolve: getResolve(feedType.SUBSCRIPTIONS) }) .when('/items/starred', { controller: 'ContentController', templateUrl: 'content.html', resolve: getResolve(feedType.STARRED) }) .when('/items/feeds/:id', { controller: 'ContentController', templateUrl: 'content.html', resolve: getResolve(feedType.FEED) }) .when('/items/folders/:id', { controller: 'ContentController', templateUrl: 'content.html', resolve: getResolve(feedType.FOLDER) }) .otherwise({ redirectTo: '/items' }); });