diff --git a/README.md b/README.md index 2fc8f2d..b2a7a9a 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ * 비밀번호는 필수 (1회 다운로드만 예외). 무작위 비밀번호 생성 버튼 * **"인증된 사용자는 비밀번호 없이 다운로드"**: 업로드 로그인 상태인 사내 사용자는 링크를 열 때 비밀번호를 묻지 않고, 외부 수신자는 비밀번호를 입력 -* 완료 후 "링크와 비밀번호 복사", QR 코드, 이메일 버튼 +* 완료 후 "링크와 비밀번호 복사", QR 코드 버튼 * "내 업로드": 이 브라우저에서 올린 링크를 다시 보기 (비밀번호는 저장하지 않음) * 업로드 로그인은 한 번 하면 7일 유지되고, 사용할 때마다 연장 diff --git a/app/src/lib/icons.js b/app/src/lib/icons.js index ce63970..1c50503 100644 --- a/app/src/lib/icons.js +++ b/app/src/lib/icons.js @@ -11,7 +11,6 @@ export const ICONS = { lock: '', trash: '', search: '', - mail: '', qr: '', history: '', refresh: '', diff --git a/app/src/pages/AdminPage.vue b/app/src/pages/AdminPage.vue index 6976a4e..be7e2de 100644 --- a/app/src/pages/AdminPage.vue +++ b/app/src/pages/AdminPage.vue @@ -247,8 +247,8 @@ const resetLogo = () => sendLogo({ method: 'DELETE' }); - - + + @@ -261,15 +261,15 @@ const resetLogo = () => sendLogo({ method: 'DELETE' }); {{ t('unfinished') }} - - - - - + + + + - @@ -285,9 +285,9 @@ const resetLogo = () => sendLogo({ method: 'DELETE' }); - + -
{{ t('colSid') }}{{ t('colFiles') }}{{ t('colSize') }}{{ t('colCreated') }}{{ t('colLastDownload') }}{{ t('colExpires') }}{{ t('colSid') }}{{ t('colFiles') }}{{ t('colSize') }}{{ t('colCreated') }}{{ t('colLastDownload') }}{{ t('colExpires') }}
{{ t('filesCount', b.files.length) }}{{ fmtSize(b.size) }}{{ fmtDate(b.createdAt) }}- + {{ t('filesCount', b.files.length) }}{{ fmtSize(b.size) }}{{ fmtDate(b.createdAt) }}- {{ t('oneTimeDownload') }} + {{ fmtSize(f.size) }}{{ fmtSize(f.size) }} + diff --git a/app/src/pages/UploadPage.vue b/app/src/pages/UploadPage.vue index f55778b..d12bc6a 100644 --- a/app/src/pages/UploadPage.vue +++ b/app/src/pages/UploadPage.vue @@ -192,8 +192,6 @@ function openPreview(file) { // ---- done const showQr = ref(false); const showMine = ref(false); -const mailLink = computed(() => store.result && config.value.mailTemplate - ? config.value.mailTemplate.replace('%%URL%%', store.result.link) : ''); const expiryText = computed(() => { const r = store.result; if (!r) return ''; @@ -325,7 +323,6 @@ function newUpload() {
- {{ t('email') }}
diff --git a/app/src/styles.css b/app/src/styles.css index 891c16b..53fa40e 100644 --- a/app/src/styles.css +++ b/app/src/styles.css @@ -184,8 +184,18 @@ input::placeholder{color:var(--muted)} .tools .s input{padding-left:34px} .tools select{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:9px 12px;font-size:14px} table{width:100%;border-collapse:collapse;font-size:14px} -th{text-align:left;font-size:12px;color:var(--muted);font-weight:700;padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap} -td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle;white-space:nowrap} +th{text-align:left;font-size:12px;color:var(--muted);font-weight:700;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap} +/* cells may wrap, so a long file name can not push the buttons out of the table */ +td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle} +td.nw,th.nw{white-space:nowrap} +td.date,th.date{white-space:nowrap} +tr.frow .rn{white-space:normal;word-break:break-all;overflow:visible} +.admin-view .wrap{max-width:1240px} +@media (max-width:1000px){ + /* dates wrap into date and time instead of widening the table */ + td.date,th.date{white-space:normal;min-width:84px} + table{font-size:13.5px} +} tr.b{cursor:pointer} tr.b:hover td{background:var(--surface-2)} tr.frow td{background:var(--surface-2)} diff --git a/config.js b/config.js index 72a964e..0708b63 100644 --- a/config.js +++ b/config.js @@ -61,7 +61,6 @@ const config = { "maxAge": 3600 * 24 * 75, // 75 days // maximum file-size for text previews in byte "maxPreviewSize": Math.pow(2, 20) * 2, // 2MB - "mailTemplate": 'mailto:?subject=파일 전달&body=다운로드 링크: %%URL%%', // see https://github.com/expressjs/morgan // set to false to disable logging "accessLog": ':date[iso] :method :url :status :response-time :remote-addr', diff --git a/docs/configuration.md b/docs/configuration.md index 3222e50..25b3fe5 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -50,7 +50,6 @@ node app.js | `maxAge` | 75일 | 어떤 파일도 이 시간(초)이 지나면 삭제됩니다. 다운로드되지 않은 1회 다운로드 파일에도 적용됩니다 | | `maxFileSize`, `maxBucketSize` | 제한 없음 | 파일 하나, 한 번에 올리는 전체의 최대 크기(바이트) | | `maxPreviewSize` | 2MB | 텍스트 미리보기에서 읽는 최대 크기 | -| `mailTemplate` | `mailto:?subject=...` | 이메일 버튼의 `mailto:` 주소. `%%URL%%`이 다운로드 링크로 바뀝니다 | | `disableQrCode` | `false` | QR 코드 버튼 숨기기 | | `defaultLanguage` | `ko` | 브라우저 언어를 알 수 없을 때 쓰는 언어 | diff --git a/lang/en.js b/lang/en.js index 91a8417..55fb771 100644 --- a/lang/en.js +++ b/lang/en.js @@ -81,7 +81,6 @@ module.exports = { bypassUsers: "Logged-in users", qrCode: "QR code", qrHint: "Scan the code with a phone to open the download page", - email: "E-Mail", // my uploads myUploadsEmpty: "There are no uploads from this browser yet.", diff --git a/lang/ko.js b/lang/ko.js index 9790334..1ea18a7 100644 --- a/lang/ko.js +++ b/lang/ko.js @@ -81,7 +81,6 @@ module.exports = { bypassUsers: "인증된 사용자", qrCode: "QR 코드", qrHint: "휴대폰 카메라로 스캔하면 다운로드 페이지가 열립니다", - email: "이메일", // 내 업로드 myUploadsEmpty: "이 브라우저에서 올린 업로드가 아직 없습니다.", diff --git a/lib/endpoints.js b/lib/endpoints.js index 7082f80..b38ec79 100644 --- a/lib/endpoints.js +++ b/lib/endpoints.js @@ -176,7 +176,6 @@ app.get(`${ config.baseUrl }config.json`, (req, res) => { retentions: config.retentions, quickRetentions: config.quickRetentions, defaultRetention: config.defaultRetention, - mailTemplate: config.mailTemplate, requireBucketPassword: config.requireBucketPassword, maxFileSize: config.maxFileSize, maxBucketSize: config.maxBucketSize,