Skip to content

Commit

Permalink
Scaffolded out all article crud pages
Browse files Browse the repository at this point in the history
  • Loading branch information
zakhenry committed Aug 10, 2015
1 parent 9d0a514 commit 1a52d8b
Show file tree
Hide file tree
Showing 12 changed files with 208 additions and 8 deletions.
19 changes: 17 additions & 2 deletions app/src/app/admin/articles/article/article.tpl.html
@@ -1,2 +1,17 @@

<pre highlight="">{{ArticleController.article|json}}</pre>
<md-tabs md-dynamic-height md-border-bottom>
<md-tab label="Post">
<md-content class="md-padding" ui-view="post"></md-content>
</md-tab>
<md-tab label="Media">
<md-content class="md-padding" ui-view="media"></md-content>
</md-tab>
<md-tab label="Meta">
<md-content class="md-padding" ui-view="meta"></md-content>
</md-tab>
<md-tab label="Stats">
<md-content class="md-padding" ui-view="stats"></md-content>
</md-tab>
<md-tab label="History">
<md-content class="md-padding" ui-view="history"></md-content>
</md-tab>
</md-tabs>
48 changes: 42 additions & 6 deletions app/src/app/admin/articles/article/article.ts
Expand Up @@ -2,9 +2,10 @@ namespace app.admin.articles.article {

export const namespace = 'app.admin.articles.article';

interface IStateParams extends ng.ui.IStateParamsService
export interface IArticleStateParams extends ng.ui.IStateParamsService
{
permalink:string;
newArticle:boolean;
}

export class ArticleConfig {
Expand All @@ -14,19 +15,48 @@ namespace app.admin.articles.article {

let state:global.IState = {
url: '/article/{permalink}',
params: {
newArticle: false,
},
views: {
"main@app.admin": {
controller: namespace+'.controller',
controllerAs: 'ArticleController',
templateUrl: 'templates/app/admin/articles/article/article.tpl.html'
},
['post@'+namespace] : {
controller: namespace+'.post.controller',
controllerAs: 'PostController',
templateUrl: 'templates/app/admin/articles/article/post/post.tpl.html'
},
['media@'+namespace] : {
controller: namespace+'.media.controller',
controllerAs: 'MediaController',
templateUrl: 'templates/app/admin/articles/article/media/media.tpl.html'
},
['meta@'+namespace] : {
controller: namespace+'.meta.controller',
controllerAs: 'MetaController',
templateUrl: 'templates/app/admin/articles/article/meta/meta.tpl.html'
},
['stats@'+namespace] : {
controller: namespace+'.stats.controller',
controllerAs: 'StatsController',
templateUrl: 'templates/app/admin/articles/article/stats/stats.tpl.html'
},
['history@'+namespace] : {
controller: namespace+'.history.controller',
controllerAs: 'HistoryController',
templateUrl: 'templates/app/admin/articles/article/history/history.tpl.html'
}
},
resolve: /*@ngInject*/{
article: (articleService:common.services.article.ArticleService, $stateParams:IStateParams) => {
article: (articleService:common.services.article.ArticleService, $stateParams:IArticleStateParams) => {

if (!$stateParams.permalink){
let newArticle = articleService.newArticle();
$stateParams.permalink = newArticle.getIdentifier();
$stateParams.newArticle = true;
return newArticle;
}

Expand All @@ -48,13 +78,19 @@ namespace app.admin.articles.article {

export class ArticleController {

static $inject = ['article'];
constructor(public article:common.models.Article) {

static $inject = ['article', '$stateParams'];
constructor(public article:common.models.Article, public $stateParams:IArticleStateParams) {
}

}

angular.module(namespace, [])
angular.module(namespace, [
namespace+'.post',
namespace+'.media',
namespace+'.meta',
namespace+'.stats',
namespace+'.history',
])
.config(ArticleConfig)
.controller(namespace+'.controller', ArticleController);

Expand Down
3 changes: 3 additions & 0 deletions app/src/app/admin/articles/article/history/history.tpl.html
@@ -0,0 +1,3 @@
<h2>History</h2>

<h3>TODO</h3>
17 changes: 17 additions & 0 deletions app/src/app/admin/articles/article/history/history.ts
@@ -0,0 +1,17 @@
namespace app.admin.articles.article.history {

export const namespace = 'app.admin.articles.article.history';

export class HistoryController {

static $inject = ['article'];
constructor(public article:common.models.Article) {

}

}

angular.module(namespace, [])
.controller(namespace+'.controller', HistoryController);

}
3 changes: 3 additions & 0 deletions app/src/app/admin/articles/article/media/media.tpl.html
@@ -0,0 +1,3 @@
<h2>Media</h2>

<h3>TODO</h3>
17 changes: 17 additions & 0 deletions app/src/app/admin/articles/article/media/media.ts
@@ -0,0 +1,17 @@
namespace app.admin.articles.article.media {

export const namespace = 'app.admin.articles.article.media';

export class MediaController {

static $inject = ['article'];
constructor(public article:common.models.Article) {

}

}

angular.module(namespace, [])
.controller(namespace+'.controller', MediaController);

}
3 changes: 3 additions & 0 deletions app/src/app/admin/articles/article/meta/meta.tpl.html
@@ -0,0 +1,3 @@
<h2>Meta</h2>

<h3>TODO</h3>
17 changes: 17 additions & 0 deletions app/src/app/admin/articles/article/meta/meta.ts
@@ -0,0 +1,17 @@
namespace app.admin.articles.article.meta {

export const namespace = 'app.admin.articles.article.meta';

export class MetaController {

static $inject = ['article'];
constructor(public article:common.models.Article) {

}

}

angular.module(namespace, [])
.controller(namespace+'.controller', MetaController);

}
52 changes: 52 additions & 0 deletions app/src/app/admin/articles/article/post/post.tpl.html
@@ -0,0 +1,52 @@
<h2 ng-if="ArticleController.$stateParams.newArticle">Create</h2>
<h2 ng-if="!ArticleController.$stateParams.newArticle">Edit</h2>

<form novalidate name="postForm">

<md-input-container>
<label for="postFormTitle">Title</label>

<input id="postFormTitle" ng-model="ArticleController.article.title" name="title" type="text" ng-required="true">
<ng-messages for="postFormTitle.title.$error">
<ng-message when="required">This is required.</ng-message>
</ng-messages>
</md-input-container>

<md-input-container>
<label for="postFormPermalink">Permalink</label>

<input id="postFormPermalink" ng-model="ArticleController.article.permalink" name="permalink" type="text" ng-required="true" ng-change="ArticleController.updatePermalink()">
<ng-messages for="postFormTitle.permalink.$error">
<ng-message when="required">This is required.</ng-message>
</ng-messages>
</md-input-container>


<md-input-container flex>
<label for="postFormContent">Content</label>

<textarea id="postFormContent" ng-model="ArticleController.article.content" columns="1"></textarea>
<ng-messages for="postFormTitle.title.$error">
<ng-message when="required">This is required.</ng-message>
</ng-messages>
</md-input-container>

<md-input-container flex>
<label for="postFormExcerpt">Excerpt</label>

<textarea id="postFormExcerpt" ng-model="ArticleController.article.excerpt" columns="1" md-maxlength="140"></textarea>
<ng-messages for="postFormTitle.excerpt.$error">
<ng-message when="maxlength">Maximum length is 140 chars (Like a tweet!)</ng-message>
</ng-messages>
</md-input-container>

<md-chips
ng-init="ArticleController.article.tags = []"
ng-model="ArticleController.article.tags"
readonly="false"
placeholder="Enter a tag"
delete-button-label="Remove Tag"
delete-hint="Press delete to remove tag"
secondary-placeholder="+Tag"></md-chips>

</form>
17 changes: 17 additions & 0 deletions app/src/app/admin/articles/article/post/post.ts
@@ -0,0 +1,17 @@
namespace app.admin.articles.article.post {

export const namespace = 'app.admin.articles.article.post';

export class PostController {

static $inject = ['article'];
constructor(public article:common.models.Article) {

}

}

angular.module(namespace, [])
.controller(namespace+'.controller', PostController);

}
3 changes: 3 additions & 0 deletions app/src/app/admin/articles/article/stats/stats.tpl.html
@@ -0,0 +1,3 @@
<h2>Stats</h2>

<h3>TODO</h3>
17 changes: 17 additions & 0 deletions app/src/app/admin/articles/article/stats/stats.ts
@@ -0,0 +1,17 @@
namespace app.admin.articles.article.stats {

export const namespace = 'app.admin.articles.article.stats';

export class StatsController {

static $inject = ['article'];
constructor(public article:common.models.Article) {

}

}

angular.module(namespace, [])
.controller(namespace+'.controller', StatsController);

}

0 comments on commit 1a52d8b

Please sign in to comment.