Skip to content
This repository was archived by the owner on Jun 11, 2024. It is now read-only.

Commit c94514b

Browse files
author
Jota Teles
committed
[#124] - Duplicates category view structure for tags
1 parent cf03c78 commit c94514b

File tree

13 files changed

+467
-92
lines changed

13 files changed

+467
-92
lines changed

release/frontpress.js

+170-46
Original file line numberDiff line numberDiff line change
@@ -5285,7 +5285,7 @@ angular.module("frontpress.filters", []);
52855285

52865286
"use strict";
52875287

5288-
angular.module("frontpress.views", ["frontpress.views.home", "frontpress.views.post", "frontpress.views.category"]);
5288+
angular.module("frontpress.views", ["frontpress.views.home", "frontpress.views.post", "frontpress.views.category", "frontpress.views.tag"]);
52895289

52905290
"use strict";
52915291

@@ -5400,6 +5400,18 @@ angular.module("frontpress.views.post",
54005400

54015401
"use strict";
54025402

5403+
angular.module("frontpress.views.tag",
5404+
["ui.router",
5405+
"infinite-scroll",
5406+
"frontpress.components.api-manager",
5407+
"frontpress.components.pagination",
5408+
"frontpress.components.list-posts",
5409+
"frontpress.components.page-head",
5410+
"frontpress.components.blog",
5411+
"frontpress.components.frontpress-provider"]);
5412+
5413+
"use strict";
5414+
54035415
function FeaturedImageDirective($FrontPress){
54045416
var directive = {
54055417
restrict: "E",
@@ -5740,6 +5752,24 @@ PostViewDirective.$inject = ["$FrontPress"];
57405752

57415753
"use strict";
57425754

5755+
function TagViewDirective($FrontPress){
5756+
var directive = {
5757+
scope: {},
5758+
templateUrl: $FrontPress.getTemplateUrl("views.tag"),
5759+
restrict: "AE",
5760+
controllerAs: "vc",
5761+
bindToController: true,
5762+
controller: "TagDirectiveController",
5763+
replace: true
5764+
};
5765+
return directive;
5766+
}
5767+
5768+
angular.module("frontpress.views.tag").directive("tagView", TagViewDirective);
5769+
TagViewDirective.$inject = ["$FrontPress"];
5770+
5771+
"use strict";
5772+
57435773
angular.module("infinite-scroll").value("THROTTLE_MILLISECONDS", 1000);
57445774

57455775
// this file is empty but you can override it using https://github.com/frontpressorg/frontpress-cli
@@ -5762,6 +5792,30 @@ TrustAsHtml.$inject = ["$sce"];
57625792

57635793
"use strict";
57645794

5795+
function ApiManager(ApiManagerMap){
5796+
var service = {
5797+
getPath: getPath
5798+
};
5799+
5800+
return service;
5801+
5802+
function getPath(object, pathName){
5803+
var result = object;
5804+
var path = ApiManagerMap[pathName];
5805+
5806+
for(var i=0; i < path.length; i++){
5807+
result = result[path[i]];
5808+
}
5809+
5810+
return result;
5811+
}
5812+
}
5813+
5814+
angular.module("frontpress.components.api-manager").service("ApiManager", ApiManager);
5815+
ApiManager.$inject = ["ApiManagerMap"];
5816+
5817+
"use strict";
5818+
57655819
function AjaxModel($http) {
57665820
function request(url, params, method) {
57675821
params = params || {};
@@ -5801,27 +5855,11 @@ AjaxModel.$inject = ["$http"];
58015855

58025856
"use strict";
58035857

5804-
function ApiManager(ApiManagerMap){
5805-
var service = {
5806-
getPath: getPath
5807-
};
5808-
5809-
return service;
5810-
5811-
function getPath(object, pathName){
5812-
var result = object;
5813-
var path = ApiManagerMap[pathName];
5814-
5815-
for(var i=0; i < path.length; i++){
5816-
result = result[path[i]];
5817-
}
5818-
5819-
return result;
5820-
}
5858+
function FeaturedImageDirectiveController(){
5859+
var vc = this;
58215860
}
58225861

5823-
angular.module("frontpress.components.api-manager").service("ApiManager", ApiManager);
5824-
ApiManager.$inject = ["ApiManagerMap"];
5862+
angular.module("frontpress.components.featured-image").controller("FeaturedImageDirectiveController", FeaturedImageDirectiveController);
58255863

58265864
"use strict";
58275865

@@ -5898,14 +5936,6 @@ BlogModel.$inject = ["BlogApi", "$q", "ApiManager", "$FrontPress"];
58985936

58995937
"use strict";
59005938

5901-
function FeaturedImageDirectiveController(){
5902-
var vc = this;
5903-
}
5904-
5905-
angular.module("frontpress.components.featured-image").controller("FeaturedImageDirectiveController", FeaturedImageDirectiveController);
5906-
5907-
"use strict";
5908-
59095939
function FrontPressProvider($disqusProvider, $stateProvider, FrontPressConfigurationFile){
59105940
var configure = {
59115941
load: load,
@@ -5975,6 +6005,8 @@ function FrontPressProvider($disqusProvider, $stateProvider, FrontPressConfigura
59756005
"home.pagination": "/page/{pageNumber:[0-9]{1,}}",
59766006
"category": "/category/{categoryName}",
59776007
"category.pagination": "/category/{categoryName}/page/{pageNumber:[0-9]{1,}}",
6008+
"tag": "/tag/{categoryName}",
6009+
"tag.pagination": "/tag/{categoryName}/page/{pageNumber:[0-9]{1,}}",
59786010
"post": "/:postSlug"
59796011
};
59806012

@@ -6018,6 +6050,7 @@ function FrontPressProvider($disqusProvider, $stateProvider, FrontPressConfigura
60186050
var defaultTemplateUrlList = {
60196051
"views.home": "/js/views/home/templates/home.template.html",
60206052
"views.category": "/js/views/category/templates/category.template.html",
6053+
"views.tag": "/js/views/category/templates/tag.template.html",
60216054
"views.post": "/js/views/post/templates/post.template.html",
60226055
"components.fullpost": "/js/components/full-post/templates/full-post.template.html",
60236056
"components.fullpost.categories": "/js/components/full-post/templates/full-post-categories-list.template.html",
@@ -6034,7 +6067,7 @@ function FrontPressProvider($disqusProvider, $stateProvider, FrontPressConfigura
60346067
var defaultTitlesList = {
60356068
"home": ":siteName",
60366069
"home.pagination": ":siteName :pageNumber",
6037-
"post": ":siteName - :postTitle",
6070+
"post": ":siteName - :postTitle"
60386071
};
60396072

60406073
switch(configure.apiVersion){
@@ -6093,7 +6126,7 @@ function FrontPressProvider($disqusProvider, $stateProvider, FrontPressConfigura
60936126
_setHomeStates();
60946127
_setPostStates();
60956128
_setCategoryStates();
6096-
6129+
_setTagStates();
60976130
}
60986131

60996132
function _setHomeStates(){
@@ -6126,13 +6159,24 @@ function FrontPressProvider($disqusProvider, $stateProvider, FrontPressConfigura
61266159

61276160
function _setCategoryStates(){
61286161

6129-
var statePost = {
6162+
var stateCategory = {
61306163
url: configure.routes.category,
61316164
template: "<category-view></category-view>",
61326165
controller: "CategoryRouteController as vc"
61336166
};
61346167

6135-
$stateProvider.state("category", statePost);
6168+
$stateProvider.state("category", stateCategory);
6169+
}
6170+
6171+
function _setTagStates(){
6172+
6173+
var stateTag = {
6174+
url: configure.routes.tag,
6175+
template: "<tag-view></tag-view>",
6176+
controller: "TagRouteController as vc"
6177+
};
6178+
6179+
$stateProvider.state("tag", stateTag);
61366180
}
61376181

61386182

@@ -7044,14 +7088,94 @@ PostRouteController.$inject = [];
70447088

70457089
"use strict";
70467090

7047-
angular.module("frontpress.apis.api-manager-map", []);
7091+
function TagDirectiveController($stateParams, ListPostsModel, $state, $FrontPress, BlogModel, PageHeadModel, $location, PaginationModel){
7092+
var vc = this;
7093+
vc.vm = ListPostsModel;
7094+
var firstNextPageNumber = 2;
7095+
vc.loadMorePostsAndPaginate = loadMorePostsAndPaginate;
7096+
vc.isInfiniteScrollDisabled = !$FrontPress.infiniteScroll;
7097+
PageHeadModel.init();
7098+
7099+
var params = {
7100+
pageSize: $FrontPress.pageSize,
7101+
pageNumber: $stateParams.pageNumber ? $stateParams.pageNumber : 1
7102+
};
7103+
7104+
var loadPostsPromise = vc.vm.loadPosts(params);
7105+
7106+
loadPostsPromise.then(function(loadedPosts){
7107+
var totalPagesNumber = ListPostsModel.totalPostsNumber / $FrontPress.pageSize;
7108+
PaginationModel.setLastPageNumber(totalPagesNumber);
7109+
_setPaginationPages(params.pageNumber);
7110+
if($FrontPress.apiVersion === "v2"){
7111+
vc.vm.loadExternalFeaturedImages(loadedPosts);
7112+
}
7113+
});
7114+
7115+
function _setPageMetaData(){
7116+
7117+
var blogInformationPromise = BlogModel.getInformationPromise();
7118+
7119+
blogInformationPromise.then(function(blogInformation){
7120+
var homeReplaceRules = {
7121+
":siteName": blogInformation.name,
7122+
":siteDescription": blogInformation.description
7123+
};
7124+
PageHeadModel.parsePageTitle("home", homeReplaceRules);
7125+
7126+
});
7127+
7128+
var canonical = $location.absUrl().replace(/\/page\/[0-9]{1,}\/?/, "");
7129+
PageHeadModel.setPageCanonical(canonical);
7130+
}
7131+
7132+
_setPageMetaData();
7133+
7134+
function loadMorePostsAndPaginate(){
7135+
params.pageNumber++;
7136+
var nextPageNumber = params.pageNumber ? params.pageNumber : firstNextPageNumber;
7137+
var paginationOptions = {notify: false};
7138+
var loadPostsPromise = vc.vm.loadPosts(params);
7139+
7140+
7141+
loadPostsPromise.then(function(loadedPosts){
7142+
if($FrontPress.apiVersion === "v2"){
7143+
vc.vm.loadExternalFeaturedImages(loadedPosts);
7144+
}
7145+
});
7146+
7147+
_setPageMetaData();
7148+
_setPaginationPages(params.pageNumber);
7149+
$state.go("home-pagination", {pageNumber: nextPageNumber}, paginationOptions);
7150+
}
7151+
7152+
function _setPaginationPages(currentPageNumber){
7153+
PaginationModel.generatePaginationFromCurrentPageNumber(currentPageNumber);
7154+
}
7155+
}
7156+
7157+
angular.module("frontpress.views.tag").controller("TagDirectiveController", TagDirectiveController);
7158+
TagDirectiveController.$inject = ["$stateParams", "ListPostsModel", "$state", "$FrontPress", "BlogModel", "PageHeadModel", "$location", "PaginationModel"];
7159+
7160+
"use strict";
7161+
7162+
function TagRouteController(){
7163+
var vc = this;
7164+
}
7165+
7166+
angular.module("frontpress.views.tag").controller("CategoryRouteController", TagRouteController);
7167+
TagRouteController.$inject = [];
70487168

70497169
"use strict";
70507170

70517171
angular.module("frontpress.apis.blog", ["frontpress.components.ajax", "frontpress.components.frontpress-provider"]);
70527172

70537173
"use strict";
70547174

7175+
angular.module("frontpress.apis.api-manager-map", []);
7176+
7177+
"use strict";
7178+
70557179
angular.module("frontpress.apis.categories", ["frontpress.components.ajax", "frontpress.components.frontpress-provider", "frontpress.apis.configs-to-params"]);
70567180

70577181
"use strict";
@@ -7068,19 +7192,6 @@ angular.module("frontpress.apis.tags", ["frontpress.components.ajax", "frontpres
70687192

70697193
"use strict";
70707194

7071-
angular.module("frontpress.apis.api-manager-map")
7072-
.constant("ApiManagerMap", {
7073-
"totalPostsNumber": ["headers","X-WP-Total"],
7074-
"allPostsPath": ["body"],
7075-
"postTitle": ["title", "rendered"],
7076-
"postId": ["id"],
7077-
"postDate": ["date"],
7078-
"siteName": ["name"],
7079-
"siteDescription": ["description"]
7080-
});
7081-
7082-
"use strict";
7083-
70847195
function BlogApi(AjaxModel, $FrontPress) {
70857196
var baseUrl = $FrontPress.restApiUrl;
70867197

@@ -7099,6 +7210,19 @@ angular.module("frontpress.apis.blog").factory("BlogApi", BlogApi);
70997210
BlogApi.$inject = ["AjaxModel", "$FrontPress"];
71007211

71017212

7213+
"use strict";
7214+
7215+
angular.module("frontpress.apis.api-manager-map")
7216+
.constant("ApiManagerMap", {
7217+
"totalPostsNumber": ["headers","X-WP-Total"],
7218+
"allPostsPath": ["body"],
7219+
"postTitle": ["title", "rendered"],
7220+
"postId": ["id"],
7221+
"postDate": ["date"],
7222+
"siteName": ["name"],
7223+
"siteDescription": ["description"]
7224+
});
7225+
71027226
"use strict";
71037227

71047228
function CategoriesApi(AjaxModel, $FrontPress, ConfigsToParams){

release/frontpress.min.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)