From 8d0c6f2a3327ad31f9ecae7df06cb1da9a64e1cb Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Sat, 23 Jan 2016 00:20:11 +0100 Subject: [PATCH] fold summary and log if form has already been seen (#9175) --- wcs/forms/common.py | 37 ++++++++++++++------- wcs/qommon/static/css/qommon.css | 69 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 92 insertions(+), 14 deletions(-) diff --git a/wcs/forms/common.py b/wcs/forms/common.py index d3d888d..e591779 100644 --- a/wcs/forms/common.py +++ b/wcs/forms/common.py @@ -183,6 +183,15 @@ class FormStatusPage(Directory): return r.getvalue() + def deja_vu(self): + user = get_request().user + if not self.filled.evolution or not user: + return False + for evo in self.filled.evolution: + if evo.who == user.id or (evo.who == '_submitter' and self.filled.is_submitter(user)): + return True + return False + def _q_index(self): mine = self.check_auth() get_logger().info('form %s - id: %s - view' % (self.formdef.name, self.filled.id)) @@ -191,9 +200,10 @@ class FormStatusPage(Directory): r = TemplateIO(html=True) + deja_vu = self.deja_vu() r += self.receipt_message(mine=mine) - r += self.receipt() - r += self.history() + r += self.receipt(deja_vu=deja_vu) + r += self.history(deja_vu=deja_vu) form = None @@ -233,18 +243,18 @@ class FormStatusPage(Directory): r += htmltext('') return r.getvalue() - def history(self): + def history(self, deja_vu=False): if not self.filled.evolution: return if not self.formdef.is_user_allowed_read_status_and_history(get_request().user, self.filled): return r = TemplateIO(html=True) r += htmltext('
') - r += htmltext('

%s

') % _('Log') + r += htmltext('

%%s

' % (deja_vu and ' folded' or '')) % _('Log') r += htmltext('') r += htmltext('
') # .bo-block #evolution-log return r.getvalue() @@ -338,10 +352,7 @@ class FormStatusPage(Directory): raise errors.AccessForbiddenError() return user - def receipt(self, - always_include_user = False, - show_status = True, - form_url = ''): + def receipt(self, always_include_user=False, show_status=True, form_url='', deja_vu=False): user = get_request().user if not always_include_user and get_request().user and \ get_request().user.id == self.filled.user_id: @@ -363,7 +374,8 @@ class FormStatusPage(Directory): r = TemplateIO(html=True) r += htmltext('
') - r += htmltext('

%s

') % _('Summary') + r += htmltext('

%%s

' % + (deja_vu and ' folded' or '')) % _('Summary') r += htmltext('
') if user: @@ -483,12 +495,13 @@ class FormStatusPage(Directory): 'date': self.filled.anonymised.strftime(misc.date_format())} r += htmltext('
') - r += self.receipt(always_include_user = True) + deja_vu = self.deja_vu() + r += self.receipt(always_include_user=True, deja_vu=deja_vu) if self.formdef.workflow: r += htmltext(self.filled.display_workflow_message()) - r += self.history() + r += self.history(deja_vu=deja_vu) if form: r += form.render() diff --git a/wcs/qommon/static/css/qommon.css b/wcs/qommon/static/css/qommon.css index c863bfa..4a58645 100644 --- a/wcs/qommon/static/css/qommon.css +++ b/wcs/qommon/static/css/qommon.css @@ -428,8 +428,8 @@ fieldset.form-plus legend:after { ul#evolutions { list-style: none; - padding: 0; - margin: 0; + padding: 0 0 1em 0; + margin: 0 0 -2em 0; background: linear-gradient(to right, transparent 0%, transparent 30px, #666 30px, white 32px, #666 34px, transparent 24px, transparent 100%) no-repeat; } @@ -492,6 +492,71 @@ ul#evolutions li.msg-out div.msg { background: #ddf; } +ul#evolution-last { + list-style: none; + padding: 0; + margin: 0; +} + +ul#evolution-last li { + margin: 1em 0 2em 0; +} + +ul#evolution-last div.evolution-metadata { + width: auto; + display: inline-block; + background: white; + padding: 1ex; + border: 1px solid #666; + margin-bottom: 0; +} + +ul#evolution-last span.time { + display: inline-block; + padding-left: 1em; +} + +ul#evolution-last span.status { + font-weight: bold; + display: inline-block; +} + +ul#evolution-last span.user { + display: block; + opacity: 0.5; +} + +ul#evolution-last span.user span { + font-size: 80%; +} + +ul#evolution-last li div.msg { + padding: 1ex; + border: 1px solid #000; + margin-top: -1px; + box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.3); + position: relative; + background: white; +} + +ul#evolution-last li div.msg span.time { + position: absolute; + top: 1ex; + right: 1em; + opacity: 0.5; +} + +ul#evolution-last li.msg-in div.msg { + margin-left: 60px; + margin-right: 10%; + background: #dfd; +} + +ul#evolution-last li.msg-out div.msg { + margin-left: 20%; + background: #ddf; +} + div.halfwidth { width: 45%; float: left; -- 2.7.0.rc3