TheDesk Miho (ver.8)

This commit is contained in:
cutls 2018-02-09 01:43:11 +09:00
parent 228fe4138a
commit 1d9a59e06f
13 changed files with 130 additions and 15 deletions

View File

@ -1,10 +1,14 @@
# TheDesk LICENSE v1 # TheDesk LICENSE v2
(C)TheDesk on Mastodon 2018 all rights reserved. Website:[https://desk.cutls.com](https://desk.cutls.com) (C)TheDesk on Mastodon 2018 all rights reserved. Website:[https://desk.cutls.com](https://desk.cutls.com)
以下のライセンスに基づき当ソフトウェアを公開します。 以下のライセンスに基づき当ソフトウェアを公開します。
- 以下の条件の範囲内で再頒布を認めます。 - 以下の条件の範囲内で再頒布を認めます。
- 必ず上記コピーライトを改変無く含めること。(必ず年度が2018であること) - 必ず上記コピーライトと本ライセンス条項を改変無く含めること。(必ず年度が2018であること。他言語翻訳を付与する場合も原文を表記。)
- 改変しない場合、必ずソフトウェアのタイトルが"TheDesk"であり、ウィンドウのタイトルに"TheDesk"が常に表示されている状態にすること。 - 変更を含め全てのコードを公開すること。商用利用やライセンスの変更は認めない。
- 改変する場合、必ずソフトウェアのタイトルの末尾が"Powered by TheDesk"であり、ウィンドウのタイトルに"TheDesk"が常に表示されている状態にすること。また、ユーザーの見えるところにTheDesk [使用バージョン名]を表示すること。 - プラットフォームはElectronやCordova、またはそれに準ずるものであること。Webアプリケーションとしての配布は認めない。
- 改変しない場合(他のプラットフォームに移植等)、必ずソフトウェアのタイトルが"TheDesk"であり、アイコンを変更せず、またウィンドウのタイトルに"TheDesk"が常に表示されている状態にすること。
- 改変する場合、必ずソフトウェアのタイトルの末尾が"Powered by TheDesk"であり、ユーザーの見えるところにTheDesk [使用バージョン名]を表示すること。
- ロゴはTheDeskを想起させるものであること。ソフトの改変を行う場合はアイコンを必ず変更すること。
- このソフトの使用、再頒布に伴う一切の責任をTheDeskは負いません。 - このソフトの使用、再頒布に伴う一切の責任をTheDeskは負いません。
- [https://desk.cutls.com](https://desk.cutls.com)で公式に頒布されるソフトのみ[kirishima.cloud](https://desk.cutls.com)(アスタルテ)公認クライアントです。

View File

@ -5,13 +5,13 @@ Download:[TheDesk](https://desk.cutls.com)
## License ## License
[TheDesk LICENSE v1](https://github.com/cutls/TheDesk/blob/master/LICENSE.md) [TheDesk LICENSE v2](https://github.com/cutls/TheDesk/blob/master/LICENSE.md)
## Component/構成 ## Component/構成
app:Raw files(you can download to modify or check) app:Raw files(you can download to modify or check)
app:そのままのファイル app:そのままのファイル。ダウンロード→テスト用
## Language/言語 ## Language/言語

View File

@ -34,6 +34,7 @@
アカウントを追加<br> アカウントを追加<br>
<div id="add"> <div id="add">
<input type="text" id="url" style="width:70%" placeholder="mstdn.jp"> <input type="text" id="url" style="width:70%" placeholder="mstdn.jp">
<div id="ins-suggest"></div>
<button class="btn waves-effect" onclick="instance()">Login</button><br> <button class="btn waves-effect" onclick="instance()">Login</button><br>
<span style="font-family:Open Sans;">Supports</span> <span style="font-family:Open Sans;">Supports</span>
<div id="support"></div> <div id="support"></div>
@ -56,5 +57,6 @@
マストドンアップデート:<span id="ins-sys"></span><br> マストドンアップデート:<span id="ins-sys"></span><br>
<script type="text/javascript" src="./js/login/manager.js"></script> <script type="text/javascript" src="./js/login/manager.js"></script>
<script type="text/javascript" src="./js/login/instance.js"></script>
<script type="text/javascript" src="./js/tl/date.js"></script> <script type="text/javascript" src="./js/tl/date.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script> <script type="text/javascript" src="./js/platform/end.js"></script>

View File

@ -23,7 +23,7 @@
<script type="text/javascript" src="./js/common/keyshortcut.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="./js/common/modal.js"></script>
<script> <script>
var ver="Miho (ver.7)"; var ver="Miho (ver.8)";
//betaを入れるとバージョンチェックしない //betaを入れるとバージョンチェックしない
//var ver="beta"; //var ver="beta";
var acct_id=0; var acct_id=0;
@ -34,6 +34,7 @@ var tlid=0;
<!--最初にログインする--> <!--最初にログインする-->
ログインしたいインスタンスのアドレス<br> ログインしたいインスタンスのアドレス<br>
<input type="text" id="url" style="width:70%" placeholder="mstdn.jp"> <input type="text" id="url" style="width:70%" placeholder="mstdn.jp">
<div id="ins-suggest"></div>
<button class="btn waves-effect" onclick="instance()">Login</button><br> <button class="btn waves-effect" onclick="instance()">Login</button><br>
<span style="font-family:Open Sans;">Supports</span> <span style="font-family:Open Sans;">Supports</span>
@ -110,10 +111,11 @@ var tlid=0;
<a href="setting.html" class="setting nex"><i class="material-icons nex" title="設定">settings</i></a> <a href="setting.html" class="setting nex"><i class="material-icons nex" title="設定">settings</i></a>
<a href="acct.html"><i class="material-icons nex" title="アカウント管理">account_circle</i></a> <a href="acct.html"><i class="material-icons nex" title="アカウント管理">account_circle</i></a>
<a href="index.html" class="setting nex"><i class="material-icons nex" title="スーパーリロード">refresh</i></a> <a href="index.html" class="setting nex"><i class="material-icons nex" title="スーパーリロード">refresh</i></a>
<a onclick="window.open('https://desk.cutls.com/labo.php');" class="setting nex" target="_blank" id="ranking-btn" style="display:none;"><i class="material-icons nex" title="アスタルテランキング">timeline</i></a>
<div class="row" style="margin-bottom:0;"> <div class="row" style="margin-bottom:0;">
<span class="sml"><span class="gray">画面内どこでもドラッグ・アンド・ドロップできます。</span><br></span>アカウント選択</span><br> <span class="sml"><span class="gray">画面内どこでもドラッグ・アンド・ドロップできます。</span><br></span>アカウント選択</span><br>
<div class="input-field"> <div class="input-field">
<select id="post-acct-sel" class="acct-sel"> <select id="post-acct-sel" class="acct-sel" onchange="mdCheck()">
</select> </select>
</div> </div>
@ -362,6 +364,7 @@ var tlid=0;
<script type="text/javascript" src="./js/tl/src.js"></script> <script type="text/javascript" src="./js/tl/src.js"></script>
<script type="text/javascript" src="./js/ui/layout.js"></script> <script type="text/javascript" src="./js/ui/layout.js"></script>
<script type="text/javascript" src="./js/login/login.js"></script> <script type="text/javascript" src="./js/login/login.js"></script>
<script type="text/javascript" src="./js/login/instance.js"></script>
<script type="text/javascript" src="./js/ui/post-box.js"></script> <script type="text/javascript" src="./js/ui/post-box.js"></script>
<script type="text/javascript" src="./js/ui/img.js"></script> <script type="text/javascript" src="./js/ui/img.js"></script>
<script type="text/javascript" src="./js/ui/theme.js"></script> <script type="text/javascript" src="./js/ui/theme.js"></script>

View File

@ -22,11 +22,19 @@ $(function($) {
hide(); hide();
return false; return false;
} }
//Esc:消す //F5リロード
if (e.keyCode === 116) { if (e.keyCode === 116) {
location.href = "index.html"; location.href = "index.html";
return false; return false;
} }
//Ctrl+R:ランキング
if (event.ctrlKey) {
if (e.keyCode === 82) {
if(localStorage.getItem("kirishima")){
window.open("https://desk.cutls.com/labo.php");
}
}
}
//input/textareaにフォーカスなし時 //input/textareaにフォーカスなし時
if (!hasFocus && !hasFocus2) { if (!hasFocus && !hasFocus2) {
//X:開閉 //X:開閉

49
app/js/login/instance.js Normal file
View File

@ -0,0 +1,49 @@
//入力時にハッシュタグと@をサジェスト
var timer = null;
var input = document.getElementById("url");
var prev_val = input.value;
var oldSuggest;
var suggest;
input.addEventListener("focus", function() {
$("#ins-suggest").html("");
window.clearInterval(timer);
timer = window.setInterval(function() {
var new_val = input.value;
if (prev_val != new_val) {
if(new_val.length > 3){
var start = "https://instances.social/api/1.0/instances/search?q=" + new_val;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer tC8F6xWGWBUwGScyNevYlx62iO6fdQ4oIK0ad68Oo7ZKB8GQdGpjW9TKxBnIh8grAhvd5rw3iyP9JPamoDpeLQdz62EToPJUW99hDx8rfuJfGdjQuimZPTbIOx0woA5M'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
if (!json.error) {
var urls="もしかして:";
Object.keys(json.instances).forEach(function(key) {
var url = json.instances[key];
urls = urls + ' <a onclick="login(\'' + url.name + '\')" class="pointer">' + url.name + '</a> ';
});
$("#ins-suggest").html(urls);
}
});
}
oldSuggest = suggest;
prev_value = new_val;
}
}, 1000);
}, false);
input.addEventListener("blur", function() {
window.clearInterval(timer);
}, false);

View File

@ -1,10 +1,12 @@
/*ログイン処理・認証までのJS*/ /*ログイン処理・認証までのJS*/
//最初に読むやつ //最初に読むやつ
//アスタルテ判定初期化
localStorage.removeItem("kirishima")
function ck() { function ck() {
var domain = localStorage.getItem("domain_0"); var domain = localStorage.getItem("domain_0");
var at = localStorage.getItem(domain + "_at"); var at = localStorage.getItem(domain + "_at");
if (at) { if (at) {
ckdb(); ckdb(0);
$("#tl").show(); $("#tl").show();
parseColumn(); parseColumn();
multi(); multi();
@ -138,8 +140,12 @@ function getdata() {
} }
//TheDesk独自のマストドンDBでMarkdownやBBCodeの対応、文字数制限をチェック //TheDesk独自のマストドンDBでMarkdownやBBCodeの対応、文字数制限をチェック
function ckdb() { function ckdb(acct_id) {
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="kirishima.cloud"){
localStorage.setItem("kirishima", "true");
$("#ranking-btn").show();
}
var at = localStorage.getItem(domain + "_at"); var at = localStorage.getItem(domain + "_at");
var bbcode = domain + "_bbcode"; var bbcode = domain + "_bbcode";
var letters = domain + "_letters"; var letters = domain + "_letters";
@ -159,12 +165,14 @@ function ckdb() {
console.log(json[letters]); console.log(json[letters]);
if (json[bbcode]) { if (json[bbcode]) {
if (json[bbcode] == "enabled") { if (json[bbcode] == "enabled") {
localStorage.setItem("bb_" + acct_id, "true");
} else { } else {
localStorage.removeItem("bb_" + acct_id);
$("[data-activates='bbcode']").addClass("disabled"); $("[data-activates='bbcode']").addClass("disabled");
$("[data-activates='bbcode']").prop("disabled", true); $("[data-activates='bbcode']").prop("disabled", true);
} }
} else { } else {
localStorage.removeItem("bb_" + acct_id);
$("[data-activates='bbcode']").addClass("disabled"); $("[data-activates='bbcode']").addClass("disabled");
$("[data-activates='bbcode']").addClass("disabled", true); $("[data-activates='bbcode']").addClass("disabled", true);
} }
@ -172,7 +180,10 @@ function ckdb() {
$("#textarea").attr("data-length", json[letters]); $("#textarea").attr("data-length", json[letters]);
} else {} } else {}
if (json[domain + "_markdown"] == "enabled") { if (json[domain + "_markdown"] == "enabled") {
localStorage.setItem("md_" + acct_id, "true");
$(".markdown").show(); $(".markdown").show();
}else{
localStorage.removeItem("bb_" + acct_id);
} }
}); });

View File

@ -1,4 +1,20 @@
//BBCodeとMarkdownの入力・パーサー //BBCodeとMarkdownの入力・パーサー
//アカウント変えた時にBBとかMDとか
function mdCheck(){
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("bb_"+acct_id) && !localStorage.getItem("md_"+acct_id)){
$(".markdown").addClass("hide");
$(".anti-markdown").addClass("hide");
}else{
$(".markdown").removeClass("hide");
$(".anti-markdown").addClass("hide");
}
if($(".markdown").hasClass("hide")){
localStorage.setItem("md","hide");
}else{
localStorage.removeItem("md");
}
}
//BOXのトグルボタン //BOXのトグルボタン
function mdToggle(){ function mdToggle(){
$(".markdown").toggleClass("hide"); $(".markdown").toggleClass("hide");
@ -17,6 +33,10 @@ if(localStorage.getItem("md")=="hide"){
} }
//タグを選んだ時に(BB版) //タグを選んだ時に(BB版)
function tagsel(tag){ function tagsel(tag){
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("bb_"+acct_id)){
return false;
}
if(tag=="large" || tag=="size" || tag=="color" || tag=="colorhex"){ if(tag=="large" || tag=="size" || tag=="color" || tag=="colorhex"){
var sub=$("#"+tag).val(); var sub=$("#"+tag).val();
var sub = sub.replace( /#/g , "" ) ; var sub = sub.replace( /#/g , "" ) ;
@ -52,6 +72,10 @@ function nl2br(str) {
} }
//テキストボックスで選択したやつをタグで囲む(BB版) //テキストボックスで選択したやつをタグで囲む(BB版)
function surroundHTML(tagS,tagE) { function surroundHTML(tagS,tagE) {
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("bb_"+acct_id)){
return false;
}
var target = document.getElementById("textarea"); var target = document.getElementById("textarea");
var pos = getAreaRange(target); var pos = getAreaRange(target);
@ -75,6 +99,10 @@ function surroundHTML(tagS,tagE) {
$("#textarea").focus(); $("#textarea").focus();
} }
function surroundMD(tagS,tagE,ck,br) { function surroundMD(tagS,tagE,ck,br) {
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("md_"+acct_id)){
return false;
}
var target = document.getElementById("textarea"); var target = document.getElementById("textarea");
var pos = getAreaRange(target); var pos = getAreaRange(target);
@ -113,6 +141,10 @@ function getAreaRange(obj) {
//Markdownのリンク挿入 //Markdownのリンク挿入
function markdownLink(){ function markdownLink(){
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("md_"+acct_id)){
return false;
}
var linkIns="["+$("#linkt").val()+"]"+"("+$("#link2").val()+")"; var linkIns="["+$("#linkt").val()+"]"+"("+$("#link2").val()+")";
if(linkIns!="[]()"){ if(linkIns!="[]()"){
$("#textarea").val($("#textarea").val()+linkIns); $("#textarea").val($("#textarea").val()+linkIns);
@ -123,6 +155,10 @@ function markdownLink(){
} }
//Markdownのimg挿入 //Markdownのimg挿入
function markdownImage(){ function markdownImage(){
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("md_"+acct_id)){
return false;
}
var imgIns="!["+$("#image").val()+"]"+"("+$("#image2").val()+")"; var imgIns="!["+$("#image").val()+"]"+"("+$("#image2").val()+")";
if(imgIns!="![]()"){ if(imgIns!="![]()"){
$("#textarea").val($("#textarea").val()+imgIns); $("#textarea").val($("#textarea").val()+imgIns);

View File

@ -107,7 +107,7 @@ function emojiInsert(code, del) {
emoji(); emoji();
} else { } else {
var regExp = new RegExp(del, "g"); var regExp = new RegExp(del, "g");
var now = now.replace(now, ""); var now = now.replace(regExp, "");
$("#textarea").val(now + " " + code); $("#textarea").val(now + " " + code);
} }
$("#textarea").focus(); $("#textarea").focus();

View File

@ -19,6 +19,7 @@ input.addEventListener("focus", function() {
} else if (acct[1]) { } else if (acct[1]) {
var q = acct[1]; var q = acct[1];
} else { } else {
$("#suggest").html("");
return; return;
} }
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);

View File

@ -181,7 +181,7 @@ function parse(obj, mix, acct_id) {
',\''+id+'\')" class="add-show pointer">URL解析</a></div><span class="cbadge"><i class="fa fa-clock-o"></i>' + ',\''+id+'\')" class="add-show pointer">URL解析</a></div><span class="cbadge"><i class="fa fa-clock-o"></i>' +
date(toot.created_at, datetype) + '</span>' + date(toot.created_at, datetype) + '</span>' +
'<span class="cbadge">via ' + via + '<span class="cbadge">via ' + via +
'<help class="white-text">どこから投稿したか</help></span>' + mentions + tags + '</span>' + mentions + tags +
'<div style="padding:0; margin:0; top:-20px; display:flex; justify-content:space-around; width:500px; max-width:100%; ">' + '<div style="padding:0; margin:0; top:-20px; display:flex; justify-content:space-around; width:500px; max-width:100%; ">' +
'<div><a onclick="re(\'' + toot.id + '\',\'' + toot.account.acct + '\',' + '<div><a onclick="re(\'' + toot.id + '\',\'' + toot.account.acct + '\',' +
acct_id + acct_id +

View File

@ -35,6 +35,7 @@
localStorage.setItem("prof_" + key, acct.prof); localStorage.setItem("prof_" + key, acct.prof);
localStorage.setItem("domain_" + key, acct.domain); localStorage.setItem("domain_" + key, acct.domain);
localStorage.setItem(acct.domain + "_at", acct.at); localStorage.setItem(acct.domain + "_at", acct.at);
ckdb(key);
}); });
} }
var col = localStorage.getItem("column"); var col = localStorage.getItem("column");

View File

@ -1,6 +1,6 @@
{ {
"name": "TheDesk", "name": "TheDesk",
"version": "11.7.0", "version": "11.8.0",
"description": "TheDesk on Mastodonはシンプルと多機能を両立したデスクトップ向けクライアントです", "description": "TheDesk on Mastodonはシンプルと多機能を両立したデスクトップ向けクライアントです",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {