Compare commits

...

24 Commits

Author SHA1 Message Date
db39fea577 fix merge 2021-08-29 19:33:42 +10:00
cutls
c4ebdb93fb unnotarize on M1 2021-08-28 20:05:00 +09:00
cutls
ab80d6e868 M1 build 2021-08-28 19:59:16 +09:00
cutls
fbaf6e0a80 pl-PL delete 2021-08-28 19:53:35 +09:00
cutls
a36116be0a git ignore 2021-08-28 19:53:06 +09:00
cutls
c7fa139cef ignore 2021-08-28 19:52:20 +09:00
cutls
276751f206 TheDesk 22.3.1(Koume) 2021-08-28 19:32:42 +09:00
cutls
a550841eeb Add mute duration 2021-08-28 19:21:36 +09:00
Cutls
4dfad6aa02
New Crowdin updates (#535)
* New translations index.json (German)

* New translations index.json (Spanish, Argentina)

* New translations main.json (Spanish, Argentina)

* New translations acct.json (Sinhala)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations setting.json (Sinhala)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations setting.json (Sinhala)
2021-08-26 00:00:24 +09:00
Cutls
131c68dd66
Merge pull request #542 from cutls/dependabot/npm_and_yarn/app/eslint-7.32.0
Bump eslint from 7.28.0 to 7.32.0 in /app
2021-08-26 00:00:11 +09:00
dependabot[bot]
2bb8032ea9
Bump eslint from 7.28.0 to 7.32.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.28.0 to 7.32.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.28.0...v7.32.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-25 15:00:02 +00:00
Cutls
64d93d92d7
Merge pull request #545 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.15.4
Bump @fortawesome/fontawesome-free from 5.15.3 to 5.15.4 in /app
2021-08-25 23:59:35 +09:00
Cutls
492b9efcf0
Merge pull request #547 from cutls/dependabot/npm_and_yarn/app/electron-notarize-1.1.0
Bump electron-notarize from 1.0.0 to 1.1.0 in /app
2021-08-25 23:59:26 +09:00
Cutls
cb8a2cac14
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-notarize-1.1.0 2021-08-25 23:59:20 +09:00
Cutls
8e7608921a
Merge pull request #551 from cutls/dependabot/npm_and_yarn/app/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /app
2021-08-25 23:58:37 +09:00
Cutls
52b7eec8d7
Merge pull request #555 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.1.4
Bump sweetalert2 from 11.0.17 to 11.1.4 in /app
2021-08-25 23:58:16 +09:00
Cutls
72ce1b80c4
Merge pull request #556 from cutls/dependabot/npm_and_yarn/app/electron-rebuild-3.2.0
Bump electron-rebuild from 2.3.5 to 3.2.0 in /app
2021-08-25 23:58:06 +09:00
Cutls
bfacf0fb51
Merge pull request #557 from cutls/dependabot/npm_and_yarn/app/electron-13.2.2
Bump electron from 13.1.2 to 13.2.2 in /app
2021-08-25 23:57:53 +09:00
dependabot[bot]
aa41adebc0
Bump electron from 13.1.2 to 13.2.2 in /app
Bumps [electron](https://github.com/electron/electron) from 13.1.2 to 13.2.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.2...v13.2.2)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-24 20:03:36 +00:00
dependabot[bot]
2eef97be6f
Bump electron-rebuild from 2.3.5 to 3.2.0 in /app
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 2.3.5 to 3.2.0.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v2.3.5...v3.2.0)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-20 20:03:37 +00:00
dependabot[bot]
a68d0d8516
Bump sweetalert2 from 11.0.17 to 11.1.4 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.0.17 to 11.1.4.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.0.17...v11.1.4)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-19 20:03:22 +00:00
dependabot[bot]
b60852c67c
Bump path-parse from 1.0.6 to 1.0.7 in /app
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-11 11:47:30 +00:00
dependabot[bot]
744705ca2a
Bump electron-notarize from 1.0.0 to 1.1.0 in /app
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/electron/electron-notarize/releases)
- [Changelog](https://github.com/electron/electron-notarize/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-notarize/compare/v1.0.0...v1.1.0)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-09 20:03:20 +00:00
dependabot[bot]
019c4d8e96
Bump @fortawesome/fontawesome-free from 5.15.3 to 5.15.4 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.3 to 5.15.4.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.3...5.15.4)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-04 20:04:23 +00:00
41 changed files with 2018 additions and 5004 deletions

2
.gitignore vendored
View File

@ -34,7 +34,9 @@ app/view/zh-CN
app/view/ru-RU app/view/ru-RU
app/view/zh-TW app/view/zh-TW
app/view/pt-BR app/view/pt-BR
app/view/si-LK
app/build.js app/build.js
app/view/make/make.js app/view/make/make.js
app/view/make/makeCli.ts app/view/make/makeCli.ts
app/.env app/.env
app/view/make/index.generated.html

View File

@ -35,9 +35,10 @@ Crowdinから翻訳に参加してみませんか: https://translate.thedesk.
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。 Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。 Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
## 詳しく ## よみもの
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk) * [TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
* [TheDeskを作って思う今クライアントを作る意味 | Cutls Code Archives ](https://code.cutls.com/thedesk-log/)
## ライセンス ## ライセンス
@ -47,9 +48,7 @@ Issuesに書いてある問題についてはなるべく対処しますので
## 主なコントリビューター ## 主なコントリビューター
* <img src="https://user-images.githubusercontent.com/17561618/66582029-162df380-ebbc-11e9-8a6f-1832b3a35d89.png" width="20">[とねぢ](https://minohdon.jp/@toneji) macOSビルダー(現在はTravis CI) [![](https://opencollective.com/TheDesk/contributors.svg?width=400&button=false)](https://github.com/cutls/TheDesk/graphs/contributors)
* <img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4" width="20">[ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja) Linuxビルダー(現在はTravis CI)
* <img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png" width="20">[kPherox](https://pl.kpherox.dev/kPherox)
## 支援 ## 支援

View File

@ -70,8 +70,8 @@ async function cmd(options) {
if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) { if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) {
console.log('start building for application stores') console.log('start building for application stores')
construct(ver, basefile, false, true) construct(ver, basefile, false, true)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) { if ((platform === 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') { if ((isTrue(options, 'withIa32') && arch === 'x64') || arch === 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32') config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config) await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync( fs.renameSync(
@ -83,7 +83,7 @@ async function cmd(options) {
'../build/TheDesk-setup-ia32-store.exe' '../build/TheDesk-setup-ia32-store.exe'
) )
} }
if (arch == 'x64') { if (arch === 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64') config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config) await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync( fs.renameSync(
@ -96,14 +96,14 @@ async function cmd(options) {
) )
} }
} }
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) { if ((platform === 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') { if (arch === 'ia32') {
await build(Platform.LINUX, Arch.ia32, config) await build(Platform.LINUX, Arch.ia32, config)
} }
if ((isTrue(options, 'withIa32') && arch == 'x64')) { if ((isTrue(options, 'withIa32') && arch === 'x64')) {
console.log('snapcraft does not curretly support builing i386 on amd64') console.log('snapcraft does not curretly support builing i386 on amd64')
} }
if (arch == 'x64') { if (arch === 'x64') {
await build(Platform.LINUX, Arch.x64, config) await build(Platform.LINUX, Arch.x64, config)
if (!isTrue(options, 'onlyStore')) { if (!isTrue(options, 'onlyStore')) {
fs.renameSync( fs.renameSync(
@ -117,8 +117,8 @@ async function cmd(options) {
if (!isTrue(options, 'onlyStore')) { if (!isTrue(options, 'onlyStore')) {
console.log('start building for normal usage') console.log('start building for normal usage')
construct(ver, basefile, false, false) construct(ver, basefile, false, false)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) { if ((platform === 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') { if ((isTrue(options, 'withIa32') && arch === 'x64') || arch === 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32') config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config) await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync( fs.renameSync(
@ -126,7 +126,7 @@ async function cmd(options) {
'../build/TheDesk-ia32.exe' '../build/TheDesk-ia32.exe'
) )
} }
if (arch == 'x64') { if (arch === 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64') config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config) await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync( fs.renameSync(
@ -138,7 +138,7 @@ async function cmd(options) {
'../build/TheDesk-setup.exe' '../build/TheDesk-setup.exe'
) )
} }
if ((isTrue(options, 'withArm64') && arch == 'x64') || arch == 'arm64') { if ((isTrue(options, 'withArm64') && arch === 'x64') || arch === 'arm64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'arm64') config.nsis.artifactName = artifactName.replace('${arch}', 'arm64')
await build(Platform.WINDOWS, Arch.arm64, config) await build(Platform.WINDOWS, Arch.arm64, config)
fs.renameSync( fs.renameSync(
@ -147,14 +147,14 @@ async function cmd(options) {
) )
} }
} }
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) { if ((platform === 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') { if (arch === 'ia32') {
await build(Platform.LINUX, Arch.ia32, config) await build(Platform.LINUX, Arch.ia32, config)
} }
if (isTrue(options, 'withIa32') && arch == 'x64') { if (isTrue(options, 'withIa32') && arch === 'x64') {
console.log('snapcraft does not curretly support builing i386 on amd64') console.log('snapcraft does not curretly support builing i386 on amd64')
} }
if (arch == 'x64') { if (arch === 'x64') {
await build(Platform.LINUX, Arch.x64, config) await build(Platform.LINUX, Arch.x64, config)
fs.renameSync( fs.renameSync(
`../build/thedesk_${version}_amd64.snap`, `../build/thedesk_${version}_amd64.snap`,
@ -168,9 +168,37 @@ async function cmd(options) {
} }
} }
} }
if (platform == 'darwin' && !isTrue(options, 'skipMacOS')) { if (platform === 'darwin' && !isTrue(options, 'skipMacOS')) {
if(isTrue(options, 'unnotarize')) delete config.afterSign if(isTrue(options, 'unnotarize')) delete config.afterSign
await build(Platform.MAC, Arch.x64, config) if (arch === 'x64') {
await build(Platform.MAC, Arch.x64, config)
fs.renameSync(
`../build/TheDesk-${version}.dmg`,
`../build/TheDesk-${version}-x64.dmg`
)
if (isTrue(options, 'withArm64')) {
delete config.afterSign
await build(Platform.MAC, Arch.arm64, config)
fs.renameSync(
`../build/TheDesk-${version}.dmg`,
`../build/TheDesk-${version}-arm64.dmg`
)
}
fs.renameSync(
`../build/TheDesk-${version}-x64.dmg`,
`../build/TheDesk-${version}.dmg`
)
}
if (arch === 'arm64') {
delete config.afterSign
await build(Platform.MAC, Arch.arm64, config)
fs.renameSync(
`../build/TheDesk-${version}.dmg`,
`../build/TheDesk-${version}-arm64.dmg`
)
if(isTrue(options, 'skipX64')) await build(Platform.MAC, Arch.x64, config)
}
} }
} }
} }

View File

@ -86,6 +86,7 @@ option {
#imagemodal .modal-footer { #imagemodal .modal-footer {
overflow-x: hidden; overflow-x: hidden;
overflow-y: hidden; overflow-y: hidden;
height: 56px;
} }
#imagewrap { #imagewrap {

View File

@ -1,172 +1,219 @@
/*アイコンをクリックした時とかにでてくるユーザーデータ*/ /*アイコンをクリックした時とかにでてくるユーザーデータ*/
#his-data { #his-data {
background-repeat: no-repeat; background-repeat: no-repeat;
background-image: url('../img/loading.svg'); background-image: url('../img/loading.svg');
overflow-y: hidden; overflow-y: hidden;
} }
#his-data .btn .material-icons { #his-data .btn .material-icons {
float: left; float: left;
} }
#his-data-content { #his-data-content {
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
#his-name { #his-name {
font-size: 1.5rem; font-size: 1.5rem;
} }
#his-prof { #his-prof {
width: 7.7rem; width: 7.7rem;
margin-right: 0.4rem; margin-right: 0.4rem;
} }
.his-float { .his-float {
overflow-y: scroll; overflow-y: scroll;
padding: 0.4rem; padding: 0.4rem;
} }
#his-float-data { #his-float-data {
height: 100%; height: 100%;
overflow-y: hidden; overflow-y: hidden;
} }
#his-leftside { #his-leftside {
width: 28.4rem; width: 28.4rem;
max-width: 30vw; max-width: 30vw;
} }
#his-float-timeline { #his-float-timeline {
max-width: 47.5rem; max-width: 47.5rem;
width: calc(100% - 28.4rem); width: calc(100% - 28.4rem);
height: 100%; height: 100%;
overflow-y: hidden; overflow-y: hidden;
} }
#his-basic-prof { #his-basic-prof {
display: flex; display: flex;
min-height: 10rem; min-height: 10rem;
} }
#his-field { #his-field {
vertical-align: baseline; vertical-align: baseline;
text-align: center; text-align: center;
padding: 0; padding: 0;
} }
#his-field tr { #his-field tr {
height: 1.5rem; height: 1.5rem;
} }
.his-field-title { .his-field-title {
height: 1.5rem; height: 1.5rem;
padding: 0; padding: 0;
background-color: #757575; background-color: #757575;
text-align: center; text-align: center;
padding: 0.4rem; padding: 0.4rem;
margin-bottom: 1px; margin-bottom: 1px;
width: 30%; width: 30%;
} }
.his-field-content { .his-field-content {
height: 1.5rem; height: 1.5rem;
padding: 0; padding: 0;
padding-left: 0.4rem; padding-left: 0.4rem;
} }
.his-var-content a span.ellipsis:after { .his-var-content a span.ellipsis:after {
content: '...'; content: '...';
} }
.his-var-content a:not(.mention) span:last-of-type { .his-var-content a:not(.mention) span:last-of-type {
display: none; display: none;
} }
#his-data a .rep_ct, #his-data a .rep_ct,
#his-data a .rt_ct, #his-data a .rt_ct,
#his-data a .fav_ct { #his-data a .fav_ct {
display: inline !important; display: inline !important;
} }
#his-data-show { #his-data-show {
margin: 1.5rem; margin: 1.5rem;
margin-left: 3.8rem; margin-left: 3.8rem;
margin-right: 3.8rem; margin-right: 3.8rem;
background-color: var(--his-data); background-color: var(--his-data);
height: calc(100% - 1.5rem); height: calc(100% - 1.5rem);
margin-bottom: 0; margin-bottom: 0;
padding: 0.4rem; padding: 0.4rem;
} }
#his-data-wrap { #his-data-wrap {
display: flex; display: flex;
} }
.his-var-content { .his-var-content {
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
height: calc(100% - 3.4rem); height: calc(100% - 3.4rem);
padding-bottom: 60px; padding-bottom: 60px;
} }
#my-data-nav .btn { #my-data-nav .btn {
width: 10.6rem; width: 10.6rem;
} }
#my-data-nav .active-back { #my-data-nav .active-back {
display: none; display: none;
} }
#his-name .emojione, #his-name .emojione,
#his-name .emoji-img { #his-name .emoji-img {
width: 1.538rem; width: 1.538rem;
} }
#his-plus-action .btn { #his-plus-action .btn {
padding-right: 0.4rem; padding-right: 0.4rem;
padding-left: 0.4rem; padding-left: 0.4rem;
} }
.tabs { .tabs {
display: flex; display: flex;
} }
.tabs .tab a { .tabs .tab a {
padding: 0.6rem 0.9rem; padding: 0.6rem 0.9rem;
} }
#his-des { #his-des {
max-height: 17.7rem; max-height: 17.7rem;
overflow-y: scroll; overflow-y: scroll;
user-select: text;
cursor: text;
} }
#his-sign-action { #his-sign-action {
border: 1px solid; border: 1px solid;
border-radius: 0.4rem; border-radius: 0.4rem;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 0.75rem; padding-left: 0.75rem;
padding-right: 0.75rem; padding-right: 0.75rem;
flex-wrap: wrap; flex-wrap: wrap;
} }
#his-sign-action .btn {
flex-basis: calc(50% - 10.6px); #his-sign-action .shrinker {
margin-right: 0.5rem;
flex-basis: calc(50% - 1rem);
} }
#his-sign-action .shrinker.btn {
width: 100%;
}
#his-sign-action .dropdown-trigger { #his-sign-action .dropdown-trigger {
flex-basis: 100%; flex-basis: 100%;
} }
#his-des .mention { #his-des .mention {
color: #039be5; color: #039be5;
cursor: pointer; cursor: pointer;
} }
#his-table { #his-table {
max-height: 11.538rem; max-height: 9.2rem;
overflow-y: scroll; overflow-y: scroll;
user-select: text;
} }
#his-float-blocked { #his-float-blocked {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
font-size: 2rem; font-size: 2rem;
height: 100%; height: 100%;
} }
#hisdropdown { #hisdropdown {
background-color: var(--bg); background-color: var(--bg);
} }
#hisdropdown li a { #hisdropdown li a {
color: var(--text); color: var(--text);
} }
#hisdropdown li:hover { #hisdropdown li:hover {
background-color: var(--active); background-color: var(--active);
} }
#his-data-title-wrap { #his-data-title-wrap {
width: 100%; width: 100%;
text-align: center; text-align: center;
font-size: 1.5rem; font-size: 1.5rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
#his-data-title .material-icons { #his-data-title .material-icons {
position: relative; position: relative;
top: 5px; top: 5px;
margin-right: 3px; margin-right: 3px;
} }
#his-data-title a { #his-data-title a {
color: white; color: white;
} }

View File

@ -340,13 +340,23 @@ function muteDo(acct_id) {
var id = $('#his-data').attr('user-id') var id = $('#his-data').attr('user-id')
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
const days = parseInt($('#days_mute').val(), 10)
const hours = parseInt($('#hours_mute').val(), 10)
const mins = parseInt($('#mins_mute').val(), 10)
const notf = $('#notf_mute:checked').val() === '1'
let duration = days * 24 * 60 * 60 + hours * 60 + mins
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
var start = 'https://' + domain + '/api/mute/' + flagm var start = 'https://' + domain + '/api/mute/' + flagm
var ent = { i: at, userId: id } var ent = { i: at, userId: id }
var rq = JSON.stringify(ent) var rq = JSON.stringify(ent)
} else { } else {
var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag
var rq = '' const q = {
notifications: notf
}
if (duration > 0) q.duration = duration * 60
if (days < 0 || hours < 0 || mins < 0) return Swal.fire('Invalid number')
var rq = JSON.stringify(q)
} }
var httpreq = new XMLHttpRequest() var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true) httpreq.open('POST', start, true)
@ -371,6 +381,15 @@ function muteDo(acct_id) {
} }
}) })
} }
function muteMenu() {
$('#muteDuration').toggleClass('hide')
!$('#muteDuration').hasClass('hide') ? $('#his-des').css('max-height', '112px') : $('#his-des').css('max-height', '196px')
}
function muteTime(day, hour, min) {
$('#days_mute').val(day)
$('#hours_mute').val(hour)
$('#mins_mute').val(min)
}
//投稿削除 //投稿削除
function del(id, acct_id) { function del(id, acct_id) {

View File

@ -76,7 +76,12 @@ function imgCont(type) {
} }
} }
function imageXhr(id, key, murl) { function imageXhr(id, key, murl) {
let time = 0
var startTime = new Date() var startTime = new Date()
const timer = setInterval(function() {
time = time + 1
$('#imgsec').text(time)
}, 10)
$('#imgmodal-progress div').removeClass('determinate') $('#imgmodal-progress div').removeClass('determinate')
$('#imgmodal-progress div').addClass('indeterminate') $('#imgmodal-progress div').addClass('indeterminate')
$('#imgmodal-progress').removeClass('hide') $('#imgmodal-progress').removeClass('hide')
@ -89,6 +94,7 @@ function imageXhr(id, key, murl) {
if (event.lengthComputable) { if (event.lengthComputable) {
var total = event.total var total = event.total
var now = event.loaded var now = event.loaded
$('#imgbyte').text(`${Math.floor(now / 1024)}KB/${Math.floor(total / 1024)}`)
var per = (now / total) * 100 var per = (now / total) * 100
$('#imgmodal-progress div').removeClass('indeterminate') $('#imgmodal-progress div').removeClass('indeterminate')
$('#imgmodal-progress div').addClass('determinate') $('#imgmodal-progress div').addClass('determinate')
@ -147,6 +153,7 @@ function imageXhr(id, key, murl) {
} }
element.src = b64 element.src = b64
var endTime = new Date() var endTime = new Date()
clearInterval(timer)
var proctime = endTime.getTime() - startTime.getTime() var proctime = endTime.getTime() - startTime.getTime()
$('#imgsec').text(proctime) $('#imgsec').text(proctime)
$('#imgmodal').attr('src', b64) $('#imgmodal').attr('src', b64)

View File

@ -190,7 +190,7 @@ function udg(user, acct_id, isSwal) {
if (json.fields) { if (json.fields) {
var table = '' var table = ''
if (json.fields.length > 0) { if (json.fields.length > 0) {
$('#his-des').css('max-height', '250px') $('#his-des').css('max-height', '196px')
table = '<table id="his-field">' table = '<table id="his-field">'
for (var i = 0; i < json.fields.length; i++) { for (var i = 0; i < json.fields.length; i++) {
var fname = json.fields[i].name var fname = json.fields[i].name

View File

@ -1,6 +1,6 @@
{ {
"name": "thedesk", "name": "thedesk",
"version": "22.3.0", "version": "22.3.1",
"codename": "Koume", "codename": "Koume",
"description": "TheDesk is a Mastodon client for PC.", "description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk", "repository": "https://github.com/cutls/TheDesk",
@ -57,7 +57,7 @@
], ],
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^5.15.3", "@fortawesome/fontawesome-free": "^5.15.4",
"@syuilo/aiscript": "^0.11.1", "@syuilo/aiscript": "^0.11.1",
"electron-dl": "^3.2.1", "electron-dl": "^3.2.1",
"itunes-nowplaying-mac": "https://github.com/cutls/itunes-nowplaying-mac/releases/download/v0.4.0/itunes-nowplaying-mac-0.4.0.tgz", "itunes-nowplaying-mac": "https://github.com/cutls/itunes-nowplaying-mac/releases/download/v0.4.0/itunes-nowplaying-mac-0.4.0.tgz",
@ -69,7 +69,7 @@
"materialize-css": "git://github.com/cutls/materialize#v1-dev", "materialize-css": "git://github.com/cutls/materialize#v1-dev",
"sanitize-html": "^2.4.0", "sanitize-html": "^2.4.0",
"sumchecker": "^3.0.1", "sumchecker": "^3.0.1",
"sweetalert2": "^11.0.17", "sweetalert2": "^11.1.4",
"system-font-families": "^0.4.1", "system-font-families": "^0.4.1",
"textarea-caret": "^3.1.0", "textarea-caret": "^3.1.0",
"uuid": "^8.3.2", "uuid": "^8.3.2",
@ -79,11 +79,11 @@
"browserify": "^17.0.0", "browserify": "^17.0.0",
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
"electron": "^13.1.2", "electron": "^13.2.2",
"electron-builder": "^22.11.7", "electron-builder": "^22.11.7",
"electron-notarize": "^1.0.0", "electron-notarize": "^1.1.0",
"electron-rebuild": "^2.3.5", "electron-rebuild": "^3.2.0",
"eslint": "^7.28.0", "eslint": "^7.32.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"readline-sync": "1.4.10" "readline-sync": "1.4.10"
}, },

View File

@ -0,0 +1,56 @@
<!--bottom-->
<div id="bottom" class="reverse hide">
<div class="leftside reverse">
<div id="dambox">
<button id="posttgl" class="btn waves-effect" style="width: 100%; height: 2.5rem; line-height: 0; margin: 0">
<i class="material-icons" style="position: relative; top: 0.38rem; font-size: 1.5rem; text-align: center; margin-right: 0.76rem">edit</i>@@toot@@
</button>
</div>
<div class="leftside reverse" id="group">
<div class="btnsgroup">
<a href="acct.html" class="nex waves-effect">
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)">account_circle</i>
</a>
<a href="setting.html" class="nex waves-effect">
<i class="material-icons nex" title="@@setting@@(Ctrl+Shift+S)">settings</i>
</a>
<a onclick="nano()" class="nex waves-effect pwa">
<i class="material-icons" title="@@nanoDes@@TheDesk Nano" data-trans-title="nano_desp">remove_from_queue</i>
</a>
<a onclick="menu()" class="nex waves-effect">
<i class="material-icons" title="@@menu@@">apps</i>
</a>
<span id="fukidashi">@@hereAddColumns@@</span>
</div>
<a href="https://thedesk.top/bugs/?lang=@@lang@@" target="_blank" class="waves-effect bgReport" draggable="false" title="Feeling unlucky"> @@foundBug@@ </a>
</div>
</div>
<div>
<div id="tips-menu">
<div class="btnsgroup" style="height: 2.61rem">
<span class="grouptitle">Tips:</span>
<a onclick="tips('ver')" class="nex waves-effect">
<i class="material-icons nex" title="@@verTips@@" data-trans-title="ver">info</i>
</a>
<a onclick="tips('clock')" class="nex waves-effect">
<i class="material-icons nex" title="@@clockTips@@" data-trans-title="clock">access_time</i>
</a>
<a onclick="tips('memory')" class="nex waves-effect pwa">
<i class="material-icons nex" title="@@ramTips@@" data-trans-title="memory">memory</i>
</a>
<a onclick="tips('trend')" class="nex waves-effect imasonly" style="display: none">
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
</a>
<a onclick="tips('spotify')" class="nex waves-effect">
<i class="fab fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i>
</a>
</div>
</div>
<div id="tips" class="hide">
<a onclick="tipsToggle()" class="nex waves-effect">
<i class="material-icons nex" title="@@changeTips@@" data-trans-title="tips">bubble_chart</i>
</a>
<div id="tips-text" style="width: 23rem; line-height: 1rem"></div>
</div>
</div>
</div>

View File

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="@@lang@@">
<head>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<link href="../../css/themes.css" type="text/css" rel="stylesheet" />
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="../../@@node_base@@/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="../../@@node_base@@/jquery-ui-dist/jquery-ui.min.css" type="text/css" rel="stylesheet" />
<link href="../../css/tl.css" rel="stylesheet" type="text/css" />
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
<link href="../../css/post.css" rel="stylesheet" type="text/css" />
<link href="../../css/master.css" type="text/css" rel="stylesheet" />
<link href="../../css/sort.css" rel="stylesheet" type="text/css" />
<link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet" />
<link href="../../@@node_base@@/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
<meta charset="utf-8" />
@@comment-start@@
<script type="text/javascript">
var _jipt = []
_jipt.push(['project', 'thedesk'])
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
@@comment-end@@ @@pwa@@ @@store@@
</head>
<body class="@@pwaClass@@">
<script>
var ver = '@@versionLetter@@'
var gitHash = '@@gitHash@@'
//betaを入れるとバージョンチェックしない
//var ver="beta";
var acct_id = 0
var tlid = 0
</script>
@@preTL@@ @@starterAndDragHandler@@ @@postBox@@ @@tootModal@@ @@userDataModal@@ @@mediaModal@@ @@releaseNote@@
<!--PiP-->
<div id="pip" class="hide pip-bottom pip-left">
<i class="material-icons pip-horiz pointer" onclick="pipHoriz()">chevron_right</i>
<i class="material-icons pip-vert pointer" onclick="pipVert()">expand_less</i>
<i class="material-icons pointer" onclick="endPip()">close</i>
<div id="pip-content"></div>
</div>
@@menuHtml@@
<div id="main">
<!--TLのTL-->
<div id="timeline-container">
<div id="something-wrong">
<img src="../../img/thinking.svg" style="width: 150px; margin: 5px; display: none" draggable="false" />
<div class="stw" style="display: none">@@helloTheDesk@@</div>
</div>
</div>
</div>
@@bottomBarHtml@@ @@supportMe@@
<!--左下メッセージ-->
<div id="message"></div>
<!--Radio Happy(Yui) Taku Inoue-->
<audio src="" id="radio"></audio>
<!--JS-->
<script type="text/javascript" src="../../@@node_base@@/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/platform/native.js"></script>
<script type="text/javascript" src="../../js/platform/plugin.js"></script>
<script type="text/javascript" src="../../@@node_base@@/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../@@node_base@@/grapheme-splitter/index.js"></script>
<script type="text/javascript" src="../../@@node_base@@/lodash/lodash.min.js"></script>
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
<script type="text/javascript" src="../../js/common/version.js"></script>
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../@@node_base@@/jquery-ui-dist/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/tl/misskeyparse.js"></script>
<script type="text/javascript" src="../../js/tl/dm.js"></script>
<script type="text/javascript" src="../../js/ui/scroll.js"></script>
<script type="text/javascript" src="../../js/tl/announParse.js"></script>
<script type="text/javascript" src="../../js/tl/tl.js"></script>
<script type="text/javascript" src="../../js/tl/card.js"></script>
<script type="text/javascript" src="../../js/tl/parse.js"></script>
<script type="text/javascript" src="../../js/tl/poll.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>
<script type="text/javascript" src="../../js/tl/notification.js"></script>
<script type="text/javascript" src="../../js/tl/datails.js"></script>
<script type="text/javascript" src="../../js/tl/mix.js"></script>
<script type="text/javascript" src="../../js/tl/src.js"></script>
<script type="text/javascript" src="../../js/tl/directory.js"></script>
<script type="text/javascript" src="../../js/tl/filter.js"></script>
<script type="text/javascript" src="../../js/tl/tag.js"></script>
<script type="text/javascript" src="../../js/tl/list.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/ui/post-box.js"></script>
<script type="text/javascript" src="../../js/ui/layout.js"></script>
<script type="text/javascript" src="../../js/post/emoji.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/login.js"></script>
<script type="text/javascript" src="../../js/ui/img.js"></script>
<script type="text/javascript" src="../../js/ui/pip.js"></script>
<script type="text/javascript" src="../../js/ui/sort.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/post/post.js"></script>
<script type="text/javascript" src="../../js/post/use-txtbox.js"></script>
<script type="text/javascript" src="../../js/post/secure.js"></script>
<script type="text/javascript" src="../../js/post/img.js"></script>
<script type="text/javascript" src="../../js/post/status.js"></script>
<script type="text/javascript" src="../../js/post/misskeystatus.js"></script>
<script type="text/javascript" src="../../js/post/suggest.js"></script>
<script type="text/javascript" src="../../js/post/bb-md.js"></script>
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
<script type="text/javascript" src="../../js/userdata/his-data.js"></script>
<script type="text/javascript" src="../../js/userdata/prof-edit.js"></script>
<script type="text/javascript" src="../../js/emoji/emojipack.js"></script>
<script type="text/javascript" src="../../js/emoji/default-emoji.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/ui/menu.js"></script>
</body>
</html>

View File

@ -0,0 +1,12 @@
[
"bottomBarHtml",
"mediaModal",
"menuHtml",
"postBox",
"preTL",
"releaseNote",
"starterAndDragHandler",
"supportMe",
"tootModal",
"userDataModal"
]

View File

@ -0,0 +1,54 @@
<!-- Modal Structure Image-->
<div id="imagemodal" class="modal modal-fixed-footer">
<div class="modal-content">
<div id="imagewrap">
<img src="" id="imgmodal" />
</div>
<div class="progress nomargin hide transparent" id="imgmodal-progress">
<div class="indeterminate"></div>
</div>
<br />
</div>
<div class="modal-footer">
<div id="imginfo">
<span id="imgprog"></span>% <br />
<span id="imgsec"></span>ms <br /><span id="imgbyte"></span>KB
</div>
<a class="waves-effect white-text" onclick="zoom(2)">
<i class="material-icons">zoom_in</i>
</a>
<a class="waves-effect white-text" onclick="zoom(0.5)">
<i class="material-icons">zoom_out</i>
</a>
<a class="waves-effect white-text" onclick="rotate(false)">
<i class="material-icons">rotate_90_degrees_ccw</i>
</a>
<button class="btn waves-effect blue" onclick="copyImgUrl()" title="@@copyURL@@">
<i class="material-icons">link</i>
</button>
<button class="btn waves-effect purple" onclick="dlImg()">
<i class="material-icons">file_download</i>
</button>
<button class="btn waves-effect brown" onclick="detFromImg()" title="@@thisToot@@">
<i class="material-icons">pageview</i>
</button>
<button class="btn waves-effect orange" onclick="imgCont('prev')" id="image-prev">
<i class="material-icons">keyboard_arrow_left</i>
</button>
<button class="btn waves-effect orange" onclick="imgCont('next')" id="image-next">
<i class="material-icons">keyboard_arrow_right</i>
</button>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">
<i class="material-icons">close</i>
</a>
</div>
</div>
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width: 100%; max-height: 100%" controls loop="true" autoplay="true" />
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,229 @@
<!--menu-->
<div id="menu" class="z-depth-5" style="display: none">
<div id="menu-bar" class="drag-bar"></div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="menu()" title="@@closeThisBox@@(X)">cancel</i>
</span>
<div id="menu-wrapper">
<div id="left-menu">
<a class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"> <i class="material-icons" aria-hidden="true">add</i><span>@@addColumn@@</span> </a>
<a class="waves-effect" onclick="sortMenu()" id="sortMenu"> <i class="material-icons" aria-hidden="true">sort</i><span>@@sortColumns@@</span> </a>
<a class="waves-effect" onclick="searchMenu()" id="searchMenu"> <i class="material-icons" aria-hidden="true">search</i><span>@@search@@</span> </a>
<a class="waves-effect" onclick="listMenu()" id="listMenu"> <i class="material-icons" aria-hidden="true">view_headline</i><span>@@list@@</span> </a>
<a class="waves-effect" onclick="dirMenu()" id="dirMenu"> <i class="material-icons" aria-hidden="true">recent_actors</i><span>@@discover@@</span> </a>
<a class="waves-effect" onclick="filterMenu()" id="filterMenu"> <i class="material-icons" aria-hidden="true">filter_list</i><span>@@filter@@</span> </a>
<a class="waves-effect" onclick="help()" id="helpMenu"> <i class="material-icons" aria-hidden="true">help_outline</i><span>@@helpAndLogs@@</span> </a>
<a class="waves-effect" onclick="location.href='index.html'"> <i class="material-icons" aria-hidden="true">refresh</i><span>@@f5@@</span> </a>
</div>
<div id="right-menu">
<!--カラム追加-->
<div id="add-box" class="hide menu-content">
<div class="input-field">
<span data-trans="your_acct">@@selectAcct@@</span>
<br />
<select id="add-acct-sel" class="acct-sel" style="color: black" onchange="addselCk()"></select>
<label></label>
</div>
<div class="input-field">
<div id="auth">
<input type="hidden" value="local" id="type-sel" /> @@showThisTL@@
<div id="tltype">
<a class="type waves-effect active" data-type="local" title="@@local@@">
<div><i class="material-icons" aria-hidden="true">people_outline</i></div>
<span>@@local@@</span>
</a>
<a class="type waves-effect" data-type="local-media" title="@@localMedia@@">
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
<span>@@localMedia@@</span>
</a>
<a class="type waves-effect" data-type="home" title="@@home@@">
<div><i class="material-icons" aria-hidden="true">home</i></div>
<span>@@home@@</span>
</a>
<a class="type waves-effect" data-type="pub" title="@@fed@@">
<div><i class="material-icons" aria-hidden="true">language</i></div>
<span>@@fed@@</span>
</a>
<a class="type waves-effect" data-type="pub-media" title="@@fedMedia@@">
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
<span>@@fedMedia@@</span>
</a>
<a class="type waves-effect" data-type="dm" title="@@dm@@">
<div><i class="material-icons" aria-hidden="true">mail_outline</i></div>
<span>@@dm@@</span>
</a>
<a class="type waves-effect" data-type="mix" title="@@integratedTLDes@@">
<div><i class="material-icons" aria-hidden="true">merge_type</i></div>
<span>@@integratedTLDes@@</span>
</a>
<a class="type waves-effect" data-type="plus" title="@@localPlusDes@@">
<div><i class="material-icons" aria-hidden="true">reply</i></div>
<span>@@localPlusDes@@</span>
</a>
<a class="type waves-effect" data-type="notf" title="@@notf@@">
<div><i class="material-icons" aria-hidden="true">notifications</i></div>
<span>@@notf@@</span>
</a>
<a class="type waves-effect" data-type="bookmark" title="@@bookmark@@">
<div><i class="material-icons" aria-hidden="true">bookmark</i></div>
<span>@@bookmark@@</span>
</a>
</div>
</div>
<div id="noauth" class="hide">
@@showThisTL@@
<input id="noauth-url" type="text" class="validate" style="width: calc(70% - 3rem)" placeholder="e.g:mstdn.jp" />
</div>
<div id="webview-add" class="hide">@@webviewWarn@@</div>
</div>
<button class="btn waves-effect blue" style="width: calc(100% - 0.7rem)" onclick="addColumn()" data-trans-i="add"><i class="material-icons left">add</i>@@add@@</button>
<br />
<br />
</div>
<!--検索-->
<div id="src-box" class="hide menu-content">
<div class="input-field">
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
</div>
<div class="input-field">
<input id="src" type="text" class="validate" style="width: calc(100% - 150px)" />
<label for="src" data-trans="src">@@search@@</label>
<button class="btn waves-effect indigo" style="width: 36%; padding: 0; padding-left: 1.15rem" onclick="src()" data-trans-i="src">
<i class="material-icons left" style="margin: 0">search</i>@@search@@
</button>
<br />
<br />
</div>
<div id="search">
<div id="src-contents"></div>
</div>
</div>
<!--ディレクトリ-->
<div id="dir-box" class="hide menu-content">
<label>
<input class="with-gap" onchange="dirChange('directory')" name="dirsug" type="radio" value="directory" checked />
<span>@@directory@@</span>
</label>
<label>
<input class="with-gap" onchange="dirChange('suggest')" name="dirsug" type="radio" value="suggest" />
<span>@@frc@@</span>
</label>
<div class="input-field">
<select id="dir-acct-sel" class="acct-sel" onchange="dirselCk()"></select>
</div>
<div id="dirNoAuth" class="hide">
<input id="dirNoAuth-url" type="text" class="validate" style="width: calc(70% - 3rem)" placeholder="e.g:mastodon.social" />
<button class="btn waves-effect indigo" style="width: 9.23rem; padding: 0; padding-left: 1.15rem" onclick="directory('directory')">
<i class="material-icons left" style="margin: 0">search</i>@@show@@
</button>
</div>
<div id="directoryConfig">
<label>
<input class="with-gap" onchange="directory('directory')" name="sort" type="radio" value="active" checked />
<span>@@active@@</span>
</label>
<label>
<input class="with-gap" onchange="directory('directory')" name="sort" type="radio" value="new" />
<span>@@newcomer@@</span> </label
><br />
<label>
<input type="checkbox" class="filled-in" id="local_only" value="true" onchange="directory('directory')" />
<span>@@local_only@@</span>
</label>
</div>
<div id="dir-contents"></div>
<button class="btn waves-effect teal disabled" style="width: 100%" id="moreDir" onclick="directory('check', 'more')">@@more@@</button>
</div>
<!--並べ替え-->
<div id="sort-box" class="hide menu-content">
<ul id="sort"></ul>
<div>
<button onclick="sort()" class="btn waves-effect nex" style="width: 97.5%" data-trans-i="sort"><i class="material-icons left">sort</i>@@sortSet@@</button>
</div>
</div>
<!--リスト-->
<div id="list-box" class="hide menu-content">
<div class="input-field" style="width: calc(100% - 100px); float: left">
<select id="list-acct-sel" class="acct-sel"></select>
<label>@@selectAcct@@</label>
</div>
<div style="float: left; padding-top: 8px; padding-bottom: 28px">
<button class="btn waves-effect indigo" style="width: 80px" onclick="list()" data-trans-i="lists">@@listLocale@@</button>
</div>
<br /><br />
<div id="lists"></div>
<div id="lists-user"></div>
<input type="text" style="width: calc(100% - 143px)" id="list-add" placeholder="@@name@@" />
<button class="btn waves-effect" style="width: 120px" onclick="makeNewList()">@@makeNew@@</button>
</div>
<!--フィルター-->
<div id="filter-box" class="hide menu-content">
<div class="input-field" style="width: calc(100% - 100px); float: left">
<select id="filter-acct-sel" class="acct-sel"></select>
<label>@@selectAcct@@</label>
</div>
<div style="float: left; padding-top: 8px; padding-bottom: 28px">
<button class="btn waves-effect indigo" style="width: 80px" onclick="filter()" data-trans-i="filters">@@listLocale@@</button>
</div>
<div id="filtered-words"></div>
<input type="hidden" id="filter-edit-id" />
<input type="text" style="width: 150px" id="filter-add-word" placeholder="@@filterWord@@" /><br /> @@degree@@
<br />
<label>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<span>@@home@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<span>@@local@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<span>@@notf@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<span>@@conver@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="prof_filter" value="profiles" />
<span>@@prof@@</span> </label
><br />
@@option@@
<br />
<label>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<span>@@matchWord@@</span>
</label>
<br />
<span class="sml">@@warnMatchWord@@</span><br />
<label>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<span>@@except@@</span>
</label>
<br />
<span class="sml">@@exceptWorn@@</span><br /> @@avalableBefore@@ <span class="sml">@@warnAvBefore@@<b>@@warnAvBefore2@@</b></span
><br /><br />
<input type="number" style="width: 50px" id="days_filter" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 50px" id="hours_filter" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 50px" id="mins_filter" placeholder="m" value="0" />@@mins@@<br />
Quick: <a onclick="filterTime(0,0,30)" class="pointer">30@@mins@@</a>/ <a onclick="filterTime(0,1,0)" class="pointer">1@@hours@@</a>/
<a onclick="filterTime(0,6,0)" class="pointer">6@@hours@@</a>/ <a onclick="filterTime(0,12,0)" class="pointer">12@@hours@@</a>/
<a onclick="filterTime(1,0,0)" class="pointer">1@@days@@</a>/ <a onclick="filterTime(7,0,0)" class="pointer">7@@days@@</a>/
<a onclick="filterTime(0,0,0)" class="pointer">@@unlimited@@</a><br />
<button class="btn waves-effect" style="width: 120px" onclick="makeNewFilter()" id="add-filter-btn">@@add@@</button><br />
<span class="sml">@@warnOnIntegratedTL@@</span>
</div>
<!--ヘルプとログ-->
<div id="help-box" class="hide menu-content">
<a href="https://docs.thedesk.top" class="btn waves-effect" style="width: 97.5%">@@help@@</a><br /> @@contactwithlog@@
<br />
<textarea id="logs" style="height: 250px"></textarea><br />
</div>
</div>
</div>
<a onclick="about()" class="nex waves-effect pwa"> <i class="material-icons menu-icon">info</i>@@about@@ </a>&nbsp;|&nbsp;
<a onclick="bottomReverse()" class="nex waves-effect"> <i class="material-icons menu-icon">swap_horiz</i>@@reverse@@ </a>&nbsp;|&nbsp;
<a onclick="openRN()" class="nex waves-effect"> <i class="material-icons menu-icon">new_releases</i>Release Note </a>
</div>

View File

@ -0,0 +1,247 @@
<div id="post-box" class="z-depth-5">
<div id="post-bar" class="drag-bar"><span id="unreact">@@post-new@@</span><span id="addreact" class="hide">Reaction</span></div>
<!--トゥートボックス-->
<div id="left-side">
<div class="row" style="margin-bottom: 0">
<div class="" style="float: left">
<a onclick="profShow()" style="vertical-align: -1.7rem" class="pointer mize">
<img src="../../img/missing.svg" id="acct-sel-prof" title="@@showSelectProf@@(Ctrl+Shift+P)" data-trans-title="post_box_prof" style="width: 1.8rem" />
</a>
</div>
<div class="input-field mize" style="float: left; width: calc(100% - 1.8rem); margin-top: 0">
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
</div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="hide()" title="@@closeThisBox@@(X)" data-trans-title="post_box_close">cancel</i>
</span>
<!--Markdown-->
<div class="row" style="margin-bottom: 0">
<div class="markdown mize hide">
<div class="col s12">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
<i
class="pointer setting fa fa-subscript waves-effect"
onclick="markdown('__','yes','no','before')"
title="下付き文字 テキストボックス内を選択してから押すと囲みます。"
style="font-size: 1.5rem"
></i>
<i
class="pointer setting fa fa-superscript waves-effect"
onclick="markdown('_','yes','no','before')"
title="上付き文字 テキストボックス内を選択してから押すと囲みます。"
style="font-size: 1.5rem"
></i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<span class="sml gray pointer waves-effect">
<a onclick="mdToggle()">Markdownエディタを隠す</a>
</span>
<br />
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
<input id="size" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" value="12" />px
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
<input id="colorhex" style="width: calc(50% - 3.8rem); margin: 0; height: 1.8rem" type="color" />
<br />
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<input id="linkt" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="リンクテキスト" />&nbsp;
<input id="link2" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="リンクアドレス" />
<br />
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
<input id="image" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="代替テキスト" />&nbsp;
<input id="image2" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="画像アドレス" />
</div>
</div>
<div class="input-field col s12" id="preview-field" style="margin-top: 0">
<div id="md-preview"></div>
<span class="sml gray pointer">
<a onclick="previewEdit()">Edit</a>
</span>
</div>
<div class="input-field col s12" id="toot-field" style="margin-top: 0; margin-bottom: 0">
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom: 0" data-length="500"></textarea>
<div id="suggest"></div>
<label for="textarea" data-trans="toot">@@toot@@</label>
<br />
<span class="sml gray pointer markdown mize" id="preview-btn">
<a onclick="preview()">Preview</a>
</span>
<span class="sml gray pointer anti-markdown mize">
<a onclick="mdToggle()">Markdownエディタを表示</a>
</span>
</div>
<div class="col s12 mize" style="margin-top: 0; display: flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="@@nsfwDes@@" onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1" id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="@@cwDes@@">CW</a>
<span
><span id="imgup"></span><span id="imgsel" class="pwa"><i class="waves-effect material-icons gray" onclick="fileselect()" title="@@selfile@@">photo_library</i></span></span
>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn" title="@@insertEmoji@@">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-trigger" data-target="dropdown2">more_vert</i>
<i class="material-icons nex gray waves-effect" title="@@clearToot@@(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
</div>
<div class="col s12 mize" style="margin-bottom: 0.4rem; padding: 0">
<div id="taglist"></div>
<div id="preview" class="mize"></div>
<span class="sml mize"
><span>@@replyMode@@</span>: <span id="rec">@@no@@</span>/<span>@@temp@@</span>:
<span id="mec">@@nothing@@</span>
<a onclick="stamp()" class="pointer pwa" title="@@stampWarn@@">@@stamp@@: <span id="stamp">Off</span></a> /@@poll@@:
<span id="pollsta">@@no@@</span>
<span id="vis" class="hide">public</span>
</span>
<br />
<input type="text" id="cw-text" placeholder="@@cwtext@@" class="mize" style="margin: 0" />
<div id="sch-box">
@@postat@@<br /><span class="sml">@@scheduleWarn@@</span><a onclick="expPostMode()">Expire mode(beta)</a><br />
<input type="datetime-local" id="sch-date" placeholder="@@schedule@@" class="datepicker" style="margin: 0" />
</div>
</div>
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id="dropdown1" class="dropdown-content">
<li>
<a onclick="vis('public')">@@publicJP@@(Public)</a>
</li>
<li>
<a onclick="vis('unlisted')">@@unlistedJP@@(Unlisted)</a>
</li>
<li>
<a onclick="vis('private')" id="private-button">@@privateJP@@(Private)</a>
</li>
<li id="limited-button" class="hide">
<a onclick="vis('limited')">限定公開(Limited)</a>
</li>
<li id="local-button" class="hide">
<a onclick="vis('local')">@@localJP@@(Local)</a>
</li>
<li>
<a onclick="vis('direct')" class="disabled direct">@@directJP@@(Direct)</a>
</li>
</ul>
<!-- その他 Dropdown Structure -->
<ul id="dropdown2" class="dropdown-content">
<li>
<a onclick="nowplaying('spotify');">NowPlaying (Spotify)</a>
</li>
<li class="mac">
<a onclick="nowplaying('itunes');">NowPlaying (iTunes macOS)</a>
</li>
<li class="mac hide" id="ccnp">
<a onclick="nowplaying('anynp');">NowPlaying (コントロールセンター)</a>
</li>
<li>
<a onclick="nowplaying('lastFm');">NowPlaying (Last.fm)</a>
</li>
<li>
<a onclick="schedule();">@@schedule@@</a>
</li>
<li>
<a onclick="pollToggle();">@@poll@@</a>
</li>
<li>
<a onclick="draftToggle();">@@draft@@</a>
</li>
</ul>
<!--hidden area-->
<input type="hidden" id="reply" />
<input type="hidden" id="ideKey" />
<input type="hidden" id="quote" />
<input type="hidden" id="media" />
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect unmize toot-btn-group" onclick="post()" id="toot-post-btn">@@toot@@</button>
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn">
<i class="material-icons" id="toot-sec-icon" title="@@sectoot@@">lock_open</i>
</button>
</div>
</div>
<div id="right-side">
<div id="draft" class="hide right-side-content"></div>
<!--絵文字ピッカー-->
<div id="emoji" class="hide right-side-content">
<span class="gray sml"
>@@emojiWarn@@
<a onclick="emojiGet('true')" class="pointer">@@refreshEmoji@@</a>
<br />
</span>
<div id="emoji-list" class="" style=""></div>
<div class="emoji-control center">
<button class="btn waves-effect blue" style="width: 30%; padding: 0" onclick="emojiList('before')" id="emoji-before">
<i class="material-icons">navigate_before</i>
</button>
<span id="emoji-count"></span>/
<span id="emoji-sum"></span>
<button class="btn waves-effect blue" style="width: 30%; padding: 0" onclick="emojiList('next')" id="emoji-next">
<i class="material-icons">navigate_next</i>
</button>
</div>
<div id="default-emoji">
<span id="now-emoji"></span>@@showThisEmoji@@<br /><span class="gray sml">@@emojiInsertWarn@@</span>
<br />
<a onclick="customEmoji()" class="pointer waves-effect" title="@@customEmoji@@">
<i class="material-icons">add</i>
</a>
<a onclick="defaultEmoji('people')" class="pointer waves-effect" title="@@peopleEmoji@@">
<i class="material-icons">people</i>
</a>
<a onclick="defaultEmoji('nature')" class="pointer waves-effect" title="@@natureEmoji@@">
<i class="material-icons">local_florist</i>
</a>
<a onclick="defaultEmoji('food')" class="pointer waves-effect" title="@@foodEmoji@@">
<i class="material-icons">restaurant</i>
</a>
<a onclick="defaultEmoji('activity')" class="pointer waves-effect" title="@@activityEmoji@@">
<i class="material-icons">directions_run</i>
</a>
<a onclick="defaultEmoji('place')" class="pointer waves-effect" title="@@placeEmoji@@">
<i class="material-icons">directions_car</i>
</a>
<a onclick="defaultEmoji('object')" class="pointer waves-effect" title="@@thingsEmoji@@">
<i class="material-icons">attach_file</i>
</a>
<a onclick="defaultEmoji('symbol')" class="pointer waves-effect" title="@@symbolEmoji@@">
<i class="material-icons">gesture</i>
</a>
<a onclick="defaultEmoji('flag')" class="pointer waves-effect" title="@@flagsEmoji@@">
<i class="material-icons">flag</i>
</a>
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
<i class="fab fa-fort-awesome"></i>
</a>
</div>
</div>
<!--Poll UI-->
<div id="poll" class="hide right-side-content">
<div id="mastodon-poll" class="poll-provider">
<input type="text" class="mastodon-choice" placeholder="@@choice@@1" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@2" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@3" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@4" />
<label>
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<span>@@pollmulti@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<span>@@polluntil@@</span>
</label>
<input type="number" style="width: 50px" id="days_poll" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 50px" id="hours_poll" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 50px" id="mins_poll" placeholder="m" value="6" />@@mins@@
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,17 @@
<textarea id="copy" style="top: -100px; position: fixed"></textarea>
<canvas id="canvas" style="top: -100px; position: fixed; width: 32px; height: 32px" width="32" height="32"></canvas>
<div id="pageSrc" class="hide z-depth-2">
<div class="srcQ"></div>
<div class="pageSrcBtn pointer" onclick="doSrc('web')">@@webSrc@@</div>
<div class="pageSrcBtn pointer" onclick="doSrc('ts')">@@tsSrc@@</div>
<div class="pageSrcBtn pointer" onclick="doSrc('copy')">@@copy@@</div>
<div class="pageSrcBtn pointer lastPSB" onclick="doSrc('toot')">@@toot@@</div>
</div>
<div class="hide z-depth-2" id="tagContextMenu">
<a onclick="doTShowBox('tl')" class="pointer firstTCM" id="tagCMTL"></a>
<a onclick="doTShowBox('toot')" class="pointer" id="tagCMToot"></a>
<a onclick="doTShowBox('pin')" class="pointer" id="tagCMPin"></a>
<a onclick="doTShowBox('f')" class="pointer lastTCM" title="add it to Featured tags" id="tagCMFeature">Feature</a>
</div>
<div id="offline" class="hide">@@nowOffline@@</div>
<div id="re-online" class="hide">@@reOnline@@</div>

View File

@ -0,0 +1,34 @@
<!-- Modal Structure Release Note-->
<div id="releasenote" class="modal modal-fixed-footer scr">
<div class="modal-content">
<h3>TheDesk</h3>
<a href="https://thedesk.top" target="_blank">HP</a><br />
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br />
<br />
<div id="release-22-3-1_Koume" class="release-do" style="display: none">
Pixiv FanboxやPatreonでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br /> 困ったときは、 <a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note 22.3.1 (Koume)</h5>
<!--上のdivのidや1行上のところも変えてね-->
・時限ミュートに対応した
<a onclick="udgEx('Cutls@1m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br /> ・軽微なバグの修正
<a onclick="udgEx('Cutls@1m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br />
</div>
<div id="release-en" style="display: none">
<h5>Let's make it native!</h5>
<a href="https://translate.thedesk.top">Crowdin translation project</a>
</div>
<br /><br />
<h3>@@supportme@@</h3>
@@TheDeskDes@@<br />
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> @@PixivSupport@@ </a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls" target="_blank"> @@PatreonSupport@@ </a>
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls" target="_blank" style="background-color: #f6c915"> Liberapay </a>
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> @@AWLSupport@@ </a>
<br /> @@SendAmazonGift1@@ <a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br /> Kyash
<br />
<img src="../../img/kyash.png" width="100" /><br />
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,50 @@
<div id="tl">
<!--TL-->
<!--スターター-->
<div id="start" class="scr">
<div id="start-content">
<h3 class="center">@@demoBottomBtns@@</h3>
@@lookAtBottom@@
<div id="demobottom">
<button class="btn waves-effect" style="width: 23rem; height: 2.5rem; line-height: 0; margin: 0; background-color: var(--active)">
<i class="material-icons" style="position: relative; top: 0.4rem; font-size: 1.5rem; text-align: center; margin-right: 0.7rem">edit</i>@@toot@@
</button>
<div class="leftside reverse" id="demogroup">
<div class="btnsgroup" style="margin-left: 0.4rem">
<a href="#" class="nex waves-effect">
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)">account_circle</i>
</a>
<a href="#" class="nex waves-effect">
<i class="material-icons nex" title="@@setting@@(Ctrl+Shift+S)">settings</i>
</a>
<a class="nex waves-effect">
<i class="material-icons" title="@@nanoDes@@TheDesk Nano">remove_from_queue</i>
</a>
<a class="nex waves-effect" id="list-tgl">
<i class="material-icons" title="@@menu@@">apps</i>
</a>
</div>
</div>
</div>
<br />
<i class="material-icons nex big-icon">account_circle</i>: @@acctMan@@<br /> @@acctManDesc@@
<hr />
<i class="material-icons nex">settings</i>: @@setting@@<br /> @@settingDesc@@
<hr />
<i class="material-icons nex">remove_from_queue</i>: TheDesk Nano @@nanoDes@@<br /> @@nanoDescPlus@@
<hr />
<i class="material-icons nex">apps</i>: @@menu@@<br /> @@menuDesc@@
<br />
<br />
<button class="btn waves-effect" onclick="closeStart()" style="width: 300px">@@close@@</button>
</div>
</div>
<!--ドラッグハンドラ-->
<div id="drag">
<div id="drag-content">
@@draghere@@
<br />
<button class="btn waves-effect" onclick="closedrop()">@@close@@</button>
</div>
</div>
</div>

View File

@ -0,0 +1,33 @@
<!--Support me-->
<div id="support-btm" class="z-depth-4 hide scr">
<div id="support-btm-ja">
<h5>ご支援いただけませんか?</h5>
(これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)<br /> あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br /> 乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。
<br />
<br /> TheDeskになぜ金銭が発生するかについて: 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。
<br />
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。<br />
<b>@@TheDeskDes@@</b>
</div>
<div id="support-btm-en" class="hide">
<h5>Support me</h5>
It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!<br />
<b>@@TheDeskDes@@</b>
</div>
<div id="support-btm-middle">
<h5>@@monthly@@</h5>
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> @@PixivSupport@@ </a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls" target="_blank"> @@PatreonSupport@@ </a>
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls" target="_blank" style="background-color: #f6c915"> Liberapay </a>
</div>
<div id="support-btm-right">
<h5>@@once@@</h5>
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> @@AWLSupport@@ </a>
<br /> @@SendAmazonGift1@@ <a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br /> Kyash
<br />
<img src="../../img/kyash.png" width="100" /><br />
</div>
<div id="support-btm-close">
<button class="btn waves-effect" style="width: 100%" onclick="closeSupport()" id="add-filter-btn">@@close@@</button>
</div>
</div>

View File

@ -0,0 +1,96 @@
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible" id="det-col">
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">people_outline</i>@@afterLTL@@</div>
<div class="collapsible-body toot-reset" id="ltl-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">person_outline</i>@@afterUTL@@</div>
<div class="collapsible-body toot-reset" id="user-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">language</i>@@afterFTL@@</div>
<div class="collapsible-body toot-reset" id="ftl-after"></div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">arrow_upward</i>@@contextBefore@@
<i class="material-icons red-text hide" id="toot-reply-new">new_releases</i>
</div>
<div class="collapsible-body toot-reset" id="toot-reply"></div>
</li>
<li>
<div class="collapsible-header" id="activator"><i class="material-icons">more_horiz</i>@@thisToot@@</div>
<div class="collapsible-body">
<div class="toot-reset" id="toot-this"></div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">arrow_downward</i>@@contextAfter@@
<i class="material-icons red-text hide" id="toot-after-new">new_releases</i>
</div>
<div class="collapsible-body toot-reset" id="toot-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">people_outline</i>@@beforeLTL@@</div>
<div class="collapsible-body toot-reset" id="toot-before"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">person_outline</i>@@beforeUTL@@</div>
<div class="collapsible-body toot-reset" id="user-before"></div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons">star</i>@@favedPeople@@</div>
<div class="collapsible-body toot-reset" id="toot-fav"></div>
</li>
<li class="dm-hide">
<div class="collapsible-header"><i class="text-darken-3 false fas fa-retweet"></i>@@btedPeople@@</div>
<div class="collapsible-body toot-reset" id="toot-rt"></div>
</li>
</ul>
<div class="dm-hide" style="max-width: 450px">
@@useOtherAcct1@@(<i class="fas fa-retweet"></i>/<i class="fas fa-star"></i>@@useOtherAcct2@@)<br />
<div class="row">
<div class="col s6">
<select id="status-acct-sel" class="acct-sel"></select>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect" style="width: 100%" onclick="staEx('reply')">
<i class="fas fa-share"></i>
</button>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect indigo" style="width: 100%" onclick="staEx('rt')">
<i class="fas fa-retweet"></i>
</button>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect orange" style="width: 100%" onclick="staEx('fav')">
<i class="fas fa-star"></i>
</button>
</div>
</div>
@@btWithVis@@<br />
<button class="btn waves-effect darken-3 toot-btn-group purple" onclick="boostWith('public')">
<i class="material-icons">public</i>
</button>
<button class="btn waves-effect darken-3 toot-btn-group blue" onclick="boostWith('unlisted')">
<i class="material-icons">lock_open</i>
</button>
<button class="btn waves-effect darken-3 toot-btn-group orange" onclick="boostWith('private')">
<i class="material-icons">lock</i>
</button>
<div id="toot-tools"></div>
<div id="toot-after"></div>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">@@openBrowser@@</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">@@copyURL@@</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">@@embed@@</a>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,210 @@
<!-- Modal Structure Userdata -->
<div id="his-data" class="modal bottom-sheet modal-fixed-footer" style="max-height: 750px; height: 90%">
<div id="his-data-content" class="modal-content" style="padding-bottom: 0; overflow-y: hidden">
<div id="his-data-show">
<div id="his-data-wrap">
<div class="his-float" id="his-float-data">
<div id="his-leftside">
<div id="his-basic-prof">
<div>
<img src="../../img/loading.svg" id="his-prof" draggable="false" />
</div>
<div>
<span id="his-name">Loading...</span>
<span class="gray">@</span><span id="his-acct" class="gray"></span><br />
<span class="gray" id="his-relation"></span>
<br />
<span class="cbadge"> <span id="his-sta"></span>@@toots@@ </span>
<span class="cbadge"
>@@follow@@:
<span id="his-follow"></span>
</span>
<span class="cbadge">@@follower@@: <span id="his-follower"></span> </span><br />
<span class="cbadge" style="max-width: 11.5rem; width: 11.5rem"
>Since:
<span id="his-since"></span>
</span>
<span class="cbadge" id="his-bot">[bot]</span>
</div>
</div>
<div id="his-proof-prof"></div>
<div id="his-des" data-acct=""></div>
<br />
<div id="his-table"></div>
<br />
<div id="his-sign-action">
<a href="#!" class="waves-effect waves-green btn" onclick="follow()" style="flex-basis: 100%" id="his-follow-btn"
><i class="material-icons">people</i><span id="his-follow-btn-text">@@follow@@</span></a
>
<a href="#!" class="waves-effect waves-green btn blue shrinker" onclick="muteMenu()" id="his-mute-btn"
><i class="material-icons">voice_over_off</i><span id="his-mute-btn-text">@@mute@@</span>
</a>
<a href="#!" class="waves-effect waves-green btn red shrinker" onclick="block()" id="his-block-btn"
><i class="material-icons">block</i><span id="his-block-btn-text">@@block@@</span></a
>
<a class="dropdown-trigger btn waves-effect grey" href="#" data-target="actiondropdown"> <i class="material-icons">more_vert</i>@@more@@</a>
</div>
<div id="muteDuration" class="hide">
<label>
<input type="checkbox" class="filled-in" id="notf_mute" value="1" />
<span>@@notfMute@@</span>
</label>
<br />
@@zeroSetToInfinity@@<br />
Quick: <a onclick="muteTime(0,0,5)" class="pointer">5@@mins@@</a>/ <a onclick="muteTime(0,0,30)" class="pointer">30@@mins@@</a>/ <a onclick="muteTime(0,1,0)" class="pointer">1@@hours@@</a>/
<a onclick="muteTime(0,6,0)" class="pointer">6@@hours@@</a>/ <a onclick="muteTime(1,0,0)" class="pointer">1@@days@@</a>/
<a onclick="muteTime(3,0,0)" class="pointer">3@@days@@</a>/ <a onclick="muteTime(7,0,0)" class="pointer">7@@days@@</a>
<a onclick="muteTime(0,0,0)" class="pointer">@@unlimited@@</a><br />
<input type="number" style="width: 62px" id="days_mute" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 62px" id="hours_mute" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 62px" id="mins_mute" placeholder="m" value="0" />@@mins@@
<a href="#!" class="waves-effect waves-green btn blue" onclick="muteDo()" id="his-mute-btn"
><i class="material-icons">voice_over_off</i><span id="his-mute-btn-text">@@mute@@</span>
</a>
</div>
<!-- Dropdown Structure -->
<ul id="actiondropdown" class="dropdown-content">
<li onclick="empUser()">
<a title="@@empUser@@"><i class="material-icons">highlight</i>@@empUser@@</a>
</li>
<li onclick="pinUser()" class="only-his-data">
<a title="@@endorse@@"><i class="material-icons">thumb_up</i>@@endorse@@</a>
</li>
<li onclick="profbrws()" id="his-openin">
<a title="@@openinbrowser@@"><i class="material-icons">open_in_browser</i>@@openinbrowser@@</a>
</li>
<li onclick="setMain()" class="only-my-data" id="his-main-acct">
<a title="@@mainacct@@"><i class="material-icons">grade</i>@@mainacct@@</a>
</li>
</ul>
</div>
</div>
<div class="his-float" id="his-float-timeline">
<div id="my-data-nav">
<a go="#his-tl" title="@@timeline@@" class="btn active-back column-first anc-link waves-effect"><i class="material-icons">timeline</i>@@timeline@@</a>
<a go="#his-follow-list" title="@@follow@@" class="btn anc-link waves-effect"><i class="material-icons">people</i>→@@follow@@</a>
<a go="#his-follower-list" title="@@follower@@" class="btn anc-link waves-effect"><i class="material-icons">people</i>←@@follower@@</a>
<a go="#his-fav-list" title="@@favRegist@@" class="btn only-my-data anc-link waves-effect"> <i class="material-icons">star</i>@@favRegist@@</a>
<a class="dropdown-trigger btn waves-effect" href="#" data-target="hisdropdown"><i class="material-icons">more_vert</i>@@more@@</a>
<div id="his-data-title-wrap">
<span id="his-data-title"><i class="material-icons">timeline</i>@@timeline@@</span>
<button class="btn waves-effect grey darken-2" style="width: 180px" id="util-add" onclick="utlAdd()">
<i class="material-icons">add</i>
@@utlColumn@@
</button>
</div>
<!-- Dropdown Structure -->
<ul id="hisdropdown" class="dropdown-content">
<li class="anc-link only-his-data" go="#his-list">
<a href="#" title="@@list@@"> <i class="material-icons">list</i>@@list@@ </a>
</li>
<li class="anc-link only-my-data" go="#his-blocking-list">
<a href="#" title="@@blocks@@"><i class="material-icons">block</i>@@blocks@@</a>
</li>
<li class="anc-link only-my-data" go="#his-muting-list">
<a href="#" title="@@mute@@"><i class="material-icons">voice_over_off</i>@@mute@@</a>
</li>
<li class="anc-link only-my-data" go="#his-domain-list">
<a href="#" title="@@domainBlock@@"><i class="material-icons">cancel_schedule_send</i>@@domainBlock@@</a>
</li>
<li class="anc-link only-my-data" go="#his-prof-list">
<a href="#" title="@@editProf@@"><i class="material-icons">create</i>@@editProf@@</a>
</li>
<li class="anc-link only-my-data" go="#his-request-list">
<a href="#" title="@@followReq@@"><i class="material-icons">how_to_reg</i>@@followReq@@</a>
</li>
<li class="anc-link only-my-data" go="#his-follow-recom-list">
<a href="#" title="@@frc@@"><i class="material-icons">recent_actors</i>@@frc@@</a>
</li>
<li class="anc-link only-his-data" go="#his-action">
<a href="#" title="@@operateOtherAcct@@"><i class="material-icons">account_box</i>@@operateOtherAcct@@</a>
</li>
</ul>
</div>
<div id="his-tl" class="his-var-content">
<div id="his-tl-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="utlShow('--now','more')">@@more@@</button>
</div>
<div id="his-follow-list" class="his-var-content">
<div id="his-follow-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="flw('--now','more')">@@more@@</button>
</div>
<div id="his-follower-list" class="his-var-content">
<div id="his-follower-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="fer('--now','more')">@@more@@</button>
</div>
<div id="his-action" class="his-var-content">
@@useOtherAcct1@@@@revoverJP@@@@follow@@(@@warnUseOtherAcct@@)<br />
<div style="max-width: 500px">
<select id="user-acct-sel" class="acct-sel"></select>
</div>
@@revoverJPde@@
<a href="#!" class="waves-effect btn" onclick="follow('selector','selector')">@@follow@@</a><br />
@@or@@
<br />
<a href="#!" class="waves-effect btn" onclick="udgEx('selector', 'selector')">@@openProf@@</a><br />
</div>
<div id="his-list" class="his-var-content">
<div id="his-lists-a">@@warnListRegist@@</div>
<div id="his-lists-b"></div>
</div>
<div id="his-fav-list" class="his-var-content">
<div id="his-fav-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showFav('more')">@@more@@</button>
</div>
<div id="his-blocking-list" class="his-var-content">
<div id="his-blocking-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showBlo('more')">@@more@@</button>
</div>
<div id="his-muting-list" class="his-var-content">
<div id="his-muting-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showMut('more')">@@more@@</button>
</div>
<div id="his-domain-list" class="his-var-content">
<div id="his-domain-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showDom('more')">@@more@@</button>@@blockDomain@@
<br />
<input type="text" placeholder="example.com" id="domainblock" />
<button class="btn waves-effect" onclick="addDomainblock()">@@add@@</button>
<br />
</div>
<div id="his-prof-list" class="his-var-content">
@@name@@
<br />
<input type="text" placeholder="@@name@@" id="his-name-val" style="max-width: 250px" />
<br />@@note@@
<br />
<div class="input-field col s12">
<textarea placeholder="@@note@@" id="his-des-val" class="materialize-textarea"></textarea>
<label for="his-des-val">@@note@@</label>
</div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="profedit()">@@change@@</button>
<br />@@editProfImg@@:
<span id="prof-change">
<input type="file" onchange="imgChange(this,'avatar')" />
</span>
<br />@@editHeader@@:
<span id="header-change">
<input type="file" onchange="imgChange(this,'header')" />
</span>
</div>
<div id="his-request-list" class="his-var-content">
<div id="his-request-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showReq('more')">@@more@@</button>
</div>
<div id="his-follow-recom-list" class="his-var-content">
<div id="his-follow-recom-contents" class="cont-series"></div>
</div>
<div id="his-float-blocked">
<div>@@blocked@@</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">@@historyBack@@</button>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">@@close@@</a>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"draghere": "Zum Hochladen hier her ziehen", "draghere": "Zum Hochladen hier her ziehen",
"nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet", "nowOffline": "OFFLINE: Ihr gesamter Beiträge befinden sich in Entwürfen und du solltest nach einer erneuten Internetverbindung neu laden",
"reOnline": "Jetzt haben wir wieder Internet. Du solltest neuladen...", "reOnline": "Jetzt haben wir wieder Internet. Du solltest neuladen...",
"close": "Schließen", "close": "Schließen",
"webSrc": "Suche im Internet", "webSrc": "Suche im Internet",
@ -74,7 +74,7 @@
"openBrowser": "Im Browser öffnen", "openBrowser": "Im Browser öffnen",
"screenshot": "Bildschirmfoto aufnehmen", "screenshot": "Bildschirmfoto aufnehmen",
"copyURL": "URL dieses Tröts kopieren", "copyURL": "URL dieses Tröts kopieren",
"copy": "Copy", "copy": "Kopieren",
"embed": "Einbinden", "embed": "Einbinden",
"toots": "Tröts", "toots": "Tröts",
"follow": "Folgen", "follow": "Folgen",
@ -179,7 +179,7 @@
"foundBug": "Ich habe einen Fehler gefunden", "foundBug": "Ich habe einen Fehler gefunden",
"show": "Zeige", "show": "Zeige",
"directory": "Verzeichnis", "directory": "Verzeichnis",
"discover": "Discover", "discover": "Entdecken",
"active": "Kürzlich aktiv", "active": "Kürzlich aktiv",
"newcomer": "Neu eingetroffen", "newcomer": "Neu eingetroffen",
"local_only": "Nur lokal", "local_only": "Nur lokal",

View File

@ -86,6 +86,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

View File

@ -179,7 +179,7 @@
"foundBug": "Encontré un error", "foundBug": "Encontré un error",
"show": "Mostrar", "show": "Mostrar",
"directory": "Directorio", "directory": "Directorio",
"discover": "Discover", "discover": "Descubrí",
"active": "Recientemente activo", "active": "Recientemente activo",
"newcomer": "Recién llegados", "newcomer": "Recién llegados",
"local_only": "Sólo local", "local_only": "Sólo local",

View File

@ -103,7 +103,7 @@
"lang_details_embed": "El código HTML de inserción se copió al portapapeles.", "lang_details_embed": "El código HTML de inserción se copió al portapapeles.",
"lang_details_url": "La dirección web de este toot se copió al portapapeles.", "lang_details_url": "La dirección web de este toot se copió al portapapeles.",
"lang_details_txt": "El contenido de este toot se copió al portapapeles.", "lang_details_txt": "El contenido de este toot se copió al portapapeles.",
"lang_details_fetch": "Fetcging toot data...", "lang_details_fetch": "Obteniendo datos del mensaje…",
"lang_filter_nodata": "Sin datos", "lang_filter_nodata": "Sin datos",
"lang_filter_errordegree": "Por favor, comprobá un contexto", "lang_filter_errordegree": "Por favor, comprobá un contexto",
"lang_list_nodata": "Sin datos", "lang_list_nodata": "Sin datos",

View File

@ -84,6 +84,8 @@
"makeNew": "新しいやつ", "makeNew": "新しいやつ",
"blocks": "ブロック", "blocks": "ブロック",
"mutes": "ミュート", "mutes": "ミュート",
"notfMute": "通知もミュート",
"zeroSetToInfinity": "ミュート期間: 0分にしたらずっとミュートするで。",
"block": "ブロック", "block": "ブロック",
"mute": "ミュート", "mute": "ミュート",
"domainBlock": "ドメインブロック", "domainBlock": "ドメインブロック",

View File

@ -86,6 +86,8 @@
"makeNew": "新規作成", "makeNew": "新規作成",
"blocks": "ブロック", "blocks": "ブロック",
"mutes": "ミュート", "mutes": "ミュート",
"notfMute": "通知もミュート",
"zeroSetToInfinity": "ミュート期間: 0分に設定すると無制限にミュートします。",
"block": "ブロック", "block": "ブロック",
"mute": "ミュート", "mute": "ミュート",
"domainBlock": "ドメインブロック", "domainBlock": "ドメインブロック",

View File

@ -1,25 +1,25 @@
{ {
"list": "List of accounts", "list": "List of accounts",
"back": "Back", "back": "ආපසු",
"add": "Add an account", "add": "ගිණුමක් එකතු කරන්න",
"addAcct": "Fill the instance domain (like mastodon.social)", "addAcct": "Fill the instance domain (like mastodon.social)",
"codesetupwarn": "Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)", "codesetupwarn": "Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)",
"codesetup": "Code setup", "codesetup": "Code setup",
"mainacct": "Main an account", "mainacct": "Main an account",
"selacct": "Select an account", "selacct": "Select an account",
"codepastewarn": "Paste the code and close browser.", "codepastewarn": "කේතය අලවා අතිරික්සුව වසන්න.",
"codepaste": "Code", "codepaste": "කේතය",
"domain": "Domain", "domain": "වසම",
"connect": "Federated servers", "connect": "Federated servers",
"toots": "Toots", "toots": "Toots",
"users": "Users", "users": "පරිශීලකයින්",
"users2": "users", "users2": "පරිශීලකයින්",
"safety": "Connection", "safety": "සම්බන්ධතාව",
"ver": "Mastodon version", "ver": "මාස්ටඩන් අනුවාදය",
"ko": "", "ko": "",
"thisismisskey": "Login as Misskey", "thisismisskey": "මිස්කී ලෙස පිවිසෙන්න",
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.", "misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata": "No data", "nodata": "දත්ත නැත",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)", "accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page" "haveExported": "Having the exported file of TheDesk, click here to jump setting page"
} }

View File

@ -2,11 +2,11 @@
"draghere": "Drag here to upload", "draghere": "Drag here to upload",
"nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet", "nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet",
"reOnline": "Now we are in the Internet, you should reload...", "reOnline": "Now we are in the Internet, you should reload...",
"close": "Close", "close": "වසන්න",
"webSrc": "Search on Web", "webSrc": "Search on Web",
"tsSrc": "Search on tootsearch", "tsSrc": "Search on tootsearch",
"showSelectProf": "Show profile of the selecting account", "showSelectProf": "Show profile of the selecting account",
"closethisbox": "Close this box", "closethisbox": "මෙම පෙට්ටිය වසන්න",
"toot": "Toot", "toot": "Toot",
"post-new": "Post new", "post-new": "Post new",
"nsfwDes": "Mark media as sensitive", "nsfwDes": "Mark media as sensitive",
@ -18,8 +18,8 @@
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)", "scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
"clearToot": "Clear toot box", "clearToot": "Clear toot box",
"replyMode": "Reply", "replyMode": "Reply",
"no": "No", "no": "නැහැ",
"yes": "Yes", "yes": "ඔව්",
"temp": "Attaching files", "temp": "Attaching files",
"nothing": "None", "nothing": "None",
"stamp": "Stamp", "stamp": "Stamp",
@ -30,14 +30,14 @@
"publicJP": "", "publicJP": "",
"unlistedJP": "", "unlistedJP": "",
"privateJP": "", "privateJP": "",
"localJP": "Local only", "localJP": "ස්ථානීයව පමණි",
"sectoot": "Secondary Toot", "sectoot": "Secondary Toot",
"directJP": "", "directJP": "",
"emojiWarn": "", "emojiWarn": "",
"emojiInsertWarn": "Some emojis are not able to be inserted.", "emojiInsertWarn": "Some emojis are not able to be inserted.",
"refreshEmoji": "Refresh emojis list", "refreshEmoji": "Refresh emojis list",
"closeThisBox": "Close this box", "closeThisBox": "මෙම පෙට්ටිය වසන්න",
"showThisEmoji": " are shown.", "showThisEmoji": " පෙන්වයි.",
"customEmoji": "Custom emojis", "customEmoji": "Custom emojis",
"peopleEmoji": "Emojis of people", "peopleEmoji": "Emojis of people",
"natureEmoji": "Emojis of nature", "natureEmoji": "Emojis of nature",
@ -70,11 +70,11 @@
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
"reply": "Reply", "reply": "Reply",
"bt": "Boost", "bt": "Boost",
"favRegist": "Favourite", "favRegist": "ප්‍රියතම",
"openBrowser": "Open in browser", "openBrowser": "අතිරික්සුවෙන් විවෘතකරන්න",
"screenshot": "Take a screenshot", "screenshot": "තිරසේයාවක් අරගන්න",
"copyURL": "Copy the URL", "copyURL": "ඒ.ස.නි. පිටපත් කරන්න",
"copy": "Copy", "copy": "පිටපත්",
"embed": "Embed", "embed": "Embed",
"toots": "Toots", "toots": "Toots",
"follow": "Follow", "follow": "Follow",
@ -83,36 +83,36 @@
"timeline": "Timeline", "timeline": "Timeline",
"operateOtherAcct": "Cross-account", "operateOtherAcct": "Cross-account",
"list": "List", "list": "List",
"makeNew": "Save", "makeNew": "සුරකින්න",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"block": "Block", "block": "අවහිර",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",
"editProf": "Edit profile", "editProf": "පැතිකඩ සංස්කරණය",
"change": "Save", "change": "සුරකින්න",
"followReq": "Follow requests", "followReq": "Follow requests",
"likeHimOrHer": "Resembling", "likeHimOrHer": "Resembling",
"endorse": "Feature on profile", "endorse": "Feature on profile",
"openinbrowser": "Open in browser", "openinbrowser": "අතිරික්සුවෙන් විවෘතකරන්න",
"mainacct": "Set it an main account", "mainacct": "Set it an main account",
"frc": "Suggest", "frc": "Suggest",
"more": "More", "more": "More",
"revoverJP": " to ", "revoverJP": " to ",
"warnUseOtherAcct": "(Unable to unfollow)", "warnUseOtherAcct": "(Unable to unfollow)",
"revoverJPde": "", "revoverJPde": "",
"or": "or", "or": "හෝ",
"openProf": "Show profile", "openProf": "පැතිකඩ පෙන්වන්න",
"warnListRegist": "Follow to add this user to lists.", "warnListRegist": "Follow to add this user to lists.",
"blockDomain": "Add blocking domain", "blockDomain": "Add blocking domain",
"name": "Display name", "name": "Display name",
"note": "Note", "note": "සටහන",
"editProfImg": "Change avataor", "editProfImg": "Change avataor",
"editHeader": "Change header image", "editHeader": "Change header image",
"blocked": "You are blocked. Why?", "blocked": "You are blocked. Why?",
"likeUserDes": "Get people resembling this user.", "likeUserDes": "Get people resembling this user.",
"get": "Get", "get": "Get",
"historyBack": "Back", "historyBack": "ආපසු",
"empUser": "Emphasize this user", "empUser": "Emphasize this user",
"supportme": "Support TheDesk!", "supportme": "Support TheDesk!",
"TheDeskDes": "TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!", "TheDeskDes": "TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
@ -131,20 +131,20 @@
"dm": "Direct Message", "dm": "Direct Message",
"integratedTLDes": "Integrated(Local/Home)", "integratedTLDes": "Integrated(Local/Home)",
"localPlusDes": "LTL+Reply+BT", "localPlusDes": "LTL+Reply+BT",
"notf": "Notifications", "notf": "දැනුම්දීම්",
"bookmark": "Bookmarks", "bookmark": "පොත්යොමු",
"showThisTL": "Show this TL:", "showThisTL": "Show this TL:",
"webviewWarn": "TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>).", "webviewWarn": "TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>).",
"add": "Add", "add": "එකතු කරන්න",
"search": "Search", "search": "සොයන්න",
"sortSet": "Sort", "sortSet": "Sort",
"selectAcct": "Account(Scroll to show all)", "selectAcct": "Account(Scroll to show all)",
"listLocale": "List", "listLocale": "List",
"filterWord": "Filtering words", "filterWord": "Filtering words",
"degree": "Filter contexts", "degree": "Filter contexts",
"conver": "Conversations", "conver": "සංවාද",
"prof": "Profiles", "prof": "පැතිකඩයන්",
"option": "Options", "option": "විකල්ප",
"matchWord": "Whole word", "matchWord": "Whole word",
"warnMatchWord": "Nice for Latin language", "warnMatchWord": "Nice for Latin language",
"except": "Drop instead of hide", "except": "Drop instead of hide",
@ -155,34 +155,34 @@
"unlimited": "Never", "unlimited": "Never",
"days": "day(s)", "days": "day(s)",
"hours": "hour(s)", "hours": "hour(s)",
"mins": "minute(s)", "mins": "විනාඩි(ය)",
"secs": "second(s)", "secs": "තත්පර(ය)",
"warnOnIntegratedTL": "Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.", "warnOnIntegratedTL": "Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.",
"helloTheDesk": "Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>", "helloTheDesk": "Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>",
"addColumn": "Add a column", "addColumn": "Add a column",
"sortColumns": "Sort", "sortColumns": "Sort",
"acctMan": "Account Manager", "acctMan": "Account Manager",
"filter": "Filter", "filter": "පෙරහන",
"setting": "Preferences", "setting": "Preferences",
"reverse": "Toot button layout reverse", "reverse": "Toot button layout reverse",
"f5": "Reload TL", "f5": "Reload TL",
"nanoDes": "The smallest Mastodon,", "nanoDes": "The smallest Mastodon,",
"verTips": "Version", "verTips": "අනුවාදය",
"clockTips": "Clock", "clockTips": "ඔරලෝසුව",
"ramTips": "RAM status", "ramTips": "RAM status",
"changeTips": "Change Tips", "changeTips": "Change Tips",
"helpAndLogs": "Help & Log", "helpAndLogs": "Help & Log",
"help": "Help", "help": "උදව්",
"contactwithlog": "If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.", "contactwithlog": "If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.",
"about": "About TheDesk", "about": "දඩෙස්ක් පිළිබඳව",
"hereAddColumns": "<- Add TL", "hereAddColumns": "<- Add TL",
"foundBug": "I found a bug", "foundBug": "I found a bug",
"show": "Show", "show": "පෙන්වන්න",
"directory": "Directory", "directory": "Directory",
"discover": "Discover", "discover": "Discover",
"active": "Recently active", "active": "Recently active",
"newcomer": "New arrivals", "newcomer": "New arrivals",
"local_only": "Local only", "local_only": "ස්ථානීයව පමණි",
"menu": "Menu", "menu": "Menu",
"demoBottomBtns": "Welcome guide", "demoBottomBtns": "Welcome guide",
"lookAtBottom": "Look at the bottom of this window. Here is some tips about it.", "lookAtBottom": "Look at the bottom of this window. Here is some tips about it.",

View File

@ -1,19 +1,19 @@
{ {
"language": "en", "language": "si",
"lang_toot": "Toot", "lang_toot": "Toot",
"lang_there": "Yes", "lang_there": "ඔව්",
"lang_nothing": "None", "lang_nothing": "None",
"lang_yesno": "Yes", "lang_yesno": "ඔව්",
"lang_no": "No", "lang_no": "නැහැ",
"lang_progress": "Wait...", "lang_progress": "රැඳෙන්න...",
"lang_edit": "Edit", "lang_edit": "සංස්කරණය",
"lang_del": "Delete", "lang_del": "Delete",
"lang_add": "Add", "lang_add": "එකතු කරන්න",
"lang_fatalerroroccured": "Error", "lang_fatalerroroccured": "දෝෂය",
"lang_speech": "Google US English", "lang_speech": "ගූගල් සිංහල",
"lang_lang": "Language", "lang_lang": "භාෂාව",
"lang_langlocale": "English", "lang_langlocale": "සිංහල",
"lang_back": "Back", "lang_back": "ආපසු",
"lang_set": "Set", "lang_set": "Set",
"lang_langadd": "Translate TheDesk to other languages or proofread TheDesk on <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk needs your help.", "lang_langadd": "Translate TheDesk to other languages or proofread TheDesk on <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk needs your help.",
"lang_time_prefixAgo": null, "lang_time_prefixAgo": null,
@ -29,7 +29,7 @@
"lang_time_day": "1 d", "lang_time_day": "1 d",
"lang_time_days": "%d d", "lang_time_days": "%d d",
"lang_time_month": "1 month", "lang_time_month": "1 month",
"lang_time_months": "%d months", "lang_time_months": "මාස %d",
"lang_time_year": "y", "lang_time_year": "y",
"lang_time_years": "%d y", "lang_time_years": "%d y",
"lang_version_usever": "No update is found({{ver}})", "lang_version_usever": "No update is found({{ver}})",
@ -40,14 +40,14 @@
"lang_login_noauth": "Show TL of unlogined accounts", "lang_login_noauth": "Show TL of unlogined accounts",
"lang_manager_info": "About this instance", "lang_manager_info": "About this instance",
"lang_manager_refresh": "Refresh", "lang_manager_refresh": "Refresh",
"lang_manager_delete": "Logout", "lang_manager_delete": "නික්මෙන්න",
"lang_manager_color": "Account Color", "lang_manager_color": "Account Color",
"lang_manager_confirm": "is about to logout. Continue?", "lang_manager_confirm": "is about to logout. Continue?",
"lang_manager_mainAcct": "Done:choose main account", "lang_manager_mainAcct": "Done:choose main account",
"lang_manager_def": "Default", "lang_manager_def": "Default",
"lang_manager_none": "None", "lang_manager_none": "None",
"lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.", "lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.",
"lang_manager_logout": "Logout", "lang_manager_logout": "නික්මෙන්න",
"lang_manager_maxChars": "Max chars of toots", "lang_manager_maxChars": "Max chars of toots",
"lang_manager_refreshAt": "Login with this domain", "lang_manager_refreshAt": "Login with this domain",
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.", "lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
@ -57,7 +57,7 @@
"lang_emoji_uncat": "Uncategorized", "lang_emoji_uncat": "Uncategorized",
"lang_postimg_previewdis": "cannot preview", "lang_postimg_previewdis": "cannot preview",
"lang_postimg_aftupload": "You cannot change accounts after uploading.", "lang_postimg_aftupload": "You cannot change accounts after uploading.",
"lang_postimg_failupload": "Failed", "lang_postimg_failupload": "අසමත් විය",
"lang_postimg_delete": "Click to add description, right-click to delete this", "lang_postimg_delete": "Click to add description, right-click to delete this",
"lang_postimg_desc": "Description", "lang_postimg_desc": "Description",
"lang_postimg_leadContext": "right-click the thumbnail to delete this", "lang_postimg_leadContext": "right-click the thumbnail to delete this",
@ -77,7 +77,7 @@
"lang_status_btWarn": "It will take a miunte to boost a remote toot.", "lang_status_btWarn": "It will take a miunte to boost a remote toot.",
"lang_status_follow": "Follow", "lang_status_follow": "Follow",
"lang_status_unfollow": "Unfollow", "lang_status_unfollow": "Unfollow",
"lang_status_block": "Block", "lang_status_block": "අවහිර",
"lang_status_unblock": "Unblock", "lang_status_unblock": "Unblock",
"lang_status_mute": "Mute", "lang_status_mute": "Mute",
"lang_status_unmute": "Unmute", "lang_status_unmute": "Unmute",
@ -98,16 +98,16 @@
"lang_cards_pip": "PiP mode", "lang_cards_pip": "PiP mode",
"lang_cards_trusted": "Trusted embed HTML by TheDesk(Twitter, nicovideo, YouTube, Spotify, twitcasing)", "lang_cards_trusted": "Trusted embed HTML by TheDesk(Twitter, nicovideo, YouTube, Spotify, twitcasing)",
"lang_cards_untrusted": "Untrusted embed HTML by TheDesk", "lang_cards_untrusted": "Untrusted embed HTML by TheDesk",
"lang_details_nodata": "No data", "lang_details_nodata": "දත්ත නැත",
"lang_details_filtered": "Filtered toot", "lang_details_filtered": "Filtered toot",
"lang_details_embed": "Embed HTML is cliped.", "lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.", "lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.", "lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...", "lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data", "lang_filter_nodata": "දත්ත නැත",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data", "lang_list_nodata": "දත්ත නැත",
"lang_list_show": "Show", "lang_list_show": "පෙන්වන්න",
"lang_list_users": "Users list", "lang_list_users": "Users list",
"lang_list_nouser": "No users in this list.", "lang_list_nouser": "No users in this list.",
"lang_list_add": "Add to the list", "lang_list_add": "Add to the list",
@ -184,7 +184,7 @@
"lang_parse_btedsimple": " boosted", "lang_parse_btedsimple": " boosted",
"lang_parse_polled": "'s poll", "lang_parse_polled": "'s poll",
"lang_parse_notftime": "Actioned at", "lang_parse_notftime": "Actioned at",
"lang_parse_cwshow": "Show", "lang_parse_cwshow": "පෙන්වන්න",
"lang_parse_cwshow_acc": "This is a post with content warning. click to show the whole content", "lang_parse_cwshow_acc": "This is a post with content warning. click to show the whole content",
"lang_parse_fulltext": "Full size text:", "lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Auto folded", "lang_parse_autofold": "Auto folded",

View File

@ -1,10 +1,10 @@
{ {
"setting": "Preferences", "setting": "Preferences",
"set": "Save", "set": "සුරකින්න",
"yes": "Yes", "yes": "ඔව්",
"no": "No", "no": "නැහැ",
"none": "None", "none": "None",
"show": "Show", "show": "පෙන්වන්න",
"hide": "Hide", "hide": "Hide",
"default": "Default", "default": "Default",
"change": "Change", "change": "Change",
@ -108,7 +108,7 @@
"autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.", "autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.",
"lines": "lines", "lines": "lines",
"letters": "letters", "letters": "letters",
"or": "or", "or": "හෝ",
"imgheight": "Height of images", "imgheight": "Height of images",
"imgheightwarn": "Option:Set \"full\" to uncrop.", "imgheightwarn": "Option:Set \"full\" to uncrop.",
"ticker": "Enable OpenSticker", "ticker": "Enable OpenSticker",
@ -209,7 +209,7 @@
"test": "Test", "test": "Test",
"sample": "TheDesk is an open-source Mastodon client for PC.", "sample": "TheDesk is an open-source Mastodon client for PC.",
"playstop": "Play/Stop", "playstop": "Play/Stop",
"back": "Back", "back": "ආපසු",
"keyscs": "Keyboard shortcuts", "keyscs": "Keyboard shortcuts",
"keyscr": "Jump to n(1-9)th column", "keyscr": "Jump to n(1-9)th column",
"keynew": "Open toot box", "keynew": "Open toot box",
@ -231,10 +231,10 @@
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo. Continue?",
"about": "About TheDesk", "about": "දඩෙස්ක් පිළිබඳව",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",
"help": "Help", "help": "උදව්",
"sushi": "Give me a sushi!", "sushi": "Give me a sushi!",
"checkup": "Check update", "checkup": "Check update",
"ossJP": "" "ossJP": ""

View File

@ -1,153 +1,166 @@
const fs = require('fs') const fs = require('fs')
function construct(ver, basefile, pwa, store) { function construct(ver, basefile, pwa, store) {
const execSync = require('child_process').execSync const execSync = require('child_process').execSync
let gitHash = execSync('git rev-parse HEAD') let gitHash = execSync('git rev-parse HEAD')
.toString() .toString()
.trim() .trim()
console.log('Constructing view files ' + ver) console.log('Constructing view files ' + ver)
const langs = ['ja', 'ja-KS', 'en', 'bg', 'cs', 'de', genIndexHtml(basefile)
'es-AR', 'it-IT', 'zh-CN', 'fr-FR', 'zh-TW', 'no-NO', 'pt-BR', 'ru-RU', 'es-ES','pl-PL', 'ps'] const langs = ['ja', 'ja-KS', 'en', 'bg', 'cs', 'de',
const langsh = [ 'es-AR', 'it-IT', 'zh-CN', 'fr-FR', 'zh-TW', 'no-NO', 'pt-BR', 'ru-RU', 'es-ES', 'pl-PL', 'si-LK', 'ps'
'日本語', ]
'日本語(関西)', const langsh = [
'English', '日本語',
'български', '日本語(関西)',
'Česky', 'English',
'Deutsch', 'български',
'Español, argentina', 'Česky',
'italiano', 'Deutsch',
'简体中文', 'Español, argentina',
'français', 'italiano',
'繁體中文(β)', '简体中文',
'norsk(β)', 'français',
'Português, brasileiro(β)', '繁體中文(β)',
'русский(β)', 'norsk(β)',
'Español(β)', 'Português, brasileiro(β)',
'Polskie(β)', 'русский(β)',
'Crowdin translate system(beta)' 'Español(β)',
] 'Polskie(β)',
const simples = ['acct', 'index', 'setting', 'update', 'setting'] 'සිංහල(β)',
const samples = [ 'Crowdin translate system(beta)'
'acct.sample.html', ]
'index.sample.html', const simples = ['acct', 'index', 'setting', 'update', 'setting']
'setting.sample.html', const samples = [
'update.sample.html', 'acct.sample.html',
'setting.sample.js' 'index.generated.html',
] 'setting.sample.html',
const pages = ['acct.html', 'index.html', 'setting.html', 'update.html', 'setting.vue.js'] 'update.sample.html',
let langstr = '' 'setting.sample.js'
let refKey = [] ]
const enJson = JSON.parse(fs.readFileSync(basefile + 'view/make/language/en/main.json', 'utf8')) const pages = ['acct.html', 'index.html', 'setting.html', 'update.html', 'setting.vue.js']
const jaJson = JSON.parse(fs.readFileSync(basefile + 'view/make/language/ja/main.json', 'utf8')) let langstr = ''
for (let n = 0; n < langs.length; n++) { let refKey = []
let lang = langs[n] const enJson = JSON.parse(fs.readFileSync(basefile + 'view/make/language/en/main.json', 'utf8'))
let targetDir = basefile + 'view/' + lang const jaJson = JSON.parse(fs.readFileSync(basefile + 'view/make/language/ja/main.json', 'utf8'))
if (!fs.existsSync(targetDir)) { for (let n = 0; n < langs.length; n++) {
fs.mkdirSync(targetDir) let lang = langs[n]
} let targetDir = basefile + 'view/' + lang
langstr = if (!fs.existsSync(targetDir)) {
langstr + `<option value="${lang}">${langsh[n]}</option>` fs.mkdirSync(targetDir)
let mainJson = JSON.parse( }
fs.readFileSync(basefile + 'view/make/language/' + lang + '/main.json', 'utf8') langstr =
) langstr + `<option value="${lang}">${langsh[n]}</option>`
if (lang == 'ja-KS') { let mainJson = JSON.parse(
Object.keys(jaJson).forEach(function (key) { fs.readFileSync(basefile + 'view/make/language/' + lang + '/main.json', 'utf8')
if (!mainJson[key]) { )
mainJson[key] = jaJson[key] if (lang == 'ja-KS') {
} Object.keys(jaJson).forEach(function(key) {
}) if (!mainJson[key]) {
} else if (lang != 'en') { mainJson[key] = jaJson[key]
Object.keys(enJson).forEach(function (key) { }
if (!mainJson[key]) { })
mainJson[key] = enJson[key] } else if (lang != 'en') {
} Object.keys(enJson).forEach(function(key) {
}) if (!mainJson[key]) {
} mainJson[key] = enJson[key]
mainJson.language = lang }
fs.writeFileSync( })
basefile + 'view/' + lang + '/main.js', }
JSON.stringify(mainJson).replace(/^{/, 'var lang = {') mainJson.language = lang
) fs.writeFileSync(
} basefile + 'view/' + lang + '/main.js',
for (let i = 0; i < samples.length; i++) { JSON.stringify(mainJson).replace(/^{/, 'var lang = {')
let sample = samples[i] )
let sourceParent = fs.readFileSync(basefile + 'view/make/' + sample, 'utf8') }
let englishRefer = JSON.parse( for (let i = 0; i < samples.length; i++) {
fs.readFileSync(basefile + 'view/make/language/en/' + simples[i] + '.json', 'utf8') let sample = samples[i]
) let sourceParent = fs.readFileSync(basefile + 'view/make/' + sample, 'utf8')
let jaRefer = JSON.parse( let englishRefer = JSON.parse(
fs.readFileSync(basefile + 'view/make/language/ja/' + simples[i] + '.json', 'utf8') fs.readFileSync(basefile + 'view/make/language/en/' + simples[i] + '.json', 'utf8')
) )
for (let j = 0; j < langs.length; j++) { let jaRefer = JSON.parse(
let source = sourceParent fs.readFileSync(basefile + 'view/make/language/ja/' + simples[i] + '.json', 'utf8')
let lang = langs[j] )
let target = JSON.parse( for (let j = 0; j < langs.length; j++) {
fs.readFileSync( let source = sourceParent
basefile + 'view/make/language/' + lang + '/' + simples[i] + '.json', let lang = langs[j]
'utf8' let target = JSON.parse(
) fs.readFileSync(
) basefile + 'view/make/language/' + lang + '/' + simples[i] + '.json',
if (lang == 'ja') { 'utf8'
Object.keys(target).forEach(function (key) { )
refKey.push(key) )
let str = target[key] if (lang == 'ja') {
if (pages[i] == 'setting.vue.js') { Object.keys(target).forEach(function(key) {
str = str.replace(/'/g, "\\'") refKey.push(key)
} let str = target[key]
var regExp = new RegExp('@@' + key + '@@', 'g') if (pages[i] == 'setting.vue.js') {
source = source.replace(regExp, str) str = str.replace(/'/g, "\\'")
}) }
} else { var regExp = new RegExp('@@' + key + '@@', 'g')
for (let k = 0; k < refKey.length; k++) { source = source.replace(regExp, str)
let tarKey = refKey[k] })
if (target[tarKey]) { } else {
var str = target[tarKey] for (let k = 0; k < refKey.length; k++) {
} else { let tarKey = refKey[k]
if (lang == 'ja-KS') { if (target[tarKey]) {
var str = jaRefer[tarKey] var str = target[tarKey]
} else { } else {
var str = englishRefer[tarKey] if (lang == 'ja-KS') {
} var str = jaRefer[tarKey]
} } else {
if (pages[i] == 'setting.vue.js') { var str = englishRefer[tarKey]
if (str) { }
str = str.replace(/'/g, "\\'") }
} if (pages[i] == 'setting.vue.js') {
} if (str) {
var regExp = new RegExp('@@' + tarKey + '@@', 'g') str = str.replace(/'/g, "\\'")
source = source.replace(regExp, str) }
} }
} var regExp = new RegExp('@@' + tarKey + '@@', 'g')
if (lang == 'ps') { source = source.replace(regExp, str)
source = source.replace(/@@comment-start@@/g, '') }
source = source.replace(/@@comment-end@@/g, '') }
} else { if (lang == 'ps') {
source = source.replace(/@@comment-start@@/g, '<!--') source = source.replace(/@@comment-start@@/g, '')
source = source.replace(/@@comment-end@@/g, '-->') source = source.replace(/@@comment-end@@/g, '')
} } else {
source = source.replace(/@@versionLetter@@/g, ver) source = source.replace(/@@comment-start@@/g, '<!--')
source = source.replace(/@@gitHash@@/g, gitHash) source = source.replace(/@@comment-end@@/g, '-->')
source = source.replace(/@@gitHashShort@@/g, gitHash.slice(0, 7)) }
source = source.replace(/@@lang@@/g, lang) source = source.replace(/@@versionLetter@@/g, ver)
source = source.replace(/@@langlist@@/g, langstr) source = source.replace(/@@gitHash@@/g, gitHash)
if (pwa) { source = source.replace(/@@gitHashShort@@/g, gitHash.slice(0, 7))
source = source.replace(/@@pwa@@/g, `<link rel="manifest" href="../../manifest.json" /> source = source.replace(/@@lang@@/g, lang)
source = source.replace(/@@langlist@@/g, langstr)
if (pwa) {
source = source.replace(/@@pwa@@/g, `<link rel="manifest" href="../../manifest.json" />
<script>var pwa = true;"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.pwa.js").then(e=>{});</script>`) <script>var pwa = true;"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.pwa.js").then(e=>{});</script>`)
source = source.replace(/@@node_base@@/g, 'dependencies') source = source.replace(/@@node_base@@/g, 'dependencies')
source = source.replace(/@@pwaClass@@/g, 'pwaView') source = source.replace(/@@pwaClass@@/g, 'pwaView')
} else { } else {
source = source.replace(/@@pwa@@/g, '<script>var pwa = false;</script>') source = source.replace(/@@pwa@@/g, '<script>var pwa = false;</script>')
source = source.replace(/@@node_base@@/g, 'node_modules') source = source.replace(/@@node_base@@/g, 'node_modules')
source = source.replace(/@@pwaClass@@/g, '') source = source.replace(/@@pwaClass@@/g, '')
} }
if (store) { if (store) {
source = source.replace(/@@store@@/g, '<script>var store = true;</script>') source = source.replace(/@@store@@/g, '<script>var store = true;</script>')
} else { } else {
source = source.replace(/@@store@@/g, '<script>var store = false;</script>') source = source.replace(/@@store@@/g, '<script>var store = false;</script>')
} }
fs.writeFileSync(basefile + 'view/' + lang + '/' + pages[i], source) fs.writeFileSync(basefile + 'view/' + lang + '/' + pages[i], source)
} }
} }
}
function genIndexHtml(basefile) {
const index = JSON.parse(fs.readFileSync(`${basefile}view/make/components/index.json`, 'utf8'))
let raw = fs.readFileSync(`${basefile}view/make/components/index.html`, 'utf8')
for (const component of index) {
const componentHtml = fs.readFileSync(`${basefile}view/make/components/${component}.html`, 'utf8')
raw = raw.replace(`@@${component}@@`, componentHtml)
}
fs.writeFileSync(`${basefile}view/make/index.generated.html`, raw)
} }
module.exports = construct module.exports = construct

View File

@ -31,7 +31,7 @@ if (process.argv.indexOf('--watch') !== -1) {
'watch mode(not hot-watch): when construction files are changed, refresh view files but not reload. Please reload manually.' 'watch mode(not hot-watch): when construction files are changed, refresh view files but not reload. Please reload manually.'
) )
const watcher = chokidar.watch(basefile + 'view/make', { const watcher = chokidar.watch(basefile + 'view/make', {
ignored: 'view/make/make.js', ignored: /view\/make\/(make.*\.js|.*\.generated\.html)/,
persistent: true persistent: true
}) })
watcher.on('ready', function () { watcher.on('ready', function () {

View File

@ -1,144 +0,0 @@
<!DOCTYPE html>
<html lang="pl-PL">
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="../../css/master.css" type="text/css" rel="stylesheet" />
<link href="../../css/tl.css" rel="stylesheet" type="text/css" />
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet">
<link href="../../css/acct.css" rel="stylesheet" type="text/css" />
<meta charset="utf-8" /> <!--
<script type="text/javascript">
var _jipt = []
_jipt.push(['project', 'thedesk'])
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
--> <script>var pwa = false;</script> <script>var store = false;</script>
</head>
<body id="mainView" class="">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.min.js"></script>
<script>
var misskeytoken = false
</script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<div class="hide-first">
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">Wstecz</a><br />
<h5>Lista kont</h5>
<div id="acct-list"></div>
<div class="divider"></div>
</div>
<div>
<h5>Dodaj konto</h5>
<div class="hide-second">
<a href="setting.html">Having the exported file of TheDesk, click here to jump setting page</a>
</div>
<br />
<div id="add">
<div class="row">
<div class="col s8">
Wprowadź domenę instancji (jak mastodon.social)
<div class="row">
<div class="input-field col s6">
<input type="text" id="autocomplete-input" class="autocomplete" placeholder="eg) mstdn.jp">
<label for="autocomplete-input">URL</label>
</div>
<div class="col s4 loginBtnWrap">
<button class="btn waves-effect" onclick="instance()"><i
class="material-icons left">login</i>Login</button>
</div>
</div>
<div class="pwa">
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br />
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>Code setup</span>
</label>
<br />
</div>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>Login as Misskey</span> </label><br />
</div>
<div class="col s4 scr" aria-hidden="true">
<span style="font-family:Open Sans;">Supports</span>
<div id="support" class="collection transparent"></div>
</div>
</div>
</div>
<div id="auth" style="display:none">
Wklej kod i zamknij przeglądarkę.<br />
<input type="text" id="code" placeholder="Code" required />
<button class="btn waves-effect" onclick="code()">Auth</button><br />
<br />
<a onclick="atSetup()" class="pointer">Use access token to login(click after fill not code but access-token in box: Advanced)</a>
<div id="compt" style="display:none" class="scr">
<h5>ログイン前に必ずご確認ください</h5>
<span id="compt-instance"></span>はバージョンが<span id="compt-ver"></span>のため以下の機能がご利用いただけません。
<span id="compt-warn" style="display:none">また、このインスタンスはMastodonではなくそのAPI上の互換実装であり、TheDeskでは利用を想定していないため非保証となります。</span>
<ul id="compt-list"></ul>
</div>
</div>
<div id="misskeylogin" style="display:none">
<h5>AppSecret</h5>
Read <a href="https://thedesk.top/how-to-misskey-login.html">Docs(ja)</a> to login Misskey.<br />
<input type="hidden" id="misskey-url" />
<input type="text" id="misskey-key" placeholder="Code" required />
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br />
<br />
<a onclick="atSetup('misskey')" class="pointer">Use access token to login(click after fill not code but access-token in box: Advanced)</a>
</div>
</div>
<div class="hide-first">
<h5>Main an account</h5>
<div class="input-field" style="width:300px">
<span data-trans="your_acct">Wybierz konto</span>
<br />
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
<label></label>
</div>
<ul id="domain-list" class="collection transparent"></ul>
<div id="instance-data">
Some instance data by
<a href="https://instances.social" target="_blank">instances.social API</a><br />
<h5 id="ins-title"></h5>
Administered by:
<a id="ins-admin"></a><br />
<span id="ins-desc"></span><br />
<img src="../../img/loading.svg" id="ins-prof" width="200" /><br />
<br /> Domain:
<span id="ins-name"></span><br /> Federated servers:
<span id="ins-connect"></span><br /> Tooty:
<span id="ins-toot"></span><br /> Użytkownicy:
<span id="ins-user"></span>Użytkownicy<br /> Connection:
<span id="ins-per"></span>%<br /> Wersja Mastodona:
<span id="ins-ver"></span>@<span id="ins-upd"></span><br />
</div>
</div>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/common/sha256.js"></script>
<script type="text/javascript" src="../../node_modules/lodash/lodash.min.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/manager.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>
<script>
$('body').addClass(localStorage.getItem('platform'))
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,697 +0,0 @@
<!doctype html>
<html lang="pl-PL" style="overflow-y:scroll">
<head>
<title>Settings - TheDesk</title>
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../css/tl.css" type="text/css" rel="stylesheet">
<link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<style>
input {
max-height: 3.84rem !important
}
.pcr-result {
height: 1rem !important;
}
.container-after-titlebar {
padding: 20px;
}
</style>
<script>var pwa = false;</script> <script>var store = false;</script>
</head>
<body id="mainView" style="overflow-y:scroll" class="">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="main.js"></script>
<script src="../../node_modules/json5/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.min.js"></script>
<script>
function renderMem() {
return false;
}
</script>
<h4>Ustawienia</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header">
<i class="material-icons">desktop_windows</i>Ustawienia systemowe
</div>
<div class="collapsible-body">
<h5>Języki</h5>
<div style="display: flex;">
<div style="width: 22rem;" id="langsel">
<select id="langsel-sel"><option value="ja">日本語</option><option value="ja-KS">日本語(関西)</option><option value="en">English</option><option value="bg">български</option><option value="cs">Česky</option><option value="de">Deutsch</option><option value="es-AR">Español, argentina</option><option value="it-IT">italiano</option><option value="zh-CN">简体中文</option><option value="fr-FR">français</option><option value="zh-TW">繁體中文(β)</option><option value="no-NO">norsk(β)</option><option value="pt-BR">Português, brasileiro(β)</option><option value="ru-RU">русский(β)</option><option value="es-ES">Español(β)</option><option value="pl-PL">Polskie(β)</option><option value="ps">Crowdin translate system(beta)</option></select>
</div>
<button class="btn waves-effect" onclick="changeLang()">Zmień</button>
</div>
<h5>Import i eksport preferencji</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:15rem;">Eksport</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:15rem;">Import</button><br> If you got a error when you choose the file, please paste the strings printed when you open the file and click import
<br>
<input type="text" id="imp-exp" style="width: 22rem">
<div id="envView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Test powiadomień</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:7.7rem;" v-on:click="complete(i)">Zmień</button>
</template><br>
</template>
</div>
<h5>Czcionka</h5>
Select your favorite font to 'Select'(Windows/ macOS only)<br>
<button class="btn waves-effect orange darken-2" style="width:7.7rem;" onclick="font()">Wybierz</button>
<input type="text" style="width:11.5rem" id="font">
<button class="btn waves-effect" style="width:7.7rem;" onclick="settings()">Zapisz</button>
<div id="fonts" class="hide"></div>
<h5>Folder to save</h5>
TheDesk uses this value when it try to save pictures or take screenshots.<br>
<button class="btn waves-effect" style="width:7.7rem;" onclick="savefolder()">Zmień</button>
<br>
</div>
</li>
<li class="pwa">
<div class="collapsible-header">
<i class="material-icons">color_lens</i>Motywy
</div>
<div class="collapsible-body">
<h4>Wybierz motyw</h4>
<div style="width:22rem" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
<h4>Edytuj i dodaj motywy</h4>
<div style="width:22rem" id="edit-selector" data-add="Add new">
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
<option value="add_new">Add new</option>
</select>
</div>
<h5>Name</h5>
<input type="text" style="width:22rem" id="custom_name" placeholder="Name...">
<h5>About this theme</h5>
<div class="input-field"><textarea style="width:22rem" id="custom_desc" class="materialize-textarea" placeholder="About this theme..."></textarea></div>
<h5>Schemat kolorów</h5>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label><br><br />
<button class="btn waves-effect" onclick="advanced()">Opcje zaawansowane</button>
<span class="advanced hide"></span>
<div id="pickers">
<div>
<h5>Background</h5>Background color<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_0" value="1" checked disabled />
<span>Use this</span>
</label><br />
<input type="color" id="color-picker0_value">
</div>
<div>
<h5>Text</h5>Text color<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_1" value="1" checked disabled />
<span>Use this</span>
</label><br />
<input type="color" id="color-picker1_value">
</div>
<div>
<h5>Subcolor</h5>Distinguishable from background<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_2" value="1" checked disabled />
<span>Use this</span>
</label><br />
<input type="color" id="color-picker2_value">
</div>
<div>
<h5>Accent</h5>Background of boosts<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_3" value="1" checked disabled />
<span>Use this</span>
</label><br />
<input type="color" id="color-picker3_value">
</div>
<div class="advanced hide">
<h5>Modal</h5>Background of modal window<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_4" value="1" />
<span>Use this</span>
</label><br /> Copy from:
<a class="pointer" onclick="copyColor('background','modal')">Background</a>
<br />
<input type="color" id="color-picker4_value">
</div>
<div class="advanced hide">
<h5>Modal Footer</h5>Background of modal window's footer<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_5" value="1" />
<span>Use this</span>
</label><br /> Copy from:
<a class="pointer" onclick="copyColor('background','modalFooter')">Background</a>/
<a class="pointer" onclick="copyColor('modal','modalFooter')">Modal</a>
<br />
<input type="color" id="color-picker5_value">
</div>
<div class="advanced hide">
<h5>3rd Color</h5>Backgroud of tag buttons, etc(near to Background)<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_6" value="1" />
<span>Use this</span>
</label><br /> Copy from:
<a class="pointer" onclick="copyColor('subcolor','third')">Subcolor</a>
<br />
<input type="color" id="color-picker6_value">
</div>
<div class="advanced hide">
<h5>4th Color</h5>Title bar(same scheme to Background)<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_7" value="1" />
<span>Use this</span>
</label><br /> Copy from:
<a class="pointer" onclick="copyColor('subcolor','forth')">Subcolor</a>/
<a class="pointer" onclick="copyColor('third','forth')">3rd Color</a>
<br />
<input type="color" id="color-picker7_value">
</div>
<div class="advanced hide">
<h5>Bottom</h5>Background of menu-bar at bottom of window<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_8" value="1" />
<span>Use this</span>
</label><br /> Copy from:
<a class="pointer" onclick="copyColor('subcolor','bottom')">Subcolor</a>
<br />
<input type="color" id="color-picker8_value">
</div>
<div class="advanced hide">
<h5>2nd Accent</h5>Emphasized toot's background<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_9" value="1" />
<span>Use this</span>
</label><br /> Copy from:
<a class="pointer" onclick="copyColor('accent','emphasized')">Accent</a>
<br />
<input type="color" id="color-picker9_value">
</div>
<div class="advanced hide">
<h5>Postbox</h5>Background of post-box and menu<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_10" value="1" />
<span>Use this</span>
</label><br /> Copy from:
<a class="pointer" onclick="copyColor('subcolor','postbox')">Subcolor</a>
<br />
<input type="color" id="color-picker10_value">
</div>
<div class="advanced hide">
<h5>Active</h5>Background of 'active' elements<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_11" value="1" />
<span>Use this</span>
</label><br /> Copy from:
<a class="pointer" onclick="copyColor('accent','active')">Accent</a>
<br />
<input type="color" id="color-picker11_value">
</div>
<div class="advanced hide">
<h5>Selected</h5>Background of selected with arrow keys<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_12" value="1" />
<span>Use this</span>
</label><br />
<input type="color" id="color-picker12_value">
</div>
<div class="advanced hide">
<h5>Selected with shared</h5>Background of selected with arrow keys(boosted toots)<br />
<label>
<input type="checkbox" class="filled-in" id="use-color_13" value="1" />
<span>Use this</span>
</label><br />
<input type="color" id="color-picker13_value">
</div>
</div><br /><br />
<button class="btn waves-effect blue" onclick="customComp(true)">Preview</button><br /><br />
<button class="btn-large waves-effect" onclick="customComp()">Zmień</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Delete</button><br><br>
<input type="text" style="width:22rem;height:40px;" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
<h4>Import of custom themes</h4>
<input type="text" style="width:22rem;height:40px;" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">Import</button><br>
<h4>Preview</h4>
<div style="max-width: 500px" class="cvo">
<div class="area-notice grid"><span class="gray sharesta"><span class=" pointer big-text "><i class="fas fa-filter">
</i></span>
<span class="cbadge cbadge-hover"><i class="far fa-clock"></i>
0:00:00
</span>
<i class="big-text fas fa-star yellow-text"></i>
<a class="pointer grey-text">
TheDesk(@thedesk@b.thedesk.tld)
</a></span>
</div>
<div class="area-icon grid">
<a user="thedesk" class="udg">
<img draggable="false" src="../../img/desk.svg" width="40" class="prof-img" user="TheDesk" onerror="this.src='../../img/loading.svg'" alt="" loading="lazy">
</a>
<a user="Cutls@misskey.io" class="udg">
<img draggable="false" src="../../img/desk.svg" width="20" class="notf-icon prof-img" user="TheDesk" alt="" loading="lazy">
</a>
</div>
<div class="area-display_name grid">
<div class="flex-name">
<span class="user">TheDesk<img class="emoji" draggable="false" alt="👀" src="https://twemoji.maxcdn.com/v/13.0.2/72x72/1f440.png"></span>
<span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;">
@thedesk@a.thedesk.tld <i class="fas fa-lock red-text"></i>
</span>
</div>
<div class="flex-time">
<span class="cbadge cbadge-hover pointer waves-effect">
<i class="far fa-clock"></i>0:00:00
</span>
</div>
</div>
<div class="area-toot grid">
<div class="toot ">
<p>Toot</p>
</div>
</div>
<div class="area-vis grid"><span><i class="text-darken-3 material-icons gray sml vis-data pointer">
public
</i></span></div>
<div class="area-actions grid">
<div class="action type-a ">
<a class="waves-effect waves-dark btn-flat actct rep-btn" style="padding:0">
<i class="fas fa-share"></i>
<span class="rep_ct">1</span>
</a>
</div>
<div class="action type-a ">
<a class="waves-effect waves-dark btn-flat actct bt-btn" style="padding:0">
<i class="fas fa-retweet"></i>
<span class="rt_ct">0</span>
</a>
</div>
<div class="action type-a ">
<a class="waves-effect waves-dark btn-flat actct fav-btn" style="padding:0">
<i class="fas text-darken-3 fa-star"></i>
<span class="fav_ct">1</span>
</a>
</div>
</div>
<div class="area-side">
<div class="action ">
<a onclick="toggleAction(this)" data-target="dropdown_0ugtorxe" class="ctxMenu waves-effect waves-dark btn-flat" style="padding:0" id="trigger_0ugtorxe">
<i class="text-darken-3 material-icons act-icon" aria-hidden="true">expand_more</i>
<span class="voice">Other actions</span>
</a>
</div>
<div class="action ">
<a class="waves-effect waves-dark btn-flat details " style="padding:0">
<i class="text-darken-3 material-icons" aria-hidden="true">menu_open</i></a>
</div>
</div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">reorder</i>Timeline Preferences
</div>
<div class="collapsible-body">
<div id="tlView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:7.7rem;" v-on:click="complete(i)">Zmień</button>
</template><br>
</template>
</div>
<h5>Niestandardowy dźwięk</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
<h5>Volume</h5>
0-100(default:80)<br>
<p class="range-field"><span id="soundVolVal">80</span><br>
<input type="range" id="soundvol" min="0" max="100" value="80" onchange="customVol()" style="width:40rem; max-width:100%" />
</p>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">send</i>Posting Preferences
</div>
<div class="collapsible-body">
<div id="postView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template
v-if="(!check.kirishima || (check.kirishima && kirishima) )&& (!check.quote || (check.quote && quoters))">
<label><input class="with-gap" v-on:click="complete(i,check.value)"
v-model="item.setValue" type="radio" v-bind:id="item.id+check.value"
v-bind:value="check.value" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:7.7rem;" v-on:click="complete(i)">Zmień</button>
</template><br>
</template>
</div>
<h5>Easy inserter</h5>
You can insert any letters and emojis with only 3 keys<br> Ctrl+Shift+1:
<input type="text" style="width:11.5rem" id="oks-1">
<button onclick="oks(1)" class="btn waves-effect" style="width:7.7rem;">Zapisz</button><br><br> Ctrl+Shift+2:
<input type="text" style="width:11.5rem" id="oks-2">
<button onclick="oks(2)" class="btn waves-effect" style="width:7.7rem;">Zapisz</button><br><br> Ctrl+Shift+3:
<input type="text" style="width:11.5rem" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:7.7rem;">Zapisz</button><br><br>
</div>
</li>
<li>
<div class="collapsible-header">
<img src="../../img/aiscript.svg" style="height: 1.5rem; margin-left: 0.4rem; margin-right: 0.4rem;">Wtyczki
</div>
<div class="collapsible-body">
<a href="https://github.com/cutls/TheDesk/wiki/プラグイン">Japanese docs of AiScript TheDesk plugins</a><br />
<div id="plugin" data-id="add_new" style="height: 600px"></div>
<button class="btn waves-effect" style="width:7.7rem;" onclick="completePlugin()">Zmień</button>
<button class="btn waves-effect red disabled plugin_delete" style="width:7.7rem;" onclick="deletePlugin()">Delete</button>
<button class="btn waves-effect" style="width:7.7rem;" onclick="testExecTrg()">Exec</button>
<h5>Lista wtyczek</h5>
<div style="width:22rem" id="plugin-selector" data-add="Add new">
<select id="plugin-edit-sel" class="custom-sel" onchange="pluginEdit()">
<option value="add_new">Add new</option>
</select>
</div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">bookmark</i>Mute & Emphasis Preferences
</div>
<div class="collapsible-body">
<h5>Client Mute</h5>
<div id="mute-cli"></div>
<h5>Client Emphasis</h5>
Click client name on toots to toggle mute and emphasis.
<h5>Words Mute</h5>
Enter to set<br>
<div class="chips" id="wordmute" style="background-color:gray;"></div>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:7.7rem;">Zapisz</button>
<h5>Words Emphasis</h5>
Enter to set<br>
<div class="chips" id="wordemp" style="background-color:gray;"></div>
<button onclick="wordempSave()" class="btn waves-effect" style="width:7.7rem;">Zapisz</button>
<h5>Users Emphasis</h5>
Set on users data modals.
<span class="emphasized"> Use this color to emphasis </span>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="fab fa-spotify"></i>Spotify and NowPlaying Preferences
</div>
<div class="collapsible-body">
<h5>Account Connection(Spotify)</h5>
TheDesk save your data on thedesk.top server.<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:7.7rem;">Zapisz</button></div>
<a onclick="spotifyConnect()" class="btn waves-effect nex" style="width:100%; max-width:15rem; background-color:#1ed760;" id="spotify-enable"><i
class="fab fa-spotify left"></i>Połącz</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled" style="width:100%; max-width:15rem; background-color:#1ed760;" id="spotify-disable"><i
class="fab fa-spotify left"></i>Rozłącz</a>
<h5>Account Connection(Last.fm)</h5>
User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.<br />
<input type="text" style="width:11.5rem" id="lastFmUser">
<button onclick="lastFmSet()" class="btn waves-effect" style="width:7.7rem;">Zapisz</button>
<h5>Edytuj szablon</h5>
<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br> Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify
<br>
<span class="mac">>macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}</span><br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:7.7rem;">Zapisz</button>
<h5>Attach an Artwork of Spotify</h5>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>Tak</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>Nie</span>
</label>
<div class="mac">
<h5>If the song has no artwork, automatic complete it(macOS)</h5>
If you nowplaying an non-artwork song, get one which seems nice through API. If you do not like the completed artwork, you can right-click it to delete.<br />
<label>
<input class="with-gap" onchange="aMusicFlagSave()" name="amw" type="radio" id="amw_yes"
value="yes" />
<span>Tak</span>
</label>
<label>
<input class="with-gap" onchange="aMusicFlagSave()" name="amw" type="radio" id="amw_no"
value="no" />
<span>Nie</span>
</label>
<br>
<h5>macOSコントロールセンター NowPlaying</h5>
日本語環境でのみご利用いただけます。(It works well on macOS with Japanese language profile.)<br /> 上のアートワーク補完を使用しないとアートワークは付与されません。コントロールセンターがある日本語設定のmacOS Big Sur以降が対象です。<br /> なお、コントロールセンターが勝手に開きますが仕様ですのでご理解ください。上記のテンプレートは反映されず、常に「タイトル, アーティスト」になります。<br
/>
<label>
<input class="with-gap" onchange="cMusicFlagSave()" name="cmw" type="radio" id="cmw_yes"
value="yes" />
<span>Tak</span>
</label>
<label>
<input class="with-gap" onchange="cMusicFlagSave()" name="cmw" type="radio" id="cmw_no"
value="no" />
<span>Nie</span>
</label>
</div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
</div>
<div class="collapsible-body">
<h5>BouyomiChan connect</h5>
Require: BouyomiChan WebSocket Plugin<a href="https://github.com/xztaityozx/BouyomiChan-WebSocket-Plugin" target="_blank">GitHub</a><br>
<label>
<input class="with-gap" onchange="voiceSettings()" name="bym" type="radio" id="bym_yes"
value="yes" />
<span>Tak</span>
</label>
<label>
<input class="with-gap" onchange="voiceSettings()" name="bym" type="radio" id="bym_no" value="no" />
<span>Nie</span>
</label>
<h5>Prędkość</h5>
1-100(domyślnie:10)<br>
<p class="range-field"><span id="voicespeedVal">10</span><br>
<input type="range" id="voicespeed" min="1" max="100" value="10" onchange="document.getElementById('voicespeedVal').innerText=this.value" style="width:40rem; max-width:100%" />
</p>
<h5>Wysokość</h5>
0-100 (domyślnie: 50)<br>
<p class="range-field"><span id="voicepitchVal">50</span><br>
<input type="range" id="voicepitch" min="0" max="100" value="50" onchange="document.getElementById('voicepitchVal').innerText=this.value" style="width:40rem; max-width:100%" />
</p>
<h5>Volume</h5>
0-100(default:100)<br>
<p class="range-field"><span id="voicevolVal">100</span><br>
<input type="range" id="voicevol" min="0" max="100" value="100" onchange="document.getElementById('voicevolVal').innerText=this.value" style="width:40rem; max-width:100%" />
</p>
<h5>Test</h5>
<input type="text" style="width:27rem" id="voicetxt" value="TheDesk is an open-source Mastodon client for PC.">
<button class="btn waves-effect blue" style="width:11.5rem;" onclick="voicePlay()" id="testplay">Play/Stop</button><br>
<br>
<button class="btn waves-effect" style="width:7.7rem;" onclick="voiceSettings()">Zapisz</button>
</div>
</li>
</ul>
<br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:15rem;"><i
class="material-icons left">undo</i>Wstecz</a>
<br>
<br>Keyboard shortcuts
<li>Ctrl+1-9:Jump to n(1-9)th column</li>
<li>N:Open toot box</li>
<li>X:Toggle toot box</li>
<li>Ctrl+Enter:Post</li>
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
<li>Alt+Enter:Secondary Toot Button</li>
<li>Ctrl+E:Make all notifications read</li>
<li>Ctrl+U:Select the top & left(No.1 column) toot</li>
<li>Esc:Hide toot box</li>
<li>F5:Super Reload</li>
<li>Ctrl+Shift+C:Clear toot box</li>
<li>Ctrl+Shift+S:Ustawienia</li>
<li>Ctrl+Shift+M:Menadżer konta</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+P:Show profile of selecting</li>
<li>←/→:Show next or previous image</li>
<li>Kółko myszy: Przybliż obraz</li>
<div class="hide kirishima">
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
Po wybraniu toota:
<li>F:Polub ten toot</li>
<li>B:Podbij tego toota</li>
<li>R:Odpowiedz na ten toot</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:40rem;" onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i
class="material-icons left">delete</i>Reset(Danger)</button><br><br>
<button class="btn waves-effect indigo pwa" onclick="about()" style="width:100%; max-width:40rem;"><i
class="material-icons left">info</i>About TheDesk</button>
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:40rem;"><i
class="material-icons left">web</i>Strona internetowa</a>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" style="width:100%; max-width:40rem;"><i class="material-icons left">trending_up</i>Wsparcie(Pixiv FANBOX)</a>
<a href="https://www.patreon.com/cutls" class="btn waves-effect red darken-2" style="width:100%; max-width:40rem;"><i class="material-icons left">trending_up</i>Wsparcie(Patreon)</a>
<a href="https://liberapay.com/cutls" class="btn waves-effect black-text" style="width:100%; max-width:40rem; background-color: #f6c915"><i
class="material-icons left">trending_up</i>Wsparcie(Liberapay)</a>
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:40rem;"><i
class="material-icons left">list</i>Help/Docs</a>
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:40rem;"><i class="fab fa-github left"></i>GitHub</a>
<a href="index.html?mode=user&code=Cutls@1m.cutls.com" class="btn waves-effect blue lighten-2" style="width:100%; max-width:40rem;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Main author: Cutls@1m.cutls.com</a>
<br> TheDesk @ <a href="https://github.com/cutls/TheDesk/commits/ab460d14015eae75d1feccf0594373e5b9aee9ea">ab460d14015eae75d1feccf0594373e5b9aee9ea</a> - <a onclick="checkupd(); return localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer pwa">Sprawdź aktualizacje</a><br>
<br> Kyash
<br>
<img src="../../img/kyash.png" width="100"><br>
<a href="https://status.cutls.com/">
<img src="https://status.cutls.com/badge-service?site=thedesk.top">
</a><br>
<h5>OSS License</h5>
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2Fcutls%2FTheDesk/refs/branch/master/ab460d14015eae75d1feccf0594373e5b9aee9ea" alt="FOSSA Status"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fcutls%2FTheDesk.svg?type=small" /></a>
<br>
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
href="https://thedesk.top/priv.html">Privacy
Policy</a>
<br>
</span><br> TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br> タグタイムラインを開く:
<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
<script type="text/javascript" src="../../node_modules/lodash/lodash.min.js"></script>
<script src="../../js/ace/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
var editor = ace.edit("plugin");
editor.$blockScrolling = Infinity;
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: true,
enableLiveAutocompletion: true
})
editor.setTheme("ace/theme/monokai")
editor.getSession().setMode("ace/mode/aiscript")
editor.setValue(`### {
manifest: 1
name: "My First Plugin"
version: 1
event: "buttonOnPostbox"
author: "Cutls P"
apiGet: no
}`, -1)
</script>
<script type="text/javascript" src="../../js/platform/native.js"></script>
<script type="text/javascript" src="../../js/platform/plugin.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

View File

@ -1,798 +0,0 @@
var yesno = [
{
text: 'Tak',
value: 'yes'
},
{
text: 'Nie',
value: 'no'
}
]
var sound = [
{
text: 'Brak',
value: 'none'
},
{
text: 'Default',
value: 'default'
},
{
text: 'Custom 1',
value: 'c1'
},
{
text: 'Custom 2',
value: 'c2'
},
{
text: 'Custom 3',
value: 'c3'
},
{
text: 'Custom 4',
value: 'c4'
}
]
var envConstruction = [
{
id: 'popup',
storage: 'popup',
checkbox: false,
doubleText: false,
setValue: 0,
width: 50,
text: {
head: 'Wyskakujące powiadomienia',
desc: 'Hide to set "0"',
after: 'sek'
}
},
{
id: 'notf',
storage: 'nativenotf',
checkbox: true,
setValue: 'yes',
text: {
head: 'Powiadomienie natywne',
desc: 'To nie działa w wersji przenośnej Windows.',
checkbox: yesno
}
},
{
checkbox: false,
doubleText: true,
data: [
{
id: 'width',
storage: 'width',
width: 50,
setValue: 300,
text: { after: 'px ~ ' }
},
{
id: 'maxWidth',
storage: 'max-width',
width: 50,
setValue: 600,
text: { after: 'px' }
}
],
text: {
head: 'Szerokość kolumn',
desc: 'Scroll bar will be shown when your window size is more than ammounts of columns.'
}
},
{
id: 'margin',
storage: 'margin',
checkbox: false,
doubleText: false,
setValue: 0,
width: 50,
text: {
head: 'Margin between timelines',
desc: '',
after: 'px'
}
},
{
id: 'fixwidth',
storage: 'fixwidth',
checkbox: false,
doubleText: false,
setValue: 300,
width: 50,
text: {
head: 'Minimum width of TweetDeck browser',
desc: '',
after: 'px powyżej'
}
},
{
id: 'size',
storage: 'size',
checkbox: false,
doubleText: false,
width: 50,
setValue: 13,
text: {
head: 'Rozmiar czcionki',
desc: '<span style="font-size:13px">13px(wartość bezwzględna)</span>',
after: 'px'
}
},
{
id: 'ha',
storage: 'ha',
checkbox: true,
setValue: false,
text: {
head: 'Wyłącz przyspieszanie sprzętowe',
desc: 'Auto restarted',
checkbox: [
{
text: 'Tak',
value: 'true'
},
{
text: 'Nie',
value: 'false'
}
]
}
},
{
id: 'ua',
storage: 'ua_setting',
checkbox: false,
doubleText: false,
setValue: '',
width: 200,
text: {
head: 'Agent użytkownika',
desc: 'Restart when changed'
}
},
{
id: 'webview',
storage: 'webview_setting',
checkbox: true,
setValue: false,
text: {
head: 'Webview Integration',
desc: 'To use TweetDeck Integration, please turn on. You should understand it may lessen security level.',
checkbox: [
{
text: 'Tak',
value: 'true'
},
{
text: 'Nie',
value: 'false'
}
]
}
},
{
id: 'srcUrl',
storage: 'srcUrl',
checkbox: false,
doubleText: false,
width: 200,
setValue: 'https://google.com/search?q={q}',
text: {
head: 'Wyszukiwarka',
desc: '{q} will be replaced to query.',
after: ''
}
},{
id: 'download',
storage: 'dl-win',
checkbox: true,
setValue: 'no',
text: {
head: 'Versioning(o Windows downloader)',
desc: 'ex: TheDesk-1.0.0-setup.exe',
checkbox: yesno
}
}
]
var tlConstruction = [
{
id: 'time',
storage: 'datetype',
checkbox: true,
setValue: 'absolute',
text: {
head: 'Time format',
desc: 'Relative format:"1 minutes ago","3 days ago"<br>Absolute format:"23:25:21","2017/12/30 23:59:00"<br>Mixed format:toots posted today are relative-format, others are absolute-format.',
checkbox: [
{
text: 'Relative',
value: 'relative'
},
{
text: 'Absolute',
value: 'absolute'
},
{
text: 'Both relative and absolute',
value: 'double'
},
{
text: 'Mixed',
value: 'medium'
}
]
}
},
{
id: 'ul',
storage: 'locale',
checkbox: true,
setValue: 'yes',
text: {
head: 'Server\'s unique locale',
desc: 'This value is available on some Japanese servers',
checkbox: yesno
}
},
{
id: 'nsfw',
storage: 'nsfw',
checkbox: true,
setValue: 'yes',
text: {
head: 'Hide Mark sensitive pictures',
desc: 'Strong blur effect',
checkbox: yesno
}
},
{
id: 'cw',
storage: 'cw',
checkbox: true,
setValue: 'yes',
text: {
head: 'Hide CW contents',
desc: '',
checkbox: yesno
}
},
{
id: 'rp',
storage: 'replyct',
checkbox: true,
setValue: 'hidden',
text: {
head: 'Reply counter style',
desc: '',
checkbox: [
{
text: 'Show 1+ if the replies are more than 1.',
value: 'hidden'
},
{
text: 'Show full count(1,2...)',
value: 'all'
}
]
}
},
{
id: 'gif',
storage: 'gif',
checkbox: true,
setValue: 'yes',
text: {
head: 'Animated GIF images animation',
desc: '',
checkbox: yesno
}
},
{
id: 'tag',
storage: 'tag-range',
checkbox: true,
setValue: 'local',
text: {
head: 'Tag TL Search',
desc: '',
checkbox: [
{
text: 'Use federated network',
value: 'all'
},
{
text: 'Use local network',
value: 'local'
}
]
}
},
{
id: 'via',
storage: 'viashow',
checkbox: true,
setValue: 'no',
text: {
head: 'Pokaż przez',
desc: '',
checkbox: yesno
}
},
{
id: 'mov',
storage: 'mouseover',
checkbox: true,
setValue: 'no',
text: {
head: 'Hide action buttons without mouseover',
desc: 'You may feel \'mouseover\' is unconfortable:(',
checkbox: [
{
text: 'Mouseover to show',
value: 'yes'
},
{
text: 'Kliknij, aby pokazać',
value: 'click'
},
{
text: 'Nie',
value: 'no'
}
]
}
},
{
id: 'notfm',
storage: 'setasread',
checkbox: true,
setValue: 'yes',
text: {
head: 'Show Notification marker, red colored bell and counter(if you show a notification column.)',
desc: '',
checkbox: yesno
}
},
{
checkbox: false,
doubleText: true,
data: [
{
id: 'sentence',
storage: 'sentence',
width: 50,
setValue: 500,
text: { after: 'linie powyżej lub' }
},
{
id: 'letters',
storage: 'letters',
width: 50,
setValue: 7000,
text: { after: 'litery powyżej' }
}
],
text: {
head: 'Auto folding',
desc: 'TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.'
}
},
{
id: 'img-height',
storage: 'img-height',
checkbox: false,
doubleText: false,
width: 80,
setValue: 200,
text: {
head: 'Wysokość obrazów',
desc: 'Option:Set "full" to uncrop.',
after: 'px'
}
},
{
id: 'ticker',
storage: 'ticker_ok',
checkbox: true,
setValue: 'no',
text: {
head: 'Włącz OpenSticker',
desc: 'Show the instance name and favicon of tooters <a href="https://opensticker.0px.io">About OpenSticker</a>',
checkbox: yesno
}
},
{
id: 'anime',
storage: 'animation',
checkbox: true,
setValue: 'yes',
text: {
head: 'Animacja osi czasu',
desc: '',
checkbox: yesno
}
},
{
id: 'markers',
storage: 'markers',
checkbox: true,
setValue: 'no',
text: {
head: 'Markers(mark as read) on HTL and notifications',
desc: 'Mastodon 3.0~. Shared on WebUI and third-party supported clients.',
checkbox: yesno
}
},
{
id: 'remote_img',
storage: 'remote_img',
checkbox: true,
setValue: 'no',
text: {
head: 'Get images from the remote server',
desc: 'All previews are got from your loginned cache server.',
checkbox: yesno
}
},
{
id: 'bkm',
storage: 'bookmark',
checkbox: true,
setValue: 'no',
text: {
head: 'Show a bookmarking toot button',
desc: '',
checkbox: yesno
}
},
{
id: 'scroll',
storage: 'scroll',
checkbox: true,
setValue: 'normalScrollBar',
text: {
head: 'Height of the scroll bar',
desc: '',
checkbox: [
{
text: 'Gruba',
value: 'thickScrollBar'
},
{
text: 'Normalny',
value: 'normalScrollBar'
},
{
text: 'Thin',
value: 'thinScrollBar'
}
]
}
},
{
id: 'mcm',
storage: 'moreContext',
checkbox: true,
setValue: 'no',
text: {
head: 'Context Tool',
desc: 'On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL',
checkbox: yesno
}
},
{
id: 'small-header',
storage: 'smallHeader',
checkbox: true,
setValue: 'no',
text: {
head: 'Minimize column headers',
desc: '',
checkbox: yesno
}
},
{
id: 'replySound',
storage: 'replySound',
checkbox: true,
setValue: 'none',
text: {
head: 'Sound(Reply)',
desc: '',
checkbox: sound
}
},
{
id: 'favSound',
storage: 'favSound',
checkbox: true,
setValue: 'none',
text: {
head: 'Sound(Fav)',
desc: '',
checkbox: sound
}
},
{
id: 'btSound',
storage: 'btSound',
checkbox: true,
setValue: 'none',
text: {
head: 'Sound(Boost)',
desc: '',
checkbox: sound
}
},
{
id: 'followSound',
storage: 'followSound',
checkbox: true,
setValue: 'none',
text: {
head: 'Sound(Follow)',
desc: '',
checkbox: sound
}
}
]
var postConstruction = [
{
id: 'cw-text',
storage: 'cw-text',
checkbox: false,
doubleText: false,
width: 150,
setValue: '',
text: {
head: 'Default warining text',
desc: '',
after: ''
}
},
{
checkbox: false,
doubleText: true,
data: [
{
id: 'cw_sentence',
storage: 'cw_sentence',
width: 50,
setValue: 500,
text: { after: 'linie powyżej lub' }
},
{
id: 'cw_letters',
storage: 'cw_letters',
width: 50,
setValue: 7000,
text: { after: 'litery powyżej' }
}
],
text: {
head: 'Alert before posting a long toot.',
desc: 'Show dialog whether you make too-long text hidden.'
}
},
{
id: 'cws',
storage: 'always-cw',
checkbox: true,
setValue: 'no',
text: {
head: 'Always CW set',
desc: '',
checkbox: yesno
}
},
{
id: 'cw-continue',
storage: 'cw-continue',
checkbox: true,
setValue: 'no',
text: {
head: '@@cwContinue@@',
desc: '',
checkbox: yesno
}
},
{
id: 'vis',
storage: 'vis',
checkbox: true,
setValue: 'public',
text: {
head: 'Default visibility',
desc: '',
checkbox: [
{
text: 'Public',
value: 'public'
},
{
text: 'Unlisted',
value: 'unlisted'
},
{
text: 'Private',
value: 'private'
},
{
text: 'Direct',
value: 'direct'
},
{
text: 'Memory(memorized as each server)',
value: 'memory'
},
{
text: 'Default of your visibility(Set on preferences of Mastodon server)',
value: 'useapi'
}
]
}
},
{
id: 'img',
storage: 'img',
checkbox: true,
setValue: 'no-act',
text: {
head: 'Posting images preferences',
desc: '',
checkbox: [
{
text: 'Insert media URL',
value: 'url'
},
{
text: 'Insert nothig',
value: 'no-act'
}
]
}
},
{
id: 'box',
storage: 'box',
checkbox: true,
setValue: 'yes',
text: {
head: 'Action of posting-box',
desc: '',
checkbox: [
{
text: 'Folding',
value: 'yes'
},
{
text: 'Open after posting',
value: 'no'
},
{
text: 'Absolutely open',
value: 'absolute'
}
]
}
},
{
id: 'quote',
storage: 'quote',
checkbox: true,
setValue: 'nothing',
text: {
head: 'Quote format',
desc: '',
checkbox: [
{
text: 'Only URL',
value: 'simple'
},
{
text: 'URL and acct(mention to the user)',
value: 'mention'
},
{
text: 'URL, text and acct(mention to the user)',
value: 'full'
},
{
text: 'API(only some instances)',
value: 'apiQuote',
quote: true
},
{
text: 'Disabled(Hide buttons on TLs)',
value: 'nothing'
}
]
}
},
{
id: 'main',
storage: 'mainuse',
checkbox: true,
setValue: 'remain',
text: {
head: 'Default accounts of actions',
desc: 'Main account can be set on Account Manager.',
checkbox: [
{
text: 'Account you used recently',
value: 'remain'
},
{
text: 'Konto główne',
value: 'main'
}
]
}
},
{
id: 'sec',
storage: 'sec',
checkbox: true,
setValue: 'public',
text: {
head: 'Secondary Toot Button',
desc: '',
checkbox: [
{
text: 'Ukryty',
value: 'nothing'
},
{
text: 'Public',
value: 'public'
},
{
text: 'Unlisted',
value: 'unlisted'
},
{
text: 'Private',
value: 'private'
},
{
text: 'Direct',
value: 'direct'
},
{
text: 'Tylko lokalne',
value: 'local',
kirishima: true,
kirishimaText: '非対応インスタンスでは「未収載」になります。'
}
]
}
},
{
id: 'zero',
storage: 'emoji-zero-width',
checkbox: true,
setValue: 'normal',
setValue: 'no',
text: {
head: 'Zero-width space when inserting emojis',
desc: '',
checkbox: yesno
}
},{
id: 'uploadCrop',
storage: 'uploadCrop',
checkbox: false,
doubleText: false,
width: 100,
setValue: '0',
text: {
head: 'Auto scale to fit',
desc: 'Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.',
after: 'px'
}
}
]

View File

@ -1,302 +0,0 @@
<!DOCTYPE html>
<html lang="pl-PL">
<head>
<title>Update - TheDesk</title>
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="../../css/master.css" type="text/css" rel="stylesheet" />
<meta charset="utf-8" />
<!--
<script type="text/javascript">
var _jipt = []
_jipt.push(['project', 'thedesk'])
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 10px;
text-align: right;
}
#start {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
height: calc(100vh - 2.5rem);
text-align: center;
}
#checkbox {
text-align: left;
}
a,
button,
input,
label,
i {
-webkit-app-region: no-drag;
}
#updskip {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.skipbtn {
display: block;
width: 100%;
height: 100px;
border: 1px solid;
margin-left: 5px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid #c26363;
overflow: hidden;
color: #c26363;
margin-bottom: 5px;
font-size: 1.5rem;
}
.skipbtn:hover {
background-color: #c26363;
transition: all 0.3s ease-in-out;
color: white;
}
#prog {
font-size: 200%;
}
</style>
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
<script>var pwa = false;</script>
</head>
<body>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
<div id="start" style="filter: brightness(100%)">
<div id="box" class="show">
<h2>TheDesk</h2>
<p>Pobierz najnowsze TheDesk</p>
<span id="now"></span><b id="ver"></b><br />
<a href="" id="github" class="btn waves-effect grey darken-1"><i class="fab fa-github left"></i>Co nowego?</a><br />
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left: 15px;">Instalator (zalecane)</button>
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left: 15px;">Portable ver.</button>
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left: 15px;">zip</button>
<button class="waves-effect btn linux hide" onclick="update('linuxdeb')" style="margin-left: 15px;">deb(Rekomendowane na buntu, Debian)</button>
<button class="waves-effect btn linux hide" onclick="update('linuxsnap')" style="margin-left: 15px;">snap</button>
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left: 15px;">Rozpocznij</button>
<br />
Jakieś problemy?<br />Please download on <a href='https://thedesk.top'>Oficial HP</a>.
</div>
<div id="skipper" class="hide">
<h4>Pomiń tę aktualizację</h4>
You may lose a cool experience!<br />
<div id="updskip">
<a onclick="window.close();" class="pointer skipbtn waves-effect waves-light">
<div>Ukryte do następnego ładowania TL</div>
</a>
<a onclick="nextv();" class="pointer skipbtn waves-effect waves-light">
<div>Ukryte do następnej wersji</div>
</a>
</div>
<a class="pointer waves-effect" onclick="skipper();" style="margin-top: 5px;">Kontynuuj aktualizację</a>
</div>
<div id="dlnow" class="hide" style="width: 70%;">
<h4>Pobieranie...</h4>
<h4 id="prog"></h4>
<div class="progress">
<div class="determinate" style="width: 0%;"></div>
</div>
</div>
</div>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script>
function skipper() {
$('#dlnow').addClass('hide')
$('#box').toggleClass('show')
if ($('#box').hasClass('hide') && $('#skipper').hasClass('hide')) {
$('#skipper').removeClass('hide')
$('#skipper').addClass('show')
} else {
$('#box').toggleClass('hide')
$('#skipper').toggleClass('hide')
$('#skipper').toggleClass('show')
}
}
verck()
function update(sel) {
$('#box').toggleClass('show')
$('#box').toggleClass('hide')
$('#dlnow').toggleClass('hide')
$('#dlnow').toggleClass('show')
$('#prog').text('')
var bit = localStorage.getItem('bit')
var start = 'https://thedesk.top/ver.json'
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
})
.then(function (response) {
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
if (sel == 'install') {
if (bit == 'x64') {
var url = json['winx64']
if (localStorage.getItem('dl-win') == 'yes') {
var file = 'TheDesk-' + json.unique + '-setup.exe'
} else {
var file = 'TheDesk-setup.exe'
}
var filesize = json.winx64_size
} else if (bit == 'ia32') {
var url = json['winia32']
if (localStorage.getItem('dl-win') == 'yes') {
var file = 'TheDesk-' + json.unique + '-setup-ia32.exe'
} else {
var file = 'TheDesk-setup-ia32.exe'
}
var filesize = json.winia32_size
}
} else if (sel == 'portable') {
if (bit == 'x64') {
var url = json['winx64p']
if (localStorage.getItem('dl-win') == 'yes') {
var file = 'TheDesk-' + json.unique + '.exe'
} else {
var file = 'TheDesk.exe'
}
var filesize = json.winx64p_size
} else if (bit == 'ia32') {
var url = json['winia32p']
if (localStorage.getItem('dl-win') == 'yes') {
var file = 'TheDesk-' + json.unique + '-ia32.exe'
} else {
var file = 'TheDesk-ia32.exe'
}
var filesize = json.winia32p_size
}
} else if (sel == 'linux') {
var url = json['linuxx64']
if (localStorage.getItem('dl-win') == 'yes') {
var file = 'thedesk-' + json.unique_linux + '.zip'
} else {
var file = 'thedesk.zip'
}
var filesize = json.linuxx64_size
} else if (sel == 'linuxdeb') {
var url = json['linuxdeb']
var file = 'thedesk_' + json.unique_linux + '_amd64.deb'
var filesize = json.linuxdeb_size
} else if (sel == 'linuxsnap') {
var url = json['linuxsnap']
var file = 'thedesk_' + json.unique_linux + '_amd64.snap'
var filesize = json.linuxsnap_size
} else if (sel == 'mac') {
var url = json['mac']
var file = 'TheDesk-' + json.unique_mac + '.dmg'
var filesize = json.mac_size
}
postMessage(['downloadButton', [url, file, filesize]], '*')
})
}
function quit() {
postMessage(['sendSinmpleIpc', 'quit'], '*')
}
function updateProg(arg) {
$('.determinate').css('width', arg[0].percent * 100 + '%')
$('#prog').html(`${Math.floor(arg[0].percent * 100)}%<br />(${Math.floor(arg[0].percent*arg[1]/1024/1024*10)/10} MB / ${Math.floor(arg[1]/1024/1024*10)/10} MB)`)
}
function updateMess(arg) {
console.log(arg)
$('#prog').text(arg)
}
function verck() {
var platform = localStorage.getItem('platform')
var bit = localStorage.getItem('bit')
if (platform == 'win32') {
$('.windows').removeClass('hide')
} else if (platform == 'linux') {
$('.linux').removeClass('hide')
} else if (platform == 'darwin') {
$('.mac').removeClass('hide')
}
var start = 'https://thedesk.top/ver.json'
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
})
.then(function (response) {
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
console.log(json)
if (platform == 'win32') {
$('#ver').text(json.desk)
localStorage.setItem('next-ver', json.desk)
var url = 'https://github.com/cutls/TheDesk/releases/tag/v' + json.unique
} else if (platform == 'linux') {
$('#ver').text(json.desk_linux)
localStorage.setItem('next-ver', json.desk_linux)
var url = 'https://github.com/cutls/TheDesk/releases/tag/v' + json.unique_linux
} else if (platform == 'darwin') {
$('#ver').text(json.desk_mac)
localStorage.setItem('next-ver', json.desk_mac)
var url = 'https://github.com/cutls/TheDesk/releases/tag/v' + json.unique_mac
}
$('#github').attr('href', url)
$('#now').text(localStorage.getItem('ver'))
})
}
function nextv() {
localStorage.setItem('new-ver-skip', 'true')
window.close()
}
function enc(ver) {
var ver = ver.replace(/\s/g, '')
var ver = ver.replace(/\(/g, '-')
var ver = ver.replace(/\)/g, '')
var ver = ver.replace(/\[/g, '_')
var ver = ver.replace(/\]/g, '')
return ver
}
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff