Skip to content

Commit

Permalink
Implement Kyslik#52, introduce new configuration key-value pair
Browse files Browse the repository at this point in the history
  - enable formatted title injecting
  • Loading branch information
Kyslik committed Mar 3, 2017
1 parent ac7a23c commit 56ce65e
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 3 deletions.
6 changes: 5 additions & 1 deletion src/ColumnSortable/SortableLink.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,14 @@ public static function render(array $parameters)
list($sortColumn, $sortParameter, $title, $queryParameters) = self::parseParameters($parameters);

$title = self::applyFormatting($title);

if ($mergeTitleAs = Config::get('columnsortable.inject_title_as', null)) {
Request::merge([$mergeTitleAs => $title]);
}

$icon = Config::get('columnsortable.default_icon_set');

foreach (Config::get('columnsortable.columns') as $value) {
foreach (Config::get('columnsortable.columns', []) as $value) {
if (in_array($sortColumn, $value['rows'])) {
$icon = $value['class'];
}
Expand Down
6 changes: 6 additions & 0 deletions src/config/columnsortable.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@
*/
'formatting_function' => 'ucfirst',

/*
inject title parameter in query strings, use null to turn injection off
example: 'inject_title' => 't' will result in ..user/?t="formatted title of sorted column"
*/
'inject_title_as' => null,

/*
allow request modification, when default sorting is set but is not in URI (first load)
*/
Expand Down
3 changes: 1 addition & 2 deletions tests/ColumnSortableTraitTest.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?php

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Input;

/**
Expand Down Expand Up @@ -37,7 +36,7 @@ public function setUp()
$this->user = new User();
$this->profile = new Profile();

$this->configDefaultDirection = Config::get('columnsortable.default_direction', 'asc');
$this->configDefaultDirection = 'asc';
}

public function testSortableWithoutDefaultAndRequestParameters()
Expand Down
21 changes: 21 additions & 0 deletions tests/SortableLinkTest.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
<?php

use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Request;
use Kyslik\ColumnSortable\Exceptions\ColumnSortableException;
use Kyslik\ColumnSortable\SortableLink;

Expand All @@ -7,6 +10,24 @@
*/
class SortableLinkTest extends \Orchestra\Testbench\TestCase
{

public function testInjectTitleInQueryStrings()
{
Config::set('columnsortable.inject_title_as', 'title');
SortableLink::render(['column', 'ColumnTitle']);

$expected = ['title' => 'ColumnTitle'];
$this->assertEquals($expected, Request::all());
}

public function testInjectTitleInQueryStringsIsOff()
{
Config::set('columnsortable.inject_title_as', null);
SortableLink::render(['column', 'ColumnTitle']);

$this->assertEquals([], Request::all());
}

public function testParseParameters()
{
$parameters = ['column'];
Expand Down

0 comments on commit 56ce65e

Please sign in to comment.