Projet

Général

Profil

0001-fold-summary-and-log-if-form-has-already-been-seen-9.patch

Thomas Noël, 23 janvier 2016 18:54

Télécharger (6,2 ko)

Voir les différences:

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(-)
wcs/forms/common.py
183 183

  
184 184
        return r.getvalue()
185 185

  
186
    def deja_vu(self):
187
        user = get_request().user
188
        if not self.filled.evolution or not user:
189
            return False
190
        for evo in self.filled.evolution:
191
            if evo.who == user.id or (evo.who == '_submitter' and self.filled.is_submitter(user)):
192
                return True
193
        return False
194

  
186 195
    def _q_index(self):
187 196
        mine = self.check_auth()
188 197
        get_logger().info('form %s - id: %s - view' % (self.formdef.name, self.filled.id))
......
191 200

  
192 201
        r = TemplateIO(html=True)
193 202

  
203
        deja_vu = self.deja_vu()
194 204
        r += self.receipt_message(mine=mine)
195
        r += self.receipt()
196
        r += self.history()
205
        r += self.receipt(deja_vu=deja_vu)
206
        r += self.history(deja_vu=deja_vu)
197 207

  
198 208
        form = None
199 209

  
......
233 243
            r += htmltext('</div>')
234 244
            return r.getvalue()
235 245

  
236
    def history(self):
246
    def history(self, deja_vu=False):
237 247
        if not self.filled.evolution:
238 248
            return
239 249
        if not self.formdef.is_user_allowed_read_status_and_history(get_request().user, self.filled):
240 250
            return
241 251
        r = TemplateIO(html=True)
242 252
        r += htmltext('<div class="bo-block" id="evolution-log">')
243
        r += htmltext('<h2 class="foldable">%s</h2>') % _('Log')
253
        r += htmltext('<h2 class="foldable%s">%%s</h2>' % (deja_vu and ' folded' or '')) % _('Log')
244 254
        r += htmltext('<ul id="evolutions">')
245 255
        hidden = False
246 256
        previous_status = None
247
        for evo in self.filled.evolution:
257
        for evo_number, evo in enumerate(self.filled.evolution, 1):
248 258
            if evo.status:
249 259
                wf_status = self.filled.get_status(evo.status)
250 260
                if wf_status and not wf_status.is_visible(self.filled, get_request().user):
......
276 286
                    except KeyError:
277 287
                        pass
278 288

  
289
            if evo_number == len(self.filled.evolution):
290
                r += htmltext('</ul><ul id="evolution-last">')
291

  
279 292
            r += htmltext('<li class="%s">' % klass)
280 293
            r += htmltext('<div>')
281 294

  
......
322 335

  
323 336
            r += htmltext('</div>')
324 337
            r += htmltext('</li>')
338

  
325 339
        r += htmltext('</ul>')
326 340
        r += htmltext('</div>') # .bo-block #evolution-log
327 341
        return r.getvalue()
......
338 352
            raise errors.AccessForbiddenError()
339 353
        return user
340 354

  
341
    def receipt(self,
342
            always_include_user = False,
343
            show_status = True,
344
            form_url = ''):
355
    def receipt(self, always_include_user=False, show_status=True, form_url='', deja_vu=False):
345 356
        user = get_request().user
346 357
        if not always_include_user and get_request().user and \
347 358
                get_request().user.id == self.filled.user_id:
......
363 374

  
364 375
        r = TemplateIO(html=True)
365 376
        r += htmltext('<div class="bo-block" id="summary">')
366
        r += htmltext('<h2 class="foldable">%s</h2>') % _('Summary')
377
        r += htmltext('<h2 class="foldable%s">%%s</h2>' %
378
                        (deja_vu and ' folded' or '')) % _('Summary')
367 379
        r += htmltext('<div class="dataview">')
368 380

  
369 381
        if user:
......
483 495
                    'date': self.filled.anonymised.strftime(misc.date_format())}
484 496
            r += htmltext('</div>')
485 497

  
486
        r += self.receipt(always_include_user = True)
498
        deja_vu = self.deja_vu()
499
        r += self.receipt(always_include_user=True, deja_vu=deja_vu)
487 500

  
488 501
        if self.formdef.workflow:
489 502
            r += htmltext(self.filled.display_workflow_message())
490 503

  
491
        r += self.history()
504
        r += self.history(deja_vu=deja_vu)
492 505

  
493 506
        if form:
494 507
            r += form.render()
wcs/qommon/static/css/qommon.css
428 428

  
429 429
ul#evolutions {
430 430
	list-style: none;
431
	padding: 0;
432
	margin: 0;
431
	padding: 0 0 1em 0;
432
	margin: 0 0 -2em 0;
433 433
	background: linear-gradient(to right, transparent 0%, transparent 30px, #666 30px, white 32px, #666 34px, transparent 24px, transparent 100%) no-repeat;
434 434
}
435 435

  
......
492 492
	background: #ddf;
493 493
}
494 494

  
495
ul#evolution-last {
496
	list-style: none;
497
	padding: 0;
498
	margin: 0;
499
}
500

  
501
ul#evolution-last li {
502
	margin: 1em 0 2em 0;
503
}
504

  
505
ul#evolution-last div.evolution-metadata {
506
	width: auto;
507
	display: inline-block;
508
	background: white;
509
	padding: 1ex;
510
	border: 1px solid #666;
511
	margin-bottom: 0;
512
}
513

  
514
ul#evolution-last span.time {
515
	display: inline-block;
516
	padding-left: 1em;
517
}
518

  
519
ul#evolution-last span.status {
520
	font-weight: bold;
521
	display: inline-block;
522
}
523

  
524
ul#evolution-last span.user {
525
	display: block;
526
	opacity: 0.5;
527
}
528

  
529
ul#evolution-last span.user span {
530
	font-size: 80%;
531
}
532

  
533
ul#evolution-last li div.msg {
534
	padding: 1ex;
535
	border: 1px solid #000;
536
	margin-top: -1px;
537
        box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.3);
538
	position: relative;
539
	background: white;
540
}
541

  
542
ul#evolution-last li div.msg span.time {
543
	position: absolute;
544
	top: 1ex;
545
	right: 1em;
546
	opacity: 0.5;
547
}
548

  
549
ul#evolution-last li.msg-in div.msg {
550
	margin-left: 60px;
551
	margin-right: 10%;
552
	background: #dfd;
553
}
554

  
555
ul#evolution-last li.msg-out div.msg {
556
	margin-left: 20%;
557
	background: #ddf;
558
}
559

  
495 560
div.halfwidth {
496 561
	width: 45%;
497 562
	float: left;
498
-