Projet

Général

Profil

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

Thomas Noël, 28 janvier 2016 18:39

Télécharger (6,92 ko)

Voir les différences:

Subject: [PATCH] fold summary and log if form has already been seen (#9175)

 wcs/forms/common.py                 | 40 ++++++++++++++-------
 wcs/qommon/static/css/dc2/admin.css |  7 ++--
 wcs/qommon/static/css/qommon.css    | 69 +++++++++++++++++++++++++++++++++++--
 3 files changed, 99 insertions(+), 17 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
        if len(self.filled.evolution) > 1:
254
            r += htmltext('<h2 class="foldable%s">%%s</h2>' % (deja_vu and ' folded' or '')) % _('Log')
255
        else:
256
            r += htmltext('<h2>%s</h2>') % _('Log')
244 257
        r += htmltext('<ul id="evolutions">')
245 258
        hidden = False
246 259
        previous_status = None
247
        for evo in self.filled.evolution:
260
        for evo_number, evo in enumerate(self.filled.evolution, 1):
248 261
            if evo.status:
249 262
                wf_status = self.filled.get_status(evo.status)
250 263
                if wf_status and not wf_status.is_visible(self.filled, get_request().user):
......
276 289
                    except KeyError:
277 290
                        pass
278 291

  
292
            if evo_number == len(self.filled.evolution):
293
                r += htmltext('</ul><ul id="evolution-last">')
294

  
279 295
            r += htmltext('<li class="%s">' % klass)
280 296
            r += htmltext('<div>')
281 297

  
......
322 338

  
323 339
            r += htmltext('</div>')
324 340
            r += htmltext('</li>')
341

  
325 342
        r += htmltext('</ul>')
326 343
        r += htmltext('</div>') # .bo-block #evolution-log
327 344
        return r.getvalue()
......
338 355
            raise errors.AccessForbiddenError()
339 356
        return user
340 357

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

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

  
369 384
        if user:
......
483 498
                    'date': self.filled.anonymised.strftime(misc.date_format())}
484 499
            r += htmltext('</div>')
485 500

  
486
        r += self.receipt(always_include_user = True)
501
        deja_vu = self.deja_vu()
502
        r += self.receipt(always_include_user=True, deja_vu=deja_vu)
487 503

  
488 504
        if self.formdef.workflow:
489 505
            r += htmltext(self.filled.display_workflow_message())
490 506

  
491
        r += self.history()
507
        r += self.history(deja_vu=deja_vu)
492 508

  
493 509
        if form:
494 510
            r += form.render()
wcs/qommon/static/css/dc2/admin.css
814 814
}
815 815

  
816 816
.foldable:after {
817
	content: "▼";
818
	font-size: 80%;
817
	font-family: FontAwesome;
818
	content: "\f147"; /* minus-square-o */
819 819
	text-align: right;
820 820
	float: right;
821 821
}
822 822

  
823 823
.foldable.folded:after {
824
	content: "▶";
824
	font-family: FontAwesome;
825
	content: "\f196"; /* plus-square-o */
825 826
}
826 827

  
827 828
ul.biglist li p.commands span,
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
-