This function which actually posts comments is comment_post(). This function is currently pretty messy, and not suitable for use by other modules. This patch assures that this function returns the comment ID if the submission was successful, or else returns FALSE. This is consistent with node_save(). In fact, I've renamed this function comment_save() for consistency. The old comment_save() was merged with comment_post(). I renamed comment_validate_form() to comment_validate() for consistency with node as well.

To do this, I had to clean up quite more of the module. This patch unifies the admin comment form and the usual comment form, similar to what we did for nodes. This resulted lots of duplicate code removal.

I was able give Admins the ability to change the author and timestamp of a comment. Thats been a feature request of mine since Jan 2003: http://drupal.org/node/983

I removed comment links from the bottom of the comment preview box (as we did for nodes)

I hope this is considered for commit early in the 4.7 cycle.

Comments

killes@www.drop.org’s picture

Much needed patch! I wouldn't mind seeing it in 4.6.

moshe weitzman’s picture

Assigned: Unassigned » moshe weitzman
StatusFileSize
new15.73 KB

This version properly handles anonymous comments when using a setting that allows for Name, Email, Homepage on a comment.

IMO, this patch refactors too much code to be considered for 4.6.

Stefan Nagtegaal’s picture

I tested this patch on current 4.6 RC I and this is, codewise and thus usabilitywise a must have... Moshe you did a very good job in your biggest patch of these two..

Dries, I think you should really have a close look at this patch! Its very, very good and I couldn't find any errors in the code...

chx’s picture

a big +1 for this in 4.6

junyor’s picture

StatusFileSize
new16.2 KB

This change definitely makes a lot of sense and is overdue. A couple comments on the patch:

1) The fix from http://drupal.org/node/17877 is lost (and probably some other things since this patch was made)
2) There *might* be some missing else clauses in comment_preview for UID/name checking, but I'm not really sure
3) There are some existing checks in comment_save for name and time. Shouldn't those be moved to comment_validate or removed?
4) If you're previewing a comment, there are links for the comment being previewed, such as edit and reply. Trying those links throws an error. This is an existing bug before the patch.

I've updated the patch to HEAD and fixed a comment typo and an indentation problem. I also fixed a typo in the access check in comment_save. I hope it isn't bad ettiquette to update others' patches.

moshe weitzman’s picture

thanks Junyor. Everyone is welcome to update and improve this patch without consulting me first.

moshe weitzman’s picture

is anyone able to take over maintainership of this patch. i just needs to be updated for current HEAD. I am unable to do this for a while, and I fear the patch will just rot in the meatime. Dries and others have expressed interest, so your efforts will not go to waste.

dries’s picture

This patch addresses a long-standing issue and will be committed to HEAD as soon the patch has been updated.

moshe weitzman’s picture

StatusFileSize
new15.67 KB

I didn't get any responses so I went and updated it myself ... please do some testing before committing. This module has many different options (anonymous posting, placement of comment form, etc.). It is difficult to test them all (though I did try).

dries’s picture

I tested this patch and it needs one more revision. I'm going to spend some time fixing it up but might not get to the end. Stay tuned.

dries’s picture

Couple of things:

  • The following looks wrong. I think $dest should be an array. Also, let's hope form() validates/escapes
    $dest<code> before generating the form because you don't appear to do any input checking here.  
    <code>+  $dest = $_REQUEST['destination'] ? 'destination='. $_REQUEST['destination'] : '';
    +  return theme('box', $title, form($form, 'post', url('comment/reply/'. $edit['nid'], $dest)));
  • When editing a comment the 'Authored by' information gets losts when clicking 'Preview comment'.
dries’s picture

Once fixed, the 'author' field of the comment submission form could be AJAX-ified (only in edit mode for administrators).

moshe weitzman’s picture

StatusFileSize
new15.52 KB

finally. here is an updated patch which addresses the recent concerns expressed in #11 and #12.

- $dest should be a string and not an array as per definition of url(). we are OK here
- form() already does acheckurl() so we are OK here. good thinking though.
- info no longer lost on preview
- Author has been AJAxified as specified. the administration group is now collapsible like node form

dries’s picture

Status: Needs review » Fixed

Committed to HEAD.

Anonymous’s picture

Anonymous’s picture

Anonymous’s picture

Anonymous’s picture

Anonymous’s picture

Anonymous’s picture

Status: Fixed » Closed (fixed)
jvincher’s picture

Version: » 4.7.0-beta2
Priority: Normal » Critical

This seems to have some issues in 4.7 beta 2.

- changing the timestamp and saving the comment results in reset of the timestamp to somewhere in 1970. I am assuming this is some sort of default timestamp.

- changing the author and saving the comment results in a reset of the author to Anonymous.

jvincher’s picture

Status: Closed (fixed) » Active

see above, opening this back up.

grohk’s picture

Status: Active » Closed (fixed)

Please refrain from opening issues back up when there are bug reports on these issues already. A simple search of open issues with the phrase 'comment.module' returns many results. One of which is this one:

http://drupal.org/node/40762