summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-11-08 20:33:26 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-11-08 20:34:08 +0100
commitf7f7543d603595fcfb9846f8d9eefc774bf0ecc8 (patch)
treedaa9339b15c8037f87c3601894476d5fe2f51a4e
parent67d5f18e392e6454dfdbddbb6c151b570c7de784 (diff)
downloadIshtar-f7f7543d603595fcfb9846f8d9eefc774bf0ecc8.tar.bz2
Ishtar-f7f7543d603595fcfb9846f8d9eefc774bf0ecc8.zip
Allow deactivation of "auto-pin" and of "pin menu" in the profile (refs #4307)
-rw-r--r--ishtar_common/context_processors.py8
-rw-r--r--ishtar_common/migrations/0075_auto_20181108_1908.py25
-rw-r--r--ishtar_common/models.py3
-rw-r--r--ishtar_common/static/js/ishtar.js32
-rw-r--r--ishtar_common/templates/base.html8
-rw-r--r--ishtar_common/wizards.py18
-rw-r--r--scss/custom.scss4
7 files changed, 74 insertions, 24 deletions
diff --git a/ishtar_common/context_processors.py b/ishtar_common/context_processors.py
index 8c965f99f..0dc907ffd 100644
--- a/ishtar_common/context_processors.py
+++ b/ishtar_common/context_processors.py
@@ -61,10 +61,12 @@ def get_base_context(request):
session=request.session)
menu.init()
- if hasattr(request.user, 'ishtaruser') and request.user.ishtaruser and \
- request.user.ishtaruser.has_right('administrator',
+ if hasattr(request.user, 'ishtaruser') and request.user.ishtaruser:
+ if request.user.ishtaruser.has_right('administrator',
session=request.session):
- dct['ADMIN'] = True
+ dct['ADMIN'] = True
+ if request.user.ishtaruser.current_profile.display_pin_menu:
+ dct['DISPLAY_PIN_MENU'] = True
if menu.selected_idx is not None:
dct['current_theme'] = "theme-%d" % (menu.selected_idx + 1)
dct['MENU'] = menu
diff --git a/ishtar_common/migrations/0075_auto_20181108_1908.py b/ishtar_common/migrations/0075_auto_20181108_1908.py
new file mode 100644
index 000000000..813b93117
--- /dev/null
+++ b/ishtar_common/migrations/0075_auto_20181108_1908.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-11-08 19:08
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0074_auto_20181017_1854'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='userprofile',
+ name='auto_pin',
+ field=models.BooleanField(default=False, verbose_name='Automatically pin'),
+ ),
+ migrations.AddField(
+ model_name='userprofile',
+ name='display_pin_menu',
+ field=models.BooleanField(default=False, verbose_name='Display pin menu'),
+ ),
+ ]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 82c754fa0..648280ad2 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -3197,6 +3197,9 @@ class UserProfile(models.Model):
current = models.BooleanField(_(u"Current profile"), default=False)
show_field_number = models.BooleanField(
_(u"Show field number"), default=False)
+ auto_pin = models.BooleanField(_(u"Automatically pin"), default=False)
+ display_pin_menu = models.BooleanField(_(u"Display pin menu"),
+ default=False)
person = models.ForeignKey(
Person, verbose_name=_(u"Person"), related_name='profiles')
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index 9846b4f1a..b9e9d6844 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -41,6 +41,7 @@ function get_previous_table_id(){}
var datatable_submit_search = function() {};
var shortcut_url = '';
+var show_shortcut_menu = false;
var alert_url = '';
var debug = false;
var datatables_i18n;
@@ -277,22 +278,25 @@ function load_opened_shortcut_menu(){
}
function load_shortcut_menu(opened){
- if (!shortcut_url) return;
$('.modal-progress').modal('show');
- $.ajax({
- url: shortcut_url,
- cache: false,
- success:function(html){
- init_shortcut_menu(html);
- load_alerts();
- if(opened){
- $("#dropdown-toggle-shortcut-menu").click();
+ if (show_shortcut_menu && shortcut_url){
+ $.ajax({
+ url: shortcut_url,
+ cache: false,
+ success:function(html){
+ init_shortcut_menu(html);
+ load_alerts();
+ if(opened){
+ $("#dropdown-toggle-shortcut-menu").click();
+ }
+ },
+ error:function(XMLHttpRequest, textStatus, errorThrows){
+ close_wait();
}
- },
- error:function(XMLHttpRequest, textStatus, errorThrows){
- close_wait();
- }
- });
+ });
+ } else {
+ load_alerts();
+ }
}
var load_alerts = function(){
diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html
index ef3060a5f..a4d09c878 100644
--- a/ishtar_common/templates/base.html
+++ b/ishtar_common/templates/base.html
@@ -31,6 +31,7 @@
{{EXTRA_JS|safe}}
<script type='text/javascript'>
var shortcut_url = '{% url "shortcut-menu" %}';
+ {% if DISPLAY_PIN_MENU %}var show_shortcut_menu = true;{% endif %}
var alert_url = '{% url "alert-list" %}';
var get_file_url = '{% url "get-file-shortcut" %}';
var get_operation_url = '{% url "get-operation-shortcut" %}';
@@ -68,7 +69,12 @@
</head>
<body data-spy="scroll" data-target="#window-fixed-menu"{% if current_theme%} id='{{current_theme}}'{%endif%}>
{% include "navbar.html" %}
- <div id="context-menu" class="navbar navbar-expand-lg"></div>
+ <div id="context-menu" class="navbar navbar-expand-lg">
+ <div class="navbar-collapse collapse justify-content-between">
+ <span id="alert-list">
+ </span>
+ </div>
+ </div>
{% if reminders %}
<div id="reminder"><h5>{% trans "Current items" %}</h5>
{% for lbl, value in reminders %}
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 499f008b4..d0a7df84b 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -906,10 +906,13 @@ class Wizard(IshtarWizard):
# post save/m2m specific fix
obj.fix()
- # make the new object a default
- if self.current_obj_slug:
- self.request.session[self.current_obj_slug] = unicode(obj.pk)
- self.request.session[self.get_object_name(obj)] = unicode(obj.pk)
+ ishtaruser = self.request.user.ishtaruser \
+ if hasattr(self.request.user, 'ishtaruser') else None
+ if ishtaruser and ishtaruser.current_profile.auto_pin:
+ # make the new object a default
+ if self.current_obj_slug:
+ self.request.session[self.current_obj_slug] = unicode(obj.pk)
+ self.request.session[self.get_object_name(obj)] = unicode(obj.pk)
dct = {'item': obj}
self.current_object = obj
# force evaluation of lazy urls
@@ -1384,8 +1387,11 @@ class Wizard(IshtarWizard):
current_step = step or self.steps.current
c_form = self.form_list[current_step]
- # make the current object the default item for the session
- self.request.session[self.get_object_name(obj)] = unicode(obj.pk)
+ ishtaruser = self.request.user.ishtaruser \
+ if hasattr(self.request.user, 'ishtaruser') else None
+ if ishtaruser and ishtaruser.current_profile.auto_pin:
+ # make the current object the default item for the session
+ self.request.session[self.get_object_name(obj)] = unicode(obj.pk)
initial = MultiValueDict()
# posted data or already in session
diff --git a/scss/custom.scss b/scss/custom.scss
index 77f17c6e0..788220466 100644
--- a/scss/custom.scss
+++ b/scss/custom.scss
@@ -387,6 +387,10 @@ div#validation-bar{
padding: 0.6em 1em 0.1em 1em;
}
+#alert-list {
+ padding: 0.6em 0;
+}
+
#alert-list a{
font-size: 1.1rem;
}