mirror of
				https://git.sr.ht/~tsileo/microblog.pub
				synced 2025-06-05 21:59:23 +02:00 
			
		
		
		
	Improve show more and show sensitive attachments
This commit is contained in:
		| @@ -76,6 +76,7 @@ _RESIZED_CACHE: MutableMapping[tuple[str, int], tuple[bytes, str, Any]] = LFUCac | |||||||
| # TODO(ts): | # TODO(ts): | ||||||
| # | # | ||||||
| # Next: | # Next: | ||||||
|  | # - allow to interact with object not in anybox (i.e. like from a lookup) | ||||||
| # - only show 10 most recent threads in DMs | # - only show 10 most recent threads in DMs | ||||||
| # - custom CSS for disabled button (e.g. sharing on a direct post) | # - custom CSS for disabled button (e.g. sharing on a direct post) | ||||||
| # - prevent double accept/double follow | # - prevent double accept/double follow | ||||||
|   | |||||||
| @@ -13,6 +13,44 @@ $code-highlight-background: #f0f0f0; | |||||||
| // Load custom theme | // Load custom theme | ||||||
| @import "theme.scss"; | @import "theme.scss"; | ||||||
|  |  | ||||||
|  | .show-more-wrapper { | ||||||
|  |   .p-summary { | ||||||
|  |     display: inline-block; | ||||||
|  |   } | ||||||
|  |   label { | ||||||
|  |     margin-left: 5px; | ||||||
|  |   } | ||||||
|  |   .show-more-state { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
|  |   .show-more-state ~ .obj-content { | ||||||
|  |     margin-top: 0; | ||||||
|  |   } | ||||||
|  |   .show-more-state:checked ~ .obj-content { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .sensitive-attachment { | ||||||
|  |   display: inline-block; | ||||||
|  |   .sensitive-attachment-state { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
|  |   .sensitive-attachment-state:checked ~ .sensitive-attachment-box div { | ||||||
|  |     display:none; | ||||||
|  |   } | ||||||
|  |   .sensitive-attachment-box { | ||||||
|  |     position: relative; | ||||||
|  |     div { | ||||||
|  |       position: absolute; | ||||||
|  |       width: 100%; | ||||||
|  |       height: 100%; | ||||||
|  |       z-index: 10; | ||||||
|  |       backdrop-filter: blur(2em); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| blockquote { | blockquote { | ||||||
|   border-left: 3px solid $secondary-color; |   border-left: 3px solid $secondary-color; | ||||||
|   margin-left: 0; |   margin-left: 0; | ||||||
| @@ -207,8 +245,9 @@ footer { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| .show-sensitive-btn, .show-more-btn { | .show-sensitive-btn, .show-more-btn, .label-btn { | ||||||
|     @include admin-button; |     @include admin-button; | ||||||
|  |     padding: 10px 5px; | ||||||
|     margin: 20px 0; |     margin: 20px 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -272,10 +311,10 @@ nav.flexbox { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     .activity-attachment { |     .activity-attachment { | ||||||
|  |         margin: 30px 0; | ||||||
|         img, audio, video { |         img, audio, video { | ||||||
|             width: 100%; |             width: 100%; | ||||||
|             max-width: 740px; |             max-width: 740px; | ||||||
|             margin: 30px 0; |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     img.inline-img { |     img.inline-img { | ||||||
|   | |||||||
| @@ -123,50 +123,6 @@ | |||||||
| </form> | </form> | ||||||
| {% endmacro %} | {% endmacro %} | ||||||
|  |  | ||||||
| {% macro sensitive_button(permalink_id) %} |  | ||||||
| <form action="{{ request.url }}#{{ permalink_id }}"  method="GET"> |  | ||||||
| <input type="hidden" name="show_sensitive" value="{{ permalink_id }}"> |  | ||||||
| {% for k, v in request.query_params.items() %} |  | ||||||
| <input type="hidden" name="{{k}}" value="{{v}}"> |  | ||||||
| {% endfor %} |  | ||||||
| <button type="submit" class="show-sensitive-btn">display sensitive content</button> |  | ||||||
| </form>  |  | ||||||
| {% endmacro %} |  | ||||||
|  |  | ||||||
| {% macro hide_sensitive_button(permalink_id) %} |  | ||||||
| <form action="{{ request.url }}#{{ permalink_id }}"  method="GET"> |  | ||||||
|     {% for k, v in request.query_params.items() %} |  | ||||||
|         {% if not (k == "show_sensitive" and v == permalink_id) %} |  | ||||||
|             <input type="hidden" name="{{k}}" value="{{v}}"> |  | ||||||
|         {% endif %} |  | ||||||
|     {% endfor %} |  | ||||||
|     <button type="submit" class="show-sensitive-btn">hide sensitive content</button> |  | ||||||
| </form>  |  | ||||||
| {% endmacro %} |  | ||||||
|  |  | ||||||
| {% macro show_more_button(permalink_id) %} |  | ||||||
| <form action="{{ request.url }}#{{ permalink_id }}"  method="GET"> |  | ||||||
| <input type="hidden" name="show_more" value="{{ permalink_id }}"> |  | ||||||
| {% for k, v in request.query_params.items() %} |  | ||||||
| <input type="hidden" name="{{k}}" value="{{v}}"> |  | ||||||
| {% endfor %} |  | ||||||
| <button type="submit" class="show-more-btn">show more</button> |  | ||||||
| </form>  |  | ||||||
| {% endmacro %} |  | ||||||
|  |  | ||||||
| {% macro show_less_button(permalink_id) %} |  | ||||||
| <form action="{{ request.url }}#{{ permalink_id }}"  method="GET"> |  | ||||||
|     {% for k, v in request.query_params.items() %} |  | ||||||
|         {% if not (k == "show_more" and v == permalink_id) %} |  | ||||||
|             <input type="hidden" name="{{k}}" value="{{v}}"> |  | ||||||
|         {% endif %} |  | ||||||
|     {% endfor %} |  | ||||||
|     <button type="submit" class="show-more-btn">show less</button> |  | ||||||
| </form>  |  | ||||||
| {% endmacro %} |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| {% macro admin_reply_button(ap_object_id) %} | {% macro admin_reply_button(ap_object_id) %} | ||||||
| <form action="/admin/new"  method="GET"> | <form action="/admin/new"  method="GET"> | ||||||
| <input type="hidden" name="in_reply_to" value="{{ ap_object_id }}"> | <input type="hidden" name="in_reply_to" value="{{ ap_object_id }}"> | ||||||
| @@ -348,21 +304,26 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| {% macro display_attachments(object) %} | {% macro display_attachments(object) %} | ||||||
|   {% if object.attachments and object.sensitive and not object.permalink_id in request.query_params.getlist("show_sensitive") %} |  | ||||||
|       {{ sensitive_button(object.permalink_id )}} |     {% for attachment in object.attachments %} | ||||||
|  |     {% if object.sensitive and (attachment.type == "Image" or (attachment | has_media_type("image")) or attachment.type == "Video" or (attachment | has_media_type("video"))) %} | ||||||
|  |     <div> | ||||||
|  |         <label for="{{attachment.proxied_url}}" class="label-btn" style="display:inline-block;">show/hide sensitive content</label> | ||||||
|  |         <div> | ||||||
|  |         <div class="sensitive-attachment"> | ||||||
|  |         <input class="sensitive-attachment-state" type="checkbox" id="{{attachment.proxied_url}}" aria-hidden="true"> | ||||||
|  |         <div class="sensitive-attachment-box"> | ||||||
|  |             <div></div> | ||||||
|  |     {% else %} | ||||||
|  |             <div style="margin-top:20px;"> | ||||||
|     {% endif %} |     {% endif %} | ||||||
|  |  | ||||||
|   {% if object.attachments and (not object.sensitive or (object.sensitive and object.permalink_id in request.query_params.getlist("show_sensitive"))) %} |  | ||||||
|     {% if object.sensitive %} |  | ||||||
|         {{ hide_sensitive_button(object.permalink_id) }} |  | ||||||
|     {% endif %} |  | ||||||
|     {% for attachment in object.attachments %} |  | ||||||
|     {% if attachment.type == "Image" or (attachment | has_media_type("image")) %} |     {% if attachment.type == "Image" or (attachment | has_media_type("image")) %} | ||||||
|         {% if attachment.url not in object.inlined_images %} |         {% if attachment.url not in object.inlined_images %} | ||||||
|             <img src="{{ attachment.resized_url or attachment.proxied_url }}"{% if attachment.name %} title="{{ attachment.name }}" alt="{{ attachment.name }}"{% endif %} class="attachment"> |             <img src="{{ attachment.resized_url or attachment.proxied_url }}"{% if attachment.name %} title="{{ attachment.name }}" alt="{{ attachment.name }}"{% endif %} class="attachment" style="margin:0;"> | ||||||
|         {% endif %} |         {% endif %} | ||||||
|     {% elif attachment.type == "Video" or (attachment | has_media_type("video")) %} |     {% elif attachment.type == "Video" or (attachment | has_media_type("video")) %} | ||||||
|     <video controls preload="metadata"  src="{{ attachment.url | media_proxy_url }}"{% if attachment.name %} title="{{ attachment.name }}"{% endif %} class="attachment"></video> |     <video controls preload="metadata"  src="{{ attachment.url | media_proxy_url }}"{% if attachment.name %} title="{{ attachment.name }}"{% endif %}></video> | ||||||
|     {% elif attachment.type == "Audio" or (attachment | has_media_type("audio")) %} |     {% elif attachment.type == "Audio" or (attachment | has_media_type("audio")) %} | ||||||
|     <audio controls preload="metadata"  src="{{ attachment.url | media_proxy_url }}"{% if attachment.name%} title="{{ attachment.name }}"{% endif %} style="width:480px;" class="attachment"></audio> |     <audio controls preload="metadata"  src="{{ attachment.url | media_proxy_url }}"{% if attachment.name%} title="{{ attachment.name }}"{% endif %} style="width:480px;" class="attachment"></audio> | ||||||
|     {% elif attachment.type == "Link" %} |     {% elif attachment.type == "Link" %} | ||||||
| @@ -370,8 +331,15 @@ | |||||||
|     {% else %} |     {% else %} | ||||||
|     <a href="{{ attachment.url | media_proxy_url }}"{% if attachment.name %} title="{{ attachment.name }}"{% endif %} class="attachment">{{ attachment.url }}</a> |     <a href="{{ attachment.url | media_proxy_url }}"{% if attachment.name %} title="{{ attachment.name }}"{% endif %} class="attachment">{{ attachment.url }}</a> | ||||||
|     {% endif %} |     {% endif %} | ||||||
|     {% endfor %} |     {% if object.sensitive %} | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  |     {% else %} | ||||||
|  |         </div> | ||||||
|     {% endif %} |     {% endif %} | ||||||
|  |     {% endfor %} | ||||||
| {% endmacro %} | {% endmacro %} | ||||||
|  |  | ||||||
| {% macro display_object(object, likes=[], shares=[], webmentions=[], expanded=False, actors_metadata={}, is_object_page=False) %} | {% macro display_object(object, likes=[], shares=[], webmentions=[], expanded=False, actors_metadata={}, is_object_page=False) %} | ||||||
| @@ -403,25 +371,20 @@ | |||||||
|                 <time class="dt-published muted" datetime="{{ object.ap_published_at.replace(microsecond=0).isoformat() }}" title="{{ object.ap_published_at.replace(microsecond=0).isoformat() }}">{{ object.ap_published_at.strftime("%b %d, %Y") }}</time> |                 <time class="dt-published muted" datetime="{{ object.ap_published_at.replace(microsecond=0).isoformat() }}" title="{{ object.ap_published_at.replace(microsecond=0).isoformat() }}">{{ object.ap_published_at.strftime("%b %d, %Y") }}</time> | ||||||
|     {% endif %} |     {% endif %} | ||||||
|  |  | ||||||
|  |  | ||||||
|     {% if object.summary %} |     {% if object.summary %} | ||||||
|         <p class="p-summary">{{ object.summary | clean_html(object) | safe }}</p> |     <div class="show-more-wrapper"> | ||||||
|     {% endif %} |         <div class="p-summary"> | ||||||
|  |             <p>{{ object.summary | clean_html(object) | safe }}</p> | ||||||
|     {% if object.sensitive and object.permalink_id not in request.query_params.getlist("show_more") %} |         </div> | ||||||
|         {{ show_more_button(object.permalink_id) }}  |         <label for="show-more-{{ object.permalink_id }}" class="show-more-btn">show/hide more</label> | ||||||
|     {% endif %} |         <input class="show-more-state" type="checkbox" aria-hidden="true" id="show-more-{{ object.permalink_id }}" checked> | ||||||
|  |  | ||||||
|     {% if not object.sensitive or (object.sensitive and object.permalink_id in request.query_params.getlist("show_more")) %} |  | ||||||
|         {% if object.sensitive %} |  | ||||||
|             {{ show_less_button(object.permalink_id) }}  |  | ||||||
|     {% endif %} |     {% endif %} | ||||||
|  |         <div class="obj-content"> | ||||||
|         <div class="e-content"> |         <div class="e-content"> | ||||||
|             {{ object.content | clean_html(object) | safe }} |             {{ object.content | clean_html(object) | safe }} | ||||||
|         </div> |         </div> | ||||||
|     {% endif %} |  | ||||||
|  |  | ||||||
|     {% if object.ap_type == "Question" and (not object.sensitive or (object.sensitive and object.permalink_id in request.query_params.getlist("show_more"))) %} |     {% if object.ap_type == "Question" %} | ||||||
|         {% set can_vote = is_admin and object.is_from_inbox and not object.is_poll_ended and not object.voted_for_answers %} |         {% set can_vote = is_admin and object.is_from_inbox and not object.is_poll_ended and not object.voted_for_answers %} | ||||||
|         {% if can_vote %} |         {% if can_vote %} | ||||||
|             <form action="{{ request.url_for("admin_actions_vote") }}" method="POST"> |             <form action="{{ request.url_for("admin_actions_vote") }}" method="POST"> | ||||||
| @@ -468,12 +431,16 @@ | |||||||
|             </form> |             </form> | ||||||
|         {% endif %} |         {% endif %} | ||||||
|  |  | ||||||
|  |         {{ display_og_meta(object) }} | ||||||
|  |  | ||||||
|     {% endif %} |     {% endif %} | ||||||
|  |  | ||||||
|     {{ display_og_meta(object) }} |         </div> | ||||||
|  |     {% if object.summary %} | ||||||
|  |     </div> | ||||||
|  |     {% endif %} | ||||||
|  |  | ||||||
|     <div class="activity-attachment"> |     <div class="activity-attachment" style="margin-bottom:20px;"> | ||||||
|     {{ display_attachments(object) }} |     {{ display_attachments(object) }} | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user