From 7c5a2dbb786ba4e2a072c2baaa994441cd82f207 Mon Sep 17 00:00:00 2001 From: Ilshad Khabibullin Date: Thu, 6 May 2010 20:33:43 +0600 Subject: [PATCH] fixed sorting answers, added delete answer --- src/bbru/answers/browser/answer/actions.zcml | 6 ++-- .../answers/browser/answer/configure.zcml | 8 +++++ src/bbru/answers/browser/answer/delete.py | 19 ++++++++++++ src/bbru/answers/browser/answer/listing.py | 16 +++++----- .../answers/browser/javascript/answers.js | 30 +++++++++++++++++++ src/bbru/answers/configure.zcml | 6 +--- src/bbru/answers/security.zcml | 4 +++ 7 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 src/bbru/answers/browser/answer/delete.py diff --git a/src/bbru/answers/browser/answer/actions.zcml b/src/bbru/answers/browser/answer/actions.zcml index 10df763..8ce5dec 100644 --- a/src/bbru/answers/browser/answer/actions.zcml +++ b/src/bbru/answers/browser/answer/actions.zcml @@ -18,7 +18,7 @@ @@ -32,10 +32,10 @@ /> diff --git a/src/bbru/answers/browser/answer/configure.zcml b/src/bbru/answers/browser/answer/configure.zcml index 33735f4..04b88ee 100644 --- a/src/bbru/answers/browser/answer/configure.zcml +++ b/src/bbru/answers/browser/answer/configure.zcml @@ -44,6 +44,14 @@ template="edit.pt" /> + + + diff --git a/src/bbru/answers/browser/answer/delete.py b/src/bbru/answers/browser/answer/delete.py new file mode 100644 index 0000000..ebdacc3 --- /dev/null +++ b/src/bbru/answers/browser/answer/delete.py @@ -0,0 +1,19 @@ +# coding: utf-8 +# This code was developed for http://bluebream.ru by its community and +# placed under Public Domain. + +""" Удалить ответ. +""" + +from z3c.form import form, button + +class Ajax(form.Form): + + @button.buttonAndHandler(u"Удалить", name="delete") + def handleDelete(self, action): + name = self.context.__name__ + parent = self.context.__parent__ + del parent[name] + + @button.buttonAndHandler(u"Отмена", name="cancel") + def handleCancel(*args): pass diff --git a/src/bbru/answers/browser/answer/listing.py b/src/bbru/answers/browser/answer/listing.py index 5bab77e..e218e6f 100644 --- a/src/bbru/answers/browser/answer/listing.py +++ b/src/bbru/answers/browser/answer/listing.py @@ -7,14 +7,16 @@ """ from zope.interface import Interface -from zope.component import getUtility, getMultiAdapter +from zope.component import getMultiAdapter +from zope.dublincore.interfaces import IZopeDublinCore class Ajax: def __call__(self): - answers = [] - for name, ob in self.context.items(): - view = getMultiAdapter((ob, self.request), Interface, "display") - answers.append(view) - answers.sort(key=lambda x:int(x.context.__name__)) - return u''.join(x() for x in answers) + answers = [x for x in self.context.values()] + answers.sort(key=lambda x:IZopeDublinCore(x).created) + + views = [getMultiAdapter((x, self.request), Interface, "display") + for x in answers] + + return u''.join(x() for x in views) diff --git a/src/bbru/answers/browser/javascript/answers.js b/src/bbru/answers/browser/javascript/answers.js index edea622..69bd05f 100644 --- a/src/bbru/answers/browser/javascript/answers.js +++ b/src/bbru/answers/browser/javascript/answers.js @@ -119,6 +119,31 @@ function load_edit_answer_form(anchor, params) { } +function load_delete_answer_form(anchor) { + var place = $(anchor).parents('.answer-wrapper'); + var context_url = $('div.context_url', place).text(); + var question_url = $('.question .metadata .context_url').text(); + + $.post(context_url + "/@@delete", {}, function(data) { + + var container = $('
'); + container.append(data); + place.after(container); + + $('#form-buttons-delete', container).click(function() { + $.post(context_url + "/@@delete", get_form_params(this), function () { + load_answers_listing(question_url); + }); + return false; + }); + + $('#form-buttons-cancel', container).click(function() { + container.remove(); + return false; + }); + }); +} + function question_init (context_url) { load_answers_listing(context_url); @@ -143,4 +168,9 @@ function answer_init () { load_edit_answer_form(this, {}); return false; }); + + $('.delete-answer').click(function() { + load_delete_answer_form(this); + return false; + }); } diff --git a/src/bbru/answers/configure.zcml b/src/bbru/answers/configure.zcml index 818e1f8..70a6f86 100644 --- a/src/bbru/answers/configure.zcml +++ b/src/bbru/answers/configure.zcml @@ -46,13 +46,9 @@ interface="zope.container.interfaces.IReadContainer" /> - diff --git a/src/bbru/answers/security.zcml b/src/bbru/answers/security.zcml index ccdc4d7..8fbf587 100644 --- a/src/bbru/answers/security.zcml +++ b/src/bbru/answers/security.zcml @@ -56,6 +56,10 @@ permission="bbru.answers.EditQuestion" role="bbru.answers.Moderator" /> +