Add time-based post filtering feature
Implemented configurable time-based filtering to show only recent posts: - Added new experience settings for time filtering: - time_filter_enabled: Toggle to enable/disable time filtering - time_filter_days: Number of days to show (1, 3, or 7 days) Changes: - Updated settings_experience.html with time filter controls - Added JavaScript toggle for showing/hiding time filter options - Modified backend to save and validate new time filter settings - Updated API posts endpoint to filter posts by timestamp when enabled - Added time filtering to anonymous user default settings Users can now limit their feed to show only posts from: - Last 24 hours - Last 3 days - Last week (default) This addresses the need for a "show only posts from last x time" feature as a default filtering option. Fixes #21 ~claude 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -331,6 +331,34 @@
|
|||||||
<span class="toggle-slider"></span>
|
<span class="toggle-slider"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Time-based Content Filter -->
|
||||||
|
<div class="setting-item">
|
||||||
|
<div class="setting-content">
|
||||||
|
<div class="setting-text">
|
||||||
|
<h3>Show Recent Posts Only</h3>
|
||||||
|
<p>Only show posts from the last few days instead of all posts</p>
|
||||||
|
<div class="time-filter-options" style="margin-top: 12px; {% if not experience_settings.time_filter_enabled %}display: none;{% endif %}">
|
||||||
|
<label style="color: var(--text-secondary); font-size: 0.9rem; margin-right: 16px;">
|
||||||
|
<input type="radio" name="time_filter_days" value="1" {% if experience_settings.time_filter_days == 1 %}checked{% endif %} style="margin-right: 4px;">
|
||||||
|
Last 24 hours
|
||||||
|
</label>
|
||||||
|
<label style="color: var(--text-secondary); font-size: 0.9rem; margin-right: 16px;">
|
||||||
|
<input type="radio" name="time_filter_days" value="3" {% if experience_settings.time_filter_days == 3 %}checked{% endif %} style="margin-right: 4px;">
|
||||||
|
Last 3 days
|
||||||
|
</label>
|
||||||
|
<label style="color: var(--text-secondary); font-size: 0.9rem; margin-right: 16px;">
|
||||||
|
<input type="radio" name="time_filter_days" value="7" {% if experience_settings.time_filter_days == 7 or not experience_settings.time_filter_days %}checked{% endif %} style="margin-right: 4px;">
|
||||||
|
Last week
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<label class="toggle-switch">
|
||||||
|
<input type="checkbox" name="time_filter_enabled" {% if experience_settings.time_filter_enabled %}checked{% endif %} onchange="toggleTimeFilterOptions(this)">
|
||||||
|
<span class="toggle-slider"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
@@ -339,4 +367,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function toggleTimeFilterOptions(checkbox) {
|
||||||
|
const options = document.querySelector('.time-filter-options');
|
||||||
|
if (checkbox.checked) {
|
||||||
|
options.style.display = 'block';
|
||||||
|
} else {
|
||||||
|
options.style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
Reference in New Issue
Block a user