differentiate between delete and publish AJAX calls.
svn path=/plone.app.discussion/trunk/; revision=27725
This commit is contained in:
		
							parent
							
								
									4a934a2967
								
							
						
					
					
						commit
						a00dea41e3
					
				@ -16,6 +16,7 @@ jq(document).ready(function() {
 | 
				
			|||||||
	      }
 | 
						      }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*****************************************************************
 | 
					    /*****************************************************************
 | 
				
			||||||
     * Comment actions (delete, publish)
 | 
					     * Comment actions (delete, publish)
 | 
				
			||||||
     *****************************************************************/
 | 
					     *****************************************************************/
 | 
				
			||||||
@ -25,31 +26,56 @@ jq(document).ready(function() {
 | 
				
			|||||||
        var params = jq(this).serialize();
 | 
					        var params = jq(this).serialize();
 | 
				
			||||||
        var cell = jq(this).parent().get(0);
 | 
					        var cell = jq(this).parent().get(0);
 | 
				
			||||||
        var row = jq(cell).parent().get(0);
 | 
					        var row = jq(cell).parent().get(0);
 | 
				
			||||||
 | 
					        var currentFilter = jq(this).find("[name='form.button.Filter']").attr("value");
 | 
				
			||||||
 | 
					        var currentAction = jq(this).attr("class");
 | 
				
			||||||
        jq.post(target, params, function(data) {
 | 
					        jq.post(target, params, function(data) {
 | 
				
			||||||
            jq(row).fadeOut("normal", function() {
 | 
								if (currentAction == 'background-form workflow_action' && currentFilter == '') {
 | 
				
			||||||
                jq(this).remove();
 | 
					                alert("NotImplementedError: AJAX switch workflow state")
 | 
				
			||||||
            });
 | 
								}
 | 
				
			||||||
 | 
								else {
 | 
				
			||||||
 | 
									jq(row).fadeOut("normal", function(){
 | 
				
			||||||
 | 
										jq(this).remove();
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*****************************************************************
 | 
					    /*****************************************************************
 | 
				
			||||||
     * Bulk actions
 | 
					     * Bulk actions (delete, publish)
 | 
				
			||||||
     *****************************************************************/
 | 
					     *****************************************************************/
 | 
				
			||||||
    jq('form.bulkactions').submit(function(e) {
 | 
					    jq('form.bulkactions').submit(function(e) {
 | 
				
			||||||
        e.preventDefault();
 | 
					        e.preventDefault();
 | 
				
			||||||
        var target = jq(this).attr('action');
 | 
					        var target = jq(this).attr('action');
 | 
				
			||||||
        var params = jq(this).serialize();
 | 
					        var params = jq(this).serialize();
 | 
				
			||||||
		var valArray = jq('input:checkbox:checked');
 | 
							var valArray = jq('input:checkbox:checked');
 | 
				
			||||||
        jq.post(target, params, function(data) {
 | 
					        var currentFilter = jq(this).find("[name='form.button.Filter']").attr("value");
 | 
				
			||||||
            valArray.each(function () {
 | 
							var currentAction = jq(this).find("[name='form.select.BulkAction']").val();
 | 
				
			||||||
				row = jq(this).parent().parent();
 | 
					        if (valArray.length) {
 | 
				
			||||||
	            row.fadeOut("normal", function() {
 | 
					            jq.post(target, params, function(data) {
 | 
				
			||||||
	               row.remove();
 | 
					                valArray.each(function () {
 | 
				
			||||||
	            });
 | 
										// if bulkaction is delete, or the current filter is
 | 
				
			||||||
 | 
										// pending (because then publish also removes the comment),
 | 
				
			||||||
 | 
										// remove all selected comments.
 | 
				
			||||||
 | 
					                    if (currentAction == 'delete' || currentFilter == 'pending') {
 | 
				
			||||||
 | 
					                        row = jq(this).parent().parent();
 | 
				
			||||||
 | 
					                        row.fadeOut("normal", function() {
 | 
				
			||||||
 | 
					                           row.remove();
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
										// if bulkaction is publish and there is no current filter,
 | 
				
			||||||
 | 
										// change the workflow action
 | 
				
			||||||
 | 
										if (currentAction == 'publish') {
 | 
				
			||||||
 | 
					                        alert("NotImplementedError: AJAX switch workflow state")
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        });
 | 
					        } else {
 | 
				
			||||||
 | 
								// The user has submitted a bulk action, but no comment
 | 
				
			||||||
 | 
								// was selected.
 | 
				
			||||||
 | 
								// Todo: nicer and translated message
 | 
				
			||||||
 | 
					            alert("You haven't selected anything for this bulk action.");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
@ -13,7 +13,7 @@
 | 
				
			|||||||
                    filter view/filter|nothing;">
 | 
					                    filter view/filter|nothing;">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <h1 class="documentFirstHeading" i18n:translate="title_review">
 | 
					        <h1 class="documentFirstHeading" i18n:translate="title_review">
 | 
				
			||||||
            Review comments
 | 
					            Moderate comments
 | 
				
			||||||
        </h1>
 | 
					        </h1>
 | 
				
			||||||
        <ul class="filter">
 | 
					        <ul class="filter">
 | 
				
			||||||
            <li class="all">
 | 
					            <li class="all">
 | 
				
			||||||
@ -69,80 +69,80 @@
 | 
				
			|||||||
                   i18n:attributes="value label_apply;" />
 | 
					                   i18n:attributes="value label_apply;" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <table id="review-comments" class="listing" style="width: 100%" tal:condition="items">
 | 
					            <table id="review-comments" class="listing" style="width: 100%" tal:condition="items">
 | 
				
			||||||
            <thead>
 | 
					                <thead>
 | 
				
			||||||
                <tr>
 | 
					                    <tr>
 | 
				
			||||||
                    <th class="nosort"><input name="check_all" type="checkbox" value="0" /></th>
 | 
					                        <th class="nosort"><input name="check_all" type="checkbox" value="0" /></th>
 | 
				
			||||||
                    <th i18n:translate="heading_author">Commenter</th>
 | 
					                        <th i18n:translate="heading_author">Commenter</th>
 | 
				
			||||||
                    <th i18n:translate="heading_date">Date</th>
 | 
					                        <th i18n:translate="heading_date">Date</th>
 | 
				
			||||||
                    <th i18n:translate="heading_context">In Response To</th>
 | 
					                        <th i18n:translate="heading_context">In Response To</th>
 | 
				
			||||||
                    <th i18n:translate="heading_subject">Subject</th>
 | 
					                        <th i18n:translate="heading_subject">Subject</th>
 | 
				
			||||||
                    <th i18n:translate="heading_comment">Comment</th>
 | 
					                        <th i18n:translate="heading_comment">Comment</th>
 | 
				
			||||||
                    <th i18n:translate="heading_action">Action</th>
 | 
					                        <th i18n:translate="heading_action">Action</th>
 | 
				
			||||||
                </tr>
 | 
					 | 
				
			||||||
            </thead>
 | 
					 | 
				
			||||||
            <tbody>
 | 
					 | 
				
			||||||
                <tal:block repeat="item items">
 | 
					 | 
				
			||||||
                    <tr style="vertical-align: top" class="commentrow"
 | 
					 | 
				
			||||||
                        tal:define="odd repeat/item/odd"
 | 
					 | 
				
			||||||
                        tal:attributes="class python: odd and 'odd' or 'even'">
 | 
					 | 
				
			||||||
                        <td class="notDraggable">
 | 
					 | 
				
			||||||
                            <input type="checkbox"
 | 
					 | 
				
			||||||
                                   class="noborder"
 | 
					 | 
				
			||||||
                                   name="paths:list" id="#"
 | 
					 | 
				
			||||||
                                   value="#"
 | 
					 | 
				
			||||||
                                   tal:attributes="value   item/getPath;
 | 
					 | 
				
			||||||
                                                   id      string:cb_${item/id};
 | 
					 | 
				
			||||||
                                                   checked item/checked|nothing;
 | 
					 | 
				
			||||||
                                                   alt     string:Select ${item/Title};
 | 
					 | 
				
			||||||
                                                   title   string:Select ${item/Title}" />
 | 
					 | 
				
			||||||
                            <input type="hidden" name="selected_obj_paths:list" value="#"
 | 
					 | 
				
			||||||
                                   tal:attributes="value item/getURL" />
 | 
					 | 
				
			||||||
                        </td>
 | 
					 | 
				
			||||||
                        <td tal:content="item/Creator" />
 | 
					 | 
				
			||||||
                        <td tal:content="python:toLocalizedTime(item.ModificationDate, long_format=1)" />
 | 
					 | 
				
			||||||
                        <td>
 | 
					 | 
				
			||||||
                            <a tal:attributes="href item/getURL"
 | 
					 | 
				
			||||||
                               tal:content="item/@@plone_context_state/parent|nothing" />
 | 
					 | 
				
			||||||
                        </td>
 | 
					 | 
				
			||||||
                        <td>
 | 
					 | 
				
			||||||
                            <a tal:attributes="href item/getURL"
 | 
					 | 
				
			||||||
                               tal:content="item/Title" />
 | 
					 | 
				
			||||||
                        </td>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        <td tal:content="structure python:view.cook(item.Description)" />
 | 
					 | 
				
			||||||
                        <td style="width: 11em;">
 | 
					 | 
				
			||||||
                            <form action=""
 | 
					 | 
				
			||||||
                                  class="background-form workflow_action"
 | 
					 | 
				
			||||||
                                  method="post"
 | 
					 | 
				
			||||||
                                  tal:attributes="action string:${item/getURL}/@@moderate-publish-comment"
 | 
					 | 
				
			||||||
                                  tal:condition="python:item.review_state == 'pending'">
 | 
					 | 
				
			||||||
                                <input type="hidden" name="comment_id" tal:attributes="value item/getId" />
 | 
					 | 
				
			||||||
                                <input type="hidden" name="workflow_action" tal:attributes="value view/transition" />
 | 
					 | 
				
			||||||
                                <input type="hidden" name="form.button.Filter" tal:attributes="value filter" value="" />
 | 
					 | 
				
			||||||
                                <input class="context comment-publish-button"
 | 
					 | 
				
			||||||
                                       type="submit"
 | 
					 | 
				
			||||||
                                       value="Publish"
 | 
					 | 
				
			||||||
                                       i18n:attributes="value label_publish"
 | 
					 | 
				
			||||||
                                       />
 | 
					 | 
				
			||||||
                            </form>
 | 
					 | 
				
			||||||
                            <form action=""
 | 
					 | 
				
			||||||
                                  method="post"
 | 
					 | 
				
			||||||
                                  class="background-form delete"
 | 
					 | 
				
			||||||
                                  tal:attributes="action string:${item/getURL}/@@moderate-delete-comment">
 | 
					 | 
				
			||||||
                                <input type="hidden" name="comment_id" tal:attributes="value item/getId" />
 | 
					 | 
				
			||||||
                                <input type="hidden" name="form.button.Filter" tal:attributes="value filter" value="" />
 | 
					 | 
				
			||||||
                                <input class="destructive comment-delete-button"
 | 
					 | 
				
			||||||
                                       type="submit"
 | 
					 | 
				
			||||||
                                       value="Delete"
 | 
					 | 
				
			||||||
                                       i18n:attributes="value label_delete;"
 | 
					 | 
				
			||||||
                                       />
 | 
					 | 
				
			||||||
                            </form>
 | 
					 | 
				
			||||||
                        </td>
 | 
					 | 
				
			||||||
                    </tr>
 | 
					                    </tr>
 | 
				
			||||||
                </tal:block>
 | 
					                </thead>
 | 
				
			||||||
            </tbody>
 | 
					                <tbody>
 | 
				
			||||||
        </table>
 | 
					                    <tal:block repeat="item items">
 | 
				
			||||||
 | 
					                        <tr style="vertical-align: top" class="commentrow"
 | 
				
			||||||
 | 
					                            tal:define="odd repeat/item/odd"
 | 
				
			||||||
 | 
					                            tal:attributes="class python: odd and 'odd' or 'even'">
 | 
				
			||||||
 | 
					                            <td class="notDraggable">
 | 
				
			||||||
 | 
					                                <input type="checkbox"
 | 
				
			||||||
 | 
					                                       class="noborder"
 | 
				
			||||||
 | 
					                                       name="paths:list" id="#"
 | 
				
			||||||
 | 
					                                       value="#"
 | 
				
			||||||
 | 
					                                       tal:attributes="value   item/getPath;
 | 
				
			||||||
 | 
					                                                       id      string:cb_${item/id};
 | 
				
			||||||
 | 
					                                                       checked item/checked|nothing;
 | 
				
			||||||
 | 
					                                                       alt     string:Select ${item/Title};
 | 
				
			||||||
 | 
					                                                       title   string:Select ${item/Title}" />
 | 
				
			||||||
 | 
					                                <input type="hidden" name="selected_obj_paths:list" value="#"
 | 
				
			||||||
 | 
					                                       tal:attributes="value item/getURL" />
 | 
				
			||||||
 | 
					                            </td>
 | 
				
			||||||
 | 
					                            <td tal:content="item/Creator" />
 | 
				
			||||||
 | 
					                            <td tal:content="python:toLocalizedTime(item.ModificationDate, long_format=1)" />
 | 
				
			||||||
 | 
					                            <td>
 | 
				
			||||||
 | 
					                                <a tal:attributes="href item/getURL"
 | 
				
			||||||
 | 
					                                   tal:content="item/@@plone_context_state/parent|nothing" />
 | 
				
			||||||
 | 
					                            </td>
 | 
				
			||||||
 | 
					                            <td>
 | 
				
			||||||
 | 
					                                <a tal:attributes="href item/getURL"
 | 
				
			||||||
 | 
					                                   tal:content="item/Title" />
 | 
				
			||||||
 | 
					                            </td>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            <td tal:content="structure python:view.cook(item.Description)" />
 | 
				
			||||||
 | 
					                            <td style="width: 11em;">
 | 
				
			||||||
 | 
					                                <form action=""
 | 
				
			||||||
 | 
					                                      class="background-form workflow_action"
 | 
				
			||||||
 | 
					                                      method="post"
 | 
				
			||||||
 | 
					                                      tal:attributes="action string:${item/getURL}/@@moderate-publish-comment"
 | 
				
			||||||
 | 
					                                      tal:condition="python:item.review_state == 'pending'">
 | 
				
			||||||
 | 
					                                    <input type="hidden" name="comment_id" tal:attributes="value item/getId" />
 | 
				
			||||||
 | 
					                                    <input type="hidden" name="workflow_action" tal:attributes="value view/transition" />
 | 
				
			||||||
 | 
					                                    <input type="hidden" name="form.button.Filter" tal:attributes="value filter" value="" />
 | 
				
			||||||
 | 
					                                    <input class="context comment-publish-button"
 | 
				
			||||||
 | 
					                                           type="submit"
 | 
				
			||||||
 | 
					                                           value="Publish"
 | 
				
			||||||
 | 
					                                           i18n:attributes="value label_publish"
 | 
				
			||||||
 | 
					                                           />
 | 
				
			||||||
 | 
					                                </form>
 | 
				
			||||||
 | 
					                                <form action=""
 | 
				
			||||||
 | 
					                                      method="post"
 | 
				
			||||||
 | 
					                                      class="background-form delete"
 | 
				
			||||||
 | 
					                                      tal:attributes="action string:${item/getURL}/@@moderate-delete-comment">
 | 
				
			||||||
 | 
					                                    <input type="hidden" name="comment_id" tal:attributes="value item/getId" />
 | 
				
			||||||
 | 
					                                    <input type="hidden" name="form.button.Filter" tal:attributes="value filter" value="" />
 | 
				
			||||||
 | 
					                                    <input class="destructive comment-delete-button"
 | 
				
			||||||
 | 
					                                           type="submit"
 | 
				
			||||||
 | 
					                                           value="Delete"
 | 
				
			||||||
 | 
					                                           i18n:attributes="value label_delete;"
 | 
				
			||||||
 | 
					                                           />
 | 
				
			||||||
 | 
					                                </form>
 | 
				
			||||||
 | 
					                            </td>
 | 
				
			||||||
 | 
					                        </tr>
 | 
				
			||||||
 | 
					                    </tal:block>
 | 
				
			||||||
 | 
					                </tbody>
 | 
				
			||||||
 | 
					            </table>
 | 
				
			||||||
        </form>
 | 
					        </form>
 | 
				
			||||||
    </tal:main-macro>
 | 
					    </tal:main-macro>
 | 
				
			||||||
</metal:main>
 | 
					</metal:main>
 | 
				
			||||||
 | 
				
			|||||||
@ -124,20 +124,20 @@ class BulkActionsView(BrowserView):
 | 
				
			|||||||
            bulkaction = self.request.get('form.select.BulkAction')
 | 
					            bulkaction = self.request.get('form.select.BulkAction')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.paths = self.request.get('paths')
 | 
					            self.paths = self.request.get('paths')
 | 
				
			||||||
 | 
					            if self.paths:
 | 
				
			||||||
            if bulkaction == '-1':
 | 
					                if bulkaction == '-1':
 | 
				
			||||||
                # no bulk action was selected
 | 
					                    # no bulk action was selected
 | 
				
			||||||
                pass
 | 
					                    pass
 | 
				
			||||||
            elif bulkaction == 'retract':
 | 
					                elif bulkaction == 'retract':
 | 
				
			||||||
                self.retract()
 | 
					                    self.retract()
 | 
				
			||||||
            elif bulkaction == 'publish':
 | 
					                elif bulkaction == 'publish':
 | 
				
			||||||
                self.publish()
 | 
					                    self.publish()
 | 
				
			||||||
            elif bulkaction == 'mark_as_spam':
 | 
					                elif bulkaction == 'mark_as_spam':
 | 
				
			||||||
                self.mark_as_spam()
 | 
					                    self.mark_as_spam()
 | 
				
			||||||
            elif bulkaction == 'delete':
 | 
					                elif bulkaction == 'delete':
 | 
				
			||||||
                self.delete()
 | 
					                    self.delete()
 | 
				
			||||||
            else:
 | 
					                else:
 | 
				
			||||||
                raise KeyError
 | 
					                    raise KeyError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def retract(self):
 | 
					    def retract(self):
 | 
				
			||||||
        raise NotImplementedError
 | 
					        raise NotImplementedError
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user