summaryrefslogtreecommitdiff
path: root/misc/teaser.js
diff options
context:
space:
mode:
Diffstat (limited to 'misc/teaser.js')
-rw-r--r--misc/teaser.js156
1 files changed, 79 insertions, 77 deletions
diff --git a/misc/teaser.js b/misc/teaser.js
index 590dad582..e303aa963 100644
--- a/misc/teaser.js
+++ b/misc/teaser.js
@@ -5,92 +5,94 @@
*
* Note: depends on resizable textareas.
*/
-Drupal.behaviors.teaser = function(context) {
- // This breaks in Konqueror. Prevent it from running.
- if (/KDE/.test(navigator.vendor)) {
- return;
- }
+Drupal.behaviors.teaser = {
+ attach: function(context) {
+ // This breaks in Konqueror. Prevent it from running.
+ if (/KDE/.test(navigator.vendor)) {
+ return;
+ }
- $('textarea.teaser:not(.teaser-processed)', context).each(function() {
- var teaser = $(this).addClass('teaser-processed');
+ $('textarea.teaser:not(.teaser-processed)', context).each(function() {
+ var teaser = $(this).addClass('teaser-processed');
- // Move teaser textarea before body, and remove its form-item wrapper.
- var body = $('#'+ Drupal.settings.teaser[this.id]);
- var checkbox = $('#'+ Drupal.settings.teaserCheckbox[this.id]).parent();
- var checked = $(checkbox).children('input').attr('checked') ? true : false;
- var parent = teaser[0].parentNode;
- $(body).before(teaser);
- $(parent).remove();
+ // Move teaser textarea before body, and remove its form-item wrapper.
+ var body = $('#'+ Drupal.settings.teaser[this.id]);
+ var checkbox = $('#'+ Drupal.settings.teaserCheckbox[this.id]).parent();
+ var checked = $(checkbox).children('input').attr('checked') ? true : false;
+ var parent = teaser[0].parentNode;
+ $(body).before(teaser);
+ $(parent).remove();
- function trim(text) {
- return text.replace(/^\s+/g, '').replace(/\s+$/g, '');
- }
+ function trim(text) {
+ return text.replace(/^\s+/g, '').replace(/\s+$/g, '');
+ }
- // Join the teaser back to the body.
- function join_teaser() {
- if (teaser.val()) {
- body.val(trim(teaser.val()) +'\r\n\r\n'+ trim(body.val()));
+ // Join the teaser back to the body.
+ function join_teaser() {
+ if (teaser.val()) {
+ body.val(trim(teaser.val()) +'\r\n\r\n'+ trim(body.val()));
+ }
+ // Empty, hide and disable teaser.
+ teaser[0].value = '';
+ $(teaser).attr('disabled', 'disabled');
+ $(teaser).parent().slideUp('fast');
+ // Change label.
+ $(this).val(Drupal.t('Split summary at cursor'));
+ // Hide separate teaser checkbox.
+ $(checkbox).hide();
+ // Force a hidden checkbox to be checked (to ensure that the body is
+ // correctly processed on form submit when teaser/body are in joined
+ // state), and remember the current checked status.
+ checked = $(checkbox).children('input').attr('checked') ? true : false;
+ $(checkbox).children('input').attr('checked', true);
}
- // Empty, hide and disable teaser.
- teaser[0].value = '';
- $(teaser).attr('disabled', 'disabled');
- $(teaser).parent().slideUp('fast');
- // Change label.
- $(this).val(Drupal.t('Split summary at cursor'));
- // Hide separate teaser checkbox.
- $(checkbox).hide();
- // Force a hidden checkbox to be checked (to ensure that the body is
- // correctly processed on form submit when teaser/body are in joined
- // state), and remember the current checked status.
- checked = $(checkbox).children('input').attr('checked') ? true : false;
- $(checkbox).children('input').attr('checked', true);
- }
- // Split the teaser from the body.
- function split_teaser() {
- body[0].focus();
- var selection = Drupal.getSelection(body[0]);
- var split = selection.start;
- var text = body.val();
+ // Split the teaser from the body.
+ function split_teaser() {
+ body[0].focus();
+ var selection = Drupal.getSelection(body[0]);
+ var split = selection.start;
+ var text = body.val();
- // Note: using val() fails sometimes. jQuery bug?
- teaser[0].value = trim(text.slice(0, split));
- body[0].value = trim(text.slice(split));
- // Reveal and enable teaser.
- $(teaser).attr('disabled', '');
- $(teaser).parent().slideDown('fast');
- // Change label.
- $(this).val(Drupal.t('Join summary'));
- // Show separate teaser checkbox, restore checked value.
- $(checkbox).show().children('input').attr('checked', checked);
- }
+ // Note: using val() fails sometimes. jQuery bug?
+ teaser[0].value = trim(text.slice(0, split));
+ body[0].value = trim(text.slice(split));
+ // Reveal and enable teaser.
+ $(teaser).attr('disabled', '');
+ $(teaser).parent().slideDown('fast');
+ // Change label.
+ $(this).val(Drupal.t('Join summary'));
+ // Show separate teaser checkbox, restore checked value.
+ $(checkbox).show().children('input').attr('checked', checked);
+ }
- // Add split/join button.
- var button = $('<div class="teaser-button-wrapper"><input type="button" class="teaser-button" /></div>');
- var include = $('#'+ this.id.substring(0, this.id.length - 2) +'include');
- $(include).parent().parent().before(button);
+ // Add split/join button.
+ var button = $('<div class="teaser-button-wrapper"><input type="button" class="teaser-button" /></div>');
+ var include = $('#'+ this.id.substring(0, this.id.length - 2) +'include');
+ $(include).parent().parent().before(button);
- // Extract the teaser from the body, if set. Otherwise, stay in joined mode.
- var text = body.val().split('<!--break-->', 2);
- if (text.length == 2) {
- teaser[0].value = trim(text[0]);
- body[0].value = trim(text[1]);
- $(teaser).attr('disabled', '');
- $('input', button).val(Drupal.t('Join summary')).toggle(join_teaser, split_teaser);
- }
- else {
- $('input', button).val(Drupal.t('Split summary at cursor')).toggle(split_teaser, join_teaser);
- $(checkbox).hide().children('input').attr('checked', true);
- }
+ // Extract the teaser from the body, if set. Otherwise, stay in joined mode.
+ var text = body.val().split('<!--break-->', 2);
+ if (text.length == 2) {
+ teaser[0].value = trim(text[0]);
+ body[0].value = trim(text[1]);
+ $(teaser).attr('disabled', '');
+ $('input', button).val(Drupal.t('Join summary')).toggle(join_teaser, split_teaser);
+ }
+ else {
+ $('input', button).val(Drupal.t('Split summary at cursor')).toggle(split_teaser, join_teaser);
+ $(checkbox).hide().children('input').attr('checked', true);
+ }
- // Make sure that textarea.js has done its magic to ensure proper visibility state.
- if (Drupal.behaviors.textarea && teaser.is(('.form-textarea:not(.textarea-processed)'))) {
- Drupal.behaviors.textarea(teaser.parentNode);
- }
- // Set initial visibility.
- if ($(teaser).is('[@disabled]')) {
- $(teaser).parent().hide();
- }
+ // Make sure that textarea.js has done its magic to ensure proper visibility state.
+ if (Drupal.behaviors.textarea && teaser.is(('.form-textarea:not(.textarea-processed)'))) {
+ Drupal.behaviors.textarea.attach(teaser.parentNode);
+ }
+ // Set initial visibility.
+ if ($(teaser).is('[@disabled]')) {
+ $(teaser).parent().hide();
+ }
- });
+ });
+ }
};