Skoro hotova nova verze korekturovatka.
Dodelany nektere vychytavky z nove verze oprafu. Nefunguje editace komentaru. Zamky a podobna havet neimplementovany.
This commit is contained in:
parent
09b2090371
commit
2a163fe6a4
9 changed files with 177 additions and 28 deletions
39
korektury/migrations/0002_auto_20151202_2351.py
Normal file
39
korektury/migrations/0002_auto_20151202_2351.py
Normal file
|
@ -0,0 +1,39 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('korektury', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Komentar',
|
||||
fields=[
|
||||
('id', models.AutoField(serialize=False, primary_key=True)),
|
||||
('cas', models.DateTimeField(default=django.utils.timezone.now, help_text=b'\xc4\x8cas zad\xc3\xa1n\xc3\xad koment\xc3\xa1\xc5\x99e', verbose_name='\u010das koment\xe1\u0159e')),
|
||||
('autor', models.TextField(help_text=b'Autor koment\xc3\xa1\xc5\x99e', verbose_name='autor koment\xe1\u0159e', blank=True)),
|
||||
('text', models.TextField(help_text=b'Text koment\xc3\xa1\xc5\x99e', verbose_name='text koment\xe1\u0159e', blank=True)),
|
||||
('oprava', models.ForeignKey(to='korektury.Oprava')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['cas'],
|
||||
'db_table': 'komentare',
|
||||
'verbose_name': 'Koment\xe1\u0159 k oprav\u011b',
|
||||
'verbose_name_plural': 'Koment\xe1\u0159e k oprav\u011b',
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='opravakomentar',
|
||||
name='oprava',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='OpravaKomentar',
|
||||
),
|
||||
]
|
|
@ -98,9 +98,9 @@ class Oprava(models.Model):
|
|||
|
||||
@reversion.register(ignore_duplicate_revision=True)
|
||||
@python_2_unicode_compatible
|
||||
class OpravaKomentar(models.Model):
|
||||
class Komentar(models.Model):
|
||||
class Meta:
|
||||
db_table = 'opravy_komentare'
|
||||
db_table = 'komentare'
|
||||
verbose_name = u'Komentář k opravě'
|
||||
verbose_name_plural = u'Komentáře k opravě'
|
||||
ordering = ['cas']
|
||||
|
@ -108,7 +108,7 @@ class OpravaKomentar(models.Model):
|
|||
#Interní ID
|
||||
id = models.AutoField(primary_key = True)
|
||||
|
||||
cas = models.DateTimeField(u'čas komentáře',help_text = 'Čas zadání komentáře')
|
||||
cas = models.DateTimeField(u'čas komentáře',default=timezone.now,help_text = 'Čas zadání komentáře')
|
||||
|
||||
oprava = models.ForeignKey(Oprava)
|
||||
# TODO: Změnit na cizí klíč do orgů
|
||||
|
|
BIN
korektury/static/korektury/imgs/comment.png
Normal file
BIN
korektury/static/korektury/imgs/comment.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 726 B |
BIN
korektury/static/korektury/imgs/delete-gr.png
Normal file
BIN
korektury/static/korektury/imgs/delete-gr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 593 B |
BIN
korektury/static/korektury/imgs/edit-gr.png
Normal file
BIN
korektury/static/korektury/imgs/edit-gr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 973 B |
|
@ -1,3 +1,10 @@
|
|||
body{background: #f3f3f3; color: black;}
|
||||
body.locked {
|
||||
background: rgb(144, 189, 255);
|
||||
}
|
||||
|
||||
img{background:white;}
|
||||
|
||||
.pointer-hi,
|
||||
.pointer,
|
||||
.pointer-done,
|
||||
|
@ -82,11 +89,6 @@ form {
|
|||
background-color: yellow;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #b0b0ff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.box button,
|
||||
.box img,
|
||||
|
@ -103,3 +105,18 @@ body {
|
|||
.box-done button:hover {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
.comment hr {
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
.corr-header {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.author {
|
||||
font-weight: bold;
|
||||
float: left;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
|
|
|
@ -113,24 +113,47 @@ function img_click(element, ev) {
|
|||
return show_form(img_id, dx, dy, '', '', '', '');
|
||||
}
|
||||
|
||||
// show comment form, when 'edit' button pressed
|
||||
function box_edit(button)
|
||||
// show comment form, when 'edit' or 'comment' button pressed
|
||||
function box_edit(button, action)
|
||||
{
|
||||
var divbox = button.parentNode.parentNode.parentNode;
|
||||
var divbox = button.parentNode.parentNode.parentNode.parentNode;
|
||||
var id = divbox.id;
|
||||
//alert("id: " + id);
|
||||
var divpointer = document.getElementById(divbox.id + '-pointer');
|
||||
var text_el = document.getElementById(divbox.id + '-text');
|
||||
var text = text_el.innerHTML.unescapeHTML();
|
||||
|
||||
var text;
|
||||
if (action == 'update') {
|
||||
var text_el = document.getElementById(divbox.id + '-text');
|
||||
text = text_el.innerHTML.unescapeHTML();
|
||||
} else {
|
||||
text = '';
|
||||
}
|
||||
|
||||
var dx = parseInt(divpointer.style.left);
|
||||
var dy = parseInt(divpointer.style.top);
|
||||
//alert('not yet 2:' + text + text_el); // + divpointer.style.top "x" + divpo );
|
||||
id = id.substring(2);
|
||||
return show_form(divbox.img_id, dx, dy, id, text, 'update');
|
||||
return show_form(divbox.img_id, dx, dy, id, text, action);
|
||||
|
||||
}
|
||||
|
||||
// show comment form when 'update-comment' button pressed
|
||||
function update_comment(button)
|
||||
{
|
||||
var divbox = button.parentNode.parentNode.parentNode;
|
||||
var id = divbox.id;
|
||||
var divpointer = document.getElementById(divbox.id + '-pointer');
|
||||
var dx = parseInt(divpointer.style.left);
|
||||
var dy = parseInt(divpointer.style.top);
|
||||
|
||||
var commentdiv = button.parentNode.parentNode;
|
||||
var id = commentdiv.id.substring(1);
|
||||
|
||||
var text = document.getElementById('kt' + id).innerHTML.unescapeHTML();
|
||||
|
||||
return show_form(divbox.img_id, dx, dy, id, text, 'update-comment');
|
||||
}
|
||||
|
||||
//fill up comment form and show him
|
||||
function show_form(img_id, dx, dy, id, text, action) {
|
||||
var form = document.getElementById('commform');
|
||||
|
|
|
@ -61,30 +61,84 @@
|
|||
onmouseover='box_onmouseover(this,{% if o.status = 'opraveno' %}1{% else %}0{% endif %})'
|
||||
onmouseout='box_onmouseout(this,{% if o.status = 'opraveno' %}1{% else %}0{% endif %})' >
|
||||
|
||||
|
||||
<b>{{o.autor}}</b>
|
||||
<div class='corr-header'>
|
||||
<div class='author'>{{o.autor}}</div>
|
||||
<div class='float-right'>
|
||||
<form action='' onsubmit='save_scroll(this)' method='POST'>
|
||||
{% csrf_token %}
|
||||
<input type='hidden' name='pdf' value='22_3_verze5.pdf'>
|
||||
<input type='hidden' name='id' value='{{o.id}}'>
|
||||
<input type='hidden' name='scroll'>
|
||||
<button type='submit' name='action' value='del' title='Sma¾ opravu'><img src="/static/korektury/imgs/delete.png"/></button>
|
||||
{% if o.status = 'opraveno' %}
|
||||
<button type='submit' name='action' value='undone' title='Oznaè jako neopravené'><img src="/static/korektury/imgs/undo.png"/></button>
|
||||
{% if o.komentare %}
|
||||
<button name='action' value='del' type='button'
|
||||
title="Korekturu nelze smazat – už ji někdo okomentoval">
|
||||
<img src="/static/korektury/imgs/delete-gr.png"/>
|
||||
</button>
|
||||
{% else %}
|
||||
<button type='submit' name='action' value='done' title='Oznaè jako opravené'><img src="/static/korektury/imgs/check.png"/></button>
|
||||
<button type='submit' name='action' value='del' title='Smaž opravu'>
|
||||
<img src="/static/korektury/imgs/delete.png"/>
|
||||
</button>
|
||||
{% endif %}
|
||||
|
||||
{% if o.status = 'opraveno' %}
|
||||
<button type='submit' name='action' value='undone' title='Označ jako neopravené'>
|
||||
<img src="/static/korektury/imgs/undo.png"/>
|
||||
</button>
|
||||
{% else %}
|
||||
<button type='submit' name='action' value='done' title='Označ jako opravené'>
|
||||
<img src="/static/korektury/imgs/check.png"/>
|
||||
</button>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<button type='button' onclick='box_edit(this);' title='Oprav opravu'><img src="/static/korektury/imgs/edit.png"/></button>
|
||||
<a href='#op{{o.id}}'><button type='button' title='Link na opravu'><img src="/static/korektury/imgs/link.png"/></button></a>
|
||||
<a href='#op579'><img title='Dal¹í oprava' src="/static/korektury/imgs/next.png"/></button></a>
|
||||
{% if o.komentare %}
|
||||
<button type='button' title="Korekturu nelze upravit – už ji někdo okomentoval">
|
||||
<img src="/static/korektury/imgs/edit-gr.png"/>
|
||||
</button>
|
||||
{% else %}
|
||||
<button type='button' onclick='box_edit(this);' title='Oprav opravu'>
|
||||
<img src="/static/korektury/imgs/edit.png"/>
|
||||
</button>
|
||||
{% endif %}
|
||||
<button type='button' onclick='box_edit(this, "comment");' title='Komentovat'>
|
||||
<img src="/static/korektury/imgs/comment.png"/>
|
||||
</button>
|
||||
|
||||
<a href='#op{{o.id}}'><button type='button' title='Link na opravu'>
|
||||
<img src="/static/korektury/imgs/link.png"/>
|
||||
</button></a>
|
||||
<button><a href='#op579'>
|
||||
<img title='Dal¹í oprava' src="/static/korektury/imgs/next.png"/>
|
||||
</a></button>
|
||||
|
||||
</form>
|
||||
</div> <div id='op{{o.id}}-text'>{{o.text}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id='op{{o.id}}-text'>{{o.text}}</div>
|
||||
{% for k in o.komentare %}
|
||||
<hr>
|
||||
<div class='comment' id='k{{k.id}}'>
|
||||
<div class='corr-header'>
|
||||
<div class='author'>{{k.autor}}</div>
|
||||
<div class="float-right">
|
||||
<form action='' onsubmit='save_scroll(this)' method='POST'>
|
||||
{% csrf_token %}
|
||||
<input type='hidden' name='pdf' value='22_3_verze1.pdf'>
|
||||
<input type='hidden' name='id' value='{{k.id}}'>
|
||||
<input type='hidden' name='scroll'>
|
||||
<button type='submit' name='action' value='del-comment' title='Smaž komentář'
|
||||
onclick='return confirm("Opravdu smazat komentář?")'>
|
||||
<img src="/static/korektury/imgs/delete.png"/>
|
||||
</button>
|
||||
</form>
|
||||
<button type='button' onclick='update_comment(this);' title='Uprav komentář'>
|
||||
<img src="/static/korektury/imgs/edit.png"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id='kt{{k.id}}'>{{k.text}}</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div> <div onclick='img_click(this,event)' id='op579-pointer' class='pointer'></div>
|
||||
</div>
|
||||
|
||||
|
||||
{% endfor %}
|
||||
|
|
|
@ -9,7 +9,7 @@ from django.utils.translation import ugettext as _
|
|||
from django.http import Http404
|
||||
from django.http import HttpResponseRedirect
|
||||
|
||||
from .models import Oprava
|
||||
from .models import Oprava,Komentar
|
||||
from .forms import OpravaForm
|
||||
|
||||
from datetime import timedelta, date, datetime
|
||||
|
@ -65,7 +65,20 @@ class KorekturyView(generic.TemplateView):
|
|||
op = Oprava.objects.filter(id=id).first()
|
||||
op.status = op.STATUS_OPRAVENO
|
||||
op.save()
|
||||
elif (action == u'comment'):
|
||||
id = int(q.get('id'))
|
||||
op = Oprava.objects.filter(id=id).first()
|
||||
autor = q.get('au')
|
||||
text = q.get('txt')
|
||||
kom = Komentar(oprava=op,autor=autor,text=text)
|
||||
kom.save()
|
||||
elif (action == u'del-comment'):
|
||||
id = int(q.get('id'))
|
||||
kom = Komentar.objects.filter(id=id).first()
|
||||
kom.delete()
|
||||
|
||||
|
||||
# return HttpResponse(u'Keys: %s '%(q.iteitems()))
|
||||
return HttpResponse(u'Oprav: %d, akce: %s'%(
|
||||
len(Oprava.objects.all()),action))
|
||||
|
||||
|
@ -78,7 +91,10 @@ class KorekturyView(generic.TemplateView):
|
|||
context['img_name'] = "22_3_verze5"
|
||||
context['img_indexes'] = range(27)
|
||||
context['form_oprava'] = OpravaForm()
|
||||
context['opravy'] = Oprava.objects.all()
|
||||
opravy = Oprava.objects.all()
|
||||
for o in opravy:
|
||||
o.komentare = o.komentar_set.all()
|
||||
context['opravy'] = opravy
|
||||
return context
|
||||
def form_valid(self,form):
|
||||
return super(KorekturyView,self).form_valid(form)
|
||||
|
|
Loading…
Reference in a new issue