Slightly improve the media experience (#452)
* Slightly improve the media experience - Use a grid to display the list of media - Add icons for non-image media preview - Paginate the gallery - Add links to the gallery in the editor and in the profile settings to make it more discoverable when you need it Fixes #432 * Allow video and audio tags in SafeString Otherwise we can't display their preview, nor show them in articles Also show controls by default for these two elements * Show fallback images for audio and unknown files, to make them more visible * Add a new constructor to SafeString when the input is trusted and doesn't need to be escaped. And use it to generate media previews. * Make it possible to insert video/audio in articles
This commit is contained in:
@@ -19,12 +19,20 @@ lazy_static! {
|
||||
static ref CLEAN: Builder<'static> = {
|
||||
let mut b = Builder::new();
|
||||
b.add_generic_attributes(iter::once("id"))
|
||||
.add_tags(iter::once("iframe"))
|
||||
.add_tags(&[ "iframe", "video", "audio" ])
|
||||
.id_prefix(Some("postcontent-"))
|
||||
.url_relative(UrlRelative::Custom(Box::new(url_add_prefix)))
|
||||
.add_tag_attributes(
|
||||
"iframe",
|
||||
["width", "height", "src", "frameborder"].iter().map(|&v| v),
|
||||
[ "width", "height", "src", "frameborder" ].iter().map(|&v| v),
|
||||
)
|
||||
.add_tag_attributes(
|
||||
"video",
|
||||
[ "src", "title", "controls" ].iter(),
|
||||
)
|
||||
.add_tag_attributes(
|
||||
"audio",
|
||||
[ "src", "title", "controls" ].iter(),
|
||||
);
|
||||
b
|
||||
};
|
||||
@@ -53,6 +61,18 @@ impl SafeString {
|
||||
value: CLEAN.clean(&value).to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Creates a new `SafeString`, but without escaping the given value.
|
||||
///
|
||||
/// Only use when you are sure you can trust the input (when the HTML
|
||||
/// is entirely generated by Plume, not depending on user-inputed data).
|
||||
/// Prefer `SafeString::new` as much as possible.
|
||||
pub fn trusted(value: impl AsRef<str>) -> Self {
|
||||
SafeString {
|
||||
value: value.as_ref().to_string()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set(&mut self, value: &str) {
|
||||
self.value = CLEAN.clean(value).to_string();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user