Giter Site home page Giter Site logo

laravel-emojione's Introduction

laravel-emojione โค๏ธ

Latest Version on Packagist Total Downloads Software License

๐Ÿ˜€ ๐Ÿ‹๐Ÿผ โค๏ธ โ˜ฎ

Laravel package to make it easier working with the gorgeous emojis from EmojiOne.

Remember to read the EmojiOne Free License and provide the appropriate attribution. Or buy a premium license

Upgrading from 3.x to 4.x

  1. Update your composer dependency to: "christofferok/laravel-emojione": "^4.0" and run composer update
  2. Update config/emojione.php (if you have one) with 'emojiVersion' => '4.0'

If you are serving the assets yourself then you need to do the following things:

  1. Update your emojione/assets composer dependency to: "emojione/assets": "^4.0" and run composer update
  2. Update config/emojione.php with the correct paths and versions
  3. Publish the assets again. See "Assets" section further down

EmojiOne 4.x/3.x vs 2.0

EmojiOne made a lot of changes in their licensing and which resources are provided in the free license. v2 code is still available in the emojione-v2 branch. If you are upgrading this package, be aware that the SVG assets are not available anymore.

Install

Via Composer

$ composer require christofferok/laravel-emojione

If you are on Laravel 5.4 or lower you need to add the following to your config/app.php file:

Add the ServiceProvider to the providers array in config/app.php

ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider::class,

Add this to the aliases array in config/app.php

'LaravelEmojiOne' => ChristofferOK\LaravelEmojiOne\LaravelEmojiOneFacade::class,

Config:

$ php artisan vendor:publish --tag=config --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"

Usage

LaravelEmojiOne::toShort($str); // - native unicode -> shortnames
LaravelEmojiOne::shortnameToImage($str); // - shortname -> images
LaravelEmojiOne::unicodeToImage($str); // - native unicode -> images
LaravelEmojiOne::toImage($str); // - native unicode + shortnames -> images (mixed input)

Blade (equivalent to LaravelEmojiOne::toImage($str)):

@emojione(':smile:') -> ๐Ÿ˜€

@emojione(':smile: โค๏ธ') -> ๐Ÿ˜€โค๏ธ

๐Ÿšจ The output is not escaped so be careful with what you pass into @emojione.

More details about how toImage($str) works can be found at https://github.com/Ranks/emojione/blob/master/examples/PHP.md

Example

You want to let users put emoji a comment. When you are saving a comment, you might want to run the content through LaravelEmojiOne::toShort($str) to convert ๐Ÿ˜„ and other emoji to :smile: etc.

Comment::create([
  'content' => LaravelEmojiOne::toShort(request('content'))
]);

So if someone leaves a comment like This is an awesome comment ๐Ÿ˜„๐Ÿ”ฅ it will be saved as This is an awesome comment :smile: :fire:

In your view where you display your comments you can use

@emojione($comment->content)

and that will convert :smile: and ๐Ÿ˜„ to the emojione equivalent.

Assets

By default it will use the assets from JSDelivr.

Remember to run this before trying to publish any of the assets:

composer require emojione/assets

If you want to serve the assets yourself you can publish them with the following commands. Remember to update config/emojione.php

PNG files in sizes 32/64/128:

$ php artisan vendor:publish --tag=public --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"

In config/emojione.php specify the local path. Remember to specify which size you want in the path (32/64/128).

'imagePathPNG' => '/vendor/emojione/png/64/',

Sprites

If you want to use sprites:

$ php artisan vendor:publish --tag=sprites --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"

In config/emojione.php enable sprites:

'sprites' => true,
'spriteSize' => 32, // 32 or 64

Add the stylesheet to your HTML:

<link rel="stylesheet" href="/vendor/emojione/sprites/emojione-sprite-{{ config('emojione.spriteSize') }}.min.css"/>

License

Remember to read the EmojiOne Free License and provide the appropriate attribution. Or buy a premium license

laravel-emojione's People

Contributors

christofferok avatar enaah avatar hdvinnie avatar overtrue avatar pincombe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

laravel-emojione's Issues

emojione v3.1.3 breaks this package

Description:

emojione v3.1.3 breaks this package returning Undefined variable: shortname

v3.1.2 returns before trying to access the $shortname var

$ruleset = $this->getRuleset();
$shortcode_replace = $ruleset->getShortcodeReplace();
$unicode_replace = $ruleset->getUnicodeReplace();
$unicode_replace_greedy = $ruleset->getUnicodeReplaceGreedy();
$unicode = strtoupper($m[0]);
  
if ( array_key_exists($unicode, $unicode_replace))
{
  $shortname = $unicode_replace[$unicode];
}
else if ( $this->greedyMatch && array_key_exists($unicode, $unicode_replace_greedy) )
{
  $shortname = $unicode_replace_greedy[$unicode];
}
else
{
  return $m[0]; // <-- returns here
}

$filename = $shortcode_replace[$shortname][2];
$category = (strpos($filename, '-1f3f') !== false) ? 'diversity' : $shortcode_replace[$shortname][3];
$titleTag = $this->imageTitleTag ? 'title="'.htmlspecialchars($shortname).'"' : '';

https://github.com/emojione/emojione/blob/3.1.2/lib/php/src/Client.php#L466

v3.1.3 no longer returns before setting the $shortname

if ( array_key_exists($unicode, $unicode_replace) && !in_array($unicode, $bList) )
{
    $shortname = $unicode_replace[$unicode];
}
else if ( $this->greedyMatch && array_key_exists($unicode, $unicode_replace_greedy) && !in_array($unicode, $bList) )
{
    $shortname = $unicode_replace_greedy[$unicode];
}
else
{
    $unicode; // <-- Gets to this point
}
$filename = $shortcode_replace[$shortname][2]; // <-- shortname is not set
$category = (strpos($filename, '-1f3f') !== false) ? 'diversity' : $shortcode_replace[$shortname][3];
$titleTag = $this->imageTitleTag ? 'title="'.htmlspecialchars($shortname).'"' : '';

https://github.com/emojione/emojione/blob/3.1.3/lib/php/src/Client.php#L469

Question

Upon installing this does this mean I can just type :s m i l i e: in my textarea on my app for comments and it will automatically show as ๐Ÿ˜„ when posted? Im new to laravel so please excuse my noobness.

<!-- Add comment -->
<div class="col-md-12">
  {!! Form::open(array('route' => array('comment_torrent', 'slug' => $torrent->slug, 'id' => $torrent->id))) !!}
  <div class="form-group">
    <label for="content">Your comment:</label>
    <textarea name="content" cols="30" rows="5" class="form-control"></textarea>
  </div>
  <button type="submit" class="btn btn-danger">{!! trans('traduction.save') !!}</button><label class="checkbox-inline"><input type="checkbox" name="confirmation"><strong>Anonymous Comment</strong></label>
  {!! Form::close() !!}
</div>
<!-- /Add comment -->

Call to undefined function resolve()

Hi,
I'm on laravel 5.2,
when using @emojione($text) in blade, it shows an error with the title Call to undefined function resolve()
and I fixed it by changing line 24 in LaravelEmojiOneServiceProvider.php file from:
return "<?php echo resolve('".LaravelEmojiOne::class."')->toImage($expression); ?>";
to
return "<?php echo \LaravelEmojiOne::toImage($expression); ?>";

EmojiOne 3.1

Can you push a update so any of us using your great package can get the latest and greatest emojis?

Emoji parser not working on production server

I really find it strange since package is working perfectly in local server. After pushing changes to server emojis are not parsed on server.


namespace App\Transformers;

use App\Models\Post;
use League\Fractal\TransformerAbstract;
use ChristofferOK\LaravelEmojiOne\LaravelEmojiOneFacade;

class FeedPostTransformer extends TransformerAbstract
{
    /**
     * A Fractal transformer.
     *
     * @return array
     */
    public function transform(Post $post)
    {
        return [
            'description' => LaravelEmojiOneFacade::toImage($post->body)
        ];
    }

    
}

This is the code i use for parsing emojis. Actually using spatie/fractal wrapper for returning data.
sttrng2
strnge

Same request, first made on server and second made locally. I update composer on server, also cleared cache but cant get it working. Tested parsing emoji with tinker and works. Maybe it is fractal issue?

PHP 8 Support

Are you planing to support PHP 8 in the near future? Currently getting christofferok/laravel-emojione[4.0.0, ..., 4.0.4] require php ~5.6|~7.0 -> your php version (8.0.5) does not satisfy that requirement. when trying to update composer.

LaravelEmojiOne::imageToShortname

I would like to do the conversion below to insert the values into shortname in the database.
LaravelEmojiOne::imageToShortname($str);
But how to do that?
I'd like some help.
Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.