Navegação automática
- Atualmente, há alguns bugs em Autonav:
- Atualmente, o script exige que tenha um link em cada linha da coleção. Se não tiver o link, ele não ligará as páginas que estiverem antes e depois da linha sem link. Ocho que a solução seria em Módulo:Book ou Módulo:List em getListOfChaptersFromText() em result[nb] = getChapterFromLine( line ). Poderia verificar se a linha tem link antes de incluir no resultado.
Se o título tiver alguns caracteres específicos, a autonav não funciona: Guia para iniciantes em genealogia/Qual "software" devo usar?, Manual de urbanismo/Canalização e Retificação de Cursos D'água e Acupuntura hoje/Acupuntura & Odontologia.
- É possível gerar HTML através de coleção? Se o MediaWiki não tem esse recurso, talvez um script poderia ser usado para gerar o HTML para o usuário através da coleção quando ele pedir. Assim, não precisaríamos de páginas especiais de impressão.
{{LivroPP}}
resolve redundância entre índice e coleção, mas exige que a pessoa escreva o nome do livro completamente, o que não é necessário se o índice estivesse na página inicial.- Acho que seria bom a possibilidade de usar uma aparência alternativa em livros específicos em vez da aparência padrão. Este livro teria uma predefinição com nome padrão e a aparência alternativa. O script de Autonav poderia verificar se essa predefinição existe para usá-la. Se isso não for possível, poderíamos pelo menos definir a cor de borda e preenchimento na página da coleção e o script leria a cor dela.
2. O formato ZIM é bem dizer uma versão "HTML" da coleção (ele arquiva e indexa HTML). Temos também o EPUB. Eu "desisti" de gerar HTML através de transclusão, porque o script teria que dar um jeito para aumentar os níveis de cada seção, antes de gerar esse "HTML". Eu até fiz um simples script para aumentar os níveis, mas essa não seria uma solução, pois necessitaria de alterações na forma como fazemos wikilivros (dessa forma cada módulo teria que começar com uma seção com nome do módulo e colocar todo conteúdo dentro dessa seção). Por isso optei por deixar o ZIM como a versão "HTML".
3. Pois é, a pessoa tem que escrever o nome do livro completamente, mas não acho que isso seja tão difícil assim (rs). Também acho interessante criar a coleção a partir de um índice montado na primeira página do livro, mas como ninguém havia criado um "script" para fazer isso, logo criei essa predefinição para eliminar ao menos uma redundância. Posso dizer também que me motivei a criar essa predefinição, para também, padronizar em parte a estrutura de um livro (prefácio, colocação de elementos na primeira página, etc.).
4. Eu sugeri que houvessem classes CSS para cada livro (claro, algo editável por "editores", ou seja, não limitado a "administradores"). Infelizmente isso ainda não é possível :/
- O recurso de definir CSS específico para cada livro foi pedido no bugzilla:15075. Até que seja resolvido, estamos utilizando um gadget como hack: Wikilivros:Gadgets dos livros. Ele se encarrega de carregar estes scripts e folhas de estilos nos livros correspondentes. De qualquer modo, a permissão necessária para editar páginas de CSS e JS, que estão no domínio MediaWiki é a editinterface, que só é concedida a administradores. Futuramente, se/quando implementarem os gadgets 2.0 a situação poderá mudar: mw:Thread:Talk:ResourceLoader/V2 testing/Questions about permission model and developer workflow.
Colocar índice na página inicial do livro
[editar código-fonte]Abacaxi, você entende de Lua? Talvez seja possível fazer o script que colete os links na primeira página do livro através dessa linguagem. Mas para ser mesmo automático, precisamos de um "trigger", ou algo orientado a eventos (tipo, quando atualizarem a página, aciona-se o "script" e ele atualiza a coleção).
Eu não entendo de Lua, mas se você quiser dar início a "este script", eu tento ajudar. Também, possivelmente, o Helder e o Raylton em coisas mais emergenciais, ou difíceis, eles podem prestar um "suporte" rs.
Notas
[editar código-fonte]Elementos sintáticos idênticos e significados diferentes
[editar código-fonte]A sintaxe usada na coleção parece dar significados diferentes a determinados elementos:
- Declaração de capítulo: usa-se a sintaxe para definição de termos
;
. Na coleção é entendido como "capítulo", no "livro" é entendido como "definição de termo" (como os elementos tipo HTMLdt
, etc.). Usaríamos uma sintaxe alternativa para indicar o capítulo? E qual seria?
Como pretende solucionar isso Abacaxi?
Recursos do Scribunto (Lua)
[editar código-fonte]Dei uma breve leitura agora, parece que você pode usar:
Título.getContent()
para pegar o conteúdo da página por um objeto "título". Veja mais em https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Title_objects .
2. Não consegui visualizar ZIM pelo navegador. A ideia da versão HTML é poder visualizar no navegador e imprimir sem precisa de outro programa.
4. Se é possível para um script coletar dados de uma página, como lista de links, significa que é possível ler cor de uma predefinição.
Lua não é o problema. A dificuldade é saber como scripts do Mediawiki funcionam. Eu vi scripts em Lua e JavaScript espalhados em vários lugares. Por ser coisas sensíveis, só administradores podem mexer.
2. O ZIM precisa mesmo de um leitor próprio, já EPUB tem addon para navegador (significa que você pode ler no próprio navegador). E infelizmente, ainda o melhor documento para impressão é o PDF. HTML não foi feito para impressão, agora é que estão aliando CSS3 para poder, quem sabe, criar o tal "HTML para impressão". Mas isso é um assunto "longo", na internet tem muita coisa sobre isso.
4. Acredito que trabalhar diretamente com CSS seria mais interessante. No mais eu deixo Helder.wiki e Raylton P. Sousa comentarem sobre isso.
Em teoria poderíamos utilizar lua para ler a página de índice e processa-la conforme necessário. Só não sei qual a viabilidade disso. Provavelmente faríamos o mesmo processo que fazemos com javascript só que com uma linguagem diferente. Não é possível pular a etapa de criar coleção porque a coleção é padronizada e o índice não. Automação exige padronização.
A predefinição {{LivroPP}}
parece interessante. Vou dar uma olhada nela em breveǃ
O resto comento logo maisǃ Abraçoǃ
Exato. O melhor é que o sistema possa ter uma sintaxe padronizada, e como a Collection não aceita que a lista seja gerada por transclusão, a única opção é que a sintaxe utilizada seja aquela reconhecida por essa extensão.
Os índices não eram feitos de forma padronizada, então mesmo o JavaScript que criei para facilitar a criação das coleções encontra problemas pelo caminho, que exigem correção manual...
Seria mais adequado atualizações automáticas, porque as páginas continuarão mudando com o tempo. O Raylton tinha um script que cria ou atualiza páginas de coleção de acordo com a página inicial.
E não foi esse o JS instável que eu mencionei no comentário anterior?
A propósito, já gerei a lista coleções/índices a atualizar... :-)
Abri o pedido de exportação em formato HTML no bugzilla:60300. Isso já havia sido sugerido no Tópico:Wikilivros:Plantão de dúvidas/Coleção de HTML e na mw:Extension:Collection/Wishlist#Output HTML.
O MediaWiki propriamente dito não tem nenhum outro recurso que gere o livro inteiro em HTML. Uma tentativa minha e do Raylton nesse sentido foi a mw:Extension:BookManager#Automatic print version, mas infelizmente ainda não temos uma versão que possa ser instalada nas wikis da WMF.
Outras opções seriam:
- Abandonar o suporte a quem não tem/desativa JavaScript no navegador, e desenvolver um gadget que gere a versão HTML on the fly, quando requisitado pelo leitor, sem criar página alguma na wiki.
- Utilizar links deste tipo para a Special:ExpandTemplates, que se encarrega de expandir o código wiki quando alguém clicar? A desvantagem é que no HTML resultante também aparece a interface da página especial...
Não acho difícil eles fazerem a versão HTML, porque seria só juntar todas as página em uma só e mostrar como versão de impressão. E a motivação é poder ver tudo ou imprimir sem precisar de software especial.
Sim, essas alternativas podem ser usadas temporariamente enquanto eles não implementam versão HTML. Mas seria bom atualizar para usar a coleção como base, em vez de Predefinição:Lista de capítulo.
Seria mais adequado usar domínio "Livro" em vez de "Wikilivros:Livro/...". Na Wikipédia, esse domínio é usado (Livro:Mitologia Grega). O trabalho será renomear tudo.
E qual seria o padrão proposto para índice e página inicial do livro? Como falei, seria adequado o editor se preocupar em editar em só um lugar. Os outros poderiam ser atualizados automaticamente ou por um robô que monitora as edições de índices.
Difícil não é. Tanto que eu e o Raylton até incluímos um protótipo na extensão BookManager... A questão é que esse tipo de coisa, que só beneficia um dos projetos menores (ou seja, quase todos exceto a Wikipédia inglesa), costuma ser tratado como baixa prioridade. Então a não ser que a gente mesmo coloque a mão na massa, e escreve o código necessário, para que "eles" só precisem revisar, as coisas costumam andar bem lentamente...
Como disse em outro lugar, a discussão sobre o domínio específico para as coleções deveria ser continuada em um tópico específico.
Acrescentei ao Módulo:Book (antes chamado de "Módulo:Nav") uma função que gera a versão para impressão, e coloquei no lugar da predefinição que era utilizada na Predefinição:Versão para impressão automática.
Optei por ignorar (não transcluir, nem mencionar) eventuais links vermelhos que estejam na coleção, por não acrescentarem nada à versão impressa.
Para simplificar as coisas, acho que {{Versão para impressão}}
poderia então ser movido para {{livro}}
. Assim usaríamos só uma predefinição. Poderia ser colocado também o link de HTML em {{Livro gravado}}
por ser um dos formatos também. Quando eles implementarem HTML pelo próprio MediaWiki é só substituir na predefinição.
Agora é saber qual é a melhor solução, para não ter que criar páginas "/imprimir". Posso ver Special:ExpandTemplates e o problema com a interface, mas não sei como ficaria aquela com JavaScript. Não sei se é possível, mas pode ser bom que a predefinição seja carregada numa página que esteja sendo prevista e ter algum bloqueio para evitar que ela seja salva. A vantagem é que a interface ficaria na parte debaixo.
Que boa notícia Helder. Podemos colocar a {{Lista de capítulos}}
em desuso agora né? Pelas minhas contas era só isso que faltava tornar a antiga predefinição obsoleta.
Acho que resolvi o nosso problema com mais uma gambiarra. Ela combina:
- Especial:Expandir predefinições, que produzirá a versão para impressão por meio da
{{Versão para impressão automática}}
- Um link incluído na "Predefinição:Livro" (que se encarrega de passar uns parâmetros "mágicos" para a página especial funcionar como queremos )
- MediaWiki:Gadget-PrintableVersion.css, que oculta algumas partes da interface que não serão relevantes ao imprimir
Provavelmente precisará de mais uns ajustes para ficar ótimo (e mover o CSS para o lugar ideal), mas por enquanto, o que acharam?
A {{Lista de capítulos/Imprimir}}
tá obsoleta também? Vi alguns afluentes!
Parecem ser afluentes fantasmas...
Eu pensava que a atualização de afluentes ia para a fila de tarefas, mas conforme esta consulta à API, ela está vazia, mesmo havendo 27 afluentes que precisam ser corrigidos. Será que ela não está funcionando como deveria?
De qualquer modo, abrir cada página em modo de edição, e clicar em salvar (sem sequer alterar o código) costuma ser o suficiente para forçar a remoção da lista de afluentes (funcionou com Gramática inglesa estrutural/Imprimir e Alfabeto para crianças/Imprimir, por exemplo). Fiz isso com as páginas que faltavam, então não há mais transclusões.
Massa... Comecei a página de ajuda para documentarmos.
Ajudem-me!
Voltando ao assunto. Criei uma seção listando os erros conhecidos da navegação. E outra com os tópicos relacionados. Podem me ajudar a completar?
A propósito, o mw:Manual:Pywikibot/touch.py pode ser útil caso apareça uma quantidade maior de páginas para atualizar futuramente...
Suspeito que o problema seja o mesmo do bugzilla:39049, e que não podemos fazer nada a respeito localmente...
Uma pergunta, se a cor e aparência da navegação de livros específicos é definida pelo CSS, seria possível colocar um script que lê informações de páginas editáveis por usuários comuns para gerar o CSS? Da mesma forma que um script lê a coleção para fazer a navegação.
CSS não é nem deve ser editável por usuários comuns por questões de segurança.
O que eu tinha falado era deixar o usuário colocar a informação na página da coleção, como cor de bordo e de preenchimento, e então o script lê a cor e faz a navegação ter essa cor. Poderia ser criado também múltiplos estilos de navegação e o usuário por na coleção qual estilo ele prefere.
Curiosidade.
Sobre Citação: Helder escreveu: «CSS não é nem deve ser editável por usuários comuns por questões de segurança.»
Você fala no sentido de alguém mudar o visual de algum elemento para se passar por outro para pode fazer alguma coisa mal intencionada?
Pelo que me lembro do CSS, e pelo pouco que sei sobre ele (uso só os recursos básicos... rs), sei que ele não tem muitos recursos para permitir vazamento de informação e outras coisas...
Ou você também está se referindo a estabilidade do projeto, ex.: "estragar" o visual (acessibilidade também) seja por vândalos, seja por pessoas que não entendam muito de CSS... ?
Finalizando, acredito que possamos permitir, mas só a usuários cadastrados com um número mínimo de edições (assim como se faz para ser revisor, etc.).
O CSS por ser aplicável ao site todo. pode torna-lo totalmente inutilizável. Ou até mesmo tornar impossível visualizar o site inteiro. Além de inserir informações falsas/promocionais que só poderiam ser desfeitas por pessoas com conhecimento especifico etc.
Ao contrário do CSS pessoal que cada usuário pode editar, o CSS que se aplica a todos os usuários só deve ser editável por usuários que tenham a permissão correspondente (atualmente, "editinterface"). Ver também as preocupações levantadas nos seguintes lugares:
Ao contrário do Guiwp, minha proposta não é deixar usuários editar CSS e sim a criação de um script que leia dados que o usuário colocar na página da coleção para dar mais customização à aparência do livro, como na navegação. Isso deixa o livro com uma cara mais única em vez de genérica.