TheDesk Miho (ver.8)
This commit is contained in:
		
							
								
								
									
										12
									
								
								LICENSE.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								LICENSE.md
									
									
									
									
									
								
							@@ -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)
 | 
			
		||||
 | 
			
		||||
以下のライセンスに基づき当ソフトウェアを公開します。  
 | 
			
		||||
- 以下の条件の範囲内で再頒布を認めます。
 | 
			
		||||
  - 必ず上記コピーライトを改変無く含めること。(必ず年度が2018であること)
 | 
			
		||||
  - 改変しない場合、必ずソフトウェアのタイトルが"TheDesk"であり、ウィンドウのタイトルに"TheDesk"が常に表示されている状態にすること。
 | 
			
		||||
  - 改変する場合、必ずソフトウェアのタイトルの末尾が"Powered by TheDesk"であり、ウィンドウのタイトルに"TheDesk"が常に表示されている状態にすること。また、ユーザーの見えるところにTheDesk [使用バージョン名]を表示すること。
 | 
			
		||||
  - 必ず上記コピーライトと本ライセンス条項を改変無く含めること。(必ず年度が2018であること。他言語翻訳を付与する場合も原文を表記。)
 | 
			
		||||
  - 変更を含め全てのコードを公開すること。商用利用やライセンスの変更は認めない。
 | 
			
		||||
  - プラットフォームはElectronやCordova、またはそれに準ずるものであること。Webアプリケーションとしての配布は認めない。
 | 
			
		||||
  - 改変しない場合(他のプラットフォームに移植等)、必ずソフトウェアのタイトルが"TheDesk"であり、アイコンを変更せず、またウィンドウのタイトルに"TheDesk"が常に表示されている状態にすること。
 | 
			
		||||
  - 改変する場合、必ずソフトウェアのタイトルの末尾が"Powered by TheDesk"であり、ユーザーの見えるところにTheDesk [使用バージョン名]を表示すること。
 | 
			
		||||
  - ロゴはTheDeskを想起させるものであること。ソフトの改変を行う場合はアイコンを必ず変更すること。
 | 
			
		||||
- このソフトの使用、再頒布に伴う一切の責任をTheDeskは負いません。
 | 
			
		||||
- [https://desk.cutls.com](https://desk.cutls.com)で公式に頒布されるソフトのみ[kirishima.cloud](https://desk.cutls.com)(アスタルテ)公認クライアントです。
 | 
			
		||||
@@ -5,13 +5,13 @@ Download:[TheDesk](https://desk.cutls.com)
 | 
			
		||||
 | 
			
		||||
## 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/構成
 | 
			
		||||
 | 
			
		||||
app:Raw files(you can download to modify or check)  
 | 
			
		||||
 | 
			
		||||
app:そのままのファイル  
 | 
			
		||||
app:そのままのファイル。ダウンロード→テスト用  
 | 
			
		||||
 | 
			
		||||
## Language/言語
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,7 @@
 | 
			
		||||
アカウントを追加<br>
 | 
			
		||||
<div id="add">
 | 
			
		||||
<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>
 | 
			
		||||
<span style="font-family:Open Sans;">Supports</span>
 | 
			
		||||
<div id="support"></div>
 | 
			
		||||
@@ -56,5 +57,6 @@
 | 
			
		||||
マストドンアップデート:<span id="ins-sys"></span><br>
 | 
			
		||||
 | 
			
		||||
<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/platform/end.js"></script>
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
<script type="text/javascript" src="./js/common/keyshortcut.js"></script>
 | 
			
		||||
<script type="text/javascript" src="./js/common/modal.js"></script>
 | 
			
		||||
<script>
 | 
			
		||||
var ver="Miho (ver.7)";
 | 
			
		||||
var ver="Miho (ver.8)";
 | 
			
		||||
//betaを入れるとバージョンチェックしない
 | 
			
		||||
//var ver="beta";
 | 
			
		||||
var acct_id=0;
 | 
			
		||||
@@ -34,6 +34,7 @@ var tlid=0;
 | 
			
		||||
<!--最初にログインする-->
 | 
			
		||||
ログインしたいインスタンスのアドレス<br>
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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="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 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;">
 | 
			
		||||
  <span class="sml"><span class="gray">画面内どこでもドラッグ・アンド・ドロップできます。</span><br></span>アカウント選択</span><br>
 | 
			
		||||
 <div class="input-field">
 | 
			
		||||
    <select id="post-acct-sel" class="acct-sel">
 | 
			
		||||
    <select id="post-acct-sel" class="acct-sel" onchange="mdCheck()">
 | 
			
		||||
		
 | 
			
		||||
    </select>
 | 
			
		||||
  </div>
 | 
			
		||||
@@ -362,6 +364,7 @@ var tlid=0;
 | 
			
		||||
<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/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/img.js"></script>
 | 
			
		||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
 | 
			
		||||
 
 | 
			
		||||
@@ -22,11 +22,19 @@ $(function($) {
 | 
			
		||||
			hide();
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		//Esc:消す
 | 
			
		||||
		//F5リロード
 | 
			
		||||
		if (e.keyCode === 116) {
 | 
			
		||||
			location.href = "index.html";
 | 
			
		||||
			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にフォーカスなし時
 | 
			
		||||
		if (!hasFocus && !hasFocus2) {
 | 
			
		||||
			//X:開閉
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										49
									
								
								app/js/login/instance.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								app/js/login/instance.js
									
									
									
									
									
										Normal 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);
 | 
			
		||||
@@ -1,10 +1,12 @@
 | 
			
		||||
/*ログイン処理・認証までのJS*/
 | 
			
		||||
//最初に読むやつ
 | 
			
		||||
//アスタルテ判定初期化
 | 
			
		||||
localStorage.removeItem("kirishima")
 | 
			
		||||
function ck() {
 | 
			
		||||
	var domain = localStorage.getItem("domain_0");
 | 
			
		||||
	var at = localStorage.getItem(domain + "_at");
 | 
			
		||||
	if (at) {
 | 
			
		||||
		ckdb();
 | 
			
		||||
		ckdb(0);
 | 
			
		||||
		$("#tl").show();
 | 
			
		||||
		parseColumn();
 | 
			
		||||
		multi();
 | 
			
		||||
@@ -138,8 +140,12 @@ function getdata() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//TheDesk独自のマストドンDBでMarkdownやBBCodeの対応、文字数制限をチェック
 | 
			
		||||
function ckdb() {
 | 
			
		||||
function ckdb(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 bbcode = domain + "_bbcode";
 | 
			
		||||
	var letters = domain + "_letters";
 | 
			
		||||
@@ -159,12 +165,14 @@ function ckdb() {
 | 
			
		||||
		console.log(json[letters]);
 | 
			
		||||
		if (json[bbcode]) {
 | 
			
		||||
			if (json[bbcode] == "enabled") {
 | 
			
		||||
 | 
			
		||||
				localStorage.setItem("bb_" + acct_id, "true");
 | 
			
		||||
			} else {
 | 
			
		||||
				localStorage.removeItem("bb_" + acct_id);
 | 
			
		||||
				$("[data-activates='bbcode']").addClass("disabled");
 | 
			
		||||
				$("[data-activates='bbcode']").prop("disabled", true);
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			localStorage.removeItem("bb_" + acct_id);
 | 
			
		||||
			$("[data-activates='bbcode']").addClass("disabled");
 | 
			
		||||
			$("[data-activates='bbcode']").addClass("disabled", true);
 | 
			
		||||
		}
 | 
			
		||||
@@ -172,7 +180,10 @@ function ckdb() {
 | 
			
		||||
			$("#textarea").attr("data-length", json[letters]);
 | 
			
		||||
		} else {}
 | 
			
		||||
		if (json[domain + "_markdown"] == "enabled") {
 | 
			
		||||
			localStorage.setItem("md_" + acct_id, "true");
 | 
			
		||||
			$(".markdown").show();
 | 
			
		||||
		}else{
 | 
			
		||||
			localStorage.removeItem("bb_" + acct_id);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	});
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,20 @@
 | 
			
		||||
//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のトグルボタン
 | 
			
		||||
function mdToggle(){
 | 
			
		||||
	$(".markdown").toggleClass("hide");
 | 
			
		||||
@@ -17,6 +33,10 @@ if(localStorage.getItem("md")=="hide"){
 | 
			
		||||
}
 | 
			
		||||
//タグを選んだ時に(BB版)
 | 
			
		||||
  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"){
 | 
			
		||||
			var sub=$("#"+tag).val();
 | 
			
		||||
			var sub = sub.replace( /#/g , "" ) ;
 | 
			
		||||
@@ -52,6 +72,10 @@ function nl2br(str) {
 | 
			
		||||
}
 | 
			
		||||
//テキストボックスで選択したやつをタグで囲む(BB版)
 | 
			
		||||
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 pos = getAreaRange(target);
 | 
			
		||||
 | 
			
		||||
@@ -75,6 +99,10 @@ function surroundHTML(tagS,tagE) {
 | 
			
		||||
			$("#textarea").focus();
 | 
			
		||||
  }
 | 
			
		||||
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 pos = getAreaRange(target);
 | 
			
		||||
 | 
			
		||||
@@ -113,6 +141,10 @@ function getAreaRange(obj) {
 | 
			
		||||
 | 
			
		||||
//Markdownのリンク挿入
 | 
			
		||||
function markdownLink(){
 | 
			
		||||
	var acct_id = $("#post-acct-sel").val();
 | 
			
		||||
	  if(!localStorage.getItem("md_"+acct_id)){
 | 
			
		||||
		  return false;
 | 
			
		||||
	  }
 | 
			
		||||
	var linkIns="["+$("#linkt").val()+"]"+"("+$("#link2").val()+")";
 | 
			
		||||
	if(linkIns!="[]()"){
 | 
			
		||||
	$("#textarea").val($("#textarea").val()+linkIns);
 | 
			
		||||
@@ -123,6 +155,10 @@ function markdownLink(){
 | 
			
		||||
}
 | 
			
		||||
//Markdownのimg挿入
 | 
			
		||||
function markdownImage(){
 | 
			
		||||
	var acct_id = $("#post-acct-sel").val();
 | 
			
		||||
	  if(!localStorage.getItem("md_"+acct_id)){
 | 
			
		||||
		  return false;
 | 
			
		||||
	  }
 | 
			
		||||
	var imgIns="!["+$("#image").val()+"]"+"("+$("#image2").val()+")";
 | 
			
		||||
	if(imgIns!="![]()"){
 | 
			
		||||
	$("#textarea").val($("#textarea").val()+imgIns);
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@ function emojiInsert(code, del) {
 | 
			
		||||
		emoji();
 | 
			
		||||
	} else {
 | 
			
		||||
		var regExp = new RegExp(del, "g");
 | 
			
		||||
		var now = now.replace(now, "");
 | 
			
		||||
		var now = now.replace(regExp, "");
 | 
			
		||||
		$("#textarea").val(now + " " + code);
 | 
			
		||||
	}
 | 
			
		||||
	$("#textarea").focus();
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ input.addEventListener("focus", function() {
 | 
			
		||||
			} else if (acct[1]) {
 | 
			
		||||
				var q = acct[1];
 | 
			
		||||
			} else {
 | 
			
		||||
				$("#suggest").html("");
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			var domain = localStorage.getItem("domain_" + acct_id);
 | 
			
		||||
 
 | 
			
		||||
@@ -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>' +
 | 
			
		||||
			date(toot.created_at, datetype) + '</span>' +
 | 
			
		||||
			'<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><a onclick="re(\'' + toot.id + '\',\'' + toot.account.acct + '\',' +
 | 
			
		||||
			acct_id +
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@
 | 
			
		||||
				localStorage.setItem("prof_" + key, acct.prof);
 | 
			
		||||
				localStorage.setItem("domain_" + key, acct.domain);
 | 
			
		||||
				localStorage.setItem(acct.domain + "_at", acct.at);
 | 
			
		||||
				ckdb(key);
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
		var col = localStorage.getItem("column");
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "TheDesk",
 | 
			
		||||
  "version": "11.7.0",
 | 
			
		||||
  "version": "11.8.0",
 | 
			
		||||
  "description": "TheDesk on Mastodonはシンプルと多機能を両立したデスクトップ向けクライアントです",
 | 
			
		||||
  "main": "main.js",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user