- Detalhes
-
Criado em Sexta, 15 Julho 2011 17:56
-
Última atualização em Quarta, 20 Julho 2011 15:51
O plugin GetGithubCode permite que você importe direto para um artigo Joomla seu código do github.com, via servidor sem usar javascript. Desse modo é amigável mesmo a mecanismos de busca e, mesmo que atualize diretamente no github.com, automaticamente estárá atualizado em seu site.
Download
Pacotes: http://www.source.fititnt.org/plg_getgithubcode/
Versão em desenvolvimento
Github: https://github.com/fititnt/plg_getgithubcode/
Exemplo
<?php
/**
* Emerson Rocha Luiz { emerson@webdesign.eng.br - http://fititnt.org }
* Copyright (C) 2005 - 2011 Webdesign Assessoria em Tecnologia da Informacao.
* GPL3
*/
defined('_JEXEC') or die;
jimport('joomla.plugin.plugin');
/**
* GetGitHub Content Plugin
*
* @since 1.6
*/
class plgContentGetgithubcode extends JPlugin
{
/**
* Example prepare content method
*
* Method is called by the view
*
* @param string The context of the content being passed to the plugin.
* @param object The content object. Note $article->text is also available
* @param object The content params
* @param int The 'page' number
* @since 1.6
*/
public function onContentPrepare($context, &$article, &$params, $limitstart)
{
$app = JFactory::getApplication();
// simple performance check to determine whether bot should process further
$tagname = $this->get('tagname', 'github');
if (strpos($article->text, $tagname) === false) {
return true;
}
// expression to search
// {github}https://raw.github.com/example...{/github}
// @todo: rewrite to make able to ask start and end lines
$regex = '~{'.$tagname.'}(.*?){/'.$tagname.'}~i';
$matches = array();
// find all instances of plugin and put in $matches
preg_match_all($regex, $article->text, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
// $match[0] is full pattern match, $match[1] is the url
$code = $this->_getGithubCode($match[1]);
// We should replace only first occurrence in order to allow positions with the same name to regenerate their content:
$article->text = preg_replace("|$match[0]|", $code, $article->text, 1);
}
return '';
}
/* Function to get get and change the githubcode
* @author Emerson Rocha Luiz
* @var string $url: the url to get. Must be RAW url!
* @var int $start: line to start to show
* @var int $end: last line to show
* @return string $github: the final github code to show
*/
protected function _getGithubCode($url, $start = FALSE, $end = FALSE){
//Get Page
$page = $this->_getUrlContents($url, FALSE);
//Convert linebreaks
$page = $this->_Unix2Dos($page);
//Get only desired lines
if($start !== FALSE || $end !== FALSE){
$page = $this->_getStringLines($page, $start, $end);
}
//Clean up special chars
$github = htmlspecialchars($page);
//Get start and end tags and apply
$tagstart = $this->params->get('tagstart', '<pre>');
$tagstart = str_replace('<', '<', $tagstart);
$tagstart = str_replace('>', '>', $tagstart);
$tagsend = $this->params->get('tagend', '</pre>');
$tagsend = str_replace('<', '<', $tagsend);
$tagsend = str_replace('>', '>', $tagsend);
$github = $tagstart . $github . $tagsend;
return $github;
}
/*
* Return contents of url
* @author Emerson Rocha Luiz
* @var string $url
* @var string $certificate path to certificate if is https URL
* @return string
*/
protected function _getUrlContents($url, $certificate = FALSE){
//$page = file_get_contents($url);
$ch = curl_init(); //Inicializar a sessao
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//Retorne os dados em vez de imprimir em tela
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $certificate);//Check certificate if is SSL, default FALSE
curl_setopt($ch, CURLOPT_URL, $url);//Setar URL
$content = curl_exec($ch);//Execute
curl_close($ch);//Feche
return $content;
}
/* Return just lines betwen betwen start and end lines
* @author Emerson Rocha Luiz
* @var string $string: the string to edit
* @var int $start: initial line
* @var int $end: end line
* @return string
*/
protected function _getStringLines($string, $start, $end){
$stringArray = explode(PHP_EOL, $string);
$nLines = count($stringArray)-1;
//Handle a few errors
if( $end < $start || $end > $nLines){
//return FALSE;
}
$result = '';
for( $i=($start-1); $i<=$end ; $i++ ){
$result .= $stringArray[$i] . PHP_EOL;
}
return $result;
}
/* Convert unix linebreaks to windows line breaks
* @author Emerson Rocha Luiz
* @var string $string: the string to edit
* @return string $newstring
*/
protected function _Unix2Dos($string){
if (strpos($string, "\n") === false) {
//$newstring = false;
$newstring = $string;
} else {
$newstring = str_replace("\n", "\r\n", $string);
}
return $newstring;
}
}
- Detalhes
-
Criado em Sexta, 27 Novembro 2009 16:05
-
Última atualização em Sexta, 04 Dezembro 2009 17:59
Esta lista ainda não é definitiva. Resolvi publicar ela mesmo não tendo muito conteúdo por já estar adiando a tempos isso. Caso você tenha sugestões, ou tenha dúvida de algum IF que possa ser util para você, pode entrar em contato ou deixar um comentário no final desta página.
Prefácio - O que saber antes de começar
Em primeiro lugar, você deve ter em mente que um if de PHP pode ser organizado de diversas formas, inclusive usando as condicionais se verdadeiras ou falsas em outros casos. Tome esta página como conhecimento para algumas dúvidas comuns no dia-a-dia de um programador de extensões ou em um desenvolvedor de templates. E lembre-se que você pode fazer sugestões.
"If tipo 1" - Grandes Blocos de HTML (templates e afins)
Se você é designer, certamente vai usar muito esse tipo.
<?php if (CONDICAO) : ?>
<!--Olá! :D Eu sou um HTML feliz -->
<!--Caso a CONDICAO seja verdadeira, eu aparecerei na página! -->
<jdoc:include type="modules" name="top" style="beezDivision" headerLevel="3" />
<?php endif; ?>
"If tipo 2.1" - Melhor quando trabalha com PHP e pouco HTML
<?php if (CONDICAO) {
echo JText::_('Oi! A condição é verdadeira!\');
}?>
"If tipo 2.2" - Melhor quando trabalha com PHP e pouco HTML
<?php if (CONDICAO1) {
echo JText::_('Oi! A CONDICAO1 é verdadeira!');
} elseif (CONDICAO2) {necho JText::_('Oi! A CONDICAO1 é falsa! Mas a CONDICAO2 verdadeira!');
} else {
necho JText::_('Oi! A CONDICAO1 e CONDICAO2 São Falsas!');
}?>
Dica: de como especificar apenas excessões!
Neste caso é simples. em todas as condicionais que você quiser dizer o contrário, basta adicionar exclamação (!) antes da condição:
if (!CONDICAO) {
echo JText::_('Minha condição NÂO é verdadeira!');
}
Determinar se é frontend ou backend
$app = JFactory::getApplication();
if ($app->isAdmin()) {
echo JText::_('Estou na área administrativa do Joomla!');
} else {
echo JText::_('Não estou na área administrativa do Joomla!');
}
Exemplo: Retornar URL base independente de ser frontend ou backend
Se você não sabe, o modo de como retornar a URL base do Joomla é diferente no frontend do backend. O código mais curto para evitar ter que pensar muito ou mesmo usar um mesmo arquivo nas duas áreas é o seguinte.
$app = JFactory::getApplication();
$live_site = $app->isAdmin() ? $app->getSiteURL() : JURI::base();
Obrigado ao Chris Davenport pela idéia simples e prática.
Determinar se é a página inicial (frontpage do site)
Baseado na documentação oficial How to determine if the user is viewing the front page.
<?php
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
echo JText::_('Voce esta vendo a pagina inicial do site');
}
?>
Determinar se é a página especifica
Baseado no post do nailson_imgn.
<?php
$paginaatual = JURI::current();
if( $paginaAtual == 'link/da/pagina/de/noticias.html' ){
echo JText::_('Voce esta vendo a página link/da/pagina/de/noticias.html desde site');
}
?>
Determinar se é um componente específico (option)
$option = JRequest::GetWord('option'); //com_content, com_user, com_contact...
if ($option == 'com_content') {
echo JText::_('Esta página é do componente com_content ');
}
Determinar se é uma view especifica (view)
$view = JRequest::GetWord('view'); //frontpage, default, form, ...
if ($view == 'frontpage') {
echo JText::_('Esta página é exibida com a view frontpage');
}
Determinar se é um formato específico (format)
$format = JRequest::GetWord('format'); //html, pdf, raw,...
if ($format == 'html') {
echo JText::_('Esta página é exibida com o format html');
}
Determinar se é uma página especifica (Itemid)
$ItemId = JRequest::GetInt('Itemid'); //Numero do artigo
if ($ItemId == '27') {
echo JText::_('Esta página é especifica do artigo de ID 27');
}
Determinar se é visitante ou usuário logado
$user =& JFactory::getUser();
if ( $user->get('guest') ) { //$user->get('guest') retorna '1' caso seja visitante
echo JText::_('Você é um visitante!');
} else {
echo JText::_('Você é um usuario autenticado!');
}
Exemplo: Exibir posição de módulo apenas para visitantes
<?php
$user =& JFactory::getUser();
if ($user->get('guest')) : ?>
<!--HTML aqui dentro -->
<jdoc:include type="modules" name="top" style="beezDivision" headerLevel="3" />
<?php endif; ?>
Determinar se é um tipo de usuário
Dois parametros podem ser usados do JUser neste caso: grid e usertype. Grid é o equivalente numérico do usertype ao qual você já deve estar acostumado, e o usertipe é o nome com o qual o grupo do usuário é salvo no banco de dados
Visite Accessing the current user object
$user =& JFactory::getUser();
if ( $user->get('usertype') == 'Super Administrator') { //Super Administrator, Administrator, Manager...
echo JText::_('Você é um Super Administrador do sistema!');
}
Determinar se é um usuário específico
Neste exemplo, ao usar somente o '$user =& JFactory::getUser()' estamos carregando o usuário atualmente logado no sistema. Se por exemplo quer pegar os dados de qualquer usuário específico, independente de quem esteja logado no sistema, deve especificar o id do respectivo usuáio ou o username, no caso $user =& JFactory::getUser(62) / $user =& JFactory::getUser('admin') para o administrador padrão do Joomla.
Neste exemplo, vamos pegar somente o usuário atualmente logado e procurar saber se o id dele é igua o id de usuário que queremos. Mas lembre-se que você pode usar qualquer outro dos parâmetros, como username ou nome de usuário
Visite Accessing the current user object
$user =& JFactory::getUser();
if ( $user->get('id') == '62') { //Super Administrator, Administrator, Manager...
echo JText::_('Você é especificamente o usuário que estou procurando!');
}
Quando estiver desenvolvendo uma extensão, é comum usar certos códigos para ver como as coisas estão indo. Não obstante, ao entregar para o cliente final ficar apagando, ou com sorte só comentando, pode encomodar um pouco, em especial se o projeto em questão não foi 'finalizado para todo o sempre' ou mesmo ainda está em constante desenvolvimento. Neste caso você tem pelo menos duas boas alternativas são voce usar para debugar sua extensão: extender o modo debug padrão do joomla, ou setar sua própria variavel no arquivo principal de sua extensão, fazendo com que o resto do código execute se tal código estiver definido. Neste exemplo, você tem como base como executar um ploco de ações somente quando o Modo debug padrão do Joomla estiver ligado
if (JDEBUG) { //JDEBUG é uma constante definida pelo sistema com Debug = ON
echo JText::_('O debug do sistema está on! Posso dar uns print_r() a vontade :D');
}
Outra dica para quem quer debugar em Joomla é usar o JoomlaFox!
- Detalhes
-
Criado em Quinta, 26 Novembro 2009 16:18
-
Última atualização em Quinta, 26 Novembro 2009 17:08
Em vez de fazer do modo tradicional adicionando HTML direto ao seu código, você pode usar o Framework Joomla para gerar a lista drop down com os estados brasileiros, já com opção de tradução para gerenciar os acentos sem problemas. O código abaixo é literalmente um CTRL+C para colocar em suas extensões.
São disponibilizadas duas versões: uma que envia no formulário em formato UF, e outro que salva em numeral de 1 até 27. Mesmo ao ler dados do banco de dados o menu vai compreender o estado certo e exibir qual é para o usuário.
Uma página como essa pode ser especialmente interessante se você acha as coisas mais rápido pelo google do que procurando em códigos já feitos no seu computador. Isso se conseguir achar no seu computador.
//Estados do Brasil, Value UF, http://www.fititnt.org/codigo/joomla/estados-do-brasil.html
$estadodobrasil = array();
$estadodobrasil[] = JHTML::_('select.option', '', JText::_('- Selecione o Estado -'));
$estadodobrasil[] = JHTML::_('select.option', 'AC', JText::_('UF_AC'));
$estadodobrasil[] = JHTML::_('select.option', 'AL', JText::_('UF_AL'));
$estadodobrasil[] = JHTML::_('select.option', 'AP', JText::_('UF_AP'));
$estadodobrasil[] = JHTML::_('select.option', 'AM', JText::_('UF_AM'));
$estadodobrasil[] = JHTML::_('select.option', 'BA', JText::_('UF_BA'));
$estadodobrasil[] = JHTML::_('select.option', 'CE', JText::_('UF_CE'));
$estadodobrasil[] = JHTML::_('select.option', 'DF', JText::_('UF_DF'));
$estadodobrasil[] = JHTML::_('select.option', 'ES', JText::_('UF_ES'));
$estadodobrasil[] = JHTML::_('select.option', 'GO', JText::_('UF_GO'));
$estadodobrasil[] = JHTML::_('select.option', 'MA', JText::_('UF_MA'));
$estadodobrasil[] = JHTML::_('select.option', 'MT', JText::_('UF_MT'));
$estadodobrasil[] = JHTML::_('select.option', 'MS', JText::_('UF_MS'));
$estadodobrasil[] = JHTML::_('select.option', 'MG', JText::_('UF_MG'));
$estadodobrasil[] = JHTML::_('select.option', 'PA', JText::_('UF_PA'));
$estadodobrasil[] = JHTML::_('select.option', 'PB', JText::_('UF_PB'));
$estadodobrasil[] = JHTML::_('select.option', 'PR', JText::_('UF_PR'));
$estadodobrasil[] = JHTML::_('select.option', 'PE', JText::_('UF_PE'));
$estadodobrasil[] = JHTML::_('select.option', 'PI', JText::_('UF_PI'));
$estadodobrasil[] = JHTML::_('select.option', 'RJ', JText::_('UF_RJ'));
$estadodobrasil[] = JHTML::_('select.option', 'RN', JText::_('UF_RN'));
$estadodobrasil[] = JHTML::_('select.option', 'RS', JText::_('UF_RS'));
$estadodobrasil[] = JHTML::_('select.option', 'RO', JText::_('UF_RO'));
$estadodobrasil[] = JHTML::_('select.option', 'RR', JText::_('UF_RR'));
$estadodobrasil[] = JHTML::_('select.option', 'SC', JText::_('UF_SC'));
$estadodobrasil[] = JHTML::_('select.option', 'SP', JText::_('UF_SP'));
$estadodobrasil[] = JHTML::_('select.option', 'SE', JText::_('UF_SE'));
$estadodobrasil[] = JHTML::_('select.option', 'TO', JText::_('UF_TO'));
?>
Estados do Brasil - Lista Drop Down: Demonstração do resultado final
echo JHTML::_('select.genericlist', $estadodobrasil, 'estado','class="inputbox"', 'value' , 'text', $this->item->estado, ''); ?>
Atenção! Neste exemplo não foi adicionado a esta página as traduções dos JText! No seu caso deve aparecer por exemplo 'Acre' em vez de 'UF_AC'.
Array Estados do Brasil, Valor enviado tipo UF
<?php
//Estados do Brasil, Value UF
//http://www.fititnt.org/codigo/joomla/estados-do-brasil.html
$estadodobrasil = array();
$estadodobrasil[] = JHTML::_('select.option', '', JText::_('- Selecione o Estado -'));
$estadodobrasil[] = JHTML::_('select.option', 'AC', JText::_('UF_AC'));
$estadodobrasil[] = JHTML::_('select.option', 'AL', JText::_('UF_AL'));
$estadodobrasil[] = JHTML::_('select.option', 'AP', JText::_('UF_AP'));
$estadodobrasil[] = JHTML::_('select.option', 'AM', JText::_('UF_AM'));
$estadodobrasil[] = JHTML::_('select.option', 'BA', JText::_('UF_BA'));
$estadodobrasil[] = JHTML::_('select.option', 'CE', JText::_('UF_CE'));
$estadodobrasil[] = JHTML::_('select.option', 'DF', JText::_('UF_DF'));
$estadodobrasil[] = JHTML::_('select.option', 'ES', JText::_('UF_ES'));
$estadodobrasil[] = JHTML::_('select.option', 'GO', JText::_('UF_GO'));
$estadodobrasil[] = JHTML::_('select.option', 'MA', JText::_('UF_MA'));
$estadodobrasil[] = JHTML::_('select.option', 'MT', JText::_('UF_MT'));
$estadodobrasil[] = JHTML::_('select.option', 'MS', JText::_('UF_MS'));
$estadodobrasil[] = JHTML::_('select.option', 'MG', JText::_('UF_MG'));
$estadodobrasil[] = JHTML::_('select.option', 'PA', JText::_('UF_PA'));
$estadodobrasil[] = JHTML::_('select.option', 'PB', JText::_('UF_PB'));
$estadodobrasil[] = JHTML::_('select.option', 'PR', JText::_('UF_PR'));
$estadodobrasil[] = JHTML::_('select.option', 'PE', JText::_('UF_PE'));
$estadodobrasil[] = JHTML::_('select.option', 'PI', JText::_('UF_PI'));
$estadodobrasil[] = JHTML::_('select.option', 'RJ', JText::_('UF_RJ'));
$estadodobrasil[] = JHTML::_('select.option', 'RN', JText::_('UF_RN'));
$estadodobrasil[] = JHTML::_('select.option', 'RS', JText::_('UF_RS'));
$estadodobrasil[] = JHTML::_('select.option', 'RO', JText::_('UF_RO'));
$estadodobrasil[] = JHTML::_('select.option', 'RR', JText::_('UF_RR'));
$estadodobrasil[] = JHTML::_('select.option', 'SC', JText::_('UF_SC'));
$estadodobrasil[] = JHTML::_('select.option', 'SP', JText::_('UF_SP'));
$estadodobrasil[] = JHTML::_('select.option', 'SE', JText::_('UF_SE'));
$estadodobrasil[] = JHTML::_('select.option', 'TO', JText::_('UF_TO'));
?>
Array Estados do Brasil, Valor enviado tipo número
<?php
//Estados do Brasil, Value 1~27
//http://www.fititnt.org/codigo/joomla/estados-do-brasil.html
$estadodobrasil = array();
$estadodobrasil[] = JHTML::_('select.option', '', JText::_('- Selecione o Estado -'));
$estadodobrasil[] = JHTML::_('select.option', '1', JText::_('UF_AC'));
$estadodobrasil[] = JHTML::_('select.option', '2', JText::_('UF_AL'));
$estadodobrasil[] = JHTML::_('select.option', '3', JText::_('UF_AP'));
$estadodobrasil[] = JHTML::_('select.option', '4', JText::_('UF_AM'));
$estadodobrasil[] = JHTML::_('select.option', '5', JText::_('UF_BA'));
$estadodobrasil[] = JHTML::_('select.option', '6', JText::_('UF_CE'));
$estadodobrasil[] = JHTML::_('select.option', '7', JText::_('UF_DF'));
$estadodobrasil[] = JHTML::_('select.option', '8', JText::_('UF_ES'));
$estadodobrasil[] = JHTML::_('select.option', '9', JText::_('UF_GO'));
$estadodobrasil[] = JHTML::_('select.option', '10', JText::_('UF_MA'));
$estadodobrasil[] = JHTML::_('select.option', '11', JText::_('UF_MT'));
$estadodobrasil[] = JHTML::_('select.option', '12', JText::_('UF_MS'));
$estadodobrasil[] = JHTML::_('select.option', '13', JText::_('UF_MG'));
$estadodobrasil[] = JHTML::_('select.option', '14', JText::_('UF_PA'));
$estadodobrasil[] = JHTML::_('select.option', '15', JText::_('UF_PB'));
$estadodobrasil[] = JHTML::_('select.option', '16', JText::_('UF_PR'));
$estadodobrasil[] = JHTML::_('select.option', '17', JText::_('UF_PE'));
$estadodobrasil[] = JHTML::_('select.option', '18', JText::_('UF_PI'));
$estadodobrasil[] = JHTML::_('select.option', '19', JText::_('UF_RJ'));
$estadodobrasil[] = JHTML::_('select.option', '20', JText::_('UF_RN'));
$estadodobrasil[] = JHTML::_('select.option', '21', JText::_('UF_RS'));
$estadodobrasil[] = JHTML::_('select.option', '22', JText::_('UF_RO'));
$estadodobrasil[] = JHTML::_('select.option', '23', JText::_('UF_RR'));
$estadodobrasil[] = JHTML::_('select.option', '24', JText::_('UF_SC'));
$estadodobrasil[] = JHTML::_('select.option', '25', JText::_('UF_SP'));
$estadodobrasil[] = JHTML::_('select.option', '26', JText::_('UF_SE'));
$estadodobrasil[] = JHTML::_('select.option', '27', JText::_('UF_TO'));
?>
Estados do Brasil - Lista Drop Down
Este é o código que Joomla que, efetivamente, gera a lista baseada no array informado anteriormente. Coloque aonde gostaria que a lista fosse exibida na sua página. Altere os campos conforme o seu caso.
<?php echo JHTML::_('select.genericlist', $estadodobrasil, 'estado','class="inputbox"', 'value' , 'text', $this->item->estado, ''); ?>
Tradução da lista drop down de Estados do Brasil
O código abaixo deve ser colocado no seu respectivo arquivo de tradução.
## Tradução de Estados do Brasil:
## http://www.fititnt.org/codigo/joomla/estados-do-brasil.html
- Selecione o Estado -=- Selecione o Estado -
UF_AC=Acre
UF_AL=Alagoas
UF_AP=Amapá
UF_AM=Amazonas
UF_BA=Bahia
UF_CE=Ceará
UF_DF=Distrito Federal
UF_ES=Espírito Santo
UF_GO=Goiás
UF_MA=Maranhão
UF_MT=Mato Grosso
UF_MS=Mato Grosso do Sul
UF_MG=Minas Gerais
UF_PA=Pará
UF_PB=Paraíba
UF_PR=Paraná
UF_PE=Pernambuco
UF_PI=Piauí
UF_RJ=Rio de Janeiro
UF_RN=Rio Grande do Norte
UF_RS=Rio Grande do Sul
UF_RO=Rondônia
UF_SC=Santa Catarina
UF_RR=Roraima
UF_SP=São Paulo
UF_SE=Sergipe
UF_TO=Tocantins