- Fixed one-finger drag-to-scroll not working in the All Boards view and the Calendar view on Fairphone 4 Firefox and Ubuntu Touch Morph. These browsers do not emit the synthetic mouse events the `@wekanteam/dragscroll` library relies on, so scrolling only worked in the Swimlanes/Lists views. Added a new native touch-scrolling helper `client/lib/dragscrollTouch.js` that scrolls the nearest `.dragscroll` container with a one-finger drag (iOS is skipped, since native momentum scrolling already works there), and added the `dragscroll` class to the All Boards list and the Calendar view. - Fixed all text, buttons, the All Boards tables and the top bars (header and the second bar) rendering about 2x too large on Fairphone 4. `getMobileMode()` defaulted to mobile mode only for iPhone, so every other phone fell back to desktop mode, whose large desktop sizing looks oversized on a small phone screen. The default is now mobile mode for any phone-sized touch device (iPhone, Android/Mobile browsers, Ubuntu Touch, or a coarse-pointer touch screen with viewport width ≤ 800px); desktop browsers stay in desktop mode and the user's own Mobile/Desktop toggle still takes priority. - Fixed not being able to reorder swimlanes and lists by dragging their drag handle on touch devices. The new touch-scroll helper was hijacking touches that started on a drag handle; `.handle` / `.ui-sortable-handle` elements are now excluded from touch-scrolling so dragging the handle reorders as expected. - Fixed a card duplicating into two cards when it was dragged by its title-row drag handle while its Card Details panel was open. The card sortable in `client/components/lists/list.js` was re-initialized on every list re-render without first destroying the previous instance, so two `stop` handlers fired per drag. It now destroys any existing sortable before re-initializing, the same guard already used for swimlanes. Attachment storage: - Added configurable attachment storage backends in the admin panel: choose the default save storage and store attachments on the local filesystem, GridFS, or cloud object storage — S3-compatible (AWS S3, MinIO, Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces), Azure Blob Storage, or Google Cloud Storage — via the `@tweedegolf/storage-abstraction` adapters (new `models/lib/cloudStorage.js`). Includes a "Test connection" action and English translations for the new settings. - Added a server-side bulk attachment move (new `server/attachmentBulkMove.js` and `models/attachmentBulkMoveStatus.js`) that moves all attachments from one storage backend to another as a background job whose progress survives the admin navigating away from or closing the page. Thanks to xet7.
110 lines
4.4 KiB
JavaScript
110 lines
4.4 KiB
JavaScript
// ============================================================================
|
|
// WeKan Client — All Imports
|
|
// Loaded by client/main.js after bootstrap (collectionHelpers) completes.
|
|
// ============================================================================
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 1. Shared imports (i18n, utilities, reactive cache)
|
|
// ----------------------------------------------------------------------------
|
|
import '/imports/i18n/index';
|
|
import '/imports/i18n/accounts';
|
|
import '/imports/i18n/blaze';
|
|
import '/imports/i18n/languages';
|
|
import '/imports/i18n/moment';
|
|
import '/imports/i18n/tap';
|
|
import '/imports/lib/customHeadDefaults';
|
|
import '/imports/lib/dateUtils';
|
|
import '/imports/lib/secureDOMPurify';
|
|
import '/models/attachmentMigrationStatus';
|
|
import '/models/attachmentBulkMoveStatus';
|
|
import '/imports/cronMigrationClient';
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 3. Shared models/collections
|
|
// ----------------------------------------------------------------------------
|
|
import '/imports/startup/shared-models';
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 4. Shared runtime services
|
|
// ----------------------------------------------------------------------------
|
|
import '/imports/reactiveCache';
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 5. Config (shared)
|
|
// ----------------------------------------------------------------------------
|
|
import '/config/accounts';
|
|
import '/config/const';
|
|
import '/config/models';
|
|
import '/config/query-classes';
|
|
import '/config/router';
|
|
import '/config/search-const';
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 6. Client library files
|
|
// ----------------------------------------------------------------------------
|
|
import '/client/lib/accessibility';
|
|
import '/client/lib/attachmentMigrationManager';
|
|
import '/client/lib/autofocus';
|
|
import '/client/lib/boardConverter';
|
|
import '/client/lib/boardMultiSelection';
|
|
import '/client/lib/cardSearch';
|
|
import '/client/lib/cssEvents';
|
|
import '/client/lib/currentCard';
|
|
import '/client/lib/customFields';
|
|
import '/client/lib/datepicker';
|
|
import '/client/lib/dialogWithBoardSwimlaneList';
|
|
import '/client/lib/dialogWithBoardSwimlaneListCard';
|
|
import '/client/lib/dropImage';
|
|
import '/client/lib/escapeActions';
|
|
import '/client/lib/exportHTML';
|
|
import '/client/lib/filter';
|
|
import '/client/lib/fixDuplicateLists';
|
|
import '/client/lib/i18n';
|
|
import '/client/lib/infiniteScrolling';
|
|
import '/client/lib/jquery-ui';
|
|
import '/client/lib/localStorageValidator';
|
|
import '/client/lib/modal';
|
|
import '/client/lib/multiSelection';
|
|
import '/client/lib/originalPositionHelpers';
|
|
import '/client/lib/pasteImage';
|
|
import '/client/lib/secureDOMPurify';
|
|
import '/client/lib/spinner';
|
|
import '/client/lib/textComplete';
|
|
import '/client/lib/unsavedEdits';
|
|
import '/client/lib/uploadProgressManager';
|
|
import '/client/lib/utils';
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 7. Client config
|
|
// ----------------------------------------------------------------------------
|
|
import '/client/config/blazeHelpers';
|
|
import '/client/config/gecko-fix';
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 8. Client features
|
|
// Each feature entry owns its template/logic/style ordering.
|
|
// ----------------------------------------------------------------------------
|
|
import '/client/features/forms';
|
|
import '/client/features/main';
|
|
import '/client/features/settings';
|
|
import '/client/features/sidebar';
|
|
import '/client/features/users';
|
|
import '/client/features/activities';
|
|
import '/client/features/boardConversion';
|
|
import '/client/features/gantt';
|
|
import '/client/features/boards';
|
|
import '/client/features/cards';
|
|
import '/client/features/common';
|
|
import '/client/features/importing';
|
|
import '/client/features/libComponents';
|
|
import '/client/features/lists';
|
|
import '/client/features/notifications';
|
|
import '/client/features/rules';
|
|
import '/client/features/swimlanes';
|
|
import '/client/features/unicodeIcons';
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 8. Startup (must load last — registers service worker, sets up subscriptions)
|
|
// ----------------------------------------------------------------------------
|
|
import '/client/00-startup';
|