Skip to content

Commit

Permalink
feat: make initial open tab configurable (#32)
Browse files Browse the repository at this point in the history
Closes #27
  • Loading branch information
gearsdigital committed Jul 13, 2020
1 parent 19773bb commit 76262ac
Show file tree
Hide file tree
Showing 9 changed files with 112 additions and 35 deletions.
17 changes: 8 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,26 +50,25 @@ git submodule add https://github.com/gearsdigital/enhanced-toolbar-link-dialog.g

## Configuration

The list item text is created using the [Kirby Query Language](https://getkirby.com/docs/guide/blueprints/query-language) and therefore customizable. It is totally up to you, how the page will appear to your users. You have access to `$page`, `site` and `kirby`.
| Option | Default | Description |
|:---|:---|:---|
| `gearsdigital.enhanced-toolbar-link-dialog.link.title ` | `"{{page.title}}"` String | The list item text is created using the [Kirby Query Language](https://getkirby.com/docs/guide/blueprints/query-language) and therefore customizable. It is totally up to you, how the page will appear to your users.<br><br>Within the query you have access to `page`, `site` and `kirby`. |
| `gearsdigital.enhanced-toolbar-link-dialog.tab.order ` | `"0"` - String | You can choose between two values. <br><br>`"0"` _"External Link"_ Tab is initially active.<br>`"1"` _"Internal Link"_ Tab is initially active.|

The default is `{{ page.title }}`.

In order to change the default add `gearsdigital.enhanced-toolbar-link-dialog.link.title` to your `site/config.php`.

### Example
#### Examples
```php
// site/config.php
// site/config/config.php
return [
'gearsdigital.enhanced-toolbar-link-dialog.link.title' => '### {{ page.title }} ###',
'gearsdigital.enhanced-toolbar-link-dialog.tab.order' => '1', // Internal Link Tab is active
];
```

This will wrap the text in `###` => (`### In the jungle of Sumatra ###`)

## Available translations

- German
- English
- Czech

> Pull requests with additonal translations are very much appreciated!
Expand Down
6 changes: 6 additions & 0 deletions cypress/fixtures/config.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?php

return [
'gearsdigital.enhanced-toolbar-link-dialog.link.title' => '### {{ page.title }} ###',
'gearsdigital.enhanced-toolbar-link-dialog.tab.order' => '1', // Internal Link Tab is active
];
28 changes: 28 additions & 0 deletions cypress/integration/dialog_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ describe("Enhanced Link Toolbar Dialog", () => {
cy.login();
cy.openFirstNote();
cy.openDialog();
cy.openInternalTab();

cy.get(".k-text-input").type("jun",{delay: 100}).should("have.value", "jun");

Expand All @@ -17,6 +18,7 @@ describe("Enhanced Link Toolbar Dialog", () => {
cy.login();
cy.openFirstNote();
cy.openDialog();
cy.openInternalTab();

cy.get(".k-pages-dialog .k-dialog-pagination")
.find('button[title="Next"]')
Expand All @@ -28,6 +30,27 @@ describe("Enhanced Link Toolbar Dialog", () => {
.should("have.length", 1);
});

describe("Options", () => {
beforeEach(() => {
cy.task('copyKirbyConfig');
cy.login();
cy.openFirstNote();
cy.openDialog();
});

afterEach(() => {
cy.task('restoreKirbyConfig')
});

it('link.title and tab.order', () => {
cy.get(".k-pages-dialog .k-list-item:first-child")
.should(
"include.text",
"###"
);
});
});

describe("KirbyText", () => {
describe("with selected link", () => {

Expand All @@ -38,6 +61,7 @@ describe("Enhanced Link Toolbar Dialog", () => {
cy.get(".k-textarea-field textarea").clear();

cy.openDialog();
cy.openInternalTab();

cy.get(".k-pages-dialog .k-list")
.find(".k-list-item:first-child")
Expand All @@ -61,6 +85,7 @@ describe("Enhanced Link Toolbar Dialog", () => {
.type("{selectall}");

cy.openDialog();
cy.openInternalTab();

cy.get(".k-pages-dialog .k-list")
.find(".k-list-item:first-child")
Expand All @@ -84,6 +109,7 @@ describe("Enhanced Link Toolbar Dialog", () => {
.type("{selectall}");

cy.openDialog();
cy.openInternalTab();

cy.get(".k-pages-dialog .k-list")
.find(".k-list-item:first-child")
Expand All @@ -107,6 +133,7 @@ describe("Enhanced Link Toolbar Dialog", () => {
cy.get(".k-textarea-field textarea").clear().type("Lorem ipsum dolor");

cy.openDialog();
cy.openInternalTab();

cy.get(".k-button").contains("Ok").click();

Expand All @@ -126,6 +153,7 @@ describe("Enhanced Link Toolbar Dialog", () => {
.type("{selectall}");

cy.openDialog();
cy.openInternalTab();

cy.get(".k-button").contains("Ok").click();

Expand Down
23 changes: 23 additions & 0 deletions cypress/plugins/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
const fs = require("fs");

/**
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
on('task', {
copyKirbyConfig() {
const base = "../../../site/config";
fs.renameSync(`${base}/config.php`, `${base}/bak_config.php`);
fs.copyFileSync(__dirname + "/../fixtures/config.php", `${base}/config.php`);

return null
},
restoreKirbyConfig() {
const base = "../../../site/config";
fs.unlinkSync(`${base}/config.php`);
fs.renameSync(`${base}/bak_config.php`, `${base}/config.php`);

return null
}
})
}
3 changes: 3 additions & 0 deletions cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ Cypress.Commands.add('openFirstNote', function (options = {}) {

Cypress.Commands.add('openDialog', function (options = {}) {
cy.get('.k-toolbar .k-icon-url').click()
});

Cypress.Commands.add('openInternalTab', function (options = {}) {
cy.get(".k-dialog-body nav").contains("Internal Link").click();
});

Expand Down
2 changes: 1 addition & 1 deletion index.css
Original file line number Diff line number Diff line change
@@ -1 +1 @@
.k-tab[data-v-fac765]{padding:1rem 0}.k-pagination[data-v-fac765]{z-index:1;position:relative}
.k-tab[data-v-b8caa5]{padding:1rem 0}.k-pagination[data-v-b8caa5]{z-index:1;position:relative}
2 changes: 1 addition & 1 deletion index.js

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

63 changes: 40 additions & 23 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,45 @@
use Kirby\Http\Url;
use Kirby\Toolkit\Str;

$translations = [
'en' => [
'gearsdigital.enhanced-toolbar-link-dialog.internal' => 'Internal Link',
'gearsdigital.enhanced-toolbar-link-dialog.external' => 'External Link',
'gearsdigital.enhanced-toolbar-link-dialog.empty' => 'No pages found',
'gearsdigital.enhanced-toolbar-link-dialog.target.title' => 'Link Target',
'gearsdigital.enhanced-toolbar-link-dialog.target.help' => 'Specify where to open the linked document.',
],
'de' => [
'gearsdigital.enhanced-toolbar-link-dialog.internal' => 'Interner Link',
'gearsdigital.enhanced-toolbar-link-dialog.external' => 'Externer Link',
'gearsdigital.enhanced-toolbar-link-dialog.empty' => 'Keine Seiten gefunden.',
'gearsdigital.enhanced-toolbar-link-dialog.target.title' => 'Link Ziel',
'gearsdigital.enhanced-toolbar-link-dialog.target.help' => 'Gibt an, wo das verknüpfte Dokument geöffnet werden soll.',
],
'cs' => [
'gearsdigital.enhanced-toolbar-link-dialog.internal' => 'Interní odkaz',
'gearsdigital.enhanced-toolbar-link-dialog.external' => 'Externí odkaz',
'gearsdigital.enhanced-toolbar-link-dialog.empty' => 'Nebyly nalezeny žádné stránky.',
'gearsdigital.enhanced-toolbar-link-dialog.target.title' => 'Cíl odkazu',
'gearsdigital.enhanced-toolbar-link-dialog.target.help' => 'Můžete upřesnit, kam se má odkaz otevřít.',
],
];

// This quite hacky but enables us to pass options down to VUE.
// We're programmatically extending translations by adding a "hidden" key.
// This key can than be comsumed within the Vue part of the plugin using the $t helper.
// @Fixes: #27
function tabOrderOptionInterceptor(&$translations)
{
$order = option('gearsdigital.enhanced-toolbar-link-dialog.tab.order', "0");

foreach ($translations as $k => $v) {
$translations[$k] += ["gearsdigital.enhanced-toolbar-link-dialog.tab.order" => $order];
}

return $translations;
}

Kirby::plugin('gearsdigital/enhanced-toolbar-link-dialog', [
'api' => [
'models' => [
Expand Down Expand Up @@ -55,27 +94,5 @@
],
],
],
'translations' => [
'en' => [
'gearsdigital.enhanced-toolbar-link-dialog.internal' => 'Internal Link',
'gearsdigital.enhanced-toolbar-link-dialog.external' => 'External Link',
'gearsdigital.enhanced-toolbar-link-dialog.empty' => 'No pages found',
'gearsdigital.enhanced-toolbar-link-dialog.target.title' => 'Link Target',
'gearsdigital.enhanced-toolbar-link-dialog.target.help' => 'Specify where to open the linked document.'
],
'de' => [
'gearsdigital.enhanced-toolbar-link-dialog.internal' => 'Interner Link',
'gearsdigital.enhanced-toolbar-link-dialog.external' => 'Externer Link',
'gearsdigital.enhanced-toolbar-link-dialog.empty' => 'Keine Seiten gefunden.',
'gearsdigital.enhanced-toolbar-link-dialog.target.title' => 'Link Ziel',
'gearsdigital.enhanced-toolbar-link-dialog.target.help' => 'Gibt an, wo das verknüpfte Dokument geöffnet werden soll.',
],
'cs' => [
'gearsdigital.enhanced-toolbar-link-dialog.internal' => 'Interní odkaz',
'gearsdigital.enhanced-toolbar-link-dialog.external' => 'Externí odkaz',
'gearsdigital.enhanced-toolbar-link-dialog.empty' => 'Nebyly nalezeny žádné stránky.',
'gearsdigital.enhanced-toolbar-link-dialog.target.title' => 'Cíl odkazu',
'gearsdigital.enhanced-toolbar-link-dialog.target.help' => 'Můžete upřesnit, kam se má odkaz otevřít.',
],
],
'translations' => tabOrderOptionInterceptor($translations),
]);
3 changes: 2 additions & 1 deletion src/components/EnhancedToolbarLinkDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,9 @@ export default {
},
methods: {
open(input, selection) {
const openTab = parseInt(this.$t('gearsdigital.enhanced-toolbar-link-dialog.tab.order'), 10) || 0;
this.value.text = selection;
this.currentTab = this.tabs[0];
this.currentTab = this.tabs[openTab];
this.$refs.dialog.open();
},
resetForm() {
Expand Down

0 comments on commit 76262ac

Please sign in to comment.