diff --git a/css/edit.css b/css/edit.css index 8c7e666..60a4ada 100644 --- a/css/edit.css +++ b/css/edit.css @@ -324,7 +324,8 @@ } #edit_modal a.blue-button, -.edit-toolbar a.blue-button { +.edit-toolbar a.blue-button, +.edit-save-button.blue-button { color: white; /* Firefox v3.6+ */ background-image:-moz-linear-gradient(93% 4% -90deg,rgb(111,194,242) 0%,rgb(78,151,192) 100%); @@ -348,7 +349,8 @@ } #edit_modal a.gray-button, -.edit-toolbar a.gray-button { +.edit-toolbar a.gray-button, +.edit-save-button.gray-button { color: #666; /* Firefox v3.6+ */ background-image:-moz-linear-gradient(26% 0% -90deg,rgb(245,245,245) 0%,rgb(204,204,204) 100%); @@ -382,7 +384,8 @@ } #edit_modal a.blue-button:hover, -.edit-toolbar a.blue-button:hover { +.edit-toolbar a.blue-button:hover, +.edit-save-button.blue-button:hover { /* Firefox v3.6+ */ background-image:-moz-linear-gradient(93% 4% -90deg,rgb(111,194,242) 0%,rgb(78,151,192) 100%); /* safari v4.0+ and by Chrome v3.0+ */ @@ -416,7 +419,8 @@ } #edit_modal a.gray-button:hover, -.edit-toolbar a.gray-button:hover { +.edit-toolbar a.gray-button:hover, +.edit-save-button.gray-button:hover { /* Firefox v3.6+ */ background-image:-moz-linear-gradient(26% 0% -90deg,rgb(245,245,245) 0%,rgb(204,204,204) 100%); /* safari v4.0+ and by Chrome v3.0+ */ @@ -450,7 +454,8 @@ } #edit_modal a.blue-button:active, -.edit-toolbar a.blue-button:active { +.edit-toolbar a.blue-button:active, +.edit-save-button.blue-button:active { /* Firefox v3.6+ */ background-image:-moz-linear-gradient(93% 4% -90deg,rgb(111,194,242) 0%,rgb(78,151,192) 100%); /* safari v4.0+ and by Chrome v3.0+ */ @@ -486,7 +491,8 @@ } #edit_modal a.gray-button:active, -.edit-toolbar a.gray-button:active { +.edit-toolbar a.gray-button:active, +.edit-save-button.gray-button:active { /* Firefox v3.6+ */ background-image:-moz-linear-gradient(26% 0% -90deg,rgb(245,245,245) 0%,rgb(204,204,204) 100%); /* safari v4.0+ and by Chrome v3.0+ */ @@ -518,3 +524,14 @@ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#fff5f5f5,endColorstr=#ffcccccc,GradientType=0) progid:DXImageTransform.Microsoft.dropshadow(OffX=0,OffY=2,Color=#1a000000,Positive=true); } + +.edit-toolgroup a.field-save { + display: none; +} + +a.edit-save-button.gray-button { + color: #666 !important; +} +a.edit-save-button.gray-button:hover { + color: #fff !important; +} diff --git a/includes/toolbar.inc b/includes/toolbar.inc index b83d1e1..7ab6d50 100644 --- a/includes/toolbar.inc +++ b/includes/toolbar.inc @@ -83,7 +83,8 @@ function edit_navbar_pre_render($navbar) { // Prepend edit module links to the navbar. $navbar_drawer_prepend = edit_toggle_links(); - $navbar['navbar_drawer'] = array_merge($navbar_drawer_prepend, $navbar['navbar_drawer']); + $navbar_drawer_append = edit_save_buttons(); + $navbar['navbar_drawer'] = array_merge($navbar_drawer_prepend, $navbar['navbar_drawer'], $navbar_drawer_append); return $navbar; } @@ -162,3 +163,27 @@ function edit_toggle_links($wrapper_classes = '', $ul_classes = 'tabs primary') ), ); } + +/** + * Builds a render array for common toggle links for different toolbars. + */ +function edit_save_buttons($wrapper_classes = '', $ul_classes = 'tabs primary') { + return array( + 'edit_save_buttons' => array( + '#prefix' => '

' . t('In-place edit submission') . '

', + 'content' => array( + array( + '#theme' => 'menu_local_task', + '#link' => array('title' => t('Save'), 'href' => '', 'localized_options' => array('attributes' => array('class' => array('edit-save-button'), 'style' => 'display: none;'))), + '#active' => TRUE, + ), + ), + '#attached' => array( + 'library' => array( + array('edit', 'edit.frontend'), + ), + ), + ), + ); +} diff --git a/js/edit.js b/js/edit.js index a235ea3..caeaab7 100644 --- a/js/edit.js +++ b/js/edit.js @@ -65,6 +65,8 @@ Drupal.edit.init = function() { $('a.edit_view-edit-toggle').parent().removeClass('active'); $('a.edit_view-edit-toggle.edit-' + (isViewing ? 'view' : 'edit')).addClass('active'); $('a.edit_view-edit-toggle.edit-' + (isViewing ? 'view' : 'edit')).parent().addClass('active'); + $('a.edit-save-button').toggle(!isViewing); + $('.edit-save-button').removeClass('blue-button').addClass('gray-button'); if (wasViewing && !isViewing) { $(Drupal.theme('editOverlay', {})) @@ -439,6 +441,10 @@ Drupal.edit.editables = { .delegate('a.field-close', 'click.edit', function(e) { return self._buttonFieldCloseClicked(e, $editable, $field); }); + $('.edit-save-button').click(function(e) { + Drupal.edit.editables._saveEdits(); + return false; + }) // Changes to $editable based on the type. var callback = ($field.hasClass('edit-type-direct')) @@ -778,6 +784,12 @@ Drupal.edit.editables = { _buttonFieldSaveToBlue: function(e, $editable, $field) { Drupal.edit.toolbar.get($editable) .find('a.save').addClass('blue-button').removeClass('gray-button'); + $('.edit-save-button').addClass('blue-button').removeClass('gray-button'); + }, + + _saveEdits: function() { + $('a.field-save').trigger('click.edit'); + $('.edit-save-button').removeClass('blue-button').addClass('gray-button'); }, _buttonFieldSaveClicked: function(e, $editable, $field) { @@ -831,7 +843,9 @@ Drupal.edit.editables = { } // Content changed: show modal. else { - Drupal.edit.modal.create( + Drupal.edit.editables._saveEdits(); + + /*Drupal.edit.modal.create( Drupal.t('You have unsaved changes'), Drupal.theme('editButtons', { 'buttons' : [ { url: '#', classes: 'gray-button discard', label: Drupal.t('Discard changes') }, @@ -839,7 +853,7 @@ Drupal.edit.editables = { ]}), $editable ); - setTimeout(Drupal.edit.modal.show, 0); + setTimeout(Drupal.edit.modal.show, 0);*/ }; return false; }