WIP done some ToDO

This commit is contained in:
Cutls 2019-04-11 02:59:13 +09:00
parent 0ad7bf9036
commit 1c16a5f4a0
16 changed files with 168 additions and 64 deletions

View File

@ -505,7 +505,26 @@ p:not(:last-child){
.votebtn:hover{ .votebtn:hover{
background-color:var(--color); background-color:var(--color);
} }
.jump{
display: inline-block; animation: jump 0.75s linear infinite;
}
@keyframes jump {
0% {
transform: translateY(0);
}
25% {
transform: translateY(-16px);
}
50% {
transform: translateY(0);
}
75% {
transform: translateY(-8px);
}
100% {
transform: translateY(0);
}
}
@keyframes fadeInDown { @keyframes fadeInDown {
from { from {
opacity: 0; opacity: 0;

View File

@ -154,11 +154,6 @@ function emojiList(target,reaction) {
} }
$("#emoji-next").removeClass("disabled"); $("#emoji-next").removeClass("disabled");
$("#emoji-count").text(ct); $("#emoji-count").text(ct);
if(localStorage.getItem("emoji-zero-width")){
var brank="";
}else{
var brank=" ";
}
for (i = start; i < start + 126; i++) { for (i = start; i < start + 126; i++) {
var emoji = obj[i]; var emoji = obj[i];
if (emoji) { if (emoji) {
@ -167,7 +162,7 @@ function emojiList(target,reaction) {
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>'; ':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
}else{ }else{
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode + html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
':'+brank+'\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>'; ':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
} }
} }
@ -179,14 +174,19 @@ function emojiList(target,reaction) {
function emojiInsert(code, del) { function emojiInsert(code, del) {
var now = $("#textarea").val(); var now = $("#textarea").val();
var selin = localStorage.getItem("cursor"); var selin = localStorage.getItem("cursor");
if(localStorage.getItem("emoji-zero-width")=="yes"){
var brank="";
}else{
var brank=" ";
}
console.log(selin); console.log(selin);
var now = $("#textarea").val(); var now = $("#textarea").val();
if(selin>0){ if(selin>0){
var before = now.substr(0, selin); var before = now.substr(0, selin);
var after = now.substr(selin, now.length); var after = now.substr(selin, now.length);
newt = before + " "+ code+" " + after; newt = before + brank+ code+brank + after;
}else{ }else{
newt = code+" "; newt = code+brank;
} }
if (!del) { if (!del) {
$("#textarea").val(newt); $("#textarea").val(newt);
@ -194,7 +194,7 @@ function emojiInsert(code, del) {
} else { } else {
var regExp = new RegExp(del, "g"); var regExp = new RegExp(del, "g");
var now = now.replace(regExp, ""); var now = now.replace(regExp, "");
$("#textarea").val(now + " " + code); $("#textarea").val(now + brank + code);
} }
$("#textarea").focus(); $("#textarea").focus();

View File

@ -65,7 +65,7 @@ function reactiontoggle(id,acct_id,tlid){
var json = httpreq.response; var json = httpreq.response;
console.log(json); console.log(json);
if(json.reactionCounts){ if(json.reactionCounts){
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"]; var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding","star"];
for(var i=0;i<reactions.length;i++){ for(var i=0;i<reactions.length;i++){
if(json.reactionCounts[reactions[i]]){ if(json.reactionCounts[reactions[i]]){
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]]) $("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
@ -133,8 +133,12 @@ function reactRefresh(acct_id,id){
return false; return false;
} }
var poll=""; var poll="";
console.log(json); if(json.error){
$("[toot-id=" + id + "]").hide();
$("[toot-id=" + id + "]").remove();
}else{
reactRefreshCore(json) reactRefreshCore(json)
}
}); });
} }
function reactRefreshCore(json){ function reactRefreshCore(json){

View File

@ -236,6 +236,8 @@ function del(id, acct_id) {
httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id})); httpreq.send(JSON.stringify({i:at,noteId:id}));
$("[toot-id=" + id+ "]").hide();
$("[toot-id=" + id + "]").remove();
}else{ }else{
var start = "https://" + domain + "/api/v1/statuses/" + id; var start = "https://" + domain + "/api/v1/statuses/" + id;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();

View File

@ -160,6 +160,15 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{ }else{
disname=""; disname="";
} }
//絵文字があれば
Object.keys(toot.user.emojis).forEach(function(key5) {
var emoji = toot.user.emojis[key5];
var shortcode = emoji.name;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
if (mix == "notf") { if (mix == "notf") {
if (gif == "yes") { if (gif == "yes") {
noticeavatar = toot.user.avatarUrl; noticeavatar = toot.user.avatarUrl;
@ -192,22 +201,23 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
"congrats":"🎉", "congrats":"🎉",
"amgry":"💢", "amgry":"💢",
"confused":"😥", "confused":"😥",
"pudding":"🍮" "pudding":"🍮",
"star":"⭐"
} }
var icon=reactions[toot.reaction]; var icon=reactions[toot.reaction];
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"]; var emojisData = JSON.parse(localStorage.getItem("emoji_" + acct_id));
for(var i=0;i<reactions.length;i++){ if(!icon){
if(toot.note.reactionCounts[reactions[i]]){ if(emojisData){
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(toot.note.reactionCounts[reactions[i]]) var num = emojisData.length;
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide") var ehtml="";
}else{ for (i = 0; i < num; i++) {
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0) var emoji = emojisData[i];
if($("#pub_" + id +" .reactions").hasClass("fullreact")){ if (":"+emoji.shortcode+":"==toot.reaction) {
$("#pub_" + id +" .re-"+reactions[i]).addClass("hide") if (emoji) {
}else{ icon='<img src="'+emoji.url+'" style="width:1rem">';
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide") }
}
} }
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(toot.note.reactionCounts[reactions[i]])
} }
} }
}else{ }else{
@ -250,19 +260,19 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var ipc = electron.ipcRenderer; var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform; var os = electron.remote.process.platform;
var options = { var options = {
body: toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tagstemp(toot.status.content), body: toot.user.name+"(" + toot.user.username +")"+what+"\n\n"+$.strip_tagstemp(toot.note.text),
icon: toot.account.avatar icon: toot.user.avatarUrl
}; };
if(os=="darwin"){ if(os=="darwin"){
var n = new Notification('TheDesk:'+domain, options); var n = new Notification('TheDesk:'+domain, options);
}else{ }else{
ipc.send('native-notf', [ ipc.send('native-notf', [
'TheDesk:'+domain, 'TheDesk:'+domain,
toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tagstemp(toot.status.content), toot.user.name+"(" + toot.user.username +")"+what+"\n\n"+$.strip_tagstemp(toot.note.text),
toot.account.avatar, toot.user.avatarUrl,
"toot", "toot",
acct_id, acct_id,
toot.status.id toot.note.id
]); ]);
} }
} }
@ -403,17 +413,35 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
content=content.replace(/`(.+)`/gi, '<code>$1</code>') content=content.replace(/`(.+)`/gi, '<code>$1</code>')
content=content.replace(/(http(s)?:\/\/[\x21-\x7e]+)/gi, '<a href="$1" target="_blank">$1</a>') content=content.replace(/(http(s)?:\/\/[\x21-\x7e]+)/gi, '<a href="$1" target="_blank">$1</a>')
content=content.replace(/\(\(\((.+)\)\)\)/gi, '<span class="shake">$1</span>') content=content.replace(/\(\(\((.+)\)\)\)/gi, '<span class="shake">$1</span>')
content=content.replace(/<motion>(.+)<\/motion>/gi, '<span class="shake">$1</span>') content=content.replace(/&lt;motion&gt;(.+)&lt;\/motion&gt;/gi, '<span class="shake">$1</span>')
content=content.replace(/\*\*\*([^*]+)\*\*\*/gi, '<span class="shake" style="font-size:200%">$1</span>') content=content.replace(/\*\*\*([^*]+)\*\*\*/gi, '<span class="shake" style="font-size:200%">$1</span>')
content=content.replace(/\*\*([^*]+)\*\*/gi, '<b>$1</b>') content=content.replace(/\*\*([^*]+)\*\*/gi, '<b>$1</b>')
content=content.replace(/^(.+)\s(検索|search)$/gmi, '<div class="input-field"><i class="material-icons prefix">search</i><input type="text" style="width:calc( 60% - 80px);" name="q" value="$1" id="srcbox_'+toot.id+'"><label for="src" data-trans="src" class="">検索</label><button class="btn waves-effect indigo" style="width:40%;" data-trans-i="src" onclick="goGoogle(\''+toot.id+'\')">検索</button></div>') content=content.replace(/^(.+)\s(検索|search)$/gmi, '<div class="input-field"><i class="material-icons prefix">search</i><input type="text" style="width:calc( 60% - 80px);" name="q" value="$1" id="srcbox_'+toot.id+'"><label for="src" data-trans="src" class="">検索</label><button class="btn waves-effect indigo" style="width:40%;" data-trans-i="src" onclick="goGoogle(\''+toot.id+'\')">検索</button></div>')
content=content.replace(/\[(.+)\]\(<a href="(http(s)?:\/\/[\x21-\x7e]+)".+\)/gi,'<a href="$2" target="_blank">$1</a>'); content=content.replace(/\[(.+)\]\(<a href="(http(s)?:\/\/[\x21-\x7e]+)".+\)/gi,'<a href="$2" target="_blank">$1</a>');
content=content.replace(/&lt;center&gt;/gi, '<div class="center">')
content=content.replace(/&lt;\/center&gt;/gi, '</div>')
content=content.replace(/&lt;flip&gt;(.+)&lt;\/flip&gt;/gi, '<span class="fa fa-flip-horizontal">$1</span>')
content=content.replace(/&lt;small&gt;(.+)&lt;\/small&gt;/gi, '<small>$1</small>')
content=content.replace(/&lt;i&gt;(.+)&lt;\/i&gt;/gi, '<i>$1</i>')
content=content.replace(/&lt;spin&gt;(.+)&lt;\/spin&gt;/gi, '<span class="fa fa-spin">$1</span>')
content=content.replace(/\*\*(.+)\*\*/gi, '<b>$1</b>')
content=content.replace(/&lt;jump&gt;(.+)&lt;\/jump&gt;/gi, '<span class="jump">$1</jump>')
content=twemoji.parse(content); content=twemoji.parse(content);
}else{ }else{
content=""; content="";
} }
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function(key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.name;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
});
}
if(dis_name){ if(dis_name){
dis_name=twemoji.parse(dis_name); dis_name=twemoji.parse(dis_name);
}else{ }else{
@ -728,6 +756,11 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
content='<span class="gray">This post has no content. It may be media-only, private or deleted.</span>'; content='<span class="gray">This post has no content. It may be media-only, private or deleted.</span>';
} }
var trans=""; var trans="";
if(toot.user.emojis){
var actemojick = toot.user.emojis[0];
}else{
var actemojick=false;
}
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' + templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[ boostback + ' ' + fav_app + ' ' + rt_app + ' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
key].created_at, 'unix') + '" '+if_notf+' onmouseover="mov(\'' + toot.id + '\',\''+tlid+'\',\'mv\')" onclick="mov(\'' + toot.id + '\',\''+tlid+'\',\'cl\')" onmouseout="resetmv(\'mv\')" reacted="'+reacted+'">' + key].created_at, 'unix') + '" '+if_notf+' onmouseover="mov(\'' + toot.id + '\',\''+tlid+'\',\'mv\')" onclick="mov(\'' + toot.id + '\',\''+tlid+'\',\'cl\')" onmouseout="resetmv(\'mv\')" reacted="'+reacted+'">' +

View File

@ -233,13 +233,13 @@ function notfCommon(acct_id, tlid, sys) {
var ipc = electron.ipcRenderer; var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform; var os = electron.remote.process.platform;
var options = { var options = {
body: ct+lang_notf_new[lang], body: ct+lang.lang_notf_new[lang],
icon: localStorage.getItem("prof_"+acct_id) icon: localStorage.getItem("prof_"+acct_id)
}; };
if(os=="darwin"){ if(os=="darwin"){
var n = new Notification('TheDesk:'+domain, options); var n = new Notification('TheDesk:'+domain, options);
}else{ }else{
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]); ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
} }
} }

View File

@ -44,7 +44,7 @@
<div id="envView"> <div id="envView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<templete v-html=item.text.desc></templete><br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">Notification test</a><br></template> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">Notification test</a><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
@ -62,7 +62,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
</template> </template><br>
</template> </template>
</div> </div>
<h5>Font</h5> <h5>Font</h5>
@ -153,7 +153,7 @@
<div id="tlView"> <div id="tlView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
{{item.text.desc}}<br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<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" /> <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" />
@ -170,7 +170,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
</template> </template><br>
</template> </template>
</div> </div>
</div> </div>
@ -183,7 +183,7 @@
<div id="postView"> <div id="postView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
{{item.text.desc}}<br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)"> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
@ -203,7 +203,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
</template> </template><br>
</template> </template>
</div> </div>
</div> </div>

View File

@ -476,5 +476,16 @@ var postConstruction=[
} }
] ]
} }
},{
id:"zero",
storage:"emoji-zero-width",
checkbox:true,
setValue:"normal",
setValue:"no",
text:{
head:"Zero-width space when inserting emojis",
desc:"",
checkbox:yesno
}
} }
] ]

View File

@ -44,7 +44,7 @@
<div id="envView"> <div id="envView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<templete v-html=item.text.desc></templete><br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">通知テスト</a><br></template> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">通知テスト</a><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
@ -62,7 +62,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
</template> </template><br>
</template> </template>
</div> </div>
<h5>フォント</h5> <h5>フォント</h5>
@ -153,7 +153,7 @@
<div id="tlView"> <div id="tlView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
{{item.text.desc}}<br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<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" /> <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" />
@ -170,7 +170,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
</template> </template><br>
</template> </template>
</div> </div>
</div> </div>
@ -183,7 +183,7 @@
<div id="postView"> <div id="postView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
{{item.text.desc}}<br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)"> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
@ -203,7 +203,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
</template> </template><br>
</template> </template>
</div> </div>
</div> </div>

View File

@ -476,5 +476,16 @@ var postConstruction=[
} }
] ]
} }
},{
id:"zero",
storage:"emoji-zero-width",
checkbox:true,
setValue:"normal",
setValue:"no",
text:{
head:"絵文字にゼロ幅スペースを使う",
desc:"",
checkbox:yesno
}
} }
] ]

View File

@ -114,6 +114,7 @@
"secwarn":"Toot with other visibility setting", "secwarn":"Toot with other visibility setting",
"nothing":"Hidden", "nothing":"Hidden",
"localonly":"Local Only", "localonly":"Local Only",
"zeroWidthEmoji":"Zero-width space when inserting emojis",
"keysc":"Keyboard shortcut Preferences", "keysc":"Keyboard shortcut Preferences",
"iks":"Easy inserter", "iks":"Easy inserter",
"okswarn":"You can insert any letters and emojis with only 3 keys", "okswarn":"You can insert any letters and emojis with only 3 keys",

View File

@ -114,6 +114,7 @@
"secwarn":"公開範囲の変更とトゥートを一発でできます。", "secwarn":"公開範囲の変更とトゥートを一発でできます。",
"nothing":"表示しない", "nothing":"表示しない",
"localonly":"ローカル限定", "localonly":"ローカル限定",
"zeroWidthEmoji":"絵文字にゼロ幅スペースを使う",
"keysc":"キーボードショートカットの設定", "keysc":"キーボードショートカットの設定",
"iks":"簡単文字入力", "iks":"簡単文字入力",
"okswarn":"絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。", "okswarn":"絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。",

View File

@ -44,7 +44,7 @@
<div id="envView"> <div id="envView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<templete v-html=item.text.desc></templete><br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">@@nntest@@</a><br></template> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">@@nntest@@</a><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
@ -62,7 +62,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
</template> </template><br>
</template> </template>
</div> </div>
<h5>@@font@@</h5> <h5>@@font@@</h5>
@ -153,7 +153,7 @@
<div id="tlView"> <div id="tlView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
{{item.text.desc}}<br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<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" /> <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" />
@ -170,7 +170,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
</template> </template><br>
</template> </template>
</div> </div>
</div> </div>
@ -183,7 +183,7 @@
<div id="postView"> <div id="postView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
{{item.text.desc}}<br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)"> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
@ -203,7 +203,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
</template> </template><br>
</template> </template>
</div> </div>
</div> </div>

View File

@ -476,5 +476,16 @@ var postConstruction=[
} }
] ]
} }
},{
id:"zero",
storage:"emoji-zero-width",
checkbox:true,
setValue:"normal",
setValue:"no",
text:{
head:"@@zeroWidthEmoji@@",
desc:"",
checkbox:yesno
}
} }
] ]

View File

@ -44,7 +44,7 @@
<div id="envView"> <div id="envView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<templete v-html=item.text.desc></templete><br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">crwdns540:0crwdne540:0</a><br></template> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">crwdns540:0crwdne540:0</a><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
@ -62,7 +62,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
</template> </template><br>
</template> </template>
</div> </div>
<h5>crwdns544:0crwdne544:0</h5> <h5>crwdns544:0crwdne544:0</h5>
@ -153,7 +153,7 @@
<div id="tlView"> <div id="tlView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
{{item.text.desc}}<br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<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" /> <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" />
@ -170,7 +170,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
</template> </template><br>
</template> </template>
</div> </div>
</div> </div>
@ -183,7 +183,7 @@
<div id="postView"> <div id="postView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
{{item.text.desc}}<br> <template v-if=item.text.desc><templete v-html=item.text.desc></templete><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)"> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
@ -203,7 +203,7 @@
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}} <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> </template>
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
</template> </template><br>
</template> </template>
</div> </div>
</div> </div>

View File

@ -476,5 +476,16 @@ var postConstruction=[
} }
] ]
} }
},{
id:"zero",
storage:"emoji-zero-width",
checkbox:true,
setValue:"normal",
setValue:"no",
text:{
head:"@@zeroWidthEmoji@@",
desc:"",
checkbox:yesno
}
} }
] ]