aboutsummaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorGravatar Alexis Degrugillier <aledeg@users.noreply.github.com> 2021-01-14 18:14:53 -0500
committerGravatar GitHub <noreply@github.com> 2021-01-15 00:14:53 +0100
commitc5da4e56a690d9e9caf8ca4bad4349684b4d39c5 (patch)
treeb3a46ff845feab6016aa19d55b4885c4a949d9dc /app/views
parent29fe125b4a18f7107b50e54c69184c4f1777bbf6 (diff)
Add a query configuration page (#3366)
* Add a query configuration page Before, there was no way to modify a user query. Thus you need to create a new one and delete the old one afterward. Now, every user query can be modified if needed. They have their own configuration page on which it can be modified or deleted. * Change drag and drop action on queries Before, the drag and drop action needed to be validated by submitting the form to be persisted. Now, it's done automatically after the query is dropped to its final location.
Diffstat (limited to 'app/views')
-rw-r--r--app/views/configure/queries.phtml44
-rw-r--r--app/views/configure/query.phtml5
-rw-r--r--app/views/helpers/configure/query.phtml91
3 files changed, 111 insertions, 29 deletions
diff --git a/app/views/configure/queries.phtml b/app/views/configure/queries.phtml
index 032f18621..7de2e752e 100644
--- a/app/views/configure/queries.phtml
+++ b/app/views/configure/queries.phtml
@@ -14,30 +14,15 @@
</label>
<div class="group-controls">
+ <?= $query->getName() ?>
+ <a class="configure open-slider" href="<?= _url('configure', 'query', 'id', $key) ?>"><?= _i('configure') ?></a>
+ <input type="hidden" id="queries_<?= $key ?>_name" name="queries[<?= $key ?>][name]" value="<?= $query->getName() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_url" name="queries[<?= $key ?>][url]" value="<?= $query->getUrl() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_search" name="queries[<?= $key ?>][search]" value="<?= urlencode($query->getSearch()) ?>"/>
<input type="hidden" id="queries_<?= $key ?>_state" name="queries[<?= $key ?>][state]" value="<?= $query->getState() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_order" name="queries[<?= $key ?>][order]" value="<?= $query->getOrder() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_get" name="queries[<?= $key ?>][get]" value="<?= $query->getGet() ?>"/>
- <div class="stick">
- <input class="extend"
- type="text"
- id="queries_<?= $key ?>_name"
- name="queries[<?= $key ?>][name]"
- value="<?= $query->getName() ?>"
- data-leave-validation="<?= $query->getName() ?>"
- />
-
- <a class="btn" href="<?= $query->getUrl() ?>" title="<?= _t('conf.query.display') ?>">
- <?= _i('link') ?>
- </a>
-
- <a class="btn btn-attention remove" href="#" data-remove="query-group-<?= $key ?>" title="<?= _t('conf.query.remove') ?>">
- <?= _i('close') ?>
- </a>
- </div>
-
<?php if (!$query->hasParameters()) { ?>
<div class="alert alert-warn">
<div class="alert-head"><?= _t('conf.query.no_filter') ?></div>
@@ -72,16 +57,17 @@
</div>
</div>
<?php } ?>
-
- <?php if (count(FreshRSS_Context::$user_conf->queries) > 0) { ?>
- <div class="form-group form-actions">
- <div class="group-controls">
- <button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button>
- </div>
- </div>
- <?php } else { ?>
- <p class="alert alert-warn"><span class="alert-head"><?= _t('gen.short.damn') ?></span> <?= _t('conf.query.none') ?></p>
- <?php } ?>
</form>
+</div>
-</div> \ No newline at end of file
+<?php $class = $this->displaySlider ? ' class="active"' : ''; ?>
+<a href="#" id="close-slider"<?= $class ?>>
+ <?= _i('close') ?>
+</a>
+<div id="slider"<?= $class ?>>
+<?php
+ if (isset($this->query)) {
+ $this->renderHelper('configure/query');
+ }
+?>
+</div>
diff --git a/app/views/configure/query.phtml b/app/views/configure/query.phtml
new file mode 100644
index 000000000..6f38d9efb
--- /dev/null
+++ b/app/views/configure/query.phtml
@@ -0,0 +1,5 @@
+<?php
+
+if ($this->query) {
+ $this->renderHelper('configure/query');
+}
diff --git a/app/views/helpers/configure/query.phtml b/app/views/helpers/configure/query.phtml
new file mode 100644
index 000000000..9c6e1da3d
--- /dev/null
+++ b/app/views/helpers/configure/query.phtml
@@ -0,0 +1,91 @@
+<div class="post">
+ <h1><?= $this->query->getName() ?></h1>
+
+ <div>
+ <a href="<?= $this->query->getUrl() ?>"><?= _i('link') ?> <?= _t('gen.action.filter') ?></a>
+ </div>
+
+ <form method="post" action="<?= _url('configure', 'query', 'id', $this->queryId) ?>" autocomplete="off">
+ <input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
+
+ <div class="form-group">
+ <label class="group-name" for="name"><?= _t('conf.query.name') ?></label>
+ <div class="group-controls">
+ <input type="text" name="name" id="name" class="extend" value="<?= $this->query->getName() ?>" />
+ </div>
+ </div>
+ <legend><?= _t('conf.query.filter') ?></legend>
+
+ <div class="form-group">
+ <label class="group-name" for=""><?= _t('conf.query.filter.search') ?></label>
+ <div class="group-controls">
+ <input type="text" id="query_search" name="query[search]" class="extend" value="<?= urldecode($this->query->getSearch()) ?>"/>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="group-name" for=""><?= _t('conf.query.filter.state') ?></label>
+ <div class="group-controls">
+ <label class="checkbox" for="show_read">
+ <input type="checkbox" name="query[state][]" id="show_read" value="<?= FreshRSS_Entry::STATE_READ ?>" <?= FreshRSS_Entry::STATE_READ & $this->query->getState() ? 'checked="checked"' : ''?> />
+ <?= _t('index.menu.read') ?>
+ </label>
+ <label class="checkbox" for="show_not_read">
+ <input type="checkbox" name="query[state][]" id="show_not_read" value="<?= FreshRSS_Entry::STATE_NOT_READ ?>" <?= FreshRSS_Entry::STATE_NOT_READ & $this->query->getState() ? 'checked="checked"' : ''?> />
+ <?= _t('index.menu.unread') ?>
+ </label>
+ <label class="checkbox" for="show_favorite">
+ <input type="checkbox" name="query[state][]" id="show_favorite" value="<?= FreshRSS_Entry::STATE_FAVORITE ?>" <?= FreshRSS_Entry::STATE_FAVORITE & $this->query->getState() ? 'checked="checked"' : ''?> />
+ <?= _t('index.menu.starred') ?>
+ </label>
+ <label class="checkbox" for="show_not_favorite">
+ <input type="checkbox" name="query[state][]" id="show_not_favorite" value="<?= FreshRSS_Entry::STATE_NOT_FAVORITE ?>" <?= FreshRSS_Entry::STATE_NOT_FAVORITE & $this->query->getState() ? 'checked="checked"' : ''?> />
+ <?= _t('index.menu.non-starred') ?>
+ </label>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="group-name" for="query_get"><?= _t('conf.query.filter.type') ?></label>
+ <div class="group-controls">
+ <select name="query[get]" id="query_get" size="10">
+ <option value=""></option>
+ <option value="s" <?= 's' === $this->query->getGet() ? 'selected="selected"' : '' ?>><?= _t('conf.query.get_favorite') ?></option>
+ <optgroup label="<?= _t('conf.query.filter.categories') ?>">
+ <?php foreach ($this->categories as $category): ?>
+ <option value="c_<?= $category->id() ?>" <?= "c_{$category->id()}" === $this->query->getGet() ? 'selected="selected"' : '' ?>><?= $category->name() ?></option>
+ <?php endforeach?>
+ </optgroup>
+ <optgroup label="<?= _t('conf.query.filter.feeds') ?>">
+ <?php foreach ($this->feeds as $feed): ?>
+ <option value="f_<?= $feed->id() ?>" <?= "f_{$feed->id()}" === $this->query->getGet() ? 'selected="selected"' : '' ?>><?= $feed->name() ?></option>
+ <?php endforeach?>
+ </optgroup>
+ <optgroup label="<?= _t('conf.query.filter.tags') ?>">
+ <?php foreach ($this->tags as $tag): ?>
+ <option value="t_<?= $tag->id() ?>" <?= "t_{$tag->id()}" === $this->query->getGet() ? 'selected="selected"' : '' ?>><?= $tag->name() ?></option>
+ <?php endforeach?>
+ </optgroup>
+ </select>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="group-name" for=""><?= _t('conf.query.filter.order') ?></label>
+ <div class="group-controls">
+ <select name="query[order]" id="query_order">
+ <option value=""></option>
+ <option value="ASC" <?= 'ASC' === $this->query->getOrder() ? 'selected="selected"' : '' ?>><?= _t('conf.query.order_asc') ?></option>
+ <option value="DESC" <?= 'DESC' === $this->query->getOrder() ? 'selected="selected"' : '' ?>><?= _t('conf.query.order_desc') ?></option>
+ </select>
+ </div>
+ </div>
+
+ <div class="form-group form-actions">
+ <div class="group-controls">
+ <button class="btn btn-important"><?= _t('gen.action.submit') ?></button>
+ <button class="btn btn-attention confirm"
+ data-str-confirm="<?= _t('gen.js.confirm_action_feed_cat') ?>"
+ formaction="<?= _url('configure', 'deleteQuery', 'id', $this->queryId) ?>"
+ formmethod="post"><?= _t('gen.action.remove') ?></button>
+ </div>
+ </div>
+ </form>
+</div>