My Technical Blog
Simple AJAX Quote in Drupal 6
I’ve been upgrading the forum of Computer Science in Syria for a week now.
The forum uses Drupal, and it ran a beta version of Drupal 4, and I upgraded it to the latest Drupal version now.
I wanted to have AJAX quoting in the forum, but I wanted it to be simple without lots of JavaScript loaded. So as usual I got pissed off and decided to create my own code to do it.
The code was very simple, knowing that the Quote link will get you to a page where the textarea has the quoted text, and knowing that Drupal 6 has jQuery loaded in it
I added the following code to /misc/drupal.js file:
$('a.quote, li.quote a').click(function () {
$(this).after($(' <img style="width: 16px; height: 16px;" class="quoting" src="/misc/quoting.gif" alt="loading" />'));
$.ajax({
url: $(this).attr('href'),
cache: false,
success: function(html){
$('img.quoting').remove();
var changed = false;
if ($('#wysiwyg-toggle-edit-comment').text() == Drupal.settings.wysiwyg.disable) {
$('#wysiwyg-toggle-edit-comment').click();
changed = true;
}
$('#edit-comment').val($('#edit-comment').val() + ($('#edit-comment').val() == '' ? '' : '\n') + $(html).children().find('#edit-comment').val());
var $target = $('#edit-comment');
$target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
if ($target.length) {
var targetOffset = $target.offset().top;
$('html,body').animate({scrollTop: targetOffset}, 1000);
}
if (changed)
$('#wysiwyg-toggle-edit-comment').click();
$('#edit-comment').scrollTop($('#edit-comment')[0].scrollHeight);
}
});
return false;
});
You can see that I used this image to be displayed while loading the quote into the textarea
because it matches the colors of the forum style.
The process is too simple:
- @line 02: Display a loading image.
- @line 03: Request the quoting page which is located in the href attribute of the quote link.
- @line 07: Remove the image.
- @lines 08 ~ 12: Checking if the HTML editor is enabled, and disabling it so I can assign the value directly to the textarea.
- @line 13: Assigning the value of the textarea in the quote page to the textarea in this page.
- @lines 14 ~ 19: Scrolling the page’s vertical scroll to reach the textarea.
- @lines 20 ~ 21: Re-enabling the editor if I disabled it.
- @line 22: Scrolling the textarea’s vertical scroll to reach the end of the text.
- @line 25: Returning false to the browser so it doesn’t redirect the page to the quoting page.
You see? it is as simple as this
I’ll soon post some other modifications that made the forum more simple
| Print article | This entry was posted by Abd Allah Diab on February 13, 2010 at 1:02 am, and is filed under Programming. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |






about 6 months ago
you should never ever change Drupal core files. Never. Not even for something as simple as that. Learn how to create modules and implement this through a module.
about 6 months ago
Yeah I know, it is simple JavaScript
I did so because I didn’t have free time to learn the Drupal module API and so.
Anyway I intend to learn them, so I think I’ll create the modules for it when I have knowledge and free time.
Thanks for your advice