Μια μελέτη περίπτωσης στην τέχνη της επιλογής ενότητας
Πρόσφατα, ένας πελάτης μου ζήτησε να προσθέσω ένα νέο χαρακτηριστικό στον ιστότοπο Drupal της εταιρείας: προβάλλετε αρχεία PDF στο πρόγραμμα περιήγησης. Καθώς περιηγούσα τις επιλογές στο drupal.org, συνειδητοποίησα ότι αυτή ήταν μια τέλεια ευκαιρία να τεκμηριώσω την πραγματική διαδικασία λήψης αποφάσεων μου καθώς επέλεξα μια νέα ενότητα . Πάντα λέω να επιλέγουμε με προσοχή τις ενότητες , αλλά τώρα μπορείτε να δείτε πώς νομίζω ότι αυτό λειτουργεί στην πραγματική ζωή.
Ορίστε τι θέλετε
Το πρώτο βήμα είναι να ορίσετε τι θέλετε. Στην περίπτωσή μου, ήθελα:
- Η δυνατότητα προβολής αρχείων PDF σε ένα πρόγραμμα περιήγησης ιστού, παρόμοιο με αυτό το παράδειγμα. Ο πελάτης θα ανεβάσει αρχεία PDF του ενημερωτικού δελτίου της εταιρείας και οι επισκέπτες θα μπορούν να τα διαβάσουν εύκολα.
- Ο ιστότοπος είναι Drupal 7 , οπότε η ενότητα θα πρέπει να ταιριάζει με αυτή τη σημαντική έκδοση . (Το Drupal 7 έχει βγει για λίγο τώρα, οπότε αν κάποιος προγραμματιστής δεν έχει βγει ακόμα με μια έκδοση του Drupal 7, πιθανότατα δεν θα το κάνει).
- Παρόλο που ο πελάτης δεν το διευκρίνισε, ήθελα επίσης να αποφύγω τη χρήση υπηρεσίας τρίτου μέρους. Για βίντεο, είμαι στην ευχάριστη θέση να δημοσιεύσω το περιεχόμενο στο YouTube ή στο Vimeo και στη συνέχεια να το ενσωματώσω σε έναν ιστότοπο του Drupal, αλλά για τα αρχεία PDF, δεν πίστευα ότι η πιθανή επιπλέον έκθεση θα αντισταθμίσει την πιθανή ταλαιπωρία, θραύση και δαπάνη. Εντούτοις, ήμουν ανοικτός σε μια υπηρεσία τρίτων εάν ήταν η μόνη επιλογή.
- Παρά την επιθυμία μου να αποφύγω μια υπηρεσία τρίτων, ήξερα ότι η επιλογή μου θα απαιτούσε πιθανώς μια βιβλιοθήκη Javascript τρίτου μέρους. Αν και αυτό θα προσθέσει ένα επιπλέον βήμα στις μελλοντικές αναβαθμίσεις, γενικά αισθάνομαι καλύτερα να τρέχω το δικό μου αντίγραφο μιας βιβλιοθήκης παρά να βασίζομαι σε μια υπηρεσία τρίτων.
- Ήθελα να διατηρήσω τη μονάδα όσο το δυνατόν πιο ελαφριά και συγκεκριμένη. Δεν ήθελα να ασχοληθώ με κάποιον ριζικά νέο τρόπο χειρισμού ή οργάνωσης αρχείων πολυμέσων. Ήθελα κάτι περισσότερο σαν το Colorbox, το οποίο διευρύνει τις εικόνες για καλύτερη προβολή, αλλά παραμένει εντελώς ανεξάρτητο από το πώς επιλέγετε να διαχειριστείτε τα αρχεία εικόνας. Είχα την υπομονή ότι αυτή η βιβλιοθήκη θα ήταν pdf.js, αλλά ήμουν ανοικτή σε άλλες δυνατότητες.
- Ως συνήθως, ήθελα να ακολουθήσω τις γενικές οδηγίες για την επιλογή μιας ενότητας Drupal. Βασικά, επιλέξτε μια ενότητα που έχει ήδη χρησιμοποιηθεί από μερικές χιλιάδες άτομα (αν είναι δυνατόν) για λίγο, με ελάχιστες εξαρτήσεις, που φαίνεται να διατηρούνται από έναν ενεργό προγραμματιστή ο οποίος σχεδιάζει να συνεχίσει να υποστηρίζει το έργο στο μέλλον και δεν " t απαιτεί τέλος αδείας.
Αναζήτηση στο Drupal.org
Με αυτούς τους στόχους στο μυαλό, το επόμενο βήμα ήταν μια απλή αναζήτηση στο Drupal.org. Ώρα για να μπείτε στο Ball Pit of Module Goodness.
& # 34; Σύγκριση & # 34; Σελίδα για τις λειτουργικές μονάδες PDF
Η πρώτη μου στάση ήταν (ή έπρεπε να ήταν) αυτή η σελίδα: μια σύγκριση ενοτήτων προβολής PDF. Το Drupal.org έχει μια εξαιρετική παράδοση σελίδων τεκμηρίωσης που περιγράφουν τα πλεονεκτήματα και τα μειονεκτήματα των διαφόρων ενοτήτων στον ίδιο χώρο. Υπάρχει ένας κεντρικός κατάλογος σελίδων σύγκρισης, αλλά επίσης πασπαλίζονται σε ολόκληρο τον ιστότοπο.
Η σελίδα σύγκρισης PDF περιελάμβανε τέσσερις ενότητες προβολής PDF. Θα τα καλύψω εδώ, καθώς και μερικά άλλα που βρήκα από την αναζήτηση. Θα ξεκινήσω με τους υποψηφίους που αποφάσισα να παραλείψω.
Τώρα ας δούμε τις ιδιαιτερότητες του γιατί οι ενότητες αυτές έκαναν (ή κυρίως δεν) δουλειά για αυτό το έργο.
Πρόγραμμα προβολής αρχείων
Το πρόγραμμα προβολής αρχείων χρησιμοποιεί τον Internet Archive BookReader, ο οποίος με ενέπνευσε γιατί είμαι τζόκερ του Internet Archive. Κάθε φορά που πηγαίνω εκεί, νιώθω γεμάτος φόβο και συντρίβω στα βουνά των βιβλίων που μπορώ να μαζέψω από τον αιθέρα.
Τούτου λεχθέντος, ο χώρος της επίδειξης μου φαινόταν λίγο άσχημος. Θα μπορούσα να ζήσω με αυτό, αλλά αμφισβήτησα τον πελάτη μου, όταν το pdf.js φαίνεται πολύ πιο κομψό.
Επίσης, σε μια δεύτερη ματιά στη σελίδα του έργου, είδα την μεγάλη τολμηρή ανακοίνωση στην κορυφή: Αυτή η ενότητα έχει μεταφερθεί σε μορφή PDF τυπικά . Δίκαιο. Με λιγότερες από 400 εγκαταστάσεις, η συγχώνευση με το πιο δημοφιλές στοιχείο PDF (το οποίο θα καλύψουμε σε λίγο), φαίνεται σαν μια καλή κίνηση. Ποτέ μην κατεβάζετε μια ενότητα που έχει συγχωνευθεί / μετακινηθεί / εγκαταλειφθεί.
Διαμορφωτής αρχείων του Google Viewer
Το μορφοποιητή αρχείων του Google Viewer είναι αυτό που ακούγεται: ένας τρόπος χρήσης των Εγγράφων Google για την ενσωμάτωση οθονών αρχείων στην ιστοσελίδα σας. Παρόλο που μου άρεσε η ευελιξία των Εγγράφων Google, ένας από τους στόχους μου ήταν να παραμείνω ανεξάρτητος από οποιαδήποτε υπηρεσία τρίτου μέρους.
Επίσης, αυτή η ενότητα είχε λιγότερες από 100 εγκαταστάσεις.
Ajax Document Viewer
Παρόλο που το "AJAX" είναι ένας γενικός όρος Javascript, το Ajax Document Viewer αποδείχθηκε ότι βασίζεται σε συγκεκριμένη υπηρεσία τρίτου μέρους. Μόνο περίπου 100 εγκαταστάσεις. Προχωράω...
Scald PDF
Το Scald PDF είχε μόνο 40 εγκατώσεις, αλλά έπρεπε να ρίξω μια ματιά, δεδομένου ότι ήταν σαφώς μέρος ενός μεγαλύτερου έργου που ονομάζεται (ναι) Scald. Όπως εξηγεί η σελίδα του έργου Scald: "Το Scald είναι μια καινοτόμος ιδέα για το πώς να χειριστεί το Atoms Media στο Drupal".
Η πρόταση αυτή έθεσε δύο τεράστιες κόκκινες σημαίες: "καινοτομική λήψη" και η λέξη "Media" σε συνδυασμό με το "Atom". Το "Atom" ήταν προφανώς μια επαναλαμβανόμενη λέξη για "πράγμα", που την έκανε κόκκινη σημαία μόνο από μόνη της. Το Drupal έχει μια τάση για αυτές τις λέξεις κενών κουτιών: κόμβος , οντότητα , χαρακτηριστικό ... Όσο πιο γενική είναι η λέξη, τόσο πιο σαρωτικές είναι οι αλλαγές.
Κατά την κύλιση, οι υποψίες μου επιβεβαιώθηκαν. Διάβασα ενθουσιασμένους ισχυρισμούς για το πώς ο Scald θα ανακάλυψε ουσιαστικά τον τρόπο με τον οποίο χειρίστησα το Media στην ιστοσελίδα μου.
Τώρα, η αλήθεια είναι ότι ο χειρισμός του Drupal Media θα μπορούσε να χρησιμοποιήσει κάποια επανεξέταση. Το Scald δεν είναι το μοναδικό φιλόδοξο έργο αυτού του χώρου. Ωστόσο, με λιγότερες από 1000 εγκαταστάσεις μέχρι στιγμής, δεν ήθελα να μπω στο ισόγειο.
Σίγουρα, μέχρι την επόμενη χρονιά, ο Scald θα μπορούσε να είναι οι επόμενες προβολές . Αυτό θα πέθαινε. Αλλά θα μπορούσε να είναι και το abandonware, με ένα (μικρό) ίχνος σπασμένων θέσεων που αφήνεται να κλαίει.
Προς το παρόν, ήθελα να επιμείνω σε μια πολύ λιγότερο φιλόδοξη και επικίνδυνη λύση. Απλά προβάλετε αρχεία PDF, παρακαλώ. Αυτό ζητώ.
Shadowbox
Το Shadowbox με εξέπληξε: ισχυρίστηκε ότι είναι μια ενιαία λύση για την προβολή όλων των ειδών μέσων, από PDF σε εικόνες σε βίντεο. Αυτό δεν ήταν τόσο σαρωτικό όσο το Scald, αφού θα εστίαζε μόνο στην προβολή των μέσων χωρίς να εισάγει εντελώς νέες ιδέες όπως το "Media Atoms". Αλλά μου αρέσει ήδη το Colorbox, όπως ανέφερα. Δεν ήθελα να πρέπει να επανεξετάσω αυτή την απόφαση.
Ωστόσο, σημείωσα (με ένα εσωτερικό στεναγμό) ότι με περισσότερες από 16.000 εγκαταστάσεις, το Shadowbox θα μπορούσε να είναι μια πιο ισχυρή εναλλακτική λύση στον ίδιο χώρο. Έπρεπε να ρίξω μια ματιά.
Το Module Shadowbox Drupal είναι βασικά μια γέφυρα σε μια βιβλιοθήκη Javascript, Shadowbox.js, οπότε εξέτασα την ιστοσελίδα της βιβλιοθήκης. Εκεί ανακάλυψα δύο λόγους για να συνεχίσω:
- Η βιβλιοθήκη απαιτεί τέλος αδείας για εμπορική χρήση. Το τέλος ήταν αρκετά λογικό, αλλά προσπαθώ να αποφύγω λογισμικό ανοικτού κώδικα που δεν είναι δωρεάν .
- Μια προσεκτική αναζήτηση των Συχνών Ερωτήσεων αποκάλυψε ότι, σε αντίθεση με την περιγραφή στη σελίδα της ενότητας Drupal, τα αρχεία PDF δεν υποστηρίζονται 100% από τη βιβλιοθήκη Shadowbox. Ωχ. Καλό πράγμα που έλεγξα.
Οι δύο υποψήφιοι: & # 34; PDF & # 34; και & # 34; PDF Reader & # 34;
Έχοντας καταργήσει τα υπόλοιπα, ήρθα τώρα στους δύο προφανείς διεκδικητές: PDF και PDF Reader
Αυτά τα δύο έργα είχαν βασικές ομοιότητες:
- Και οι δύο είχαν σχεδόν 3.000 εγκαταστάσεις, πολύ περισσότερο από τις εναλλακτικές λύσεις (εκτός του Shadowbox).
- Και οι δύο χρησιμοποίησαν την ίδια εξωτερική βιβλιοθήκη Javascript, pdf.js.
Τι γίνεται με τις διαφορές;
Ο PDF Reader είχε επίσης τη δυνατότητα ενσωμάτωσης των Εγγράφων Google. Σε αυτή τη συγκεκριμένη περίπτωση, σκέφτηκα ότι ο πελάτης μου μπορεί να μου αρέσει αυτό, έτσι μου άρεσε να έχω την επιλογή.
Εν τω μεταξύ, το PDF χαρακτηρίστηκε ως Αναζητώντας συν-συντηρητές. Αυτό θα μπορούσε να είναι ένα σημάδι ότι ο προγραμματιστής θα εγκαταλείψει σύντομα το έργο, αλλά από την άλλη πλευρά, η πιο πρόσφατη δέσμευση ήταν πριν από μία εβδομάδα, οπότε τουλάχιστον ο κύριος του έργου ήταν ακόμα ενεργός.
Από την άλλη πλευρά, ο PDF Reader χαρακτηρίστηκε ως ενεργά διατηρημένος, αλλά η πιο πρόσφατη δέσμευση ήταν πριν από ένα χρόνο.
Χωρίς σαφή νικητή, αποφάσισα να τα δοκιμάσω και τα δύο.
Δοκιμάζοντας τους υποψήφιους
Δοκίμασα και τις δύο ενότητες σε ένα αντίγραφο του ζωντανού μου ιστότοπου. (Ανεξάρτητα από το πόσο στερεά και αβλαβή εμφανίζεται μια ενότητα, μην το δοκιμάζετε πρώτα σε έναν ζωντανό ιστότοπο. Θα μπορούσατε να σπάσετε ολόκληρο τον ιστότοπό σας.)
Ήμουν μεροληπτικός προς το PDF Reader , επειδή φαινόταν να έχει περισσότερες επιλογές (όπως τα Έγγραφα Google) από το PDF . Έτσι αποφάσισα να δοκιμάσω το PDF πρώτα, για να το ξεπεράσω.
PDF Αποτυχία: Απαιτείται συμπλήρωση;
Ωστόσο, όταν εγκατέστησα το PDF και διάβασα το README.txt, ανακάλυψα ένα πρόβλημα που είχα δει αλλά αγνοήθηκε στη σελίδα του έργου. Για κάποιο λόγο, αυτή η ενότητα φαίνεται να απαιτεί τη σύνταξη του αρχείου pdf.js με μη αυτόματο τρόπο. Αν και η σελίδα του έργου πρότεινε ότι αυτό δεν ήταν υποχρεωτικά απαραίτητο, το README.txt πρότεινε ότι ήταν.
Δεδομένου ότι ο PDF Reader θα χρησιμοποιεί την ίδια βιβλιοθήκη χωρίς να χρειάζεται αυτό το βήμα, αποφάσισα να το δοκιμάσω πρώτα απ 'όλα. Αν δεν λειτουργούσε, θα μπορούσα πάντα να επιστρέψω σε PDF και να προσπαθήσω να δημιουργήσω χειροκίνητα pdf.js.
Αναγνώστης PDF: Επιτυχία! Περίπου.
Έτσι, τελικά, δοκίμασα τον PDF Reader . Αυτή η ενότητα παρέχει ένα νέο γραφικό στοιχείο για την εμφάνιση ενός πεδίου αρχείου. Προσθέτετε ένα πεδίο αρχείου στον τύπο περιεχομένου που επιθυμείτε και ορίστε τον τύπο του widget σε PDF Reader. Στη συνέχεια, δημιουργείτε έναν κόμβο αυτού του τύπου και ανεβάστε το αρχείο PDF. Το PDF εμφανίζεται ενσωματωμένο σε ένα "πλαίσιο" στη σελίδα.
Μπορείτε να δοκιμάσετε διαφορετικές επιλογές εμφάνισης τροποποιώντας ξανά τον τύπο περιεχομένου και αλλάζοντας τις ρυθμίσεις εμφάνισης για το πεδίο.
Διαπίστωσα ότι κάθε επιλογή εμφάνισης είχε πλεονεκτήματα και μειονεκτήματα:
- Ο αναγνώστης των Εγγράφων Google λειτουργούσε ωραία ως ενσωμάτωση, αλλά όταν τον έκανα κλικ για να μεταβεί σε πλήρη οθόνη, έκλεισα σε μια σελίδα των Εγγράφων Google που μου ζήτησε συγγνώμη ότι το όριο του επιτοκίου μου είχε ξεπεραστεί. Ωχ. Ίσως αυτό να είναι πιο αξιόπιστο, αν στρέψω τη μονάδα σε ένα λογαριασμό Google Apps που πληρώνει, αλλά δεν τον έκανα να το βρω, καθώς ήμουν σίγουρος ότι ο πελάτης μου δεν θα ήθελε την οθόνη.
- Η επιλογή pdf.js λειτούργησε θαυμάσια ... στον Firefox και στο Chrome. Αλλά όταν πυροβόληκα τον Internet Explorer, το κιβώτιο ήταν κενό. Προφανώς, αυτό είναι ένα πρόβλημα με το ίδιο το pdf.js, όχι με τη μονάδα PDF Reader . Υποθέτω ότι θα έπρεπε να περίμενα αυτό, δεδομένου ότι το pdf.js αναπτύχθηκε από το Mozilla και ο Internet Explorer είναι ... ο ίδιος. Ακόμα, ήμουν απογοητευμένος που δεν είχα σκεφτεί να επιβεβαιώσω ότι το pdf.js εργάστηκε αξιόπιστα σε όλα τα προγράμματα περιήγησης στην πρώτη θέση.
- Η επιλογή ενσωμάτωσης ήταν η πιο αξιόπιστη. Αυτό έτρεξε πραγματικά το Adobe Reader σε ένα πλαίσιο της ιστοσελίδας. Ο Firefox μου προτιμούσε να τρέχει pdf.js, αλλά νομίζω ότι αυτό ήταν ένα περιβάλλον περιήγησης. Είτε έτσι είτε αλλιώς, όσο ο επισκέπτης είχε είτε Firefox είτε πρόγραμμα προβολής PDF όπως το Adobe Reader, το PDF θα εμφανιστεί.
Έτσι, στο τέλος, η λύση μου ήταν να χρησιμοποιήσω το PDF Reader με την επιλογή Display embed. Αυτή η επιλογή θα μου επιτρέψει να επισυνάψω ένα PDF σε έναν κόμβο Drupal και να το επιδείξω αξιόπιστα σε μια ιστοσελίδα του Drupal.
Δυστυχώς, ορισμένες φορές "αξιόπιστες" δεν αρκούν. Μετά από όλη αυτή την αναζήτηση, έπρεπε τελικά να εξετάσω μια υπηρεσία τρίτων.