Macros

As macros permitem a inserção de funcionalidades de sistema em páginas de wiki normais; a única coisa que torna essas páginas especiais é o facto de conterem macros. Se editar páginas como AlteraçõesRecentes ou InformaçãoDeSistema, verá o que isso significa.

Para mais informações sobre a formatação possível, consulte o tópico AjudaNaEdição.

Macros de pesquisa

Agora o MoinMoin utiliza um novo motor de pesquisa, que lhe permite fazer pesquisas sofisticadas, utilizando ambas as caixas de pesquisa interactiva e qualquer macro de pesquisa. Para mais informações, consulte o tópico AjudaNaPesquisa.

Macro


Descrição

Exemplo

<<AdvancedSearch>>


Cria um diálogo de pesquisa avançada na página

Ver o tópico PesquisaDePáginas

<<TitleSearch>>


Cria uma caixa de pesquisa na página, que pesquisa nos títulos das páginas

Ver o tópico PesquisaDePáginas

<<FullSearch>>


Cria uma caixa de pesquisa na página, que pesquisa no conteúdo das páginas

Ver o tópico PesquisaDePáginas

<<FullSearch()>>


Devolve uma lista de páginas cujo conteúdo coincida com o título da página actual (como clicar no título da página)

Ver a página ListaDeCategorias

<<FullSearch(text)>>


Devolve uma lista de páginas cujo conteúdo coincida com o termo de pesquisa

<<FullSearchCached(text)>>


Funciona como a macro FullSearch mas guarda os resultados estatisticamente. Utilize-o se preferir resultado actualizado mais rápido

<<GoTo>>


Visita directamente a página que inserir

Ver o tópico PesquisaDePáginas

<<PageList(Help)>>


Devolve uma lista de páginas cujo título coincida com o termo de pesquisa

Ver o tópico ÍndiceDeAjuda

Macro


Descrição

Exemplo

<<RecentChanges>>


Uma lista de páginas editadas recentemente

Ver o tópico AlteraçõesRecentes

<<TitleIndex>>


Um índice de todos os títulos das páginas

Ver o tópico ÍndiceDePáginas

<<WordIndex>>


Um índice de todas as palavras existentes nos títulos das páginas

Ver o tópico ÍndiceComPalavras

<<WantedPages>>


Lista as ligações de páginas inexistentes

Ver o tópico PáginasPretendidas

<<OrphanedPages>>


Lista as páginas que não têm ligações (noutras páginas) que apontem para si

Ver o tópico PáginasOrfãs

<<AbandonedPages>>


Lista as páginas que não são editadas há mais tempo

Ver o tópico PáginasAoAbandono

<<RandomPage>>


Uma ligação para uma página ao acaso

AiutoSuSpam

<<RandomPage(#)>>


Ligações para um conjunto de páginas ao acaso

Duas páginas ao acaso:

<<TableOfContents([maxdepth])>>


Apresenta uma tabela de conteúdos, possivelmente limitada a uma profundidade máxima

Ver em cima

<<Anchor(anchorname)>>


Macro para inserir âncoras numa página

#aqui

<<Navigation(children[,maxdepth])>>


Macro para listas todas as sub-páginas

Ver início desta página

<<Navigation(siblings[,maxdepth])>>


Navegação rápida entre páginas irmãs de uma página

Ver o sub-tópico /MailTo

<<Navigation(slideshow)>>


Cria uma ligação para alternar entre a apresentação de diapositivos e o modo wiki, e uma ligação para iniciar a apresentação de diapositivos

Ver o tópico AjudaComApresentaçõesDeDiapositivos

<<Navigation(slides)>>


Apresenta as ligações de primeira página/página anterior/página seguinte/última página

Ver o tópico AjudaComApresentaçõesDeDiapositivos

<<AttachInfo>>


Apresenta o número de anexos na página actual

Ver o tópico AjudaNasAcções/AttachFile

<<AttachInfo(page)>>


Apresenta o número de anexos por página

Ver o tópico AjudaNasAcções/AttachFile

<<AttachList(pagename,mimetype)>>


Apresenta uma lista de anexos

Ver o tópico AjudaNasAcções/AttachFile

Informação de sistema

Macro


Descrição

Exemplo

<<InterWiki>>


Uma lista de todos os nomes de LigaçõesEntreWikis conhecidos

LigaçõesEntreWikis

<<SystemInfo>>


Dados sobre o wiki, o interpretador de python e o sistema do servidor

InformaçãoDeSistema

<<PageCount(exists)>>


Número actual de páginas. Se exists é devolvido como um argumento. Apenas as páginas existentes serão exibidas.

1928 páginas

<<PageSize>>


Lista o tamanho de todas as páginas

Ver o tópico TamanhoDaPágina

<<StatsChart(type)>>


Exibe gráficos estatísticos (tipos definidos actualmente: hitcounts, pagesize, useragents)

Ver o tópico EstatísticasDeAcesso e sub-páginas

<<SystemAdmin>>


Informação para administradores de sistemas

Necessita de ser um super utilizador para chamar esta macro

<<EditedSystemPages>>


Uma lista de páginas de sistema que foram alteradas

  1. BadContent
  2. FrontPage

Outras

Macro


Descrição

Exemplo

<<Icon(image)>>


Exibe os ícones de sistema

Ver o tópico AjudaNaNavegação

<<UserPreferences>>


Exibe um diálogo de preferências do utilizador

Ver o tópico PreferênciasDoUtilizador

<<UserPreferences(createonly)>>


Exibe um diálogo de criação de utilizadores

<<BR>>


Insere uma quebra de linha

1ª linha
2ª linha

<<RandomQuote(pagename)>>


Seleccione uma citação ao acaso de uma determinada página, ou a partir dos FortuneCookies em caso de omissão

Hint: Get email notification when this page changes, by clicking Subscribe.

<<Include(HelloWorld[,"heading"[,level>>)>>


Inclui conteúdos de outra página

Para mais informações, consulte <</Include>>

<<FootNote(text)>>


Adicione uma nota de rodapé1, ou apresente explicitamente notas de rodapé recolhidas quando não são fornecidos argumentos

Ver exemplo em baixo.

<<Date(timestamp)>>


Apresenta uma data de acordo com as configurações de sistema

2024-12-22

<<DateTime(timestamp)>>


Apresenta uma data2 de acordo com as configurações do utilizador

2024-12-22 11:36:57

<<GetText(text)>>


Carrega os textos I18N (criado especialmente para ser utilizado nas páginas de Ajuda)

"EditText" é traduzido para "EditText"

<<GetText2(,message,argument1,argument2,...)>>


Carrega os textos I18N (criado especialmente para ser utilizado nas páginas de Ajuda ou em resultado gerado em páginas wiki) e substitui o %s na mensagem pelos argumentos. O primeiro carácter do argumento é utilizado como um separador (neste exemplo: uma vírgula). Pode evitar o separador utilizando uma barra ("\").

"<<GetText2(,[Pode não ler %s],FooBar)>>" resulta em "[Pode não ler FooBar]"

<<TeudView>>


Útil para wikis de desenvolvimento em intranets, uma forma de visualizar documentação pydoc, formatada através de uma folha de cálculo XSLT

Ver a página http://twistedmatrix.com/wiki/python/TeudProject

<<MailTo(email)>>


Protege o seu endereço de correio electrónico de robôs de spam

para mais informações consulte /MailTo

<<NewPage(PageTemplate,ButtonLabel,[ParentPage,@ME,@SELF] [,NameTemplate])>>


Permite ao utilizador criar (sub) páginas facilmente, utilizando a página PageTemplate como modelo para a nova página e a string NameTemplate como modelo para o nome.3 @ME é utilizado para a página criada estar abaixo da página principal dos utilizadores. @SELF é utilizado para criar uma sub-página debaixo da página de onde é chamada.

<<GetVal(NeatSnippets,regards)>>


Pesquisa registos de dicionário entre as páginas dict.

Se tiver uma página com o título PortugueseDict que contenha o registo Test:

 <<MonthCalendar(,,12)>>


Apresenta um Calendário e cria ligações para registos de cada dia em sub-páginas

Ver o sub-tópico /MonthCalendar

  1. o texto não pode ter nenhuma formatação de wiki (1)

  2. "timestamp" pode ser vazia (hora actual), o número de segundos desde 1970 (unix timestamp), ou uma especificação de tempo W3C ("2002-01-23T12:34:56"). Ver RFC822, secção 5. (2)

  3. NameTemplate é formatada com time.strftime(), à excepção do %s que é substituído pela entrada da caixa de edição (que apenas será exibida se necessário). Se NameTemplate não for especificada ou estiver vazia, %s é o seu valor por omissão. (3)

Criar a sua própria macro

Crie um ficheiro python chamado NomeDaMacro.py localizado na sua directoria data/plugin/macro. Certifique que tem um método único chamado execute(macro, arguments), que é o ponto de partida.

Todas as instâncias Macro têm um membro request através do qual pode aceder aos parâmetros e a outros dados relacionados à interacção do utilizador.

execute() deve utilizar um editor para construir formatação válida para o formato-alvo actual. Regra geral, isto significa HTML, assim criar uma macro apresentada em HTML funcionará na maioria dos casos, mas falhará caso sejam solicitados formatos como XML ou text/plain are requested.

Por exemplo, a sua página de wiki inclui a seguinte linha:

<<MacroName(arg1,arg2,arg3)>>

Pode editar um ficheiro NomeDaMacro.py assim:

   1 Dependencies = []
   2 
   3 def execute(macro, args):
   4 
   5     return macro.formatter.text("I got these args from a macro %s: %s" %
   6 
   7     (str(macro), args))
  • /!\ Adicione um registo nas Dependencies caso o resultado da sua macro não deva ser armazenado. Isto é importante se o resultado da sua macro for alterada de um momento para o outro, por exemplo, se a sua macro pesquisar entre as páginas de um wiki pode ser editada por outros utilizadores, ou carregar dados de uma base de dados externa cujos conteúdos podem mudar. Actualmente, o valor de cada registo não interessa e aconselhamos que faça uma pequena descrição para explicar o motivo 'por que os resultados desta macro não devem ser armazenados', mas por favor, dê uma vista de olhos aos registos utilizados noutras macros para valores que possam ser adequados.