Skip to content

Markdown Editor for TaskView and Instructor Course Dashboard #197

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 132 commits into from
Jul 28, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
b73fb9d
Updated Schemas
sandershihacker Jul 6, 2016
0effec1
Load Screen
sandershihacker Jul 6, 2016
78426b8
Loading Screen
sandershihacker Jul 6, 2016
65d8874
merge with origin master
sandershihacker Jul 6, 2016
48a3fcd
Merged from master
sandershihacker Jul 7, 2016
658bd9f
publish subscribe and dynamic explore page
sandershihacker Jul 7, 2016
984fd5d
publish subscribe done
sandershihacker Jul 7, 2016
9f84d87
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 7, 2016
5e1fd85
deleted swap file
sandershihacker Jul 7, 2016
bfaf8ce
publish subscribe
sandershihacker Jul 7, 2016
5123b2f
template fixes
sandershihacker Jul 8, 2016
df18c7b
added start for reactive publication
DerekTBrown Jul 8, 2016
4361c51
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 8, 2016
60a74de
Merge branch 'pubsub' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 8, 2016
cb82ff7
template issue
sandershihacker Jul 8, 2016
2c872bb
.
sandershihacker Jul 8, 2016
b8f7501
.
sandershihacker Jul 8, 2016
cdb18dc
course_records publish
sandershihacker Jul 8, 2016
633716c
course_records reactively publish
sandershihacker Jul 8, 2016
216cb6c
.
sandershihacker Jul 11, 2016
dd01958
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 11, 2016
f21dcc5
revert meteor update
sandershihacker Jul 11, 2016
aa4a575
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 11, 2016
aeaeb2c
publish subscribe and lineheight for searchpage icons
sandershihacker Jul 11, 2016
f85a0d0
publish subscribe
sandershihacker Jul 11, 2016
0d21e7f
fixed indentation and removed test file
sandershihacker Jul 12, 2016
49386cd
indentation
sandershihacker Jul 12, 2016
4530d0e
indentation
sandershihacker Jul 12, 2016
dd760f5
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 12, 2016
5efd498
Accounts page and fixed random erro
sandershihacker Jul 12, 2016
b74eadf
toolbar for mobile devices
sandershihacker Jul 12, 2016
29dd9b7
toolbar
sandershihacker Jul 13, 2016
ab34eb2
account.html fixes
sandershihacker Jul 13, 2016
0895551
pull from origin
sandershihacker Jul 13, 2016
36c2a6b
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 13, 2016
45c4797
Toolbar made responsive
sandershihacker Jul 13, 2016
fd7ded1
Responsive toolbar fixes
sandershihacker Jul 13, 2016
020f88c
created userlist component
sandershihacker Jul 13, 2016
a48bb31
course_records course_id validation
sandershihacker Jul 13, 2016
9c527b2
Database Schema Validation and Sidenav fix
sandershihacker Jul 13, 2016
c7d0984
indentation
sandershihacker Jul 13, 2016
a3d5297
markdown
sandershihacker Jul 14, 2016
3eae7dd
pull from origin
sandershihacker Jul 14, 2016
5def4c2
zMerge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 14, 2016
3cef02a
import changes
sandershihacker Jul 14, 2016
98bc33d
validation addition
sandershihacker Jul 14, 2016
b3388d0
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 14, 2016
126e90a
Forms Module Deprecated Warning. Issue #110
sandershihacker Jul 14, 2016
61c17ee
indentation
sandershihacker Jul 14, 2016
07f0d1d
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 15, 2016
35fef39
Use routerLink
sandershihacker Jul 15, 2016
574d273
api changes (#126)
cemersoz Jul 15, 2016
3df5ed1
method implementations (#127)
cemersoz Jul 15, 2016
b8968a9
course pages now uses Child Routing
sandershihacker Jul 15, 2016
90e358b
deleted LabData class
sandershihacker Jul 15, 2016
24aa3a0
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 15, 2016
07b5b72
merge with requires-infra
sandershihacker Jul 15, 2016
61f1d62
school name
sandershihacker Jul 15, 2016
3724a0a
search function
sandershihacker Jul 18, 2016
9fdb686
Merge with origin and Explore Functionality
sandershihacker Jul 19, 2016
488b678
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 19, 2016
e36be8b
icon size and #136
sandershihacker Jul 19, 2016
d19e76f
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 19, 2016
ba9d265
dashboard pull data from database
sandershihacker Jul 19, 2016
4f594f3
fix inappropriate file naming for gradelist and lablist
sandershihacker Jul 20, 2016
814f435
more templating issues
sandershihacker Jul 20, 2016
4cce66f
merge conflicts
sandershihacker Jul 20, 2016
dd7adaa
.
sandershihacker Jul 20, 2016
820b7c3
.
sandershihacker Jul 20, 2016
27221e8
markdown default
sandershihacker Jul 20, 2016
a0de9d7
lablist and gradelist
sandershihacker Jul 20, 2016
7c3abf2
template changes
sandershihacker Jul 20, 2016
28aa60a
explore page changes
sandershihacker Jul 20, 2016
3942e78
merge
sandershihacker Jul 20, 2016
00b3a74
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 20, 2016
4435e5a
delete instructor page
sandershihacker Jul 20, 2016
cc7ece0
user schema
sandershihacker Jul 20, 2016
badfdcd
indentation
sandershihacker Jul 20, 2016
54d22db
indentation
sandershihacker Jul 20, 2016
88f7a09
merge
sandershihacker Jul 20, 2016
4927378
explore publish and taskview sidenav
sandershihacker Jul 21, 2016
51e3727
explore view links to course/courseId
sandershihacker Jul 21, 2016
62750e5
taskview sidenav
sandershihacker Jul 21, 2016
7d8ea64
taskview
sandershihacker Jul 21, 2016
9768694
merge
sandershihacker Jul 21, 2016
0c1a574
taskview sidenav changes
sandershihacker Jul 21, 2016
1c36be0
Extend terminal on small width
sandershihacker Jul 21, 2016
57c1980
.
sandershihacker Jul 21, 2016
d72d173
.
sandershihacker Jul 21, 2016
bdb4c54
.
sandershihacker Jul 21, 2016
3ced6c6
Added UserList Component in Courses
sandershihacker Jul 22, 2016
e0e92ca
Edit Course
sandershihacker Jul 22, 2016
35a1534
taskview
sandershihacker Jul 22, 2016
88de30c
.
sandershihacker Jul 22, 2016
d45f0cc
course dashboard get courseid from url
sandershihacker Jul 22, 2016
a4c08f7
delete userlist
sandershihacker Jul 22, 2016
352e176
input
sandershihacker Jul 22, 2016
4064822
delete userlist
sandershihacker Jul 22, 2016
b263a40
permissions
sandershihacker Jul 22, 2016
ef07f72
publish for global admin
sandershihacker Jul 22, 2016
880822f
merge
sandershihacker Jul 22, 2016
ad6f751
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 25, 2016
808f61b
Fixed router params
sandershihacker Jul 25, 2016
2cce591
Issue 161 fixed: instructor field in courses
sandershihacker Jul 25, 2016
7f092e5
.
sandershihacker Jul 25, 2016
d809cd5
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 25, 2016
8e68b9b
fix nextButton
sandershihacker Jul 25, 2016
3b19166
merge
sandershihacker Jul 25, 2016
e0d825e
.
sandershihacker Jul 25, 2016
a503d41
Issue #171
sandershihacker Jul 25, 2016
20e85ac
Issue #168
sandershihacker Jul 25, 2016
59b6cd3
Issue 160: CourseList
sandershihacker Jul 26, 2016
1fd22eb
Removed LabView
sandershihacker Jul 26, 2016
3ccbb0f
Enrollable field for buttons on explore pages
sandershihacker Jul 26, 2016
e01b199
TaskView -> LabView
sandershihacker Jul 26, 2016
ae37509
merge with origin master
sandershihacker Jul 26, 2016
085f8af
Fixed Gradelist, Lablist and styling issues
sandershihacker Jul 26, 2016
4dc3afc
Issue #162 Completed
sandershihacker Jul 26, 2016
27ac942
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 26, 2016
2c3d196
TaskView toolbar color darken
sandershihacker Jul 26, 2016
1922c34
remove tests
sandershihacker Jul 26, 2016
a6e4f0c
Combine Subscriptions
sandershihacker Jul 26, 2016
9568884
Reactive Subscription for CourseList and GradeList
sandershihacker Jul 27, 2016
b63e19d
instructor view of course dashboard
sandershihacker Jul 27, 2016
cd61b63
Dashboard not logged in
sandershihacker Jul 27, 2016
1b5c4fc
merge
sandershihacker Jul 28, 2016
ef1486d
markdown editor for labview
sandershihacker Jul 28, 2016
e75fe11
Merge branch 'master' of https://github.com/learnlinux/tuxlab-app
sandershihacker Jul 28, 2016
f67e079
.
sandershihacker Jul 28, 2016
4c70740
.
sandershihacker Jul 28, 2016
36538a7
remove test
sandershihacker Jul 28, 2016
283a850
Syllabus update on course_dashboard for instructors works
sandershihacker Jul 28, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 0 additions & 95 deletions client/imports/ui/components/lablist/lablist.ts

This file was deleted.

9 changes: 8 additions & 1 deletion client/imports/ui/components/markdown/markdown.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
<div class="tuxlab-markdown">
<!-- Task Markdown -->
<div class="markdown-content">
<div id="task-markdown" [innerHTML]="convert(mdData)"></div>
<a (click)="mdeToggle()" *ngIf="isInstruct()">
<md-icon fontIcon="tuxicon-edit"></md-icon>
</a>
<div id="task-markdown" [innerHTML]="convert(mdData)" *ngIf="!showMDE"></div>
<div *ngIf="showMDE" id="task-editor">
<tuxlab-mdeditor [mdData]="mdData" (mdUpdated)="mdUpdated($event)"></tuxlab-mdeditor>
<button md-raised-button>Save Changes</button>
</div>
</div>
<div *ngIf="mdDataUpdate != null" id="feedback-markdown">
<p>Task Feedback:</p>
Expand Down
55 changes: 48 additions & 7 deletions client/imports/ui/components/markdown/markdown.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import 'zone.js/dist/zone';

// Angular Imports
import { Component, ViewEncapsulation, provide, Input } from '@angular/core';
import { Component, ViewEncapsulation, provide, Input, OnInit } from '@angular/core';
import { bootstrap } from 'angular2-meteor-auto-bootstrap';
import { APP_BASE_HREF } from '@angular/common';
import { HTTP_PROVIDERS } from '@angular/http';
import { InjectUser } from 'angular2-meteor-accounts-ui';
import { ActivatedRoute, Router } from '@angular/router';

// Angular Material Imports
import { MATERIAL_PROVIDERS, MATERIAL_DIRECTIVES } from 'ng2-material';
Expand All @@ -23,6 +24,14 @@

// Icon
import { MD_ICON_DIRECTIVES, MdIconRegistry } from '@angular2-material/icon';

// MDEditor
import { MDEditor } from '../mdeditor/mdeditor.ts';

// Roles
import { Roles } from '../../../../../collections/users.ts';

declare var Collections: any;

// Markdown Imports
/// <reference path="./marked.d.ts" />
Expand All @@ -37,7 +46,8 @@
MD_TOOLBAR_DIRECTIVES,
MD_ICON_DIRECTIVES,
MD_INPUT_DIRECTIVES,
MD_SIDENAV_DIRECTIVES
MD_SIDENAV_DIRECTIVES,
MDEditor
],

viewProviders: [ MdIconRegistry ],
Expand All @@ -49,12 +59,12 @@
export class MarkdownView extends MeteorComponent{
@Input() mdData = "";
@Input() mdDataUpdate = "";
courseId: string;
labId: string;
showMDE: boolean = false;

constructor(mdIconRegistry: MdIconRegistry) {
constructor(private route: ActivatedRoute, private router: Router) {
super();
// Create Icon Font
mdIconRegistry.registerFontClassAlias('tux', 'tuxicon');
mdIconRegistry.setDefaultFontSetClass('tuxicon');

}
convert(markdown: string) {
Expand All @@ -66,4 +76,35 @@ export class MarkdownView extends MeteorComponent{
return "";
}
}
}
ngOnInit() {
this.courseId = this.router.routerState.parent(this.route).snapshot.params['courseid'];
this.labId = this.route.snapshot.params['labid'];
}
isInstruct() {
if(typeof this.courseId !== "undefined") {
return Roles.isInstructorFor(this.courseId);
}
else {
return false;
}
}
// Toggle to show either markdown editor or task markdown
mdeToggle() {
this.showMDE = !this.showMDE;
}

// Update new markdown
updateMarkdown() {
Collections.labs.update({
_id: this.labId
}, {
$set: {
// Set current task markdown
}
});
}
// Output event from MDE
mdUpdated(md: string) {
this.mdData = md;
}
}
14 changes: 11 additions & 3 deletions client/imports/ui/components/mdeditor/mdeditor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { Meteor } from 'meteor/meteor';

// Angular Imports
import { Component, ElementRef, ViewChild } from '@angular/core';
import { Component, ElementRef, ViewChild, Input, Output, EventEmitter } from '@angular/core';

// Angular Material Imports
import { MeteorComponent } from 'angular2-meteor';
Expand All @@ -19,15 +19,23 @@
// Export Editor Class
export class MDEditor extends MeteorComponent {
@ViewChild('simplemde') textarea : ElementRef;
@Input() mdData: string = "";
@Output() mdUpdated = new EventEmitter<string>();

constructor(private elementRef:ElementRef) {
super();
}

ngAfterViewInit(){
var self = this;
// Instantiate SimpleMDE
var mde = new SimpleMDE({ element: this.elementRef.nativeElement.value });
// Read initial data from task markdown
mde.value(self.mdData);
// Catch changes
mde.codemirror.on("change", function() {
self.mdData = mde.value();
self.mdUpdated.emit(self.mdData);
});
}


}
12 changes: 6 additions & 6 deletions client/imports/ui/pages/course/course.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
<div class="wrapper">
<!-- Navigation -->
<div class="course-toolbar-nav">
<a md-button [routerLink]="['/course/' + courseId]" class="home-button">Home</a>
<a md-button [routerLink]="['/course/' + courseId]" class="home-button">{{ courseNumber }} Home</a>
<a md-button [routerLink]="['/course/' + courseId + '/labs']">Labs</a>
<a md-button [routerLink]="['/course/' + courseId + '/grades']">Grades</a>
<a md-button [routerLink]="['/course/' + courseId]">Settings</a>
<a md-button [routerLink]="['/course/' + courseId + '/grades']" *ngIf="!isInstruct()">Grades</a>
<a md-button [routerLink]="['/course/' + courseId]" *ngIf="isInstruct()">Students</a>
</div>
</div>
</md-toolbar>
<md-toolbar class="small" *showItBootstrap="['xs']">
<div>
<a md-button [routerLink]="['/course/' + courseId]">Home</a>
<a md-button [routerLink]="['/course/' + courseId]">{{ courseNumber }} Home</a>
<a md-button [routerLink]="['/course/' + courseId + '/labs']">Labs</a>
<a md-button [routerLink]="['/course/' + courseId + '/grades']">Grades</a>
<a md-button [routerLink]="['/course/' + courseId]">Settings</a>
<a md-button [routerLink]="['/course/' + courseId + '/grades']" *ngIf="!isInstruct()">Grades</a>
<a md-button [routerLink]="['/course/' + courseId]" *ngIf="isInstruct()">Students</a>
</div>
<md-icon fontIcon="tuxicon-right"></md-icon>
</md-toolbar>
Expand Down
18 changes: 18 additions & 0 deletions client/imports/ui/pages/course/course.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@

// Icon
import { MD_ICON_DIRECTIVES, MdIconRegistry } from '@angular2-material/icon';

// Roles
import { Roles } from '../../../../../collections/users.ts';

declare var Collections: any;

Expand All @@ -40,14 +43,29 @@
// Export CourseView Class
export default class CourseView extends MeteorComponent {
courseId: string;
courseNumber: string = "";
user: Meteor.User;
constructor(mdIconRegistry: MdIconRegistry, private route: ActivatedRoute) {
super();
// Create Icon Font
mdIconRegistry.registerFontClassAlias('tux', 'tuxicon');
mdIconRegistry.setDefaultFontSetClass('tuxicon');
this.subscribe('user-courses', () => {
this.autorun(() => {
this.courseNumber = Collections.courses.findOne({ _id: this.courseId }).course_number;
});
}, true);
}
ngOnInit() {
this.courseId = (<any>(this.route.snapshot.params)).courseid;
}
isInstruct() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a needless function. Just use the Roles.isInstructorFor function in the template itself.

if(typeof this.courseId !== "undefined") {
return Roles.isInstructorFor(this.courseId);
}
else {
return false;
}
}
}

52 changes: 45 additions & 7 deletions client/imports/ui/pages/course/course_dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
<md-card>
<md-card-title>
<md-card-title-text>
<span class="md-headline">{{ courseName }}</span>
<span class="md-headline">
{{ courseName }}
<md-icon fontIcon="tuxicon-cog" *ngIf="isInstruct()"></md-icon>
</span>

</md-card-title-text>
</md-card-title>
<md-card-content>
Expand All @@ -15,13 +19,11 @@
</md-card>

<!-- Responsive Section for Grades and Assignments -->
<div layout="row" layout-xs="column">

<div layout="row" layout-xs="column" *ngIf="!isInstruct()">
<!-- Grade List -->
<div flex>
<tuxlab-gradelist></tuxlab-gradelist>
</div>

<!-- Announcements -->
<div flex>
<md-card>
Expand Down Expand Up @@ -56,9 +58,45 @@
</md-card-content>
</md-card>
</div>

</div>


<!-- Permissions Section -->
<div layout="row" *ngIf="isInstruct()">
<div flex>
<md-card>
<md-card-title>
<md-card-title-text>
<span class="md-headline">Permissions</span>
</md-card-title-text>
</md-card-title>
<md-card-content>
Data
</md-card-content>
<md-card-actions layout="row" layout-align="end center">
<a md-button>Submit</a>
</md-card-actions>
</md-card>
</div>
<div flex>
<md-card>
<md-card-title>
<md-card-title-text>
<span class="md-headline">Syllabus</span>
</md-card-title-text>
</md-card-title>
<md-card-content>
{{courseSyllabus}}
<tuxlab-mdeditor [mdData]="courseSyllabus" (mdUpdated)="mdUpdate($event)"></tuxlab-mdeditor>
</md-card-content>
<md-card-actions layout="row" layout-align="end center">
<a md-button (click)="updateSyllabus()">Submit</a>
</md-card-actions>
</md-card>
</div>
</div>

<!--Lab List Card-->
<tuxlab-lablist></tuxlab-lablist>
<div>
<tuxlab-lablist></tuxlab-lablist>
</div>
</div>
Loading