SPIP 1.8.2

Olá a todos!

A versão 1.8.2 do SPIP está disponível no endereço

www.spip.net/fr_download

Trata-se da última versão da série 1.8, pois o desenvolvimento do SPIP muda de sistema (passamos de CVS para SVN), e serão introduzidas alterações importantes — nomeadamente, a passagem dos ficheiros com extensão .php3 para a extensão .php, a reorganização dos diretórios etc.

Esta versão corrige a maior parte dos bugs (conhecidos) da versão 1.8.1, e deverá ser em geral mais fiável.

Principais novidade:

Interface e apresentação

  • Numerosas melhorias de compatibilidade com XHTML na função propre() e ao nível da integração dos documentos no texto.
  • Melhor "acessibilidade" das tabelas.
  • Acompanhamento por RSS dos fóruns internos do site, o sistema de mensagens pessoais e das matérias/notas etc propostas para publicação.
  • Opções adicionais para a sindicação de sites: pode-se "despublicar" automaticamente os links que não constarem mais do ficheiro de sindicação do site sindicado, e/ou removê-los da base de dados após um certo período. Além disso, a leitura dos ficheiros de sindicação entende mais elementos, particularmente:
    • os documentos remotos (podcasting ou enclosure, ver mais abaixo);
    • as datas de atualização
    • as alterações de título ou de conteúdo
  • A possibilidade, na área reservada, de ajustar de maneira mais detalhada a hora (e não mais apenas o dia) de publicação das matérias.

Gestão de documentos

-  Documentos remotos.

No bloco que permite transferir um documento anexo a uma matéria, pode-se agora indicar o URL de um documento "remoto", que será então integrado na base de dados como se fosse um documento "local", mas sem que o ficheiro em si esteja no diretório IMG/

Esses documentos distantes são referenciados da mesma forma que os documentos locais: pode-se alterar o seu título e a sua descrição; o SPIP verifica a existência desses ficheiros e o seu tamanho e, no caso de imagens, grava uma cópia local para gerar automaticamente as vinhetas reduzidas.

Pode-se transferir sistematicamente esses documentos distantes, através de um filtro a ser incluído nos templates: |copie_locale. Este filtro atua da seguinte forma: depois de, se necessário, fazer uma cópia local do documento (o que pode demorar, se o ficheiro for grande, com vários MB), retorna simplesmente o endereço local do documento.

Por fim, o SPIP integra esta noção de documento distante também na sindicação: por um lado, lê os fluxos de sindicação que indicam documentos anexos (podcasting); por outro, o template dist/backend.html publica no mesmo formato os documentos anexos à matéria que não estejam inseridos no texto da matéria (ou seja, o equivalente ao que aparece, no espaço privado, na parte portfolio / documentos anexos da matéria).

-  Indexação dos documentos. Os títulos e descrições de todos os documento são indexados, e portanto usáveis num:
<BOUCLE(DOCUMENTS){recherche}{par points}{inverse}>
Quando possível, o SPIP tenta também indexar o conteúdo dos documentos (particularmente para os documentos nos formatos HTML, TXT, PDF, RTF e DOC). Esta funcionalidade é extensível a outros formatos desenvolvendo scripts "extratores" (pode-se facilmente imaginar tais scripts para os formatos MP3 ou OpenOffice).

-  Zip no upload. Quando se transfere um documento "não-permitido", ou em todos os casos não previstos na tabela spip_types_documents (por exemplo, um ficheiro .php), o SPIP passa agora a oferecer a opção de "zipar" o documento. ( Anteriormente, ignorava silenciosamente a tentativa de upload.)

Calendário no espaço público

O SPIP 1.8.2 permite visualizar, no espaço público, os calendários do da área restrita e construir agendas que beneficiam das ferramentas de formatação desses calendários. Esta funcionalidade é disponibilizada por um novo critério de loop e três novos filtros.

Novos filtros

-  Novo filtro |inserer_attribut{variavel, valor}, que permite forçar um atributo de uma tag HTML.
Exemplo de uso:
[(#LOGO_ARTICLE|#URL_ARTICLE||inserer_attribut{alt,#TITRE})]

-  Novo filtro |alterner, que permite alternar as cores numa lista — via, por exemplo, [(#COMPTEUR_BOUCLE|alterner{1,2,3})]; o número de argumentos indica a periodicidade da alternância, que não tem necessariamente de seguir um padrão do tipo "par/impar". Exemplos:

  • [(#COMPTEUR_BOUCLE|alterner{'yellow','blue'})] pode ser usado para formatar cores diferentes nas linhas pares e impares de uma tabela.
  • O loop abaixo exibirá uma tabela de, no máximo, 17 matérias, em 5 linhas e 4 colunas, completando com uma célula vazia na última linha, se necessário:
<B_ar>
   <table border="1">
<BOUCLE_ar(ARTICLES){0,17}{par hasard}>
       [(#COMPTEUR_BOUCLE|alterner{'<tr>','','',''})]
               <td>#ID_ARTICLE</td>
       [(#COMPTEUR_BOUCLE|alterner{'','','','</tr>'})]
</BOUCLE_ar>
       [(#TOTAL_BOUCLE|alterner{'<td colspan="3"></td></tr>','<td colspan="2"></td></tr>','<td></td></tr>',''})]
   </table>
</B_ar>

Nota: Sendo este filtro puramente "numérico", ao aplicá-lo a [(#ID_ARTICLE|alterner{1,2})], exibirá 1 para as matérias com identificador ímpar e 2 para os identificadores pares.

-  Filtros de URL "absolutos". Todos os links gerados pelo SPIP (a partir dos atalhos como [->article 11] ou de tags como #URL_ARTICLE) são links "relativos", que não indicam o endereço completo do recurso vinculado. No entanto, para certos usos, como, por exemplo, a sindicação, é útil ter o endereço absoluto. Para isso, foram introduzidos dois filtros:
-  |url_absolue, que se aplica a URLs: [(#URL_ARTICLE|url_absolue)];
-  liens_absolus, que se aplica aos textos e transforma os endereços dos links e das imagens: [(#TEXTE|liens_absolus)].

(O filtro |abs_url combina estes dois filtros em um único, e aplica |url_absolue em #URL_ARTICLE, e |liens_absolus nos elementos do tipo #TEXTE.)

-  O filtro |reduire_image passa a ser capaz de reduzir as imagens no interior de um texto, podenso ser aplicado à tag #TEXTE. Outra modificação deste filtro: ao indicar o valor0 para a vertical ou horizontal, implicitamente é a outra dimensão que deve ser considerada para a redução. Assim, [(#LOGO_ARTICLE||reduire_image{60,0})] reduzirá o logo a uma dimensão horizontal de, no máximo. 60 pixels (a dimensão vertical sendo calculada de modo a conservar as proposções).

Melhoria da sintaxe dos templates

-  Os templates padrão passam para o formato XHTML 1.0 transitional.

-  Uma tag #DOSSIER_SQUELETTE permite disponibilizar mais facilmente conjuntos de templates que podem ser facilmente instalados em subdiretórios.

-  #FORMULAIRE_FORUM aceita um argumento que indica a página para onde o visitante que posta num fórum deve ser enviado. Por padrão, este destino passou a ser #URL_FORUM; mas certos usos podem requerer um retorno à mesma página (notação: [(#FORMULAIRE_FORUM{#SELF})]), ou para uma página específica ([(#FORMULAIRE_FORUM{obrigado.php})]).

-  Generalização das constuções do tipo [(#TAG|filtro{[(#OUTRA_TAG|outro_filtro)]})] para qualquer nível de aninhamento. Esta possibilidade aplica-se igualmente aos critérios nos loops, com os parêntesis retos sendo desnecessários (e até rejeitados).

-  Por razões de uniformização da sintaxe, a tag #EXPOSE vem substituir a antiga tag #EXPOSER. A única diferença está no facto que deve-se escrever[(#EXPOSE{on,off})] e N#ao mais [(#EXPOSER|on,off)].

-  Quando um loop usa o critério {statut}, a configuração padrão do status dos elementos reloacionados a esse loop desaparece. Em outras palavras, se os loops (ARTICLES) normais continuam a só selecionar as matérias com status ’publie’ (publicada), um loop <BOUCLE_a(ARTICLES){statut=prop}> selecionará as matérias propostas,

Do mesmo modo, o loop <BOUCLE_indy(BREVES){statut IN prop, publie}> selecionará todas as notas propostas ou publicadas; a tag #STATUT exibe para cada uma o status correspondente ( e, por exemplo, atribuir-lhes uma classe CSS diferente, em função do status).

-  o critério {par ...} aceita atualmente nomes de campos SQL específicos de forma dinâmica, nomeadamente pela tag #ENV, e a ausência deles não provoca um erro SQL. Por outro lado, este critério aceita a sintaxe {!par  ...} para ordenar em sentido inverso todas as colunas indicadas (isto pode substituir o critério{inverse}, nomeadamente quando se pretende fazer uma ordenação complexa considerando várias colunas). Para obter uma ordenação em sentido crescente para certas colunas e decrescente para outras, basta definir vários critérios par.

Tudo isto permite escrever facilmente templates de apresentação de uma tabela com diversas colunas integrando botões de ordenação em cada uma das colunas, como numa folha de cálculo. Um exemplo é dado aqui.

* *

Como de hábito, estas novidades serão progressivamente incorporadas à documentação.

Autor Ricardo Porto Publié le : Mis à jour : 26/07/25

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Português