Skip to content
Snippets Groups Projects
Commit 13cfcebc authored by Demian Katz's avatar Demian Katz Committed by GitHub
Browse files

Prevent empty labels on result checkboxes. (#1126)

parent bae20a8d
No related merge requests found
...@@ -844,6 +844,7 @@ Requests = "Requests" ...@@ -844,6 +844,7 @@ Requests = "Requests"
Reserves = "Reserves" Reserves = "Reserves"
Reserves Search = "Reserves Search" Reserves Search = "Reserves Search"
Reserves Search Results = "Reserves Search Results" Reserves Search Results = "Reserves Search Results"
result_checkbox_label = "Select result number %%number%%"
result_count = "%%count%% results" result_count = "%%count%% results"
Results = "Results" Results = "Results"
results = "results" results = "results"
......
...@@ -413,16 +413,16 @@ class Record extends AbstractHelper ...@@ -413,16 +413,16 @@ class Record extends AbstractHelper
* *
* @param string $idPrefix Prefix for checkbox HTML ids * @param string $idPrefix Prefix for checkbox HTML ids
* @param string $formAttr ID of form for [form] attribute * @param string $formAttr ID of form for [form] attribute
* @param int $number Result number (for label of checkbox)
* *
* @return string * @return string
*/ */
public function getCheckbox($idPrefix = '', $formAttr = false) public function getCheckbox($idPrefix = '', $formAttr = false, $number = null)
{ {
static $checkboxCount = 0;
$id = $this->driver->getSourceIdentifier() . '|' $id = $this->driver->getSourceIdentifier() . '|'
. $this->driver->getUniqueId(); . $this->driver->getUniqueId();
$context $context
= ['id' => $id, 'count' => $checkboxCount++, 'prefix' => $idPrefix]; = ['id' => $id, 'number' => $number, 'prefix' => $idPrefix];
if ($formAttr) { if ($formAttr) {
$context['formAttr'] = $formAttr; $context['formAttr'] = $formAttr;
} }
......
...@@ -273,17 +273,17 @@ class RecordTest extends \PHPUnit\Framework\TestCase ...@@ -273,17 +273,17 @@ class RecordTest extends \PHPUnit\Framework\TestCase
{ {
$context = $this->getMockContext(); $context = $this->getMockContext();
$context->expects($this->at(1))->method('renderInContext') $context->expects($this->at(1))->method('renderInContext')
->with($this->equalTo('record/checkbox.phtml'), $this->equalTo(['id' => 'Solr|000105196', 'count' => 0, 'prefix' => 'bar', 'formAttr' => 'foo'])) ->with($this->equalTo('record/checkbox.phtml'), $this->equalTo(['id' => 'Solr|000105196', 'number' => 1, 'prefix' => 'bar', 'formAttr' => 'foo']))
->will($this->returnValue('success')); ->will($this->returnValue('success'));
$context->expects($this->at(2))->method('renderInContext') $context->expects($this->at(2))->method('renderInContext')
->with($this->equalTo('record/checkbox.phtml'), $this->equalTo(['id' => 'Solr|000105196', 'count' => 1, 'prefix' => 'bar', 'formAttr' => 'foo'])) ->with($this->equalTo('record/checkbox.phtml'), $this->equalTo(['id' => 'Solr|000105196', 'number' => 2, 'prefix' => 'bar', 'formAttr' => 'foo']))
->will($this->returnValue('success')); ->will($this->returnValue('success'));
$record = $this->getRecord( $record = $this->getRecord(
$this->loadRecordFixture('testbug1.json'), [], $context $this->loadRecordFixture('testbug1.json'), [], $context
); );
// We run the test twice to ensure that checkbox incrementing works properly: // We run the test twice to ensure that checkbox incrementing works properly:
$this->assertEquals('success', $record->getCheckbox('bar', 'foo')); $this->assertEquals('success', $record->getCheckbox('bar', 'foo', 1));
$this->assertEquals('success', $record->getCheckbox('bar', 'foo')); $this->assertEquals('success', $record->getCheckbox('bar', 'foo', 2));
} }
/** /**
......
<label class="record-checkbox hidden-print"> <label class="record-checkbox hidden-print">
<input class="checkbox-select-item" type="checkbox" name="ids[]" value="<?=$this->escapeHtmlAttr($this->id) ?>"<?php if(isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?>/> <input class="checkbox-select-item" type="checkbox" name="ids[]" value="<?=$this->escapeHtmlAttr($this->id) ?>"<?php if(isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?>/>
<span class="checkbox-icon"></span> <span class="checkbox-icon"></span>
<?php if (strlen($this->number ?? '') > 0): ?><span class="sr-only"><?=$this->transEsc('result_checkbox_label', ['%%number%%' => $this->number]) ?></span><?php endif; ?>
</label> </label>
<input type="hidden" name="idsAll[]" value="<?=$this->escapeHtmlAttr($this->id) ?>"<?php if(isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?>/> <input type="hidden" name="idsAll[]" value="<?=$this->escapeHtmlAttr($this->id) ?>"<?php if(isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?>/>
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<?php $recordNumber = $this->results->getStartRecord() + $i - $this->indexStart; ?> <?php $recordNumber = $this->results->getStartRecord() + $i - $this->indexStart; ?>
<div id="result<?=$i++ ?>" class="result<?=$current->supportsAjaxStatus()?' ajaxItem':''?>"> <div id="result<?=$i++ ?>" class="result<?=$current->supportsAjaxStatus()?' ajaxItem':''?>">
<?php if (isset($this->showCheckboxes) && $this->showCheckboxes): ?> <?php if (isset($this->showCheckboxes) && $this->showCheckboxes): ?>
<?=$this->record($current)->getCheckbox('', 'search-cart-form')?> <?=$this->record($current)->getCheckbox('', 'search-cart-form', $recordNumber)?>
<?php endif; ?> <?php endif; ?>
<div class="record-number"> <div class="record-number">
<?=$recordNumber ?> <?=$recordNumber ?>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment