From 4a17d7d74a6165ec275ca038bbef6f62bad93412 Mon Sep 17 00:00:00 2001 From: Thierry Francois Date: Sun, 4 May 2014 14:34:31 +0300 Subject: [PATCH] Streamline classes/id + simplify dom --- .../code/GridFieldBulkActionEditHandler.php | 19 +++++--- bulkManager/css/GridFieldBulkEditingForm.css | 10 ++-- bulkManager/css/GridFieldBulkEditingForm.scss | 2 +- .../javascript/GridFieldBulkEditingForm.js | 48 ++++++++++--------- 4 files changed, 43 insertions(+), 36 deletions(-) diff --git a/bulkManager/code/GridFieldBulkActionEditHandler.php b/bulkManager/code/GridFieldBulkActionEditHandler.php index 524a096..2de85da 100644 --- a/bulkManager/code/GridFieldBulkActionEditHandler.php +++ b/bulkManager/code/GridFieldBulkActionEditHandler.php @@ -63,8 +63,9 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler $config = $this->component->getConfig(); $editingCount = count($recordList); - $singleton = singleton($this->gridField->getModelClass()); - $editingClassName = (($editingCount > 1) ? $singleton->i18n_plural_name() : $singleton->i18n_singular_name()); + $modelClass = $this->gridField->getModelClass(); + $singleton = singleton($modelClass); + $titleModelClass = (($editingCount > 1) ? $singleton->i18n_plural_name() : $singleton->i18n_singular_name()); $header = LiteralField::create( 'bulkEditHeader', @@ -72,7 +73,7 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler 'Editing {count} {class}', array( 'count' => $editingCount, - 'class' => $editingClassName + 'class' => $titleModelClass ) ) . '' ); @@ -83,6 +84,8 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler foreach ( $recordList as $id ) { + $record = DataObject::get_by_id($modelClass, $id); + $recordCMSDataFields = GridFieldBulkEditingHelper::getModelCMSDataFields( $config, $this->gridField->list->dataClass ); $recordCMSDataFields = GridFieldBulkEditingHelper::getModelFilteredDataFields($config, $recordCMSDataFields); $recordCMSDataFields = GridFieldBulkEditingHelper::populateCMSDataFields( $recordCMSDataFields, $this->gridField->list->dataClass, $id ); @@ -92,17 +95,19 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler $recordsFieldList->push( ToggleCompositeField::create( - 'GFBM_'.$id, - DataObject::get_by_id($this->gridField->list->dataClass, $id)->getTitle(), + 'RecordFields_'.$id, + $record->getTitle(), array_values($recordCMSDataFields) - )->setHeadingLevel(4) + ) + ->setHeadingLevel(4) + ->setAttribute('data-id', $id) ->addExtraClass('bulkEditingFieldHolder') ); } $form = new Form( $this, - 'bulkEditingForm', + 'BulkEditingForm', $recordsFieldList, $actions ); diff --git a/bulkManager/css/GridFieldBulkEditingForm.css b/bulkManager/css/GridFieldBulkEditingForm.css index 05bb6dc..451c249 100644 --- a/bulkManager/css/GridFieldBulkEditingForm.css +++ b/bulkManager/css/GridFieldBulkEditingForm.css @@ -13,11 +13,11 @@ text-decoration: underline; cursor: pointer; } -.bulkEditingForm { +.bulkEditingFieldHolder { position: relative; float: left; width: 100%; } - .bulkEditingForm.hasUpdate .ui-accordion-header { + .bulkEditingFieldHolder.hasUpdate .ui-accordion-header { background-color: #f2ba11; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f2ba11), color-stop(100%, #df6e00)); background-image: -webkit-linear-gradient(top, #f2ba11 0%, #df6e00 100%); @@ -25,10 +25,10 @@ background-image: -o-linear-gradient(top, #f2ba11 0%, #df6e00 100%); background-image: -ms-linear-gradient(top, #f2ba11 0%, #df6e00 100%); background-image: linear-gradient(top, #f2ba11 0%, #df6e00 100%); } - .bulkEditingForm.hasUpdate .ui-accordion-header a { + .bulkEditingFieldHolder.hasUpdate .ui-accordion-header a { color: #fff; text-shadow: none; } - .bulkEditingForm.updated .ui-accordion-header { + .bulkEditingFieldHolder.updated .ui-accordion-header { background-color: #a4ca3a; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #a4ca3a), color-stop(100%, #59781d)); background-image: -webkit-linear-gradient(top, #a4ca3a 0%, #59781d 100%); @@ -36,6 +36,6 @@ background-image: -o-linear-gradient(top, #a4ca3a 0%, #59781d 100%); background-image: -ms-linear-gradient(top, #a4ca3a 0%, #59781d 100%); background-image: linear-gradient(top, #a4ca3a 0%, #59781d 100%); } - .bulkEditingForm.updated .ui-accordion-header a { + .bulkEditingFieldHolder.updated .ui-accordion-header a { color: #fff; text-shadow: none; } diff --git a/bulkManager/css/GridFieldBulkEditingForm.scss b/bulkManager/css/GridFieldBulkEditingForm.scss index 31c2a26..04791e5 100644 --- a/bulkManager/css/GridFieldBulkEditingForm.scss +++ b/bulkManager/css/GridFieldBulkEditingForm.scss @@ -22,7 +22,7 @@ cursor: pointer; } -.bulkEditingForm +.bulkEditingFieldHolder { position: relative; float: left; diff --git a/bulkManager/javascript/GridFieldBulkEditingForm.js b/bulkManager/javascript/GridFieldBulkEditingForm.js index 68f4497..f95f54b 100644 --- a/bulkManager/javascript/GridFieldBulkEditingForm.js +++ b/bulkManager/javascript/GridFieldBulkEditingForm.js @@ -1,13 +1,17 @@ (function($) { $.entwine('colymba', function($) { + /** + * Toggle all accordion forms + * open or closed + */ $('#bulkEditToggle') .entwine({ onmatch: function(){}, onunmatch: function(){}, onclick: function(e) { - var toggleFields = $(this).parents('#Form_bulkEditingForm').find('.ss-toggle h4'), - state = this.data('state') + var toggleFields = this.parents('#Form_BulkEditingForm').find('.ss-toggle h4'), + state = this.data('state') ; if ( !state || state === 'close' ) @@ -38,20 +42,13 @@ }); + /** + * Contains each rocrds editing fields, + * tracks changes and updates... + */ $('.bulkEditingFieldHolder').entwine({ - onmatch: function(){ - var id = this.attr('id').split('_')[3], - name = 'bulkEditingForm', - $wrap = $('
') - ; - - $wrap.attr('id', name + '_' + id).addClass(name).data('id', id); - this.wrap($wrap); - }, - onunmatch: function(){} - }); - - $('.bulkEditingForm').entwine({ + onmatch: function(){}, + onunmatch: function(){}, onchange: function(){ this.removeClass('updated'); if ( !this.hasClass('hasUpdate') ) @@ -61,19 +58,24 @@ } }); + + /** + * Save all button + * process all field holders with updates + */ $('#bulkEditingUpdateBtn').entwine({ onmatch: function(){}, onunmatch: function(){}, onclick: function(e){ e.stopImmediatePropagation(); - var $formsWithUpadtes = $('div.bulkEditingForm.hasUpdate'), + var $fieldHolders = $('div.bulkEditingFieldHolder.hasUpdate'), url = this.data('url'), data = {}, cacheBuster = new Date().getTime() + '_' + this.attr('name') ; - if ( $formsWithUpadtes.length > 0 ) + if ( $fieldHolders.length > 0 ) { this.addClass('loading'); } @@ -89,7 +91,7 @@ cacheBuster = '?cacheBuster=' + cacheBuster; } - $formsWithUpadtes.each(function(){ + $fieldHolders.each(function(){ var $this = $(this); data[$this.data('id')] = $this.find(':input').serializeArray(); }); @@ -105,13 +107,13 @@ }catch(er){} $.each(data.records, function(index, record){ - var $form = $('#bulkEditingForm_'+record.id) - $formHeader = $form.find('.ui-accordion-header') + var $fieldHolder = $('#Form_BulkEditingForm_RecordFields_'+record.id), + $header = $fieldHolder.find('.ui-accordion-header') ; - $form.removeClass('hasUpdate').addClass('updated'); - $formHeader.find('a').html(record.title); - $formHeader.click(); + $fieldHolder.removeClass('hasUpdate').addClass('updated'); + $header.find('a').html(record.title); + $header.click(); }); this.removeClass('loading');