Commit 4380a034a050434c4a6cba596447b66dd1d5a689

Authored by filipecmedeiros
1 parent 47bb038f

Fixing template/view [Issue #190]

core/templates/guest.html
1 -{% extends 'base.html' %} 1 +<!DOCTYPE html>
2 2
  3 +{% load static i18n %}
3 {% load i18n custom_filters %} 4 {% load i18n custom_filters %}
4 5
5 -{% block breadcrumbs %}  
6 - <div class="col-md-12">  
7 - <form id="searchform" action="{% url 'course:manage' %}" method="get" accept-charset="utf-8">  
8 - <div class="input-group">  
9 - <div class="form-group is-empty">  
10 - <input type="search" class="form-control" placeholder="Search Courses" name="q" id="searchbox"></div>  
11 - <span class="input-group-btn input-group-sm">  
12 - <button type="button" class="btn btn-fab btn-fab-mini">  
13 - <i class="material-icons">search</i>  
14 - </button>  
15 - </span>  
16 - </div>  
17 - </form>  
18 - </div>  
19 -  
20 - <div class="col-md-12">  
21 - <div class="btn-group btn-group-justified btn-group-raised">  
22 - <a href="?category=all" class="btn btn-raised btn-info">Todos</a>  
23 - {% for category_course in categorys_courses %}  
24 - <a href="?category={{category_course.name}}" class="btn btn-raised btn-primary">{{category_course.name}}</a>  
25 - {% endfor %}  
26 - </div>  
27 - </div>  
28 -  
29 -{% endblock %}  
30 -  
31 -  
32 -{% block content %}  
33 -  
34 - {% for course in courses %}  
35 - <div class="panel panel-info">  
36 - <div class="panel-heading">  
37 - <h3 class="panel-title">  
38 - {{course.name}}  
39 - {% if user|show_course_subscribe:course %}  
40 - <div class="pull-right" style="margin-top:-15px">  
41 - <a onclick="subscribe($(this), '{% url 'course:subscribe' course.slug %}' , '{% trans 'Are you sure you want to subscribe to this subject?' %}')" class="btn btn-sm btn-primary btn-raised">{% trans 'Subscribe' %}</a>  
42 - </div>  
43 - {% endif %}  
44 - </h3>  
45 - </div>  
46 -  
47 - <div class="panel-body">  
48 - <p><b>Course Name: </b>{{course.name}}</p>  
49 - <p><b>Begining: </b>{{course.init_date}}</p>  
50 - <p><b>End: </b>{{course.end_date}}</p>  
51 - <p><b>Professor: </b>{{course.professors.name}}</p>  
52 - <p>  
53 - <b>Description:</b>  
54 - <i>  
55 - {{course.content}}  
56 - </i>  
57 - </p>  
58 - </div>  
59 - </div>  
60 - {% endfor %}  
61 -{% endblock %}  
62 -  
63 -  
64 -  
65 -{% comment %}  
66 -  
67 -  
68 - 6 +<html>
  7 +<head>
  8 + <title>{{ title }}</title>
  9 +
  10 + <meta http-equiv="Cache-Control" content="no-cache, no-store" />
  11 + <link href="{% static 'img/favicon.ico' %}" rel="shortcut icon" />
  12 + <!-- Roboto font -->
  13 + <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:300,400,500,700" type="text/css">
  14 + <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  15 +
  16 + <!-- jQuery & jQuery UI -->
  17 + <script type="text/javascript" src="{% static 'js/vendor/jquery-3.1.0.min.js' %}"></script>
  18 + <script type="text/javascript" src="{% static 'js/vendor/jquery-ui.js' %}"></script>
  19 +
  20 + <!-- Bootstrap and themes (material) -->
  21 + <link rel="stylesheet" type="text/css" href="{% static 'bootstrap-3.3.7/css/bootstrap.css' %}">
  22 + <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/material.min.css' %}">
  23 + <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/ripples.min.css' %}">
  24 + <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/datepicker.css' %}">
  25 + <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/alertifyjs/alertify.min.css' %}">
  26 + <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/alertifyjs/themes/bootstrap.css' %}">
  27 + <script type="text/javascript" src="{% static 'bootstrap-3.3.7/js/bootstrap.js' %}"></script>
  28 + <script type="text/javascript" src="{% static 'js/vendor/bootstrap-acessibility.min.js' %}"></script>
  29 + <script type="text/javascript" src="{% static 'js/vendor/material.min.js' %}"></script>
  30 + <script type="text/javascript" src="{% static 'js/vendor/ripples.min.js' %}"></script>
  31 + <script type="text/javascript" src="{% static 'js/vendor/bootstrap-datepicker.js' %}"></script>
  32 + <script type="text/javascript" src="{% static 'js/vendor/alertify.min.js' %}"></script>
  33 +
  34 + <!-- Font awesome -->
  35 + <link rel="stylesheet" type="text/css" href="{% static 'font-awesome-4.6.3/css/font-awesome.min.css' %}">
  36 +
  37 + <!-- Custom styles -->
  38 + <link rel="stylesheet" type="text/css" href="{% static 'css/base/amadeus.css' %}">
  39 +
  40 + <!-- Init material Bootstrap -->
  41 + <script type="text/javascript">$.material.init()</script>
  42 +
  43 + <!--Javascript block for specific-app ones -->
  44 + <script src="{% static 'js/base/amadeus.js' %}"></script>
  45 + {% block style %}
  46 + {% endblock %}
  47 + {% block javascript %}
  48 + {% endblock %}
  49 +</head>
  50 +<body>
  51 + {% block nav %}
  52 + <div class="navbar navbar-default">
  53 + <div class="navbar-header">
  54 + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
  55 + <span class="icon-bar"></span>
  56 + <span class="icon-bar"></span>
  57 + <span class="icon-bar"></span>
  58 + </button>
  59 + <a class="navbar-brand" href="{% url 'app:index' %}"><img class="logo" src="{% static 'img/topo-amadeus-white.png' %}" alt="Logo"/></a>
  60 + </div>
  61 + <div class="navbar-collapse collapse navbar-responsive-collapse">
  62 + <ul class="nav navbar-nav navbar-right notifications">
  63 + <li class="" data-toggle="tooltip" data-placement="bottom" title data-original-title="notifications">
  64 + <a class="dropdown-toggle" data-toggle="dropdown"> <span id="notification-count" class="badge notification-count">{{notifications.count}}</span><i class="fa fa-bell" aria-hidden="true"></i></a>
  65 + <ul id="notification-dropdown" class="dropdown-menu">
  66 + <li class="dropdown-header">Notifications</li>
  67 + {% include "notifications.html" %}
  68 +
  69 + <li>
  70 + <a onclick="getNotifications(5)">
  71 + <div id="notification-see-more" class="list-group-item">
  72 + <div class="row-content">
  73 + <p class="list-group-item-text">See More</p>
  74 + </div>
  75 + </a>
  76 + </li>
  77 + </ul>
  78 + </li>
  79 +
  80 + <li data-toggle="tooltip" data-placement="bottom" title data-original-title="{% trans 'messages' %}"> <a href="#"><i class="fa fa-comments" aria-hidden="true"></i></a> </li>
  81 + <li > <a class="link" href="{% url 'app:index' %}">{{ user }}</a></li>
  82 +
  83 + </ul>
  84 + </div>
  85 + </div>
  86 + {% endblock %}
  87 + <div class="container-fluid">
  88 + <div class="row">
  89 +
  90 + <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
  91 + {% block sidebar %}
  92 + <div class="panel panel-primary navigation">
  93 + <div class="panel-heading">
  94 + <h4>Menu</h4>
  95 + </div>
  96 + <div class="panel-body">
  97 + <ul class="nav nav-pills nav-stacked">
  98 + <li><a href="{% url 'core:register' %}">{% trans 'Register' %}</a></li>
  99 + </ul>
  100 + </div>
  101 + </div>
  102 + {% endblock %}
  103 +
  104 + </div>
  105 + <div class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10">
  106 + {% block breadcrumbs %}
  107 + <div class="col-md-12">
  108 + <form id="searchform" action="{% url 'course:manage' %}" method="get" accept-charset="utf-8">
  109 + <div class="input-group">
  110 + <div class="form-group is-empty">
  111 + <input type="search" class="form-control" placeholder="Search Courses" name="q" id="searchbox"></div>
  112 + <span class="input-group-btn input-group-sm">
  113 + <button type="button" class="btn btn-fab btn-fab-mini">
  114 + <i class="material-icons">search</i>
  115 + </button>
  116 + </span>
  117 + </div>
  118 + </form>
  119 + </div>
69 120
70 -</fieldset>  
71 - <div class="col-md-12">  
72 - {% if courses|length > 0 %}  
73 - {% if request.GET.category == 'all' or none or request.GET.category == '' %}  
74 - {% for course in list_courses %}  
75 - <div class="panel-group ui-accordion ui-widget ui-helper-reset ui-sortable" id="accordion" role="tablist" aria-multiselectable="false">  
76 - <div class="group">  
77 - <div class="panel panel-info">  
78 - <div class="panel-heading" role="tab">  
79 - <div class="row">  
80 - <div class="col-xs-9 col-md-9 titleTopic">  
81 - <a role="button" data-toggle="collapse" data-parent="#accordion" href=".collapseOne" aria-expanded="false" aria-controls="collapseOne" class="collapsed">  
82 - <h4 style="color:white">{{course.name}}</h4>  
83 - </a>  
84 - </div>  
85 - </div>  
86 - </div>  
87 - <div class="panel-collapse collapseOne collapse in" role="tabpanel" aria-labelledby="headingOne" aria-expanded="true" aria-hidden="false" tabindex="0">  
88 - <div class="panel-body">  
89 - <p><b>Course Name: </b>{{course.name}}</p>  
90 - <p><b>Duration (in semesters): </b>09</p>  
91 - <p><b>Coordinator: </b>{{course.professors}}</p>  
92 - <p>  
93 - <b>Description:</b>  
94 - <i>  
95 - {{course.description}}  
96 - </i>  
97 - </p>  
98 - <a href="{% url 'course:view' course.slug %}" class="btn btn-raised btn-default center-block">'View Course<div class="ripple-container"></div></a>  
99 - </div>  
100 - </div>  
101 - </div> 121 + <div class="col-md-12">
  122 + <div class="btn-group btn-group-justified btn-group-raised">
  123 + <a href="?category=all" class="btn btn-raised btn-info">Todos</a>
  124 + {% for category in categories %}
  125 + <a href="?category={{category.name}}" class="btn btn-raised btn-primary">{{category.name}}</a>
  126 + {% endfor %}
102 </div> 127 </div>
103 </div> 128 </div>
104 - {% endfor %}  
105 - {% else %}  
106 - {% for course in courses_category %}  
107 - {% if course.category.name == request.GET.category %}  
108 - <!-- Put your content here! -->  
109 - <div class="panel-group ui-accordion ui-widget ui-helper-reset ui-sortable" id="accordion" role="tablist" aria-multiselectable="false">  
110 - <div class="group"> 129 +
  130 + {% endblock %}
  131 + {% block render_breadcrumbs %}{% endblock %}
  132 + <div>
  133 + </div>
  134 + <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
  135 + {% block content %}
  136 + {% for course in courses %}
111 <div class="panel panel-info"> 137 <div class="panel panel-info">
112 - <div class="panel-heading" role="tab">  
113 - <div class="row">  
114 - <div class="col-xs-9 col-md-9 titleTopic">  
115 - <a role="button" data-toggle="collapse" data-parent="#accordion" href=".collapseOne" aria-expanded="false" aria-controls="collapseOne" class="collapsed">  
116 - <h4 style="color:white">{{course.name}}</h4>  
117 - </a>  
118 - </div>  
119 - </div>  
120 - </div>  
121 - <div class="panel-collapse collapseOne collapse in" role="tabpanel" aria-labelledby="headingOne" aria-expanded="true" aria-hidden="false" tabindex="0">  
122 - <div class="panel-body">  
123 - <p><b>Course Name: </b>{{course.name}}</p>  
124 - <p><b>Duration (in semesters): </b>09</p>  
125 - <p><b>Coordinator: </b>{{course.professors}}</p>  
126 - <p>  
127 - <b>Description:</b>  
128 - <i>  
129 - {{course.description}}  
130 - </i>  
131 - </p>  
132 - <a href="{% url 'course:view' course.slug %}" class="btn btn-raised btn-default center-block">View Course<div class="ripple-container"></div></a>  
133 - </div>  
134 - </div> 138 + <div class="panel-heading">
  139 + <a href="{{ course.get_absolute_url }}" class="panel-title">{{course.name}}</a>
  140 + </div>
  141 +
  142 + <div class="panel-body">
  143 + <p><b>Course Name: </b>{{course.name}}</p>
  144 + <p><b>Begining: </b>{{course.init_date}}</p>
  145 + <p><b>End: </b>{{course.end_date}}</p>
  146 + <p><b>Professor: </b>{{course.professors.name}}</p>
  147 + <p>
  148 + <b>Description:</b>
  149 + <i>
  150 + {{course.content}}
  151 + </i>
  152 + </p>
  153 + </div>
135 </div> 154 </div>
136 - </div>  
137 - </div>  
138 - {% endif %}  
139 - {% endfor %}  
140 - {% endif %}  
141 - {% else %}  
142 - No courses found  
143 - {% endif %}  
144 - <div class="group">  
145 - <div class="modal" id="removeCourse">  
146 - <div class="modal-dialog">  
147 - <div class="modal-content">  
148 - <div class="modal-header">  
149 - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">X</button>  
150 - <h4 class="modal-title"></h4>  
151 - </div>  
152 - <div class="modal-body">  
153 - <p>Delete your course?</p>  
154 - </div>  
155 - <div class="modal-footer">  
156 -  
157 - <a href="http://127.0.0.1:8080/html/screens/users/profile_user.html" target="_self"><button type="button" class="btn btn-primary">Confirm</button></a>  
158 -  
159 - </div>  
160 - </div>  
161 - </div> 155 + {% endfor %}
  156 +
  157 + {% endblock %}
162 </div> 158 </div>
163 </div> 159 </div>
164 </div> 160 </div>
165 - <div class="col-md-12">  
166 - <nav aria-label="Page navigation">  
167 - <ul class="pagination">  
168 - {% if page_obj.has_previous %}  
169 - <li>  
170 - <a href="?page={{ page_obj.previous_page_number }}"><span><<</span></a>  
171 - </li>  
172 - {% endif %}  
173 - {% for page_number in paginator.page_range %}  
174 - <li{% if page_obj.number == page_number %} class="active"{% endif %}>  
175 - <a href="?page={{ page_number }}">{{ page_number }}</a>  
176 - </li>  
177 - {% endfor %}  
178 - {% if page_obj.has_next %}  
179 - <li>  
180 - <a href="?page={{ page_obj.next_page_number }}"><span>>></span></a>  
181 - </li>  
182 - {% endif %}  
183 - </ul>  
184 - </nav>  
185 - </div>  
186 -{% endcomment %} 161 + <script src="{% static 'js/main.js' %}"></script>
  162 + <script type="text/javascript" src="{% static 'js/topic_editation_presentation.js' %}"></script>
  163 + {% block script_file %}
  164 +
  165 + {% endblock script_file %}
  166 +</body>
  167 +
  168 +</html>
187 \ No newline at end of file 169 \ No newline at end of file
@@ -116,6 +116,7 @@ def getNotifications(request): @@ -116,6 +116,7 @@ def getNotifications(request):
116 116
117 def guest (request): 117 def guest (request):
118 context = { 118 context = {
119 - 'courses': Course.objects.filter(public=True) 119 + 'courses': Course.objects.filter(public=True),
  120 + 'categories': CourseCategory.objects.all(),
120 } 121 }
121 return render(request, 'guest.html', context) 122 return render(request, 'guest.html', context)
122 \ No newline at end of file 123 \ No newline at end of file
courses/models.py
@@ -6,6 +6,8 @@ from users.models import User @@ -6,6 +6,8 @@ from users.models import User
6 from core.models import Resource, MimeType 6 from core.models import Resource, MimeType
7 from s3direct.fields import S3DirectField 7 from s3direct.fields import S3DirectField
8 8
  9 +from django.core.urlresolvers import reverse
  10 +
9 class CourseCategory(models.Model): 11 class CourseCategory(models.Model):
10 12
11 name = models.CharField(_('Name'), max_length = 100, unique = True) 13 name = models.CharField(_('Name'), max_length = 100, unique = True)
@@ -57,6 +59,9 @@ class Course(models.Model): @@ -57,6 +59,9 @@ class Course(models.Model):
57 def __str__(self): 59 def __str__(self):
58 return self.name 60 return self.name
59 61
  62 + def get_absolute_url (self):
  63 + return reverse('course:view', kwargs={'slug': self.slug})
  64 +
60 def show_subscribe(self): 65 def show_subscribe(self):
61 today = datetime.date.today() 66 today = datetime.date.today()
62 67