-
Notifications
You must be signed in to change notification settings - Fork 2
📝 Add docstrings to claude/flexible-import-columns-9a3Kr
#47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: claude/flexible-import-columns-9a3Kr
Are you sure you want to change the base?
📝 Add docstrings to claude/flexible-import-columns-9a3Kr
#47
Conversation
Add optional LibraryThing.com import/export plugin that extends the existing CSV functionality without modifying it. The plugin supports TSV format and provides intelligent field mapping. Features: - LibraryThing TSV import with automatic column mapping - LibraryThing TSV export with full field support (55+ columns) - Flexible column mapping supporting multiple languages (IT, EN, etc.) - TAB delimiter support in existing CSV import (backward compatible) - Integration with existing scraping system - Separate plugin architecture (non-invasive) - Comprehensive documentation Components added: - app/Controllers/Plugins/LibraryThingController.php - Main plugin controller - app/Views/plugins/librarything_import.php - Import UI - app/Controllers/Plugins/README_LibraryThing.md - Complete documentation Modified for integration: - app/Controllers/CsvImportController.php - Added TAB delimiter support - app/Controllers/LibriController.php - Minor export enhancements - app/Routes/web.php - Added plugin routes - app/Views/libri/index.php - Added dropdown menus for import/export The existing CSV import/export system remains completely unchanged and continues to work normally. The plugin is 100% optional and backward compatible. https://claude.ai/code/session_01XdiVE4JpU8DFXr3eeLwFuB
Add automatic installation system for LibraryThing plugin that creates all required database fields when plugin is installed. Features: - LibraryThingInstaller class for database schema management - Automatic creation of 29 LibraryThing-specific fields - Plugin status checking and validation - Admin interface for install/uninstall operations - Safe uninstall with data deletion warnings - Routes for plugin administration Components added: - app/Controllers/Plugins/LibraryThingInstaller.php - Installation logic - app/Views/plugins/librarything_admin.php - Admin UI - Updated LibraryThingController with admin methods - Added admin routes to web.php Database fields added by installer (29 total): - Review and rating fields (review, rating, comment, private_comment) - Physical description (weight, height, thickness, length, physical_description) - Library classifications (LCCN, LC Classification, other call number) - Date tracking (date_acquired, date_started, date_read) - Catalog IDs (BCID, OCLC, Work ID, ISSN) - Language info (original_languages) - Acquisition (source, from_where) - Lending tracking (lending_patron, lending_status, lending_start, lending_end) - Financial (purchase_price, value, condition_lt) Next steps: Update import/export to use all fields, modify book form https://claude.ai/code/session_01XdiVE4JpU8DFXr3eeLwFuB
Implement comprehensive support for all 29 LibraryThing-specific fields across import, export, and book management interfaces. Changes: - LibraryThingController: Update parseLibraryThingRow() to parse all 29 fields from TSV import including review, rating, physical dimensions, library classifications, date tracking, catalog IDs, lending status, and financial data - LibraryThingController: Update formatLibraryThingRow() for export to include all 29 database fields instead of empty placeholders - LibraryThingController: Implement parseDate() helper for flexible date parsing from various LibraryThing formats - LibraryThingController: Update updateBook() and insertBook() to handle all 29 fields with conditional SQL based on plugin installation - BookRepository: Add all 29 LibraryThing fields to createBasic() and updateBasic() methods with hasColumn() checks for optional handling - LibriController: Add all 29 LibraryThing fields to accepted fields array in create and update methods - book_form.php: Add comprehensive LibraryThing fields section with 8 logical subsections (Review & Rating, Physical Description, Library Classifications, Date Tracking, Catalog IDs, Language & Acquisition, Lending Tracking, Financial Fields) - visible only when plugin installed All changes are backward-compatible and non-invasive. Fields are only created/used when plugin is installed via LibraryThingInstaller. https://claude.ai/code/session_01XdiVE4JpU8DFXr3eeLwFuB
Rimuove i campi duplicati dal plugin LibraryThing per utilizzare i campi nativi dell'applicazione, evitando ridondanza nel database. **Campi rimossi (ora mappati ai nativi):** - weight, height, thickness, length → peso + dimensioni (nativi) - date_acquired → data_acquisizione (nativo) - purchase_price → prezzo (nativo) **Campi LibraryThing unici mantenuti (25):** - Review, Rating, Comment, Private Comment - Physical Description (descrizione testuale) - LCCN, LC Classification, Other Call Number - Date Started, Date Read (solo date di lettura) - BCID, OCLC, Work ID, ISSN - Original Languages, Source, From Where - Lending Patron, Status, Start, End - Value (valore corrente, diverso da prezzo), Condition **Modifiche:** - LibraryThingInstaller: rimossi 4 campi duplicati dall'installer - parseLibraryThingRow(): mappati campi TSV ai nativi * Weight → peso (con parsing numerico) * Height/Thickness/Length → dimensioni (combinati) * Acquired → data_acquisizione * Purchase Price → prezzo - updateBook/insertBook(): aggiornate query SQL (25 campi LT + nativi) - LibriController: rimossi campi duplicati dall'array fields - BookRepository (createBasic/updateBasic): rimossi campi duplicati - book_form.php: rimossi campi duplicati dalla UI con note esplicative Tutti i dati TSV vengono ora correttamente caricati nei campi nativi dove disponibili, mantenendo solo i campi unici di LibraryThing. https://claude.ai/code/session_01XdiVE4JpU8DFXr3eeLwFuB
Implementa un sistema completo per controllare la visibilità dei campi LibraryThing nel frontend pubblico del libro. **Nuove funzionalità:** - Checkbox nel form di modifica libro per ogni campo LibraryThing (25) - Salvataggio preferenze in colonna JSON `lt_fields_visibility` - Visualizzazione condizionale nel frontend (scheda_libro.php) - I campi privati (private_comment) non vengono mai mostrati nel frontend **Modifiche installer:** - Aggiunta colonna `lt_fields_visibility` JSON per preferenze - Metodo statico `getLibraryThingFields()` con lista completa campi - Aggiornato getStatus() per contare 26 campi (25 data + 1 visibility) **Modifiche book_form.php:** - Nuova sezione "Visibilità nel Frontend" con checkbox organizzati - Checkbox raggruppati per categoria (Recensione, Date, ecc.) - Parsing delle preferenze esistenti da JSON - Note esplicative per l'utente **Modifiche LibriController:** - Salvataggio lt_fields_visibility in create() e update() - Parsing array lt_visibility[] da form - Encoding JSON con UTF-8 **Modifiche scheda_libro.php (frontend):** - Nuova sezione "Informazioni LibraryThing" condizionale - Mostra solo campi selezionati come visibili - Formattazione speciale per tipo campo: * rating: stelle ★★★★★ * review/comment: prose con nl2br * date: formato italiano con / * value: formato valuta € * lending_status: badge colorati - Esclusione automatica private_comment dal frontend Tutti i campi LibraryThing sono ora editabili nel backend e selettivamente visibili nel frontend basandosi sulle preferenze utente. https://claude.ai/code/session_01XdiVE4JpU8DFXr3eeLwFuB
- Remove all dark: Tailwind variants from LibraryThing visibility checkboxes - Remove all dark: variants from LibraryThing frontend display section - Use app's standard checkbox styling (w-4 h-4 rounded border-gray-300 text-gray-900 focus:ring-gray-500) - Maintain compatibility with existing theme system instead of Tailwind dark mode - Ensure consistent styling with rest of application https://claude.ai/code/session_7d5114ca-2cbd-4ff1-a9e2-a4925e70b791
- Pass libraryThingInstalled flag from controllers to templates - Replace isInstalled($db) calls in views with flag check - Remove non-existent App\Support\Database reference - Fix phpstan level 4 errors in LibraryThing code - Reduce phpstan errors from 19 to 17 (remaining are pre-existing or false positives) https://claude.ai/code/session_7d5114ca-2cbd-4ff1-a9e2-a4925e70b791
LibriController.php: - Remove unnecessary null coalescing operators on mime field (always exists) - Remove redundant $lockKey check before RELEASE_LOCK (variable always defined in scope) - Remove ?? operators on copie_totali and sottotitolo (always exist in $fields array) LibraryThingController.php: - Simplify $isAjax condition to direct string comparison - Add @phpstan-ignore annotation for false positive in catch block Views (book_form.php, scheda_libro.php): - Add variable declarations at top ($libro, $scaffali, $mensole) to satisfy phpstan - Remove unnecessary ?? operators where variables are guaranteed to exist - Add proper defaults for all variables used in templates All phpstan level 4 errors resolved: from 17 errors to 0 errors https://claude.ai/code/session_7d5114ca-2cbd-4ff1-a9e2-a4925e70b791
Docstrings generation was requested by @fabiodalez-dev. * #46 (comment) The following files were modified: * `app/Controllers/CsvImportController.php` * `app/Controllers/LibriController.php` * `app/Controllers/Plugins/LibraryThingController.php` * `app/Controllers/Plugins/LibraryThingInstaller.php` * `app/Models/BookRepository.php`
|
Important Review skippedThis PR was authored by the user configured for CodeRabbit reviews. By default, CodeRabbit skips reviewing PRs authored by this user. It's recommended to use a dedicated user account to post CodeRabbit review feedback. To trigger a single review, invoke the You can disable this status message by setting the
Comment |
|
9a002ca to
d6ada7f
Compare



Docstrings generation was requested by @fabiodalez-dev.
The following files were modified:
app/Controllers/CsvImportController.phpapp/Controllers/LibriController.phpapp/Controllers/Plugins/LibraryThingController.phpapp/Controllers/Plugins/LibraryThingInstaller.phpapp/Models/BookRepository.phpThese file types are not supported
app/Controllers/Plugins/README_LibraryThing.mdcomposer.jsonvendor/composer/installed.jsonℹ️ Note