Browse Source

Skoro hotova nova verze korekturovatka.

Dodelany nektere vychytavky z nove verze oprafu.
Nefunguje editace komentaru.
Zamky a podobna havet neimplementovany.
remotes/origin/opraf
parent
commit
2a163fe6a4
  1. 39
      korektury/migrations/0002_auto_20151202_2351.py
  2. 6
      korektury/models.py
  3. BIN
      korektury/static/korektury/imgs/comment.png
  4. BIN
      korektury/static/korektury/imgs/delete-gr.png
  5. BIN
      korektury/static/korektury/imgs/edit-gr.png
  6. 27
      korektury/static/korektury/opraf.css
  7. 35
      korektury/static/korektury/opraf.js
  8. 76
      korektury/templates/korektury/opraf.html
  9. 20
      korektury/views.py

39
korektury/migrations/0002_auto_20151202_2351.py

@ -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',
),
]

6
korektury/models.py

@ -98,9 +98,9 @@ class Oprava(models.Model):
@reversion.register(ignore_duplicate_revision=True) @reversion.register(ignore_duplicate_revision=True)
@python_2_unicode_compatible @python_2_unicode_compatible
class OpravaKomentar(models.Model): class Komentar(models.Model):
class Meta: class Meta:
db_table = 'opravy_komentare' db_table = 'komentare'
verbose_name = u'Komentář k opravě' verbose_name = u'Komentář k opravě'
verbose_name_plural = u'Komentáře k opravě' verbose_name_plural = u'Komentáře k opravě'
ordering = ['cas'] ordering = ['cas']
@ -108,7 +108,7 @@ class OpravaKomentar(models.Model):
#Interní ID #Interní ID
id = models.AutoField(primary_key = True) 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) oprava = models.ForeignKey(Oprava)
# TODO: Změnit na cizí klíč do orgů # TODO: Změnit na cizí klíč do orgů

BIN
korektury/static/korektury/imgs/comment.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

BIN
korektury/static/korektury/imgs/delete-gr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

BIN
korektury/static/korektury/imgs/edit-gr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 973 B

27
korektury/static/korektury/opraf.css

@ -1,3 +1,10 @@
body{background: #f3f3f3; color: black;}
body.locked {
background: rgb(144, 189, 255);
}
img{background:white;}
.pointer-hi, .pointer-hi,
.pointer, .pointer,
.pointer-done, .pointer-done,
@ -82,11 +89,6 @@ form {
background-color: yellow; background-color: yellow;
} }
body {
background-color: #b0b0ff;
}
.box button, .box button,
.box img, .box img,
@ -103,3 +105,18 @@ body {
.box-done button:hover { .box-done button:hover {
border: 1px solid black; border: 1px solid black;
} }
.comment hr {
height: 0px;
}
.corr-header {
overflow: auto;
}
.author {
font-weight: bold;
float: left;
margin-top: 3px;
}

35
korektury/static/korektury/opraf.js

@ -113,22 +113,45 @@ function img_click(element, ev) {
return show_form(img_id, dx, dy, '', '', '', ''); return show_form(img_id, dx, dy, '', '', '', '');
} }
// show comment form, when 'edit' button pressed // show comment form, when 'edit' or 'comment' button pressed
function box_edit(button) function box_edit(button, action)
{ {
var divbox = button.parentNode.parentNode.parentNode; var divbox = button.parentNode.parentNode.parentNode.parentNode;
var id = divbox.id; var id = divbox.id;
//alert("id: " + id); //alert("id: " + id);
var divpointer = document.getElementById(divbox.id + '-pointer'); 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 dx = parseInt(divpointer.style.left);
var dy = parseInt(divpointer.style.top); var dy = parseInt(divpointer.style.top);
//alert('not yet 2:' + text + text_el); // + divpointer.style.top "x" + divpo ); //alert('not yet 2:' + text + text_el); // + divpointer.style.top "x" + divpo );
id = id.substring(2); 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 //fill up comment form and show him

76
korektury/templates/korektury/opraf.html

@ -61,30 +61,84 @@
onmouseover='box_onmouseover(this,{% if o.status = 'opraveno' %}1{% else %}0{% endif %})' onmouseover='box_onmouseover(this,{% if o.status = 'opraveno' %}1{% else %}0{% endif %})'
onmouseout='box_onmouseout(this,{% if o.status = 'opraveno' %}1{% else %}0{% endif %})' > onmouseout='box_onmouseout(this,{% if o.status = 'opraveno' %}1{% else %}0{% endif %})' >
<div class='corr-header'>
<b>{{o.autor}}</b> <div class='author'>{{o.autor}}</div>
<div class='float-right'> <div class='float-right'>
<form action='' onsubmit='save_scroll(this)' method='POST'> <form action='' onsubmit='save_scroll(this)' method='POST'>
{% csrf_token %} {% csrf_token %}
<input type='hidden' name='pdf' value='22_3_verze5.pdf'> <input type='hidden' name='pdf' value='22_3_verze5.pdf'>
<input type='hidden' name='id' value='{{o.id}}'> <input type='hidden' name='id' value='{{o.id}}'>
<input type='hidden' name='scroll'> <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.komentare %}
<button name='action' value='del' type='button'
title="Korekturu nelze smazat &ndash; už ji někdo okomentoval">
<img src="/static/korektury/imgs/delete-gr.png"/>
</button>
{% else %}
<button type='submit' name='action' value='del' title='Smaž opravu'>
<img src="/static/korektury/imgs/delete.png"/>
</button>
{% endif %}
{% if o.status = 'opraveno' %} {% if o.status = 'opraveno' %}
<button type='submit' name='action' value='undone' title='Oznaè jako neopravené'><img src="/static/korektury/imgs/undo.png"/></button> <button type='submit' name='action' value='undone' title='Označ jako neopravené'>
<img src="/static/korektury/imgs/undo.png"/>
</button>
{% else %} {% 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='done' title='Označ jako opravené'>
<img src="/static/korektury/imgs/check.png"/>
</button>
{% endif %} {% endif %}
{% if o.komentare %}
<button type='button' onclick='box_edit(this);' title='Oprav opravu'><img src="/static/korektury/imgs/edit.png"/></button> <button type='button' title="Korekturu nelze upravit &ndash; už ji někdo okomentoval">
<a href='#op{{o.id}}'><button type='button' title='Link na opravu'><img src="/static/korektury/imgs/link.png"/></button></a> <img src="/static/korektury/imgs/edit-gr.png"/>
<a href='#op579'><img title='Dal¹í oprava' src="/static/korektury/imgs/next.png"/></button></a> </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> </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 %} {% endfor %}

20
korektury/views.py

@ -9,7 +9,7 @@ from django.utils.translation import ugettext as _
from django.http import Http404 from django.http import Http404
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from .models import Oprava from .models import Oprava,Komentar
from .forms import OpravaForm from .forms import OpravaForm
from datetime import timedelta, date, datetime from datetime import timedelta, date, datetime
@ -65,7 +65,20 @@ class KorekturyView(generic.TemplateView):
op = Oprava.objects.filter(id=id).first() op = Oprava.objects.filter(id=id).first()
op.status = op.STATUS_OPRAVENO op.status = op.STATUS_OPRAVENO
op.save() 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'%( return HttpResponse(u'Oprav: %d, akce: %s'%(
len(Oprava.objects.all()),action)) len(Oprava.objects.all()),action))
@ -78,7 +91,10 @@ class KorekturyView(generic.TemplateView):
context['img_name'] = "22_3_verze5" context['img_name'] = "22_3_verze5"
context['img_indexes'] = range(27) context['img_indexes'] = range(27)
context['form_oprava'] = OpravaForm() 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 return context
def form_valid(self,form): def form_valid(self,form):
return super(KorekturyView,self).form_valid(form) return super(KorekturyView,self).form_valid(form)

Loading…
Cancel
Save