aboutsummaryrefslogtreecommitdiff
path: root/app/views/helpers
diff options
context:
space:
mode:
authorGravatar Inverle <inverle@proton.me> 2025-08-08 17:39:38 +0200
committerGravatar GitHub <noreply@github.com> 2025-08-08 17:39:38 +0200
commitd9197d7e32a97f29829ffd4cf4371b1853e51fa2 (patch)
tree83549245e159f9cbdad05868a359afcf278bec79 /app/views/helpers
parenta3854c2f5978ab40c023c8bdf9b4be96eca3ef22 (diff)
New JS attribute: `data-auto-leave-validation` (#7785)
Instead of a repeating pattern like: `<input type="text" value="something" data-leave-validation="something">`, you can now put a `data-auto-leave-validation="1"` attribute on a `<form>` for example, and it will automatically set the `data-leave-validation` attributes inside the form elements. `data_auto_leave_validation(parent)` from `extra.js` is called on slider open and page load. --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
Diffstat (limited to 'app/views/helpers')
-rw-r--r--app/views/helpers/category/update.phtml36
-rw-r--r--app/views/helpers/configure/query.phtml2
-rw-r--r--app/views/helpers/feed/update.phtml90
-rw-r--r--app/views/helpers/javascript_vars.phtml1
4 files changed, 49 insertions, 80 deletions
diff --git a/app/views/helpers/category/update.phtml b/app/views/helpers/category/update.phtml
index 5b81b6737..3776ffd79 100644
--- a/app/views/helpers/category/update.phtml
+++ b/app/views/helpers/category/update.phtml
@@ -15,7 +15,7 @@
<a href="<?= _url('index', 'index', 'get', 'c_' . $this->category->id()) ?>"><?= _i('link') ?> <?= _t('gen.action.filter') ?></a>
</div>
- <form method="post" action="<?= _url('category', 'update', 'id', $this->category->id(), '#', 'slider') ?>" autocomplete="off">
+ <form method="post" action="<?= _url('category', 'update', 'id', $this->category->id(), '#', 'slider') ?>" autocomplete="off" data-auto-leave-validation="1">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<fieldset>
<legend><?= _t('sub.category.information') ?></legend>
@@ -82,12 +82,11 @@
<div class="group-controls">
<label class="checkbox" for="enable_read_when_same_title_in_category">
<input type="checkbox" name="enable_read_when_same_title_in_category" id="enable_read_when_same_title_in_category" value="1"<?=
- $this->category->hasAttribute('read_when_same_title_in_category') ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $this->category->hasAttribute('read_when_same_title_in_category') ? 1 : 0 ?>"/>
+ $this->category->hasAttribute('read_when_same_title_in_category') ? ' checked="checked"' : '' ?> />
<?= _t('conf.reading.read.when_same_title_in_category') ?>
<?php $read_when_same_title_in_category = $this->category->hasAttribute('read_when_same_title_in_category') ? $this->category->attributeInt('read_when_same_title_in_category') : 25; ?>
<input type="number" id="read_when_same_title_in_category" name="read_when_same_title_in_category" min="0"
- value="<?= $read_when_same_title_in_category ?>" data-leave-validation="<?= $read_when_same_title_in_category ?>" />
+ value="<?= $read_when_same_title_in_category ?>" />
</label>
</div>
</div>
@@ -161,8 +160,7 @@
<label class="group-name" for="use_default_purge_options"><?= _t('conf.archiving.policy') ?></label>
<div class="group-controls">
<label class="checkbox">
- <input type="checkbox" name="use_default_purge_options" id="use_default_purge_options" value="1"<?= $archiving['default'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $archiving['default'] ? 1 : 0 ?>" />
+ <input type="checkbox" name="use_default_purge_options" id="use_default_purge_options" value="1"<?= $archiving['default'] ? ' checked="checked"' : '' ?> />
<?= _t('gen.short.by_default') ?>
</label>
</div>
@@ -170,23 +168,19 @@
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label class="checkbox" for="enable_keep_max">
- <input type="checkbox" name="enable_keep_max" id="enable_keep_max" value="1"<?= empty($archiving['keep_max']) ? '' : ' checked="checked"' ?>
- data-leave-validation="<?= empty($archiving['keep_max']) ? 0 : 1 ?>"/>
+ <input type="checkbox" name="enable_keep_max" id="enable_keep_max" value="1"<?= empty($archiving['keep_max']) ? '' : ' checked="checked"' ?> />
<?= _t('conf.archiving.keep_max') ?>
- <input type="number" id="keep_max" name="keep_max" min="0" value="<?= empty($archiving['keep_max']) ? 200 : $archiving['keep_max'] ?>"
- data-leave-validation="<?= empty($archiving['keep_max']) ? 200 : $archiving['keep_max'] ?>"/>
+ <input type="number" id="keep_max" name="keep_max" min="0" value="<?= empty($archiving['keep_max']) ? 200 : $archiving['keep_max'] ?>" />
</label>
</div>
</div>
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label class="checkbox" for="enable_keep_period">
- <input type="checkbox" name="enable_keep_period" id="enable_keep_period" value="1"<?= $volatile['enable_keep_period'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $volatile['enable_keep_period'] ? 1 : 0 ?>"/>
+ <input type="checkbox" name="enable_keep_period" id="enable_keep_period" value="1"<?= $volatile['enable_keep_period'] ? ' checked="checked"' : '' ?> />
<?= _t('conf.archiving.keep_period') ?>
- <input type="number" id="keep_period_count" name="keep_period_count" min="0" value="<?= $volatile['keep_period_count'] ?>"
- data-leave-validation="<?= $volatile['keep_period_count'] ?>"/>
- <select class="number" name="keep_period_unit" id="keep_period_unit" data-leave-validation="<?= $volatile['keep_period_unit'] ?>">
+ <input type="number" id="keep_period_count" name="keep_period_count" min="0" value="<?= $volatile['keep_period_count'] ?>" />
+ <select class="number" name="keep_period_unit" id="keep_period_unit">
<option></option>
<option value="P1Y" <?= 'P1Y' === $volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.years') ?></option>
<option value="P1M" <?= 'P1M' === $volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.months') ?></option>
@@ -201,8 +195,7 @@
<div class="group-name"><?= _t('conf.archiving.exception') ?></div>
<div class="group-controls">
<label class="checkbox" for="keep_favourites">
- <input type="checkbox" name="keep_favourites" id="keep_favourites" value="1"<?= $archiving['keep_favourites'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $archiving['keep_favourites'] ? 1 : 0 ?>"/>
+ <input type="checkbox" name="keep_favourites" id="keep_favourites" value="1"<?= $archiving['keep_favourites'] ? ' checked="checked"' : '' ?> />
<?= _t('conf.archiving.keep_favourites') ?>
</label>
</div>
@@ -210,8 +203,7 @@
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label class="checkbox" for="keep_labels">
- <input type="checkbox" name="keep_labels" id="keep_labels" value="1"<?= $archiving['keep_labels'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $archiving['keep_labels'] ? 1 : 0 ?>"/>
+ <input type="checkbox" name="keep_labels" id="keep_labels" value="1"<?= $archiving['keep_labels'] ? ' checked="checked"' : '' ?> />
<?= _t('conf.archiving.keep_labels') ?>
</label>
</div>
@@ -219,8 +211,7 @@
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label class="checkbox" for="keep_unreads">
- <input type="checkbox" name="keep_unreads" id="keep_unreads" value="1"<?= $archiving['keep_unreads'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $archiving['keep_unreads'] ? 1 : 0 ?>"/>
+ <input type="checkbox" name="keep_unreads" id="keep_unreads" value="1"<?= $archiving['keep_unreads'] ? ' checked="checked"' : '' ?> />
<?= _t('conf.archiving.keep_unreads') ?>
</label>
</div>
@@ -228,8 +219,7 @@
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label for="keep_min"><?= _t('sub.feed.keep_min') ?>
- <input type="number" id="keep_min" name="keep_min" min="0" value="<?= $archiving['keep_min'] ?>"
- data-leave-validation="<?= $archiving['keep_min'] ?>">
+ <input type="number" id="keep_min" name="keep_min" min="0" value="<?= $archiving['keep_min'] ?>" />
</label>
</div>
</div>
diff --git a/app/views/helpers/configure/query.phtml b/app/views/helpers/configure/query.phtml
index b078e1ed1..9336772bb 100644
--- a/app/views/helpers/configure/query.phtml
+++ b/app/views/helpers/configure/query.phtml
@@ -11,7 +11,7 @@
<a href="<?= $this->query->getUrl() ?>"><?= _i('link') ?> <?= _t('gen.action.filter') ?></a>
</div>
- <form method="post" action="<?= _url('configure', 'query', 'id', $this->queryId, '#', 'slider') ?>" autocomplete="off">
+ <form method="post" action="<?= _url('configure', 'query', 'id', $this->queryId, '#', 'slider') ?>" autocomplete="off" data-auto-leave-validation="1">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<div class="form-group">
diff --git a/app/views/helpers/feed/update.phtml b/app/views/helpers/feed/update.phtml
index 430f8608b..dee1de67e 100644
--- a/app/views/helpers/feed/update.phtml
+++ b/app/views/helpers/feed/update.phtml
@@ -35,7 +35,7 @@
}
}
?>
- <form method="post" action="<?= $url ?>" autocomplete="off" enctype="multipart/form-data">
+ <form method="post" action="<?= $url ?>" autocomplete="off" enctype="multipart/form-data" data-auto-leave-validation="1">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<fieldset>
<legend><?= _t('sub.feed.information') ?></legend>
@@ -313,7 +313,6 @@
<label class="group-name" for="keep_max_n_unread"><?= _t('conf.reading.read.keep_max_n_unread') ?></label>
<div class="group-controls">
<input type="number" name="keep_max_n_unread" id="keep_max_n_unread" class="w50" min="1" max="10000000"
- data-leave-validation="<?= $this->feed->attributeInt('keep_max_n_unread') ?>"
value="<?= $this->feed->attributeInt('keep_max_n_unread') ?>"
placeholder="<?= _t('gen.short.by_default') ?>" />
</div>
@@ -383,8 +382,7 @@
<div class="group-name"><?= _t('conf.archiving.policy') ?></div>
<div class="group-controls">
<label class="checkbox">
- <input type="checkbox" name="use_default_purge_options" id="use_default_purge_options" value="1"<?= $archiving['default'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $archiving['default'] ? 1 : 0 ?>" />
+ <input type="checkbox" name="use_default_purge_options" id="use_default_purge_options" value="1"<?= $archiving['default'] ? ' checked="checked"' : '' ?> />
<?= _t('gen.short.by_default') ?>
</label>
</div>
@@ -392,23 +390,19 @@
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label class="checkbox" for="enable_keep_max">
- <input type="checkbox" name="enable_keep_max" id="enable_keep_max" value="1"<?= empty($archiving['keep_max']) ? '' : ' checked="checked"' ?>
- data-leave-validation="<?= empty($archiving['keep_max']) ? 0 : 1 ?>"/>
+ <input type="checkbox" name="enable_keep_max" id="enable_keep_max" value="1"<?= empty($archiving['keep_max']) ? '' : ' checked="checked"' ?> />
<?= _t('conf.archiving.keep_max') ?>
- <input type="number" id="keep_max" name="keep_max" min="0" value="<?= empty($archiving['keep_max']) ? 200 : $archiving['keep_max'] ?>"
- data-leave-validation="<?= empty($archiving['keep_max']) ? 200 : $archiving['keep_max'] ?>"/>
+ <input type="number" id="keep_max" name="keep_max" min="0" value="<?= empty($archiving['keep_max']) ? 200 : $archiving['keep_max'] ?>" />
</label>
</div>
</div>
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label class="checkbox" for="enable_keep_period">
- <input type="checkbox" name="enable_keep_period" id="enable_keep_period" value="1"<?= $volatile['enable_keep_period'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $volatile['enable_keep_period'] ? 1 : 0 ?>"/>
+ <input type="checkbox" name="enable_keep_period" id="enable_keep_period" value="1"<?= $volatile['enable_keep_period'] ? ' checked="checked"' : '' ?> />
<?= _t('conf.archiving.keep_period') ?>
- <input type="number" id="keep_period_count" name="keep_period_count" min="0" value="<?= $volatile['keep_period_count'] ?>"
- data-leave-validation="<?= $volatile['keep_period_count'] ?>"/>
- <select class="number" name="keep_period_unit" id="keep_period_unit" data-leave-validation="<?= $volatile['keep_period_unit'] ?>">
+ <input type="number" id="keep_period_count" name="keep_period_count" min="0" value="<?= $volatile['keep_period_count'] ?>" />
+ <select class="number" name="keep_period_unit" id="keep_period_unit">
<option></option>
<option value="P1Y" <?= 'P1Y' === $volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.years') ?></option>
<option value="P1M" <?= 'P1M' === $volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.months') ?></option>
@@ -423,8 +417,7 @@
<div class="group-name"><?= _t('conf.archiving.exception') ?></div>
<div class="group-controls">
<label class="checkbox" for="keep_favourites">
- <input type="checkbox" name="keep_favourites" id="keep_favourites" value="1"<?= $archiving['keep_favourites'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $archiving['keep_favourites'] ? 1 : 0 ?>"/>
+ <input type="checkbox" name="keep_favourites" id="keep_favourites" value="1"<?= $archiving['keep_favourites'] ? ' checked="checked"' : '' ?> />
<?= _t('conf.archiving.keep_favourites') ?>
</label>
</div>
@@ -432,8 +425,7 @@
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label class="checkbox" for="keep_labels">
- <input type="checkbox" name="keep_labels" id="keep_labels" value="1"<?= $archiving['keep_labels'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $archiving['keep_labels'] ? 1 : 0 ?>"/>
+ <input type="checkbox" name="keep_labels" id="keep_labels" value="1"<?= $archiving['keep_labels'] ? ' checked="checked"' : '' ?> />
<?= _t('conf.archiving.keep_labels') ?>
</label>
</div>
@@ -441,8 +433,7 @@
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label class="checkbox" for="keep_unreads">
- <input type="checkbox" name="keep_unreads" id="keep_unreads" value="1"<?= $archiving['keep_unreads'] ? ' checked="checked"' : '' ?>
- data-leave-validation="<?= $archiving['keep_unreads'] ?>"/>
+ <input type="checkbox" name="keep_unreads" id="keep_unreads" value="1"<?= $archiving['keep_unreads'] ? ' checked="checked"' : '' ?> />
<?= _t('conf.archiving.keep_unreads') ?>
</label>
</div>
@@ -450,8 +441,7 @@
<div class="form-group archiving"<?= $archiving['default'] ? ' hidden="hidden"' : '' ?>>
<div class="group-controls">
<label for="keep_min"><?= _t('sub.feed.keep_min') ?>
- <input type="number" id="keep_min" name="keep_min" min="0" value="<?= $archiving['keep_min'] ?>"
- data-leave-validation="<?= $archiving['keep_min'] ?>">
+ <input type="number" id="keep_min" name="keep_min" min="0" value="<?= $archiving['keep_min'] ?>" />
</label>
</div>
</div>
@@ -494,8 +484,7 @@
<label class="group-name" for="xPathItem"><small><?= _t('sub.feed.kind.html_xpath.xpath') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItem" id="xPathItem" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['item'] ?? '' ?>"><?= $xpath['item'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItem" id="xPathItem" rows="2" cols="64" spellcheck="false"><?= $xpath['item'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_xpath.item.help') ?></p>
</div>
</div>
@@ -503,8 +492,7 @@
<label class="group-name" for="xPathItemTitle"><small><?= _t('sub.feed.kind.html_xpath.relative') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item_title') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItemTitle" id="xPathItemTitle" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemTitle'] ?? '' ?>"><?= $xpath['itemTitle'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItemTitle" id="xPathItemTitle" rows="2" cols="64" spellcheck="false"><?= $xpath['itemTitle'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_xpath.item_title.help') ?></p>
</div>
</div>
@@ -512,8 +500,7 @@
<label class="group-name" for="xPathItemContent"><small><?= _t('sub.feed.kind.html_xpath.relative') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item_content') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItemContent" id="xPathItemContent" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemContent'] ?? '' ?>"><?= $xpath['itemContent'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItemContent" id="xPathItemContent" rows="2" cols="64" spellcheck="false"><?= $xpath['itemContent'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_xpath.item_content.help') ?></p>
</div>
</div>
@@ -521,8 +508,7 @@
<label class="group-name" for="xPathItemUri"><small><?= _t('sub.feed.kind.html_xpath.relative') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item_uri') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItemUri" id="xPathItemUri" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemUri'] ?? '' ?>"><?= $xpath['itemUri'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItemUri" id="xPathItemUri" rows="2" cols="64" spellcheck="false"><?= $xpath['itemUri'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_xpath.item_uri.help') ?></p>
</div>
</div>
@@ -530,8 +516,7 @@
<label class="group-name" for="xPathItemThumbnail"><small><?= _t('sub.feed.kind.html_xpath.relative') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item_thumbnail') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItemThumbnail" id="xPathItemThumbnail" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemThumbnail'] ?? '' ?>"><?= $xpath['itemThumbnail'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItemThumbnail" id="xPathItemThumbnail" rows="2" cols="64" spellcheck="false"><?= $xpath['itemThumbnail'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_xpath.item_thumbnail.help') ?></p>
</div>
</div>
@@ -539,8 +524,7 @@
<label class="group-name" for="xPathItemAuthor"><small><?= _t('sub.feed.kind.html_xpath.relative') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item_author') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItemAuthor" id="xPathItemAuthor" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemAuthor'] ?? '' ?>"><?= $xpath['itemAuthor'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItemAuthor" id="xPathItemAuthor" rows="2" cols="64" spellcheck="false"><?= $xpath['itemAuthor'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_xpath.item_author.help') ?></p>
</div>
</div>
@@ -548,8 +532,7 @@
<label class="group-name" for="xPathItemTimestamp"><small><?= _t('sub.feed.kind.html_xpath.relative') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item_timestamp') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItemTimestamp" id="xPathItemTimestamp" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemTimestamp'] ?? '' ?>"><?= $xpath['itemTimestamp'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItemTimestamp" id="xPathItemTimestamp" rows="2" cols="64" spellcheck="false"><?= $xpath['itemTimestamp'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_xpath.item_timestamp.help') ?></p>
</div>
</div>
@@ -557,8 +540,7 @@
<label class="group-name" for="xPathItemTimeFormat">
<?= _t('sub.feed.kind.html_xpath.item_timeFormat') ?></label>
<div class="group-controls">
- <textarea class="w100" name="xPathItemTimeFormat" id="xPathItemTimeFormat" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemTimeFormat'] ?? '' ?>"><?= $xpath['itemTimeFormat'] ?? '' ?></textarea>
+ <textarea class="w100" name="xPathItemTimeFormat" id="xPathItemTimeFormat" rows="2" cols="64" spellcheck="false"><?= $xpath['itemTimeFormat'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_xpath.item_timeFormat.help') ?></p>
</div>
</div>
@@ -566,16 +548,14 @@
<label class="group-name" for="xPathItemCategories"><small><?= _t('sub.feed.kind.html_xpath.relative') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item_categories') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItemCategories" id="xPathItemCategories" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemCategories'] ?? '' ?>"><?= $xpath['itemCategories'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItemCategories" id="xPathItemCategories" rows="2" cols="64" spellcheck="false"><?= $xpath['itemCategories'] ?? '' ?></textarea>
</div>
</div>
<div class="form-group">
<label class="group-name" for="xPathItemUid"><small><?= _t('sub.feed.kind.html_xpath.relative') ?></small><br />
<?= _t('sub.feed.kind.html_xpath.item_uid') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathItemUid" id="xPathItemUid" rows="2" cols="64" spellcheck="false"
- data-leave-validation="<?= $xpath['itemUid'] ?? '' ?>"><?= $xpath['itemUid'] ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathItemUid" id="xPathItemUid" rows="2" cols="64" spellcheck="false"><?= $xpath['itemUid'] ?? '' ?></textarea>
</div>
</div>
</fieldset>
@@ -589,7 +569,7 @@
<div class="form-group" id="xPathToJsonGroup">
<label class="group-name" for="xPathToJson"><?= _t('sub.feed.kind.html_json.xpath') ?></label>
<div class="group-controls">
- <textarea class="valid-xpath w100" name="xPathToJson" id="xPathToJson" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $xPathToJson ?>"><?= $xPathToJson ?? '' ?></textarea>
+ <textarea class="valid-xpath w100" name="xPathToJson" id="xPathToJson" rows="2" cols="64" spellcheck="false"><?= $xPathToJson ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.html_json.xpath.help') ?></p>
</div>
</div>
@@ -599,7 +579,7 @@
<label class="group-name" for="jsonItem"><small><?= _t('sub.feed.kind.json_dotnotation.json') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItem" id="jsonItem" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['item'] ?? '' ?>"><?= $jsonSettings['item'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItem" id="jsonItem" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['item'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.json_dotnotation.item.help') ?></p>
</div>
</div>
@@ -607,14 +587,14 @@
<label class="group-name" for="jsonItemTitle"><small><?= _t('sub.feed.kind.json_dotnotation.relative') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item_title') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItemTitle" id="jsonItemTitle" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemTitle'] ?? '' ?>"><?= $jsonSettings['itemTitle'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItemTitle" id="jsonItemTitle" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemTitle'] ?? '' ?></textarea>
</div>
</div>
<div class="form-group">
<label class="group-name" for="jsonItemContent"><small><?= _t('sub.feed.kind.json_dotnotation.relative') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item_content') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItemContent" id="jsonItemContent" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemContent'] ?? '' ?>"><?= $jsonSettings['itemContent'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItemContent" id="jsonItemContent" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemContent'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.json_dotnotation.item_content.help') ?></p>
</div>
</div>
@@ -622,7 +602,7 @@
<label class="group-name" for="jsonItemUri"><small><?= _t('sub.feed.kind.json_dotnotation.relative') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item_uri') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItemUri" id="jsonItemUri" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemUri'] ?? '' ?>"><?= $jsonSettings['itemUri'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItemUri" id="jsonItemUri" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemUri'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.json_dotnotation.item_uri.help') ?></p>
</div>
</div>
@@ -630,7 +610,7 @@
<label class="group-name" for="jsonItemThumbnail"><small><?= _t('sub.feed.kind.json_dotnotation.relative') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item_thumbnail') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItemThumbnail" id="jsonItemThumbnail" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemThumbnail'] ?? '' ?>"><?= $jsonSettings['itemThumbnail'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItemThumbnail" id="jsonItemThumbnail" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemThumbnail'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.json_dotnotation.item_thumbnail.help') ?></p>
</div>
</div>
@@ -638,14 +618,14 @@
<label class="group-name" for="jsonItemAuthor"><small><?= _t('sub.feed.kind.json_dotnotation.relative') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item_author') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItemAuthor" id="jsonItemAuthor" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemAuthor'] ?? '' ?>"><?= $jsonSettings['itemAuthor'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItemAuthor" id="jsonItemAuthor" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemAuthor'] ?? '' ?></textarea>
</div>
</div>
<div class="form-group">
<label class="group-name" for="jsonItemTimestamp"><small><?= _t('sub.feed.kind.json_dotnotation.relative') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item_timestamp') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItemTimestamp" id="jsonItemTimestamp" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemTimestamp'] ?? '' ?>"><?= $jsonSettings['itemTimestamp'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItemTimestamp" id="jsonItemTimestamp" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemTimestamp'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.json_dotnotation.item_timestamp.help') ?></p>
</div>
</div>
@@ -653,7 +633,7 @@
<label class="group-name" for="jsonItemTimeFormat">
<?= _t('sub.feed.kind.json_dotnotation.item_timeFormat') ?></label>
<div class="group-controls">
- <textarea class="w100" name="jsonItemTimeFormat" id="jsonItemTimeFormat" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemTimeFormat'] ?? '' ?>"><?= $jsonSettings['itemTimeFormat'] ?? '' ?></textarea>
+ <textarea class="w100" name="jsonItemTimeFormat" id="jsonItemTimeFormat" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemTimeFormat'] ?? '' ?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.kind.json_dotnotation.item_timeFormat.help') ?></p>
</div>
</div>
@@ -661,14 +641,14 @@
<label class="group-name" for="jsonItemCategories"><small><?= _t('sub.feed.kind.json_dotnotation.relative') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item_categories') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItemCategories" id="jsonItemCategories" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemCategories'] ?? '' ?>"><?= $jsonSettings['itemCategories'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItemCategories" id="jsonItemCategories" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemCategories'] ?? '' ?></textarea>
</div>
</div>
<div class="form-group">
<label class="group-name" for="jsonItemUid"><small><?= _t('sub.feed.kind.json_dotnotation.relative') ?></small><br />
<?= _t('sub.feed.kind.json_dotnotation.item_uid') ?></label>
<div class="group-controls">
- <textarea class="valid-json w100" name="jsonItemUid" id="jsonItemUid" rows="2" cols="64" spellcheck="false" data-leave-validation="<?= $jsonSettings['itemUid'] ?? '' ?>"><?= $jsonSettings['itemUid'] ?? '' ?></textarea>
+ <textarea class="valid-json w100" name="jsonItemUid" id="jsonItemUid" rows="2" cols="64" spellcheck="false"><?= $jsonSettings['itemUid'] ?? '' ?></textarea>
</div>
</div>
@@ -686,8 +666,7 @@
<label class="group-name" for="path_entries"><?= _t('sub.feed.css_path') ?></label>
<div class="group-controls">
<div class="stick w100">
- <input type="text" name="path_entries" id="path_entries" class="w100" value="<?= $this->feed->pathEntries() ?>"
- data-leave-validation="<?= $this->feed->pathEntries() ?>" placeholder="<?= _t('gen.short.blank_to_disable') ?>" />
+ <input type="text" name="path_entries" id="path_entries" class="w100" value="<?= $this->feed->pathEntries() ?>" placeholder="<?= _t('gen.short.blank_to_disable') ?>" />
<a id="popup-preview-selector" class="btn" href="<?=
_url('feed', 'contentSelectorPreview', 'id', $this->feed->id(), 'selector', 'selector-token', 'selector_filter', 'selector-filter-token', '#', 'slider') ?>"><?= _i('look') ?></a>
</div>
@@ -720,8 +699,7 @@
<label class="group-name" for="path_entries_filter"><?= _t('sub.feed.css_path_filter') ?></label>
<div class="group-controls">
<div class="w100">
- <input type="text" name="path_entries_filter" id="path_entries_filter" class="w100" value="<?= $path_entries_filter ?>"
- data-leave-validation="<?= $path_entries_filter ?>" placeholder="<?= _t('gen.short.blank_to_disable') ?>" />
+ <input type="text" name="path_entries_filter" id="path_entries_filter" class="w100" value="<?= $path_entries_filter ?>" placeholder="<?= _t('gen.short.blank_to_disable') ?>" />
</div>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.css_path_filter.help') ?></p>
</div>
diff --git a/app/views/helpers/javascript_vars.phtml b/app/views/helpers/javascript_vars.phtml
index 65846b001..831c67f89 100644
--- a/app/views/helpers/javascript_vars.phtml
+++ b/app/views/helpers/javascript_vars.phtml
@@ -68,6 +68,7 @@ echo json_encode([
],
'i18n' => [
'confirmation_default' => _t('gen.js.confirm_action'),
+ 'confirm_exit_slider' => _t('gen.js.confirm_exit_slider'),
'notif_title_articles' => _t('gen.js.feedback.title_new_articles'),
'notif_body_new_articles' => _t('gen.js.feedback.body_new_articles'),
'notif_body_unread_articles' => _t('gen.js.feedback.body_unread_articles'),