Skip to content
This repository has been archived by the owner on Sep 18, 2024. It is now read-only.

Commit

Permalink
Merge pull request #52 from death-save:v1.4.0
Browse files Browse the repository at this point in the history
v1.4.0
  • Loading branch information
eclarke12 authored Apr 18, 2021
2 parents 388fa14 + 8dceccf commit 7ac5887
Show file tree
Hide file tree
Showing 9 changed files with 99 additions and 25 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# Changelog
## [1.4.0] - 2021-04-18
- You can now set the default permission and folder when creating a Journal Note using Pin Cushion (thanks @saif-ellafi!)
- Images are no longer stretched in the Journal preview (thanks @krysztalzg!)
- Updated 日本語 (Japanese) translation (thanks again @brothersharper and `touge`!)
- Updated Español (Spanish) translation (thanks gain @lozalojo!)

## [1.3.0] - 2021-03-27
- Added a setting to automatically create folders per-user to store Journal Entries that are related to Notes (thanks @ethaks!)
Expand Down
4 changes: 4 additions & 0 deletions lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@
"SETTINGS.DefaultJournalFolderH": "The default folder journal entries will be created in when creating Map Pins with a double-click",

"PinCushion": {
"Name": "Name:",
"None": "None",
"PerUser": "Per User",
"Folder": "Journal Entry Folder:",
"ExistingFolders": "Existing Folders",
"DefaultPermission": "Default Permission:",
"CreateMissingFoldersT": "Create Missing Folders",
"CreateMissingFoldersC": "<b>Create a Journal Entry folder for each player?</b><br>This ensures that each player has their own folder for entries to be created in.",

Expand Down
18 changes: 17 additions & 1 deletion lang/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,21 @@
"SETTINGS.PreviewMaxLengthN": "Longitud máxima de la vista previa",
"SETTINGS.PreviewMaxLengthH": "**SOLO VISTA PREVIA DE TEXTO** ¿Cuantos caracteres de texto se deben mostrar en la vista previa de texto?",
"SETTINGS.PreviewDelayN": "Retraso de la vista previa",
"SETTINGS.PreviewDelayH": "Cuanto tiempo (en milisegundos) ha de pasar hasta que se muestre la vista previa"
"SETTINGS.PreviewDelayH": "Cuanto tiempo (en milisegundos) ha de pasar hasta que se muestre la vista previa",
"SETTINGS.DefaultJournalPermissionN": "Permisos por defecto para las entradas del diario",
"SETTINGS.DefaultJournalPermissionH": "Las entradas del diario serán creadas con los permisos por defecto de",
"SETTINGS.DefaultJournalFolderN": "Directorio por defecto para las entradas del diario",
"SETTINGS.DefaultJournalFolderH": "Las entradas del diario serán creadas en el directorio por defecto al crear chinchetas en el mapa con doble clic",

"PinCushion": {
"None": "Ninguno",
"PerUser": "Por usuario",
"CreateMissingFoldersT": "Crear directorios no presentes",
"CreateMissingFoldersC": "<b>¿Crear un directorio de entradas en el diario para cada jugador?</b><br>Así se asegura que cada jugador tiene su propio directorio donde crear nuevas entradas",

"Warn": {
"AllowPlayerNotes": "Los jugadores necesitan que se les conceda el permiso \"{permission}\" en el núcleo de Foundry para crear chinchetas en el mapa",
"MissingPinName": "¡No se ha encontrado el nombre de la chincheta en el mapa!"
}
}
}
22 changes: 19 additions & 3 deletions lang/ja.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
{
"SETTINGS.AboutAppN": "Pin Cushionについて",
"SETTINGS.AboutAppH": "Pin Cushionの追加情報を表示します。",
"SETTINGS.AllowPlayerNotesN": "プレイヤーにノートを許可する",
"SETTINGS.AllowPlayerNotesH": "プレイヤーがマップピンを作成できるようになります",
"SETTINGS.AllowPlayerNotesN": "プレイヤーにメモを許可する",
"SETTINGS.AllowPlayerNotesH": "プレイヤーが地点メモを作成できるようになります",
"SETTINGS.ShowJournalPreviewN": "資料のプレビューを表示",
"SETTINGS.ShowJournalPreviewH": "マップピンにカーソルを置くと、資料のプレビューが表示されます。",
"SETTINGS.PreviewTypeN": "資料のプレビュー形式",
"SETTINGS.PreviewTypeH": "表示される資料のプレビュー形式を指定します(HTMLもしくはテキスト)",
"SETTINGS.PreviewMaxLengthN": "プレビューの最大長",
"SETTINGS.PreviewMaxLengthH": "**テキスト形式のみ** 何文字までプレビュー表示しますか?",
"SETTINGS.PreviewDelayN": "プレビューのディレイ値",
"SETTINGS.PreviewDelayH": "プレビューが表示されるまでの時間(ミリ秒)"
"SETTINGS.PreviewDelayH": "プレビューが表示されるまでの時間(ミリ秒)",
"SETTINGS.DefaultJournalPermissionN": "資料のデフォルト権限",
"SETTINGS.DefaultJournalPermissionH": "資料を新規作成したときのデフォルト権限です。",
"SETTINGS.DefaultJournalFolderN": "デフォルトの資料フォルダ",
"SETTINGS.DefaultJournalFolderH": "ダブルクリックで地点メモを作成したときに、資料が作成されるデフォルトフォルダを指定します",

"PinCushion": {
"None": "なし",
"PerUser": "ユーザーごと",
"CreateMissingFoldersT": "資料フォルダの作成",
"CreateMissingFoldersC": "<b>プレイヤーごとの資料フォルダを作成しますか?</b><br>これにより、各プレイヤーが地点メモを作成したときに保存する場所が準備されます。",

"Warn": {
"AllowPlayerNotes": "プレイヤーが地点メモを作成するには、Foundryコアの権限 \"{permission}\" が必要です。",
"MissingPinName": "地点メモの名前がありません!"
}
}
}
2 changes: 1 addition & 1 deletion module.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "pin-cushion",
"title": "Pin Cushion",
"description": "Adds additional map pin (Journal Note/Scene Note) functionality",
"version": "1.3.0",
"version": "1.4.0",
"minimumCoreVersion": "0.7.5",
"compatibleCoreVersion": "0.7.9",
"author": "Evan Clarke [errational#2007]",
Expand Down
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "pin-cushion",
"version": "1.3.0",
"version": "1.4.0",
"description": "Provides additional functionality around Map Pins",
"main": "pin-cushion.js",
"scripts": {
Expand Down
8 changes: 6 additions & 2 deletions pin-cushion.css
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
.pin-cushion-hud #container {
background-color: rgba(255, 255, 255, 0.9);
/*height: 200px;*/
overflow: hidden;
padding: 2px;
border: 1px solid black;
Expand All @@ -12,6 +11,11 @@
text-align: left;
}

.pin-cushion-hud img {
object-fit: scale-down;
max-height: 250px;
}

/* About App */
/* ABOUT */
#pin-cushion-about img {
Expand Down Expand Up @@ -62,4 +66,4 @@

#pin-cushion-about .patreon img {
flex: 0 0 100px;
}
}
55 changes: 42 additions & 13 deletions pin-cushion.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,36 @@ class PinCushion {
}

static get DIALOG() {
const defaultPermission = game.settings.get(PinCushion.MODULE_NAME, "defaultJournalPermission");
const defaultFolder = game.settings.get(PinCushion.MODULE_NAME, "defaultJournalFolder");
const folders = game.journal.directory.folders
.filter(folder => folder.displayed)
.map(folder => `<option value="${folder.id}">${folder.name}</option>`).join("\n");
return {
content: `<div class="form-group"><p class="notes">Name:</p></label><input name="name" type="text"></div></br>`,
content: `
<div class="form-group">
<p class="notes">${game.i18n.localize("PinCushion.Name")}</p>
</label>
<input name="name" type="text">
<p class="notes">${game.i18n.localize("PinCushion.DefaultPermission")}</p>
</label>
<select id="cushion-permission" style="width: 100%;">
<option value="0" ${defaultPermission == "0" ? "selected" : ""}>${game.i18n.localize("PERMISSION.NONE")}</option>
<option value="1" ${defaultPermission == "1" ? "selected" : ""}>${game.i18n.localize("PERMISSION.LIMITED")}</option>
<option value="2" ${defaultPermission == "2" ? "selected" : ""}>${game.i18n.localize("PERMISSION.OBSERVER")}</option>
<option value="3" ${defaultPermission == "3" ? "selected" : ""}>${game.i18n.localize("PERMISSION.OWNER")}</option>
</select>
<p class="notes">${game.i18n.localize("PinCushion.Folder")}</p>
</label>
<select id="cushion-folder" style="width: 100%;">
<option value="none" ${defaultFolder == "none" ? "selected" : ""}>${game.i18n.localize("PinCushion.None")}</option>
${game.user.isGM ? `` : `<option value="perUser" ${defaultFolder == "perUser" ? "selected" : ""}>${game.i18n.localize("PinCushion.PerUser")}</option>`}
<option disabled>──${game.i18n.localize("PinCushion.ExistingFolders")}──</option>
${folders}
</select>
</div>
</br>
`,
title: "Create a Map Pin"
}
}
Expand All @@ -43,7 +71,7 @@ class PinCushion {

/**
* Creates and renders a dialog for name entry
* @param {*} data
* @param {*} data
* @todo break callbacks out into separate methods
*/
_createDialog(data) {
Expand Down Expand Up @@ -72,8 +100,8 @@ class PinCushion {

/**
* Creates a Note from the Pin Cushion dialog
* @param {*} html
* @param {*} data
* @param {*} html
* @param {*} data
*/
async createNoteFromCanvas(html, eventData) {
const input = html.find("input[name='name']");
Expand All @@ -85,14 +113,15 @@ class PinCushion {
// Permissions the Journal Entry will be created with
const permission = {
[game.userId]: ENTITY_PERMISSIONS.OWNER,
default: game.settings.get(PinCushion.MODULE_NAME, "defaultJournalPermission") ?? 0
default: $("#cushion-permission").val()
}

// Get folder ID for Journal Entry
let folder = PinCushion.getFolder();
const selectedFolder = $("#cushion-folder").val();
let folder = PinCushion.getFolder(selectedFolder);
if (
!game.user.isGM &&
game.settings.get(PinCushion.MODULE_NAME, "defaultJournalFolder") === "perUser" &&
selectedFolder === "perUser" &&
folder === undefined
) {
// Request folder creation when perUser is set and the entry is created by a user
Expand All @@ -108,7 +137,7 @@ class PinCushion {

const entryData = entry.data;
entryData.id = entry.id;

if (canvas.activeLayer.name !== PinCushion.NOTESLAYER) {
await canvas.notes.activate();
}
Expand Down Expand Up @@ -148,9 +177,8 @@ class PinCushion {
* @param {string} name - The player name to check folders against, defaults to current user's name
* @returns {string|undefined} The folder's ID, or undefined if there is no target folder
*/
static getFolder(name) {
static getFolder(name, setting) {
name = name ?? game.user.name;
const setting = game.settings.get(PinCushion.MODULE_NAME, "defaultJournalFolder");
switch (setting) {
// No target folder set
case "none":
Expand All @@ -159,7 +187,7 @@ class PinCushion {
case "perUser":
return game.journal.directory.folders.find((f) => f.name === name)?.id ?? undefined;
default:
return undefined;
return name;
}
}

Expand All @@ -172,8 +200,9 @@ class PinCushion {
*/
static async _createFolders() {
// Collect missing folders
const setting = game.settings.get(PinCushion.MODULE_NAME, "defaultJournalFolder");
const missingFolders = game.users
.filter((u) => !u.isGM && PinCushion.getFolder(u.name) === undefined)
.filter((u) => !u.isGM && PinCushion.getFolder(u.name, setting) === undefined)
.map((user) => ({
name: user.name,
type: "JournalEntry",
Expand Down Expand Up @@ -223,7 +252,7 @@ class PinCushion {
iconSelector.replaceWith(filePickerHtml);

// Detect and activate file-picker buttons
html.find('button.file-picker').each((i, button) => app._activateFilePicker(button));
html.find("button.file-picker").each((i, button) => app._activateFilePicker(button));
}

/* -------------------------------- Listeners ------------------------------- */
Expand Down

0 comments on commit 7ac5887

Please sign in to comment.