Un caso de estudo na arte da selección de módulos
Recientemente, un cliente pediume que engada unha nova característica para o sitio web da empresa Drupal: amosar arquivos PDF no navegador. Cando navegaba polas opcións de drupal.org, deime conta de que era unha oportunidade perfecta para documentar o meu proceso de toma de decisións real cando elixín un novo módulo . Sempre dicindo que elixir os módulos sabiamente , pero agora podes ver como creo que isto funciona na vida real.
Defina o que quere
O primeiro paso é definir o que quere. No meu caso, quería:
- A capacidade de ver ficheiros PDF nun navegador web, semellante a este exemplo. O cliente cargará os PDF do boletín informativo da empresa e os visitantes poderán lelos facilmente.
- O sitio web é Drupal 7 , polo que o módulo necesitará combinar esa versión principal . (Drupal 7 xa pasou moito tempo, polo tanto, se un desenvolvedor de módulos aínda non saíu cunha versión Drupal 7, probablemente non o farán).
- Aínda que o cliente non especificou isto, tamén quería evitar depender dun servizo de terceiros. Para os videos, estou feliz de publicar o contido en YouTube ou Vimeo e logo inserirlo nun sitio de Drupal, pero para PDFs, non pensaba que a posible exposición adicional superaría as posibles molestias, roturas e gastos. Non obstante, estaba aberto a un servizo de terceiros se fose a única opción.
- A pesar do meu desexo de evitar un servizo de terceiros, sabía que a miña elección probablemente requiriría unha biblioteca Javascript de terceiros. Aínda que isto engadirá un paso extra para as actualizacións futuras, síntoime mellor para executar a miña propia copia dunha biblioteca en lugar de depender dun servizo de terceiros.
- Quería manter o módulo máis lixeiro e específico posible. Non quería involucrarse cunha forma radicalmente nova de manipular ou organizar ficheiros multimedia. Eu quería algo máis como Colorbox, que aumenta as imaxes para unha mellor visualización, pero permanece completamente independente de como elixe xestionar os ficheiros de imaxe. Tiven unha idea de que esta biblioteca sería pdf.js, pero estaba aberto a outras posibilidades.
- Como é habitual, quería seguir as directrices xerais para escoller un módulo Drupal. Basicamente, escolle un módulo que xa foi empregado por algúns miles de persoas (se é posible) por un tempo, cun mínimo de dependencias, que parece ser mantido por un desenvolvedor activo que pretende seguir apoiando o proxecto no futuro e non " Non esixe unha tarifa de licenza.
Buscar en Drupal.org
Con estes obxectivos en mente, o seguinte paso foi unha simple busca en Drupal.org. Tempo para saltar ao Pit Ball of Module Goodness.
& # 34; Comparación & # 34; Páxina para módulos PDF
A miña primeira parada foi (ou debería ser), esta páxina: unha comparación de módulos de visor de PDF. Drupal.org ten unha excelente tradición de páxinas de documentación que describen os pros e os contras de varios módulos no mesmo espazo. Hai unha lista central de páxinas de comparación, pero tamén están espolvoradas en todo o sitio.
A páxina de comparación de PDF incluíu catro módulos de visor de PDF. Vareilles abaixo aquí, así como outros dous que atopei na procura. Comezarei cos candidatos que decidín ignorar.
Agora imos afondar nas particularidades de por que estes módulos fixeron (ou non fixeron máis que nada) traballar para este proxecto.
Visor de ficheiros
O visor de ficheiros usa o arquivo de Internet BookReader, que me intrigou porque son un junkie de Internet Archive. Cada vez que vou alí, sento cóxegas de medo e desbordo nas montañas de libros que podo sacar do éter.
Dito isto, o sitio de demostración parecía un pouco feo para min. Podería vivir con iso, pero dubidaba do meu cliente, cando pdf.js parece moito máis elegante.
Ademais, nunha segunda ollada á páxina do proxecto, vin o gran anuncio audaz na parte superior: Este módulo foi trasladado formalmente a un módulo PDF . Bastante xusto. Con menos de 400 instalacións, combinándose co módulo PDF máis popular (que cubriremos nun momento), parece un bo movemento. Nunca descargue un módulo que fose combinado / movido / abandonado.
Formato de ficheiros de Google Viewer
O formateador de ficheiros de Google Viewer é o que parece: unha forma de usar Google Docs para inserir pantallas de arquivos na súa páxina web. Aínda que me gustou a versatilidade de Google Docs, un dos meus obxectivos era manter a independencia de calquera servizo de terceiros.
Ademais, este módulo tiña menos de 100 instalacións.
Visor de documentos Ajax
Aínda que "AJAX" é un termo xeral de Javascript, o visualizador de documentos de Ajax acabou por contar cun servizo de terceiros específico. Só preto de 100 instalacións. Seguindo ...
Scald PDF
Scald PDF só tiña 40 instalacións, pero tiven que botarlle unha ollada, xa que era claramente parte dun proxecto máis grande chamado (si) Scald. Como explicou a páxina do proxecto Scald: " Scald é unha solución innovadora para manexar os medios de átomos en Drupal".
Esa oración levantou dúas enormes bandeiras vermellas: "toma innovadora" ea palabra "Media" combinou con "Atom". "Atom" era obviamente unha palabra reiterada para "cousa", que o converteu nunha bandeira vermella por si só. Drupal ten unha inclinación por estas palabras de caixa baleira: nó , entidade , característica ... A palabra máis xeral, canto máis pescan os cambios pode ser.
Mentres me desprazaba, as sospeitas confirmáronse. Lin as afirmacións emocionadas de como Scald reinventaría basicamente como manexaba Media no meu sitio.
Agora, o certo é que o manexo de medios de Drupal podería empregar algo de reinventa. Scald non é o único proxecto ambicioso neste espazo. Con todo, con menos de 1000 instalacións ata agora, non quería entrar na planta baixa.
Por suposto, nesta ocasión o próximo ano, Scald podería ser as próximas Vistas . Isto sería rockeiro. Pero tamén podería ser abandonware, cun rastro (pequeno) de sitios rotos deixados de chorar.
Por agora, quería manter unha solución menos ambiciosa e perigosa. Simplemente mostre PDF, por favor. Iso é todo o que estaba a pedir.
Shadowbox
Shadowbox sorprendeume: afirmaba ser unha solución única para mostrar todo tipo de medios, desde PDF a imaxes a video. Isto non era tan arduo como Scald, xa que só se centraría na exhibición de medios sen introducir novos conceptos como "Media Atoms". Pero xa me gustou a Colorbox, como dixen. Non quería ter que repensar esa decisión.
Con todo, fixen nota (cun xemido interno) que con máis de 16.000 instalacións, Shadowbox podería ser unha alternativa máis poderosa no mesmo espazo. Tiven que botar unha ollada.
O módulo Shadowbox Drupal é basicamente unha ponte para unha biblioteca de Javascript, Shadowbox.js, polo que comprobou o sitio web da biblioteca. Alí descubrín dúas razóns para avanzar:
- A biblioteca require unha taxa de licenza para uso comercial. A tarifa era bastante razoable, pero trato de evitar o software de código aberto que non é gratuíto .
- Unha procura coidadosa das preguntas frecuentes revelou que, ao contrario da descrición na páxina do módulo de Drupal, os PDF non son compatibles ao 100% coa biblioteca Shadowbox. Xa Bo que cheguei.
Os dous contendentes: & # 34; PDF & # 34; e & # 34; lector de PDF & # 34;
Tras eliminar o resto, agora chegou aos dous obvios candidatos: PDF e PDF Reader
Estes dous proxectos tiñan semellanzas clave:
- Ambos tiñan case 3.000 instalacións, moito máis que as alternativas (excepto Shadowbox).
- Ambos utilizaron a mesma biblioteca Javascript externa, pdf.js.
E sobre as diferenzas?
O lector de PDF tamén tiña a opción para a integración de Google Docs. Neste caso particular, pensei que o meu cliente podería gustarlle, así que me gustou ter a opción.
Mentres tanto, o PDF foi marcado como Buscando co-mantenedor (s). Isto podería ser un sinal de que o desarrollador pronto abandonaría o proxecto, pero, por outra banda, o commit máis recente foi hai unha semana, polo menos o desarrollador aínda estaba activo.
Doutra banda, o lector de PDF marcouse como Activamente mantido, pero o commit máis recente foi fai un ano.
Sen un claro ganador, decidín probalas a ambos.
Probar os contendentes
Probei dous módulos nunha copia do meu sitio en directo. (Non importa o sólido e inocuo que apareza un módulo, nunca tente primeiro nun sitio en directo. Pode romper todo o sitio).
Eu era partidario de PDF Reader , porque parecía ter máis opcións (como Google Docs) que PDF . Entón, decidín probar PDF primeiro, para sacalo do camiño.
Fallo de PDF: compilación necesaria?
Non obstante, cando instalei PDF e lin README.txt, descubrín un problema que vira pero ignoraba na páxina do proxecto. Por algunha razón, este módulo parece esixir que compile pdf.js manualmente. Aínda que a páxina do proxecto suxeriu que isto non era necesariamente necesario, README.txt suxeriu que era.
Dado que o PDF Reader usaría a mesma biblioteca exacta sen necesitar este paso, decidín probalo primeiro. Se non funcionase, sempre podería volver a PDF e tentar compilar manualmente pdf.js.
Lector de PDF: éxito! Clase de.
Entón, por fin, probei PDF Reader . Este módulo proporciona un novo widget para mostrar un campo Arquivo. Engade un campo de ficheiro ao tipo de contido desexado e configura o tipo de widget ao lector de PDF. Entón, cree un nodo deste tipo e cargue o seu PDF. O PDF aparece incrustado nunha "caixa" na páxina.
Pode probar diferentes opcións de visualización modificando de novo o tipo de contido e cambiando a configuración de visualización para o campo.
Descubrí que cada opción de visualización tiña pros e contras:
- O lector de Google Docs funcionou ben como un embed, pero cando prema nel para ir á pantalla completa, rematei nunha páxina de Google Docs que pediu desculpas ao meu límite de tarifa. Xa Quizais isto sería máis fiable se enganché o módulo a unha conta de Google Apps que pagaba, pero non me preocupaba en decatarme, xa que estivera bastante seguro de que o meu cliente non lle gustaría ver a pantalla.
- A opción pdf.js traballou de xeito marabilloso ... en Firefox e Chrome. Pero cando despedín Internet Explorer, a caixa apareceu baleira. Ao parecer, este é un problema co propio pdf.js, non co módulo de lector de PDF . Supoño que debería ter esperado isto, dado que pdf.js é desenvolvido por Mozilla e Internet Explorer está ... en si. Aínda así, quedei decepcionado de non pensar que confirmase que pdf.js funcionase de forma fiable en todos os navegadores en primeiro lugar.
- A opción de inserción foi a máis fiable. Isto realmente executaba Adobe Reader nunha caixa na páxina web. O meu Firefox aínda prefería executar pdf.js, pero creo que esta era unha configuración do navegador. De calquera xeito, sempre que un visitante tivese Firefox ou un visor de PDF como Adobe Reader, o PDF mostraríase.
Deste xeito, ao final, a miña solución era usar o PDF Reader coa opción de visualización de Embed . Esta opción permíteme achegar un PDF a un nodo Drupal e amosar de xeito fiable nunha páxina web de Drupal.
Desafortunadamente, ás veces "confiable" non é suficiente. Logo de toda esta busca, tiven que considerar un servizo de terceiros despois de todo.