English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
Introdução
Este pacote simplifica o processo de adicionar links de compartilhamento à sua aplicação Laravel. Sinta-se à vontade para abrir um pull request se notar que estamos perdendo um serviço!
Um link de compartilhamento é uma URL que combina uma URL base de mídia social com parâmetros de consulta para compartilhar conteúdo do seu site ou aplicativo. Os parâmetros geralmente incluem a URL do conteúdo e uma mensagem predefinida. Esses links, como mostrado nos exemplos, permitem que os usuários compartilhem facilmente postagens em plataformas como Twitter, Facebook e Telegram. Use este pacote de código aberto para criar rapidamente links de compartilhamento através do sistema de componentes blade do Laravel.
Exemplo
<x-link-sharer service="twitter" text="Compartilhe comigo!" url="https://www.defectivecode.com" hashtags="incrível,links" class="p-4"> <!-- Seu código HTML aqui para controlar a aparência do botão de compartilhamento --> <span class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Clique em mim!</span></x-link-sharer>
Instalação
- Primeiro, instale o pacote PHP executando o seguinte comando do composer:
composer require defectivecode/link-sharer
- É isso! Nosso pacote será instalado automaticamente usando a descoberta de pacotes do Laravel.
Serviços
Os provedores de serviços ocasionalmente atualizam seus links de compartilhamento sem aviso prévio. Fazemos todo o esforço para nos manter atualizados com essas mudanças. No entanto, se você encontrar um serviço não funcional, por favor, abra um problema ou envie um pull request. Para adicionar um novo serviço, consulte a seção contribuindo abaixo.
Alguns serviços fornecem parâmetros extras que podem ser passados para o componente. Estes estão documentados na tabela abaixo.
| Serviço | Texto Suportado | URL Suportada | Notas |
|---|---|---|---|
| Blogger | ✔️ | ✔️ | t O texto da postagem do blog. |
| Diaspora | ✔️ | ✔️ | |
| Diigo | ✔️ | ✔️ | description Uma descrição para adicionar à postagem. |
| Douban | ✔️ | ✔️ | comment Um comentário para adicionar à postagem. |
| Evernote | ✔️ | ✔️ | |
| ❌ | ✔️ | ||
| ✔️ | ✔️ | quote Uma citação para adicionar à postagem. |
|
| Gmail | ✔️ | ✔️ | bcc Uma lista de endereços de e-mail separados por vírgula para BCC. cc Uma lista de endereços de e-mail separados por vírgula para CC. su O assunto do e-mail. to Uma lista de endereços de e-mail separados por vírgula para enviar. |
| HackNews | ✔️ | ✔️ | |
| Instapaper | ✔️ | ✔️ | description Uma descrição da postagem. |
| LineMe | ❌️ | ✔️ | |
| ❌ | ✔️ | ||
| LiveJournal | ✔️ | ✔️ | |
| Meneame | ❌️ | ✔️ | |
| Okru | ❌️ | ✔️ | |
| Outlook | ✔️ | ✔️ | |
| ✔️ | ✔️ | media Uma URL de imagem a ser exibida na postagem. |
|
| Plurk | ❌ ️ | ✔️ | |
| ✔️ | ✔️ | ||
| QZone | ✔️ | ✔️ | summary Um resumo da postagem. |
| ✔️ | ✔️ | ||
| Renren | ✔️ | ✔️ | description Uma descrição da postagem. srcUrl A URL original da postagem. |
| Skype | ✔️ | ✔️ | |
| Telegram | ✔️ | ✔️ | |
| Threema | ❌ | ✔️ | id O id da pessoa para quem enviar a postagem. |
| Tumblr | ✔️ | ✔️ | caption Uma legenda para adicionar à postagem. tags Uma lista de tags separadas por vírgula a serem aplicadas à postagem. |
| ✔️ | ✔️ | hashtags Uma lista de hashtags separadas por vírgula a serem aplicadas ao tweet. via O usuário a quem dar crédito. |
|
| Viber | ✔️ | ✔️ | |
| VKontakte | ✔️ | ✔️ | description Uma descrição da postagem. image Uma URL de imagem a ser exibida na postagem. |
| ✔️ | ✔️ | ||
| ✔️ | ✔️ | ||
| ❌ | ✔️ | ||
| YahooMail | ✔️ | ✔️ |
Contribuindo
Adicionar um serviço é relativamente simples. Comece criando uma nova classe de serviço dentro da pasta src/Services. Nomeie a classe após o serviço que você está adicionando. O sistema registra automaticamente o serviço através da fábrica, portanto, não há necessidade de registro manual.
O serviço Gmail fornecido abaixo serve como um bom exemplo.
<?php namespace DefectiveCode\LinkSharer\Services; use DefectiveCode\LinkSharer\Traits\AppendsLinks; class Gmail extends Service{ use AppendsLinks; protected string $baseUrl = 'https://mail.google.com/mail/u/0'; protected array $baseParameterMapping = [ 'text' => 'body', ]; protected array $additionalParameters = [ 'bcc', 'cc', 'su', 'to', ]; protected array $defaultParameters = [ 'view' => 'cm', ];}
Observe que apenas o baseUrl é obrigatório. O baseParameterMapping, additionalParameters e defaultParameters são opcionais, mas podem aprimorar a funcionalidade.
$baseUrl
A URL de um serviço não precisa começar com HTTPS. Por exemplo, o Viber usa
viber://forward.
A propriedade baseUrl especifica a URL primária do serviço. Esta URL é fundamental ao gerar o link de compartilhamento, ao qual os parâmetros de consulta serão anexados. Usando o Gmail como exemplo, sua URL base é https://mail.google.com/mail/u/0.
$baseParameterMapping
Este pacote identifica dois atributos principais: text e url, dada sua ubiquidade na maioria dos provedores de serviços. Defina esses atributos apenas se o serviço em questão empregar uma convenção de nomenclatura diferente. Por exemplo, o Gmail utiliza body no lugar de text, necessitando esta mapeamento explícito. Quando usar o Gmail, qualquer atributo text passado para o componente blade é transformado no parâmetro de consulta body no link de compartilhamento.
$additionalParameters
Alguns serviços aceitam parâmetros de consulta mais específicos. Tomando o Gmail como referência, ele suporta bcc, cc, su e to. Defina esses na matriz additionalParameters. Quando os usuários incluírem esses atributos no componente blade, eles serão adicionados ao link de compartilhamento. Certifique-se de que esses parâmetros também estão listados na tabela de serviços suportados, completos com descrições concisas.
$defaultParameters
Certos serviços exigem parâmetros específicos de consulta para que o link de compartilhamento funcione. Por exemplo, o Gmail exige a inclusão de view=cm. Esses atributos obrigatórios são declarados na matriz defaultParameters. Eles sempre são anexados ao link de compartilhamento e não podem ser omitidos.
prepareAttributes()
Para manipular os atributos antes de gerar um link de compartilhamento, introduza um método prepareAttributes em seu serviço. Este método é ativado antes de passar os atributos para o método generateLink, permitindo modificações personalizadas nos atributos. Abaixo está uma demonstração usando o trait AppendsLinks.
<?php namespace DefectiveCode\LinkSharer\Traits; trait AppendsLinks{ protected function prepareAttributes(): void { if (isset($this->attributes['text']) && isset($this->attributes['url'])) { $this->attributes['text'] = $this->attributes['text'] . "\n" . $this->attributes['url']; return; } if (isset($this->attributes['url'])) { $this->attributes['text'] = $this->attributes['url']; } }}
Os atributos passados para o serviço são acessíveis através da matriz $attributes. No exemplo ilustrado:
- Se ambos os atributos
texteurlestiverem presentes, aurlé anexada ao atributotext. - Caso apenas o atributo
urlesteja disponível, o atributotextassume o valor daurl.
Diretrizes de Suporte
Obrigado por escolher nosso pacote de código aberto! Por favor, reserve um momento para conferir estas diretrizes de suporte. Elas ajudarão você a aproveitar ao máximo nosso projeto.
Suporte Direcionado pela Comunidade
Nosso projeto de código aberto é alimentado por nossa incrível comunidade. Se você tiver dúvidas ou precisar de assistência, StackOverflow e outros recursos online são suas melhores opções.
Erros e Priorização de Recursos
A realidade de gerenciar um projeto de código aberto significa que não podemos abordar imediatamente todos os erros ou solicitações de recursos relatados. Priorizamos as questões na seguinte ordem:
1. Erros que Afetam Nossos Produtos Pagos
Erros que impactam nossos produtos pagos serão sempre nossa maior prioridade. Em alguns casos, podemos abordar apenas erros que nos afetam diretamente.
2. Pull Requests da Comunidade
Se você identificou um erro e tem uma solução, por favor, envie um pull request. Após as questões que afetam nossos produtos, damos a próxima maior prioridade a essas correções impulsionadas pela comunidade. Uma vez revisada e aprovada, iremos mesclar sua solução e creditar sua contribuição.
3. Apoio Financeiro
Para questões fora das categorias mencionadas, você pode optar por financiar sua resolução. Cada problema em aberto está vinculado a um formulário de pedido onde você pode contribuir financeiramente. Priorizamos essas questões com base no valor do financiamento fornecido.
Contribuições da Comunidade
O código aberto prospera quando sua comunidade é ativa. Mesmo que você não esteja corrigindo erros, considere contribuir com melhorias de código, atualizações de documentação, tutoriais ou ajudando outros em canais da comunidade. Incentivamos fortemente todos, como comunidade, a ajudar a apoiar o trabalho de código aberto.
Para reiterar, a DefectiveCode priorizará erros com base em como eles impactam nossos produtos pagos, pull requests da comunidade e o apoio financeiro recebido para as questões.
Licença - Licença MIT
Copyright © Defective Code, LLC. Todos os direitos reservados
A permissão é concedida, sem qualquer custo, a qualquer pessoa que obter uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e para permitir que pessoas a quem o Software é fornecido façam o mesmo, sujeito às seguintes condições:
O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou porções substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO A GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO INFRAÇÃO. EM NENHUM CASO OS AUTORES OU DETENTORES DO DIREITO AUTORAL SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, DECORRENTES DE, EM DECORRÊNCIA OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.