diff --git a/js/ui-editables.js b/js/ui-editables.js index 3310b01..238689a 100644 --- a/js/ui-editables.js +++ b/js/ui-editables.js @@ -10,127 +10,28 @@ Drupal.edit = Drupal.edit || {}; Drupal.edit.form = { create: function($editable, cb) { - // @todo: refactor Drupal.edit.form into *two* separate objects/classes: - // direct editables and form-based ones. - - var entity = Drupal.edit.vie.entities.get(Drupal.edit.util.getElementSubject($editable)); - var predicate = Drupal.edit.util.getElementPredicate($editable); - var edit_id = entity.getSubjectUri() + ':' + predicate; - var $field = Drupal.edit.util.findFieldForEditable($editable); - // @todo: this needs to be refactored, we should have access to the view - // rather than the $editable/$el of the view. - // moreover, we should probably be de-coupling this and trigger events - // instead of mucking with the toolbar from here. - var toolbarView = Drupal.edit.state.get('editedFieldView').getToolbarView(); - var $toolbar = toolbarView.getToolbarElement(); - // We only create a placeholder-div/form for the form-based instances. - if ($field.hasClass('edit-type-form')) { - // Check whether this form has already been loaded. - if (Drupal.edit.form.get($editable).length > 0) { - return false; - } - - // Animate the toolbar into visibility. - setTimeout(function() { - $toolbar.removeClass('edit-animate-invisible'); - }, 0); - - // Remove any and all existing toolbars, except for any that are for a - // currently being edited field. - $('.edit-toolbar-container:not(:has(.edit-editing))') - .trigger('edit-toolbar-remove.edit'); - - // Event bindings. - $toolbar - .bind('mouseenter.edit', function(e) { - // Prevent triggering the entity's mouse enter event. - e.stopPropagation(); - }) - .bind('mouseleave.edit', function(e) { - var el = $editable[0]; - if (e.relatedTarget != el && !jQuery.contains(el, e.relatedTarget)) { - console.log('triggering mouseleave on ', $editable); - $editable.trigger('mouseleave.edit'); - } - // Prevent triggering the entity's mouse leave event. - e.stopPropagation(); - }) - // Immediate removal whenever requested. - // (This is necessary when showing many toolbars in rapid succession: we - // don't want all of them to show up!) - .bind('edit-toolbar-remove.edit', function(e) { - $toolbar.remove(); - }) - .delegate('.edit-toolbar, .edit-toolgroup', 'click.edit mousedown.edit', function(e) { - if (!$(e.target).is(':input')) { - return false; - } - }); - - return true; - } - }, - - get: function($editable) { - return ($editable.length == 0) - ? $([]) - : $('#' + this._id($editable)); - }, - - remove: function($editable) { - var $toolbar = Drupal.edit.toolbar.get($editable); - - // Remove after animation. - $toolbar - .addClass('edit-animate-invisible') - // Prevent this toolbar from being detected *while* it is being removed. - .removeAttr('id') - .find('.edit-toolbar .edit-toolgroup') - .addClass('edit-animate-invisible') - .bind(Drupal.edit.const.transitionEnd, function(e) { - $toolbar.remove(); - }); - }, - - // Animate into view. - show: function($editable, toolgroup) { - this._find($editable, toolgroup).removeClass('edit-animate-invisible'); - }, - - addClass: function($editable, toolgroup, classes) { - this._find($editable, toolgroup).addClass(classes); - }, - - removeClass: function($editable, toolgroup, classes) { - this._find($editable, toolgroup).removeClass(classes); - }, - - _find: function($editable, toolgroup) { - return Drupal.edit.toolbar.get($editable) - .find('.edit-toolbar .edit-toolgroup.' + toolgroup); - }, - - _id: function($editable) { - var edit_id = Drupal.edit.getID(Drupal.edit.findFieldForEditable($editable)); - return 'edit-toolbar-for-' + edit_id.split(':').join('_'); - } -}; - - -Drupal.edit.form = { - create: function($editable) { if (Drupal.edit.form.get($editable).length > 0) { return false; } else { + var entity = Drupal.edit.vie.entities.get(Drupal.edit.util.getElementSubject($editable)); + var predicate = Drupal.edit.util.getElementPredicate($editable); + var edit_id = entity.getSubjectUri() + ':' + predicate; + var $field = Drupal.edit.util.findFieldForEditable($editable); + // @todo: this needs to be refactored, we should have access to the view + // rather than the $editable/$el of the view. + // moreover, we should probably be de-coupling this and trigger events + // instead of mucking with the toolbar from here. + var toolbarView = Drupal.edit.state.get('editedFieldView').getToolbarView(); + var $toolbar = toolbarView.getToolbarElement(); // Indicate in the 'info' toolgroup that the form is loading. Animated. setTimeout(function() { - Drupal.edit.toolbar.addClass($editable, 'info', 'loading'); + $toolbar.addClass($editable, 'info', 'loading'); }, 0); // Indicate in the 'info' toolgroup that the form is loading. // Drupal.edit.toolbar.addClass($editable, 'primary', 'info', 'loading'); - toolbarView.addClass('info', 'loading'); + $toolbar.addClass('info', 'loading'); // Render form container. var $form = $(Drupal.theme('editFormContainer', {