'N Gevallestudie in die Kuns van Moduleskeuring
Onlangs het 'n kliënt my gevra om 'n nuwe funksie by die maatskappy se Drupal-werf by te voeg: vertoon PDF-lêers in die blaaier. Nadat ek die opsies op drupal.org gekyk het, het ek besef dat dit 'n perfekte geleentheid was om my werklike besluitnemingsproses te dokumenteer as ek 'n nuwe module gekies het . Ek sê altyd om modules wys te kies , maar nou kan jy sien hoe ek dink dit werk in die werklike lewe.
Definieer wat jy wil
Die eerste stap is om te definieer wat jy wil hê. In my geval wou ek:
- Die vermoë om PDF-lêers in 'n webblaaier te besigtig, soortgelyk aan hierdie voorbeeld. Die kliënt sal PDF's van die maatskappy se nuusbrief oplaai, en besoekers sal dit maklik kan lees.
- Die webwerf is Drupal 7 , dus die module sal daardie groot weergawe moet ooreenstem. (Drupal 7 is al vir 'n rukkie uit, dus as 'n module ontwikkelaar nog nie met 'n Drupal 7-weergawe uitgekom het nie, sal dit waarskynlik nie.)
- Alhoewel die kliënt dit nie spesifiseer nie, wou ek ook nie op 'n derdeparty diens staatmaak nie. Vir video's, is ek gelukkig om die inhoud na YouTube of Vimeo te plaas en dit dan op 'n Drupal-werf in te sluit, maar vir PDF's het ek nie gedink dat die moontlike ekstra blootstelling die potensiële rompslomp, breek en koste sou kon oorskry nie. Ek was egter oop vir 'n derdeparty diens as dit die enigste opsie was.
- Ten spyte van my wens om 'n derdeparty diens te vermy, het ek geweet dat my keuse waarskynlik 'n Javascript- biblioteek van derden benodig . Alhoewel dit 'n ekstra stap op toekomstige opgraderings sal voeg, voel ek oor die algemeen beter om my eie kopie van 'n biblioteek te bestuur eerder as om op 'n derdeparty diens te vertrou.
- Ek wou die module so liggewig en spesifiek as moontlik hou. Ek wou nie betrokke raak by 'n radikaal nuwe manier om media lêers te hanteer of te organiseer nie. Ek wou iets meer soos Colorbox, wat beelde vergroot vir beter vertoning, maar bly heeltemal onafhanklik van hoe jy kies om die prentlêers te bestuur. Ek het gemeen dat hierdie biblioteek pdf.js sou wees, maar ek was oop vir ander moontlikhede.
- Soos gewoonlik wou ek die algemene riglyne vir die keuse van 'n Drupal-module volg. Kies basies 'n module wat reeds 'n paar duisend mense vir 'n rukkie gebruik het, met 'n minimum van afhanklikhede, wat blykbaar gehandhaaf word deur 'n aktiewe ontwikkelaar wat beplan om die projek in die toekoms te ondersteun en nie ' Geen lisensiefooi nodig nie.
Soek op Drupal.org
Met hierdie doelwitte in gedagte, was die volgende stap 'n eenvoudige soektog op Drupal.org. Tyd om te spring in die Kuil van Module Goedheid.
& # 34; Vergelyking & # 34; Bladsy vir PDF-modules
My eerste stop was (of moes gewees het), hierdie bladsy: 'n vergelyking van PDF-kyker modules. Drupal.org het 'n uitstekende tradisie van dokumentasie bladsye wat die voor- en nadele van verskeie modules in dieselfde ruimte uiteensit. Daar is 'n sentrale lys van vergelykingbladsye, maar hulle word ook deur die werf besprinkel.
Die PDF-vergelykingbladsy het vier PDF-kykermodules ingesluit. Ek sal hulle hier dek, sowel as 'n paar ander wat ek gevind het om te soek. Ek sal begin met die kandidate wat ek besluit het om oor te slaan.
Kom ons gaan nou in die besonderhede van hoekom hierdie modules (of meestal nie) vir hierdie projek gewerk het nie.
Lêer Viewer
Lêer Viewer gebruik die Internet Archive BookReader, wat my aangespoor het omdat ek 'n Internet Archive junkie is. Elke keer as ek daar gaan, voel ek kuiltjies van vrees en oorweldig my by die berge van boeke wat ek van die eter kan pluk.
Dit gesê het, die demonstrasie site lyk my lelik vir my. Ek kan daarby lewe, maar ek het getwyfel dat my kliënt, as pdf.js soveel meer stylvol lyk.
Ook, op 'n tweede blik op die projekblad, het ek die groot vet aankondiging aan die bokant gesien: Hierdie module is formeel na die PDF-module verskuif . Redelik genoeg. Met minder as 400 installeer, lyk dit soos 'n goeie skuif met die meer gewilde PDF-module (wat ons in 'n oomblik sal dek). Moet nooit 'n module aflaai wat saamgesmelt / verskuif / verlaat is nie.
Google Viewer-lêerformatter
Google Viewer File Formatter is hoe dit klink: 'n manier om Google Docs te gebruik om skerms van lêers in jou webbladsy in te sluit. Alhoewel ek van die veelsydigheid van Google Docs hou, was een van my doelwitte onafhanklik van enige derdeparty-diens.
Hierdie module het ook minder as 100 installasies gehad.
Ajax Dokument Viewer
Alhoewel "AJAX" 'n algemene Javascript term is, het Ajax Document Viewer uitgelok op 'n spesifieke derdeparty diens. Slegs ongeveer 100 installeer. Aanbeweeg...
Scald PDF
Scald PDF het net 40 installeer, maar ek moes kyk, want dit was duidelik deel van 'n groter projek genaamd (ja) Scald. Soos die Scald-projekblad verduidelik het: " Scald is 'n innoverende opdrag om Media Atome in Drupal te hanteer."
Daardie sin het twee groot rooi vlae opgewek: "innoverende neem" en die woord "media" gekoppel aan "atoom". "Atoom" was natuurlik 'n herbevestigde woord vir 'ding', wat dit op sigself 'n rooi vlag gemaak het. Drupal het 'n voorliefde vir hierdie leë boks soort woorde: nodus , entiteit , funksie ... Hoe meer algemeen die woord, hoe meer verander die veranderinge mag wees.
Soos ek gerol het, is my vermoedens bevestig. Ek lees opgewonde eise van hoe Scald basies sou uitvind hoe ek Media op my werf hanteer het.
Nou, die waarheid is dat Drupal se Media-hantering 'n paar uitvindings kan gebruik. Scald is nie die enigste ambisieuse projek in hierdie ruimte nie. Met minder as 1000 installasies tot dusver wou ek nie op die grondvloer ingaan nie.
Sure, teen hierdie tyd volgende jaar, kan Scald die volgende aansigte wees . Dit sal rock. Maar dit kan ook verlate wees, met 'n (klein) roete van gebreekte plekke om te huil.
Vir nou wou ek 'n baie minder ambisieuse en gevaarlike oplossing hou. Wys net PDFs, asseblief. Dis al wat ek gevra het.
Shadowbox
Shadowbox het my verras: dit was 'n oplossing vir die vertoon van allerhande media, van PDF's na beelde na video. Dit was nie so vies soos Scald nie, aangesien dit net daarop sou fokus om media te vertoon sonder om nuwe konsepte soos "Media Atoms" in te voer. Maar ek het al soos Colorbox soos ek genoem het. Ek wou nie daardie besluit heroorweeg nie.
Ek het egter opgemerk (met 'n innerlike kreun) dat met meer as 16 000 installeer, Shadowbox 'n kragtiger alternatief in dieselfde ruimte kan wees. Ek moes kyk.
Die Shadowbox Drupal-module is basies 'n brug na 'n Javascript-biblioteek, Shadowbox.js, so ek het die biblioteek se webwerf nagegaan. Daar het ek twee redes ontdek om voort te gaan:
- Die biblioteek benodig 'n lisensiegeld vir kommersiële gebruik. Die fooi was redelik genoeg, maar ek probeer oopprogrammatuur wat nie gratis is nie, vermy .
- 'N deeglike soektog van die FAQ het getoon dat, in teenstelling met die beskrywing op die Drupal module bladsy, PDF's nie 100% ondersteun word deur die Shadowbox-biblioteek nie. Oeps. Goeie ding wat ek nagegaan het.
Die twee aanspraakmakers: & # 34; PDF & # 34; en & # 34; PDF Reader & # 34;
Nadat ek die res uitgeskakel het, het ek nou by die twee duidelike aanspraakmakers gekom: PDF en PDF Reader
Hierdie twee projekte het belangrike ooreenkomste gehad:
- Albei het byna 3000 installasies, veel meer as die alternatiewe (behalwe Shadowbox).
- Albei het dieselfde eksterne Javascript-biblioteek, pdf.js, gebruik.
Wat van verskille?
PDF-leser het ook die opsie vir integrasie van Google Docs gehad. In hierdie spesifieke geval het ek gedink dat my kliënt dalk daarvan hou, so ek het daarvan gehou om die opsie te hê.
Intussen is PDF gemerk as Soek mede-onderhouder (s). Dit kan 'n teken wees dat die ontwikkelaar binnekort die projek sal laat vaar, maar aan die ander kant was die mees onlangse pleeg 'n week gelede, so ten minste was die ontwikkelaar steeds aktief.
Aan die ander kant was PDF Reader gemerk as Aktief onderhou, maar die mees onlangse pleeg was 'n jaar gelede.
Sonder 'n duidelike wenner het ek besluit om hulle albei te toets.
Toets die aanspraakmakers
Ek het albei modules op 'n afskrif van my live site getoets. (Maak nie saak hoe soliede en onskadelike 'n module verskyn nie, probeer dit nooit eers op 'n lewendige webwerf nie. Jy kan jou hele werf breek.)
Ek was bevooroordeeld teenoor PDF-leser , want dit was meer opsies (soos Google Docs) as PDF . Ek het dus besluit om eers PDF te probeer om dit uit die weg te ruim.
PDF misluk: kompilasie benodig?
Maar toe ek PDF geïnstalleer het en README.txt lees, het ek 'n probleem ontdek wat ek gesien het maar geïgnoreer op die projekblad. Om hierdie rede lyk dit of hierdie module vereis dat jy pdf.js manueel opstel. Alhoewel die projekblad voorgestel het dat dit nie noodwendig nodig was nie, het README.txt voorgestel dit was.
Aangesien PDF Reader die presiese dieselfde biblioteek sou gebruik sonder om hierdie stap te benodig, het ek besluit om dit eers te probeer. As dit nie werk nie, kan ek altyd terug na PDF gaan en probeer om pdf.js handmatig op te stel.
PDF Reader: Sukses! Soortvan.
So, ek het uiteindelik probeer om PDF Reader . Hierdie module bied 'n nuwe widget vir die vertoon van 'n lêer veld. Jy voeg 'n lêer veld by die verlangde inhoudstipe en stel die widget tipe in PDF Reader. Dan skep jy 'n nodus van hierdie tipe en laai jou PDF op. Die PDF verskyn ingebed in 'n "boks" op die bladsy.
U kan verskillende vertoonopsies probeer deur die inhoudstipe weer te wysig en die vertoningsinstellings vir die veld te verander.
Ek het gevind dat elke vertoning opsie voor- en nadele gehad het:
- Die Google Docs- leser het goed gewerk as 'n inbedding, maar toe ek dit gekliek het om volskerm te gaan, het ek op 'n Google Docs-bladsy gelikwideer wat my verskoning gevra het dat my koerslimiet oorskry is. Oeps. Miskien sou dit meer betroubaar wees as ek die module by 'n betaalende Google Apps-rekening aangeheg het, maar ek het nie gehelp om uit te vind nie, want ek was redelik seker dat my kliënt nie die skerm sou wou hê nie.
- Die opsie pdf.js het wonderlik gewerk ... op Firefox en Chrome. Maar toe ek Internet Explorer afgevuur het, het die boks leeg verskyn. Blykbaar is dit 'n probleem met pdf.js self, nie die PDF Reader module nie. Ek dink ek moes dit verwag het, aangesien pdf.js deur Mozilla ontwikkel is en Internet Explorer is ... self. Tog was ek teleurgesteld dat ek nie gedink het om te bevestig dat pdf.js in die eerste plek betroubaar op alle blaaiers gewerk het nie.
- Die inbedding opsie was die betroubaarste. Dit het eintlik Adobe Reader in 'n boks op die webblad gehardloop. My Firefox verkies nog steeds om pdf.js te hardloop, maar ek dink dit was 'n blaaierinstelling. In elk geval, so lank as wat 'n besoeker óf Firefox óf 'n PDF-kyker soos Adobe Reader gehad het, sou die PDF vertoon.
Op die ou end was my oplossing om die PDF-leser te gebruik met die installeeropsie . Met hierdie opsie kan ek 'n PDF aan 'n Drupal knooppunt aanheg, en dit betroubaar op 'n Drupal webblad vertoon.
Ongelukkig is soms "betroubaar" nie genoeg nie. Na al hierdie soektogte moes ek tog 'n derdeparty diens oorweeg.