Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
akoya-tomo committed Sep 12, 2018
2 parents 117d271 + 48dc011 commit c8766b2
Show file tree
Hide file tree
Showing 7 changed files with 207 additions and 165 deletions.
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@

## インストール
**GitHub**
[![インストールボタン](images/install_button.png "クリックでアドオンをインストール")](https://github.com/akoya-tomo/koshian_ng_kai/releases/download/v1.2.2/koshian_ng_kai-1.2.2-an+fx.xpi)
[![インストールボタン](images/install_button.png "クリックでアドオンをインストール")](https://github.com/akoya-tomo/koshian_ng_kai/releases/download/v1.3.0/koshian_ng_kai-1.3.0-an+fx.xpi)

※「接続エラーのため、アドオンをダウンロードできませんでした。」と表示されてインストール出来ないときはインストールボタンを右クリックしてxpiファイルをダウンロードし、メニューのツール→アドオン(またはCtrl+Shift+A)で表示されたアドオンマネージャーのページにxpiファイルをドラッグ&ドロップして下さい。

## 追加機能の補足
* NGワードを登録した後でも「本文」「メール欄など」「大文字・小文字を区別しない」のチェックは自由に変更できます。「本文」「メ欄」のチェックを外せば、NGワードを登録したまま無効にすることもできます。
* NGワードに登録済みと同じワードを登録すると重複せず新しい設定に上書きされます。これを利用して設定画面を開かないでツールバーボタンのポップアップから設定を変更することができます。
* NGワードに登録済みと同じワードを登録すると重複せず新しい設定に上書きされます。

## 注意事項
* 本アドオンを有効にしたときはオリジナル版を無効にするか削除して下さい。
Expand All @@ -42,6 +42,12 @@
- 永続的な登録を必要としないIDやIPの登録を想定しています。

## 更新履歴
* v1.3.0 2018-09-12
- \[NGワード\]ボタンにマウスオーバーすると該当したNGワードをポップアップ表示する機能を追加
- ツールバーボタンを押したときに選択した文字列に正規表現でエスケープが必要な文字が含まれていたらエスケープを追加するように修正
- 赤福Extendedのリロード検出を修正
- スレ内のNGワードの検索速度を改善
- レス内のIPの全ての文字列を取得できていない不具合を修正
* v1.2.2 2018-09-09
- [赤福Extended](https://toshiakisp.github.io/akahuku-firefox-sp/)のリロードに対応
* v1.2.1 2018-05-14
Expand Down
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ echo "addon_ver = $addon_ver"
filename="${OUTPUT_DIR}/${addon_name}-${addon_ver}.zip"
echo "filename = $filename"

zip -v -r -9 ${filename} * -x "*.bak" ".eslint*"
zip -r -9 ${filename} * -x "*.bak" ".eslint*"
2 changes: 1 addition & 1 deletion koshian_ng/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

"name":"KOSHIAN NG 改",

"version":"1.2.2",
"version":"1.3.0",

"applications": {
"gecko": {
Expand Down
95 changes: 50 additions & 45 deletions koshian_ng/options.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const check_box_num = 3;
const check_box_num = 3; // NGワードのワード当たりのチェックボックスの数

let g_hide_completely = null;
let g_ng_input = null;
Expand All @@ -11,6 +11,8 @@ let g_ignore_case = null;
let g_put_hide_button = true;
let g_hide_size = 16;

/* eslint indent: ["warn", 2] */

function onError(error) {
}

Expand All @@ -31,6 +33,11 @@ function saveSetting() {
});
}

/**
* NGワードリストにNGワードを追加
* @param {string} text 追加するNGワード
* @param {Array.<boolean>} check 追加するNGワードのチェックボックスの状態
*/
function addItem(text, check) {
let item = document.createElement("div");
let btn = document.createElement("input");
Expand All @@ -41,11 +48,11 @@ function addItem(text, check) {
btn.className = "col_btn";
btn.addEventListener("click", (e) => {
item.remove();
g_ng_word_list = g_ng_word_list.filter((value, index, array) => {
g_ng_word_list = g_ng_word_list.filter((value) => {
return value[0] != text;
});
saveSetting();
})
});
item.appendChild(btn);

for (let i = 0; i < check_box_num; i++){
Expand All @@ -56,12 +63,12 @@ function addItem(text, check) {
check_box[i].addEventListener("click", (e) => {
for (let j = 0; j < g_ng_word_list.length; ++j) {
if (g_ng_word_list[j][0] == text) {
g_ng_word_list[j][i+1] = check_box[i].checked;
g_ng_word_list[j][i + 1] = check_box[i].checked;
break;
}
}
saveSetting();
})
});

div[i] = document.createElement("div");
div[i].className = "col_check";
Expand All @@ -73,10 +80,17 @@ function addItem(text, check) {
g_ng_list.appendChild(item);
}

/**
* NGリスト更新
*/
function refreshNgList() {
g_ng_list.textContent = null; //g_ng_listの子要素を全削除
g_ng_list.textContent = null; // g_ng_listの子要素を全削除
for (let i = 0; i < g_ng_word_list.length; ++i) {
addItem(g_ng_word_list[i][0], [g_ng_word_list[i][1], g_ng_word_list[i][2], g_ng_word_list[i][3]]);
let check =[];
for (let j = 0; j < check_box_num; j++) {
check.push(g_ng_word_list[i][j + 1]);
}
addItem(g_ng_word_list[i][0], check);
}
}

Expand All @@ -87,7 +101,11 @@ function setCurrentChoice(result) {
g_ng_word_list = safeGetValue(result.ng_word_list, []);

for (let i = 0; i < g_ng_word_list.length; ++i) {
addItem(g_ng_word_list[i][0], [g_ng_word_list[i][1], g_ng_word_list[i][2], g_ng_word_list[i][3]]);
let check =[];
for (let j = 0; j < check_box_num; j++) {
check.push(g_ng_word_list[i][j + 1]);
}
addItem(g_ng_word_list[i][0], check);
}
}

Expand All @@ -104,51 +122,38 @@ function onLoad() {

g_check_body.checked = "checked";

g_hide_completely.addEventListener("change", (e) => {
saveSetting();
});
g_hide_completely.addEventListener("change", saveSetting);

g_put_hide_button.addEventListener("change", (e) => {
saveSetting();
});
g_put_hide_button.addEventListener("change", saveSetting);

g_hide_size.addEventListener("change", (e) => {
saveSetting();
});
g_hide_size.addEventListener("change", saveSetting);

g_ng_input.addEventListener("keypress", (e) => {
if (e.key == "Enter" && g_ng_input.value != "") {
//登録と重複したワードを削除
g_ng_word_list = g_ng_word_list.filter((value, index, array) => {
return value[0] != g_ng_input.value;
});
//NGリストの表示を更新
refreshNgList();

addItem(g_ng_input.value, [g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_word_list.push([g_ng_input.value, g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_input.value = "";
saveSetting();
}
if (e.key == "Enter") addNgWord();
});

g_ng_submit.addEventListener("click", (e) => {
if (g_ng_input.value != "") {
//登録と重複したワードを削除
g_ng_word_list = g_ng_word_list.filter((value, index, array) => {
return value[0] != g_ng_input.value;
});
//NGリストの表示を更新
refreshNgList();

addItem(g_ng_input.value, [g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_word_list.push([g_ng_input.value, g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_input.value = "";
saveSetting();
}
});
g_ng_submit.addEventListener("click", addNgWord);

browser.storage.local.get().then(setCurrentChoice, onError);

/**
* NGワード追加
*/
function addNgWord() {
if (g_ng_input.value == "") return;

// 登録と重複したワードを削除
g_ng_word_list = g_ng_word_list.filter((value) => {
return value[0] != g_ng_input.value;
});
// NGリストの表示を更新
refreshNgList();

addItem(g_ng_input.value, [g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_word_list.push([g_ng_input.value, g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_input.value = "";
saveSetting();
}
}

function onSettingChanged(changes, areaName) {
Expand Down
84 changes: 39 additions & 45 deletions koshian_ng/popup.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,67 +9,61 @@ function onError(error) {
}

function safeGetValue(value, default_value) {
if (value === undefined) {
return default_value;
} else {
return value;
}
if (value === undefined) {
return default_value;
} else {
return value;
}
}

function saveSetting() {
browser.storage.local.set({
ng_word_list: g_ng_word_list,
});
browser.storage.local.set({
ng_word_list: g_ng_word_list,
});
}

function setCurrentChoice(result) {
g_ng_word_list = safeGetValue(result.ng_word_list, []);
g_ng_word_list = safeGetValue(result.ng_word_list, []);
}

function onLoad() {
g_ng_input = document.getElementById("ng_input");
g_ng_submit = document.getElementById("ng_submit");
g_check_body = document.getElementById("check_body");
g_check_header = document.getElementById("check_header");
g_ignore_case = document.getElementById("ignore_case");
g_ng_input = document.getElementById("ng_input");
g_ng_submit = document.getElementById("ng_submit");
g_check_body = document.getElementById("check_body");
g_check_header = document.getElementById("check_header");
g_ignore_case = document.getElementById("ignore_case");

g_check_body.checked = "checked";
g_check_body.checked = "checked";

g_ng_input.addEventListener("keypress", (e) => {
if (e.key == "Enter" && g_ng_input.value != "") {
//登録と重複したワードを削除
g_ng_word_list = g_ng_word_list.filter((value, index, array) => {
return value[0] != g_ng_input.value;
});
g_ng_input.addEventListener("keypress", (e) => {
if (e.key == "Enter") addNgWord();
});

g_ng_word_list.push([g_ng_input.value, g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_input.value = "";
saveSetting();
alert("NGワードを登録しました");
}
});
g_ng_submit.addEventListener("click", addNgWord);

g_ng_submit.addEventListener("click", (e) => {
if (g_ng_input.value != "") {
//登録と重複したワードを削除
g_ng_word_list = g_ng_word_list.filter((value, index, array) => {
return value[0] != g_ng_input.value;
});
browser.tabs.query({active: true}, function(tab) {
browser.tabs.sendMessage(tab[0].id, {}, function(response) {
g_ng_input.value = response.selection.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
});
});

g_ng_word_list.push([g_ng_input.value, g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_input.value = "";
saveSetting();
alert("NGワードを登録しました");
}
});
browser.storage.local.get().then(setCurrentChoice, onError);

browser.tabs.query({active:true}, function(tab) {
browser.tabs.sendMessage(tab[0].id, {}, function(response) {
g_ng_input.value = response.selection;
});
});
/**
* NGワード追加
*/
function addNgWord() {
if (g_ng_input.value === "") return;
// 登録と重複したワードを削除
g_ng_word_list = g_ng_word_list.filter((value) => {
return value[0] != g_ng_input.value;
});

browser.storage.local.get().then(setCurrentChoice, onError);
g_ng_word_list.push([g_ng_input.value, g_check_body.checked, g_check_header.checked, g_ignore_case.checked]);
g_ng_input.value = "";
saveSetting();
alert("NGワードを登録しました");
}
}

document.addEventListener("DOMContentLoaded", onLoad);
Loading

0 comments on commit c8766b2

Please sign in to comment.