Skip to content
Snippets Groups Projects
Commit c2d705a0 authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

Fixing message pages

parent 23abf9bb
Branches
No related tags found
No related merge requests found
VIPSWeb/static/css/icons/ic_action_search.png

3.09 KiB

This diff is collapsed.
...@@ -60,75 +60,18 @@ ...@@ -60,75 +60,18 @@
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a href="/forecasts">{% trans "Forecasts" %}</a></li> <li><a href="/forecasts">{% trans "Forecasts" %}</a></li>
<li><a href="/messages">{% trans "Messages" %}</a></li> <li><a href="/messages">{% trans "Messages" %}</a></li>
<!--li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{% trans "Dropdown" %} <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">{% trans "Action" %}</a></li>
<li><a href="#">{% trans "Another action" %}</a></li>
<li><a href="#">{% trans "Something else here" %}</a></li>
<li><a href="#">{% trans "Separated link" %}</a></li>
<li><a href="#">{% trans "One more separated link" %}</a></li>
</ul>
</li-->
<!--li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Korn og oljevekster <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">VIPS-korn</a></li>
<li><a href="#">Ugras i korn</a></li>
<li><a href="#">Sjukdommer i korn og oljevekster</a></li>
<li><a href="#">Skadedyr i korn og oljevekster</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Potet og grønnsaker <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">EuroBlight: Tidlige funn av tørråte</a></li>
<li><a href="#">Potetsikade</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Frukt og bær <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">RIMPro</a></li>
<li><a href="#">Eplevikler</a></li>
<li><a href="#">Rognebærmøll</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Andre tjenester <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Landbruksmeteorologisk Tjeneste</a></li>
<li><a href="#">Varsel på SMS</a></li>
<li><a href="#">VIPS Mobil</a></li>
<li><a href="#">Historiske varsler</a></li>
<li><a href="#">Sprøyteteknikk</a></li>
<li class="divider"></li>
<li class="dropdown-header">Andre modeller</li>
<li><a href="#">Vanning</a></li>
<li><a href="#">Nitrogenstatus</a></li>
<li><a href="#">Grovfôrmodellen</a></li>
<li><a href="#">Sprøyteteknikk</a></li>
<li><a href="#">Varmesum og nedbørsmengde</a></li>
<li class="divider"></li>
<li class="dropdown-header">Informasjonstjenester</li>
<li><a href="#">Plantevernguiden</a></li>
<li><a href="#">Plantevernleksikonet</a></li>
</ul>
</li-->
</ul> </ul>
{% get_current_language as LANGUAGE_CODE %} {% get_current_language as LANGUAGE_CODE %}
<form class="navbar-form navbar-right" action="/i18n/setlang/" method="post"> <form class="navbar-form navbar-right" action="/i18n/setlang/" method="post">
{% csrf_token %} {% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" /> <input name="next" type="hidden" value="{{ redirect_to }}" />
<select name="language"> <select name="language" onchange="this.form.submit();">
{% get_language_info_list for settings.AVAILABLE_LANGUAGES as languages %} {% get_language_info_list for settings.AVAILABLE_LANGUAGES as languages %}
{% for language in languages %} {% for language in languages %}
<option value="{{ language.code }}" {% if language.code == LANGUAGE_CODE %} selected="selected" {% endif %}>{{ language.name_local }} ({{ language.code }})</option> <option value="{{ language.code }}" {% if language.code == LANGUAGE_CODE %} selected="selected" {% endif %}>{{ language.name_local }} ({{ language.code }})</option>
{% endfor %} {% endfor %}
</select> </select>
<button type="submit" class="btn btn-default" >Select language </button> <!--button type="submit" class="btn btn-default" >Select language </button-->
</form> </form>
</div><!-- /.navbar-collapse --> </div><!-- /.navbar-collapse -->
</nav> </nav>
......
...@@ -21,6 +21,9 @@ from django.conf import settings ...@@ -21,6 +21,9 @@ from django.conf import settings
from datetime import datetime from datetime import datetime
class MessageTag: class MessageTag:
""" Tags for the Message class.
Fetched from VIPSLogic backend using REST protocol
"""
def __init__(self, def __init__(self,
message_tag_id, message_tag_id,
default_tag_name, default_tag_name,
...@@ -56,6 +59,9 @@ class MessageTag: ...@@ -56,6 +59,9 @@ class MessageTag:
) )
class Message: class Message:
""" Represents a message from VIPS to the users.
Fetched from VIPSLogic backend using REST protocol
"""
def __init__(self, def __init__(self,
message_id, message_id,
organization_id, organization_id,
...@@ -65,7 +71,9 @@ class Message: ...@@ -65,7 +71,9 @@ class Message:
date_pub, date_pub,
date_valid_to, date_valid_to,
illustration_file_name, illustration_file_name,
illustration_caption): illustration_caption,
created_by
):
self.message_id = message_id self.message_id = message_id
self.organization_id = organization_id self.organization_id = organization_id
self.heading = heading self.heading = heading
...@@ -75,6 +83,7 @@ class Message: ...@@ -75,6 +83,7 @@ class Message:
self.date_valid_to = date_valid_to self.date_valid_to = date_valid_to
self.illustration_file_name = illustration_file_name self.illustration_file_name = illustration_file_name
self.illustration_caption = illustration_caption self.illustration_caption = illustration_caption
self.created_by = created_by
def get_illustration_url(self): def get_illustration_url(self):
return "http://%s/static/images/messages/%s/%s" % (settings.VIPSLOGIC_SERVER_NAME,self.organization_id,self.illustration_file_name) return "http://%s/static/images/messages/%s/%s" % (settings.VIPSLOGIC_SERVER_NAME,self.organization_id,self.illustration_file_name)
...@@ -124,6 +133,12 @@ class Message: ...@@ -124,6 +133,12 @@ class Message:
def get_instance_from_dict(the_dict): def get_instance_from_dict(the_dict):
message_locale = Message.get_message_locale(the_dict["messageLocaleSet"], settings.VIPSLOGIC_LANGUAGE_CODE) message_locale = Message.get_message_locale(the_dict["messageLocaleSet"], settings.VIPSLOGIC_LANGUAGE_CODE)
message_illustration = Message.get_illustration(the_dict["messageIllustrationSet"], settings.VIPSLOGIC_LANGUAGE_CODE) message_illustration = Message.get_illustration(the_dict["messageIllustrationSet"], settings.VIPSLOGIC_LANGUAGE_CODE)
created_by = ""
if message_locale.get("createdBy","") != "":
created_by = "%s %s" %(
message_locale["createdBy"].get("firstName",""),
message_locale["createdBy"].get("lastName","")
)
print the_dict["datePub"] print the_dict["datePub"]
return Message( return Message(
the_dict["messageId"], the_dict["messageId"],
...@@ -134,7 +149,8 @@ class Message: ...@@ -134,7 +149,8 @@ class Message:
datetime.strptime(the_dict["datePub"],settings.VIPSLOGIC_DATE_FORMAT) , datetime.strptime(the_dict["datePub"],settings.VIPSLOGIC_DATE_FORMAT) ,
datetime.strptime(the_dict["dateValidTo"],settings.VIPSLOGIC_DATE_FORMAT), datetime.strptime(the_dict["dateValidTo"],settings.VIPSLOGIC_DATE_FORMAT),
message_illustration.get("file_name", None), message_illustration.get("file_name", None),
message_illustration.get("caption", None) message_illustration.get("caption", None),
created_by
) )
@staticmethod @staticmethod
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<div class="messages_illustration"><img src="{{message.get_illustration_url}}" class="img-responsive"/></div> <div class="messages_illustration"><img src="{{message.get_illustration_url}}" class="img-responsive"/></div>
{% endif %} {% endif %}
<h1>{{ message.heading }}</h1> <h1>{{ message.heading }}</h1>
<p class="byline">{{message.date_pub}}</p> <p class="byline">{{message.date_pub}} / {{message.created_by}}</p>
<p class="lead">{{message.lead_paragraph}}</p> <p class="lead">{{message.lead_paragraph}}</p>
<p>{{message.body|linebreaks}}</p> <p>{{message.body|linebreaks}}</p>
......
{% extends "base.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n staticfiles %}
{% block title%}{% trans "Messages" %}{%endblock%} {% block title%}{% trans "Messages" %}{%endblock%}
{% block content %} {% block content %}
<h1>{% trans "Messages" %}</h1> <h1>{% trans "Messages" %}</h1>
<ul>
<div class="row">
<div class="col-xs-12">
<div class="input-group">
<div class="input-group-addon"><img src="{% static "css/icons/ic_action_search.png" %}" alt="Search icon"/></div>
<input class="form-control" type="text" placeholder="{% trans "Search" %}" oninput="search(this);"/>
</div>
</div>
</div>
<div class="table-responsive"> <div class="table-responsive">
<table id="resultTable" class="table table-striped"> <table id="resultTable" class="table table-striped">
<thead> <thead>
...@@ -15,18 +23,81 @@ ...@@ -15,18 +23,81 @@
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody id="messageListEl">
{% for message in messages reversed %}
<tr>
<td>{{ message.date_pub }}</td>
<td>{{ message.heading}}</td>
<td></td>
<td><a href="{% url 'messages:detail' message.message_id %}">{% trans "Details" %}</a></td>
</tr>
{% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
</ul>
{% endblock %} {% endblock %}
\ No newline at end of file {% block customJS%}
<script type="text/javascript">
var messageList = [
{% for message in messages reversed %}
{
datePub:"{{ message.date_pub }}",
heading:"{{ message.heading}}",
leadParagraph: "{{ message.lead_paragraph}}",
body: "{{ message.body}}",
createdBy:"{{ message.created_by }}",
url:"{% url 'messages:detail' message.message_id %}"
} {% if not forloop.last %},{% endif %}
{% endfor %}
];
var messageListSubset;
/**
* Renders whatever is in messageListSubset
*/
function renderMessageList()
{
var messageListEl = document.getElementById("messageListEl");
var HTML = "";
for(var i in messageListSubset)
{
var listItem = messageListSubset[i];
HTML += [
'<tr>',
'<td>',listItem.datePub,'</td>',
'<td>',listItem.heading,'</td>',
'<td>',listItem.createdBy,'</td>',
'<td><a href="',listItem.url,'">{% trans "Details" %}</a></td>',
'</tr>']
.join("");
}
messageListEl.innerHTML=HTML;
}
function search(searchField)
{
var searchPhrase = searchField.value;
if(searchPhrase.length > 2)
{
messageListSubset = [];
for(var i in messageList)
{
var message = messageList[i];
if(
message.heading.toLowerCase().indexOf(searchPhrase.toLowerCase()) >= 0
|| message.leadParagraph.toLowerCase().indexOf(searchPhrase.toLowerCase()) >= 0
|| message.body.toLowerCase().indexOf(searchPhrase.toLowerCase()) >= 0
)
{
messageListSubset.push(message);
}
}
}
else
{
messageListSubset = messageList;
}
renderMessageList();
}
$(document).ready(function() {
messageListSubset = messageList;
renderMessageList();
});
</script>
{% endblock %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment