Skip to content

Instantly share code, notes, and snippets.

@fwartner
Forked from franquis/PostController.php
Last active August 29, 2015 14:23
Show Gist options
  • Save fwartner/94ff3851eb2e36d1ff70 to your computer and use it in GitHub Desktop.
Save fwartner/94ff3851eb2e36d1ff70 to your computer and use it in GitHub Desktop.
@section('content')
{{Form::open('PostController@edit')}}
<input type="hidden" name="post_id" value="1">
<legend>Message</legend>
<textarea id="editor" name="message"></textarea>
<button type="submit">Save</button>
{{Form::close()}}
@stop
@section('scripts')
$('#editor').summernote();
@stop
<?php
/**
* This exemple shows how to parse base64 encoded images (submitted using Summernote), save them locally
* and replace the 'src' attribute in the submited HTML content
*
**/
use Intervention\Image\ImageManagerStatic as Image;
class PostController {
public function edit(){
$post = Post::findOrFail(Input::get('post_id')); // Post object exemple
$message = Input::get('message'); // Summernote input field
$dom = new DomDocument();
$dom->loadHtml($message, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getElementsByTagName('img');
// foreach <img> in the submited message
foreach($images as $img){
$src = $img->getAttribute('src');
// if the img source is 'data-url'
if(preg_match('/data:image/', $src)){
// get the mimetype
preg_match('/data:image\/(?<mime>.*?)\;/', $src, $groups);
$mimetype = $groups['mime'];
// Generating a random filename
$filename = uniqid();
$filepath = "/images/$filename.$mimetype";
// @see http://image.intervention.io/api/
$image = Image::make($src)
// resize if required
/* ->resize(300, 200) */
->encode($mimetype, 100) // encode file to the specified mimetype
->save(public_path($filepath));
$new_src = asset($filepath);
$img->removeAttribute('src');
$img->setAttribute('src', $new_src);
} // <!--endif
} // <!--endforeach
$post->message = $dom->saveHTML();
$post->save();
Session::flash('message','Post updated!');
return Redirect::back();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment