diff options
| author | 2021-01-14 18:14:53 -0500 | |
|---|---|---|
| committer | 2021-01-15 00:14:53 +0100 | |
| commit | c5da4e56a690d9e9caf8ca4bad4349684b4d39c5 (patch) | |
| tree | b3a46ff845feab6016aa19d55b4885c4a949d9dc /app/views | |
| parent | 29fe125b4a18f7107b50e54c69184c4f1777bbf6 (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.phtml | 44 | ||||
| -rw-r--r-- | app/views/configure/query.phtml | 5 | ||||
| -rw-r--r-- | app/views/helpers/configure/query.phtml | 91 |
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> |
