Added Profile page
diff --git a/erpnext/public/js/education/lms/components/ProgressCard.vue b/erpnext/public/js/education/lms/components/ProgressCard.vue
new file mode 100644
index 0000000..9666ab4
--- /dev/null
+++ b/erpnext/public/js/education/lms/components/ProgressCard.vue
@@ -0,0 +1,69 @@
+<template>
+ <div class='card-deck mt-3'>
+ <div class="card">
+ <div class='card-body'>
+ <div class="row">
+ <div class="course-details col-xs-7 col-sm-8 col-md-9">
+ <router-link :to="'/Program/' + programData.name">
+ <h5 class='card-title'>{{ programData.program }}</h5>
+ </router-link>
+ <span class="course-list text-muted" id="getting-started">
+ Courses
+ <ul class="mb-0 mt-1">
+ <li v-for="item in programData.progress" :key="item.name">
+ <span v-if="item.is_complete"><i class="text-success fa fa-check" aria-hidden="true"></i></span>
+ <span v-else><i class="text-secondary fa fa-circle-o" aria-hidden="true"></i></span>
+ {{ item.course_name }}
+ </li>
+ </ul>
+ </span>
+ </div>
+ <div class='course-buttons text-center col-xs-5 col-sm-4 col-md-3'>
+ <a-button
+ v-if="programData.name == 'ECP2018'"
+ :type="'success'"
+ size="sm btn-block"
+ :route="{name: 'home'}"
+ >
+ Download Certificate
+ </a-button>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+</template>
+<script>
+import AButton from './Button.vue';
+export default {
+ props: ['program'],
+ name: "ProgressCard",
+ data() {
+ return {
+ programData: {}
+ };
+ },
+ mounted() {
+ this.getProgramProgress().then(data => this.programData = data)
+ },
+ methods: {
+ getProgramProgress() {
+ return lms.call('get_program_progress', {
+ program_name: this.program
+ })
+ },
+ },
+ components: {
+ AButton
+ },
+};
+</script>
+<style scoped>
+ a {
+ text-decoration: none;
+ }
+ li {
+ list-style-type: none;
+ padding: 0;
+ }
+</style>
diff --git a/erpnext/public/js/education/lms/pages/ProfilePage.vue b/erpnext/public/js/education/lms/pages/ProfilePage.vue
new file mode 100644
index 0000000..59d5aaa
--- /dev/null
+++ b/erpnext/public/js/education/lms/pages/ProfilePage.vue
@@ -0,0 +1,93 @@
+<template>
+<div>
+ <section>
+ <div class='container'>
+ <div class="row">
+ <div class="col-sm-3 text-center">
+ <span class="sidebar-standard-image" title="Lorem Ipsum">
+ <div class="standard-image" style="background-color: #fafbfc;">
+ LP
+ </div>
+ </span>
+ </div>
+ <div class="col-sm-9">
+ <div>
+ <h3>Lorem Ipsum</h3>
+ <ul>
+ <li class="row">
+ <div class="col-md-3 col-sm-4 pr-0 text-muted">Email:</div>
+ <div class="col-md-9 col-sm-8">lorem@example.com</div>
+ </li>
+ <li class="row">
+ <div class="col-md-3 col-sm-4 pr-0 text-muted">Date of Joining:</div>
+ <div class="col-md-9 col-sm-8">18th July 2018</div>
+ </li>
+ <!-- <li><span class="text-muted">Date of Joining: </span>3rd July 2018</li> -->
+ <!-- <li><span class="text-muted">Programs Enrolled: </span>ERPNext Certified Professional 2018</li> -->
+ <li class="row">
+ <div class="col-md-3 col-sm-4 pr-0 text-muted">Programs Enrolled:</div>
+ <div class="col-md-9 col-sm-8">
+ <ul>
+ <li>Frappe Certified ERPNext Professional</li>
+ <li>Frappe Certified Developer</li>
+ </ul>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <a href="" class="edit-button text-muted"><i class="fa fa-pencil" aria-hidden="true"></i></a>
+ </div>
+ </div>
+ </div>
+ </section>
+ <CardList :title="'Your Progress'" :description="''">
+ <ProgressCard slot="card-list-slot" v-for="program in enrolledPrograms" :program="program" :key="program"/>
+ </CardList>
+</div>
+</template>
+<script>
+import Button from '../components/Button.vue';
+import TopSection from "../components/TopSection.vue"
+import CardList from "../components/CardList.vue"
+import ProgressCard from "../components/ProgressCard.vue"
+
+
+export default {
+ name: "ProfilePage",
+ components: {
+ AButton: Button,
+ TopSection,
+ CardList,
+ ProgressCard
+ },
+ data() {
+ return {
+ enrolledPrograms: {},
+ }
+ },
+ mounted() {
+ this.getEnrolledPrograms().then(data => this.enrolledPrograms = data);
+ },
+ methods: {
+ getEnrolledPrograms() {
+ return lms.call("get_program_enrollments")
+ }
+ }
+};
+</script>
+<style scoped>
+ .edit-button{
+ position:absolute;
+ top:0;
+ right:0;
+ }
+ .standard-image {
+ font-size: 72px;
+ border-radius: 6px;
+ }
+ ul {
+ list-style-type: none;
+ padding: 0;
+ margin: 0
+ }
+</style>
\ No newline at end of file
diff --git a/erpnext/public/js/education/lms/routes.js b/erpnext/public/js/education/lms/routes.js
index e6eb002..5ebb1e6 100644
--- a/erpnext/public/js/education/lms/routes.js
+++ b/erpnext/public/js/education/lms/routes.js
@@ -2,6 +2,7 @@
import ProgramPage from "./pages/ProgramPage.vue";
import ContentPage from "./pages/ContentPage.vue";
import ListPage from "./pages/ListPage.vue";
+import ProfilePage from "./pages/ProfilePage.vue";
const routes = [
{name: 'home', path: '', component: Home},
@@ -12,7 +13,7 @@
component: ContentPage,
props: true,
beforeEnter: (to, from, next) => {
- if(!lms.store.isLogin){
+ if(!lms.store.checkLogin()){
next({name: 'home'})
}
else {
@@ -35,6 +36,12 @@
component: ListPage,
props: true
},
+ {
+ name: 'profile',
+ path: '/Profile',
+ component: ProfilePage,
+ props: true
+ }
];
export default routes;
\ No newline at end of file