From 0c502601ba7d9e9ee0a4d6a543c534edfad9c22e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Thu, 12 Dec 2013 22:27:58 +0100 Subject: [PATCH] integration wip: showing + saving document, debug mode only, editor via symlink --- apps/wiki/templates/wiki/bootstrap.html | 67 +++++++++++++++++++++++++ apps/wiki/views.py | 53 +++++++++++-------- redakcja/context_processors.py | 1 + redakcja/urls.py | 2 + 4 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 apps/wiki/templates/wiki/bootstrap.html diff --git a/apps/wiki/templates/wiki/bootstrap.html b/apps/wiki/templates/wiki/bootstrap.html new file mode 100644 index 00000000..5d59d784 --- /dev/null +++ b/apps/wiki/templates/wiki/bootstrap.html @@ -0,0 +1,67 @@ +{% load staticfiles %} +{% load i18n %} + + + + + + + + + {% if DEBUG %} + + + + + {% else %} + + + {% endif %} + + + +
+ + diff --git a/apps/wiki/views.py b/apps/wiki/views.py index f9594261..2bb168fe 100644 --- a/apps/wiki/views.py +++ b/apps/wiki/views.py @@ -14,6 +14,7 @@ from django.utils.formats import localize from django.utils.translation import ugettext as _ from django.views.decorators.http import require_POST, require_GET from django.shortcuts import get_object_or_404, render +from django.utils import simplejson from catalogue.models import Book, Chunk import nice_diff @@ -32,8 +33,25 @@ logger = logging.getLogger("fnp.wiki") MAX_LAST_DOCS = 10 +def get_history(chunk): + changes = [] + for change in chunk.history(): + changes.append({ + "version": change.revision, + "description": change.description, + "author": change.author_str(), + "date": localize(change.created_at), + "publishable": _("Publishable") + "\n" if change.publishable else "", + "tag": ',\n'.join(unicode(tag) for tag in change.tags.all()), + "published": _("Published") + ": " + \ + localize(change.publish_log.order_by('-book_record__timestamp')[0].book_record.timestamp) \ + if change.publish_log.exists() else "", + }) + return changes + + @never_cache -def editor(request, slug, chunk=None, template_name='wiki/document_details.html'): +def editor(request, slug, chunk=None, template_name='wiki/bootstrap.html'): try: chunk = Chunk.get(slug, chunk) except Chunk.MultipleObjectsReturned: @@ -62,15 +80,21 @@ def editor(request, slug, chunk=None, template_name='wiki/document_details.html' del last_books[oldest_key] request.session['wiki_last_books'] = last_books + save_form = forms.DocumentTextSaveForm(user=request.user, prefix="textsave") return render(request, template_name, { - 'chunk': chunk, + 'serialized_document_data': simplejson.dumps({ + 'document': chunk.materialize(), + 'document_id': chunk.id, + 'title': chunk.book.title, + 'history': get_history(chunk), + 'version': chunk.revision() + }), 'forms': { - "text_save": forms.DocumentTextSaveForm(user=request.user, prefix="textsave"), - "text_revert": forms.DocumentTextRevertForm(prefix="textrevert"), - "pubmark": forms.DocumentPubmarkForm(prefix="pubmark"), + "text_save": save_form, + "text_revert": forms.DocumentTextRevertForm(prefix="textrevert") }, + 'tags': list(save_form.fields['stage_completed'].choices), 'can_pubmark': request.user.has_perm('catalogue.can_pubmark'), - 'REDMINE_URL': settings.REDMINE_URL, }) @@ -141,7 +165,7 @@ def text(request, chunk_id): return JSONResponse({ 'text': doc.materialize() if parent_revision != revision else None, 'meta': {}, - 'revision': revision, + 'version': revision, }) else: return JSONFormInvalid(form) @@ -269,20 +293,7 @@ def history(request, chunk_id): if not doc.book.accessible(request): return HttpResponseForbidden("Not authorized.") - changes = [] - for change in doc.history().reverse(): - changes.append({ - "version": change.revision, - "description": change.description, - "author": change.author_str(), - "date": localize(change.created_at), - "publishable": _("Publishable") + "\n" if change.publishable else "", - "tag": ',\n'.join(unicode(tag) for tag in change.tags.all()), - "published": _("Published") + ": " + \ - localize(change.publish_log.order_by('-book_record__timestamp')[0].book_record.timestamp) \ - if change.publish_log.exists() else "", - }) - return JSONResponse(changes) + return JSONResponse(get_history(doc)) @require_POST diff --git a/redakcja/context_processors.py b/redakcja/context_processors.py index 5e3372ea..2724f832 100644 --- a/redakcja/context_processors.py +++ b/redakcja/context_processors.py @@ -15,5 +15,6 @@ def settings(request): return { 'MEDIA_URL': settings.MEDIA_URL, 'STATIC_URL': settings.STATIC_URL, + 'DEBUG': settings.DEBUG, 'APP_VERSION': VERSION, } diff --git a/redakcja/urls.py b/redakcja/urls.py index b3da1ee6..1163d162 100644 --- a/redakcja/urls.py +++ b/redakcja/urls.py @@ -28,6 +28,8 @@ urlpatterns = patterns('', url(r'^apiclient/', include('apiclient.urls')), url(r'^editor/', include('wiki.urls')), url(r'^cover/', include('cover.urls')), + (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', dict(packages=['apps.wiki'])), + ) if settings.DEBUG: -- 2.20.1