Skip to content

Commit

Permalink
Fixing issue where javascript requirements are included multiple time…
Browse files Browse the repository at this point in the history
…s. Added functionality to allow seperate rendering of javascript requirements.
  • Loading branch information
Bradley Cornford committed Oct 5, 2016
1 parent 1be1aeb commit 7a01e07
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 11 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ This will give you access to
- [Rectangle](#rectangle)
- [Circle](#circle)
- [Render](#render)
- [RenderJavascript](#renderJavascript)

### Map

Expand Down Expand Up @@ -249,6 +250,12 @@ The `render` method allows all maps to be rendered to the page, this method can
Mapper::render();
Mapper::render(0);

### RenderJavascript

The `renderJavascript` method allows all required javascript to be rendered to the page, this method can be included in Views or added as controller passed parameter.

Mapper::renderJavascript();

### License

Googlmapper is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT)
5 changes: 5 additions & 0 deletions spec/Cornford/Googlmapper/MapperSpec.php
Original file line number Diff line number Diff line change
Expand Up @@ -270,4 +270,9 @@ public function it_can_create_a_streetview_map()
$this->render()->shouldReturn(self::STRING);
}

public function it_can_create_javascript_inclusions()
{
$this->map(self::INTEGER, self::INTEGER)->shouldReturn($this);
$this->renderJavascript()->shouldReturn(self::STRING);
}
}
7 changes: 7 additions & 0 deletions src/Cornford/Googlmapper/Contracts/MappingInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@ interface MappingInterface {
*/
public function render($item = -1);

/**
* Renders and returns Google Map javascript code.
*
* @return string
*/
public function renderJavascript();

/**
* Locate a location and return a Location instance.
*
Expand Down
38 changes: 34 additions & 4 deletions src/Cornford/Googlmapper/Mapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,39 @@ public function render($item = -1)
return;
}

return $this->view->make('googlmapper::mapper')
->withView($this->view)
->withOptions($this->generateRenderOptions($item))
->withItems($item > -1 ? [$item => $this->getItem($item)] : $this->getItems())
->render();
}

/**
* Renders and returns Google Map javascript code.
*
* @return string
*/
public function renderJavascript()
{
if (!$this->isEnabled()) {
return;
}

return $this->view->make('googlmapper::javascript')
->withView($this->view)
->withOptions($this->generateRenderOptions())
->render();
}

/**
* Generates the render options for Google Map.
*
* @param integer $item
*
* @return string
*/
protected function generateRenderOptions($item = -1)
{
$options = $this->getOptions();

foreach (($item > -1 ? [$this->getItem($item)] : $this->getItems()) as $model) {
Expand All @@ -43,10 +76,7 @@ public function render($item = -1)
}
}

return $this->view->make('googlmapper::mapper')
->withView($this->view)
->withOptions($options)
->withItems($item > -1 ? [$item => $this->getItem($item)] : $this->getItems())->render();
return $options;
}

/**
Expand Down
13 changes: 13 additions & 0 deletions src/views/javascript.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
@if (!$view->shared('javascript', false))

@if ($view->share('javascript', true)) @endif

<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?v={!! $options['version'] !!}&region={!! $options['region'] !!}&language={!! $options['language'] !!}&key={!! $options['key'] !!}&signed_in={!! $options['user'] ? 'true' : 'false' !!}&libraries=places"></script>

@if ($options['cluster'])

<script type="text/javascript" src="//googlemaps.github.io/js-marker-clusterer/src/markerclusterer.js"></script>

@endif

@endif
8 changes: 1 addition & 7 deletions src/views/mapper.blade.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?v={!! $options['version'] !!}&region={!! $options['region'] !!}&language={!! $options['language'] !!}&key={!! $options['key'] !!}&signed_in={!! $options['user'] ? 'true' : 'false' !!}&libraries=places"></script>

@if ($options['cluster'])

<script type="text/javascript" src="//googlemaps.github.io/js-marker-clusterer/src/markerclusterer.js"></script>

@endif
@include('javascript')

@foreach ($items as $id => $item)

Expand Down

0 comments on commit 7a01e07

Please sign in to comment.