parent
							
								
									144f5966dd
								
							
						
					
					
						commit
						fcbaf6eee3
					
				| @ -29,13 +29,11 @@ pub struct SearchQuery { | ||||
| macro_rules! param_to_query { | ||||
|     ( $query:ident, $parsed_query:ident; normal: $($field:ident),*; date: $($date:ident),*) => { | ||||
|         $( | ||||
|             if let Some(ref field) = $query.$field { | ||||
|                 let mut rest = field.as_str(); | ||||
|                 while !rest.is_empty() { | ||||
|                     let (token, r) = Query::get_first_token(rest); | ||||
|                     rest = r; | ||||
|                     $parsed_query.$field(token, None); | ||||
|                 } | ||||
|             let mut rest = $query.$field.as_ref().map(String::as_str).unwrap_or_default(); | ||||
|             while !rest.is_empty() { | ||||
|                 let (token, r) = Query::get_first_token(rest); | ||||
|                 rest = r; | ||||
|                 $parsed_query.$field(token, None); | ||||
|             } | ||||
|         )* | ||||
|         $( | ||||
|  | ||||
| @ -75,18 +75,36 @@ pub fn tabs(links: &[(&str, &str, bool)]) -> Html<String> { | ||||
| } | ||||
| 
 | ||||
| pub fn paginate(catalog: &Catalog, page: i32, total: i32) -> Html<String> { | ||||
|     paginate_param(catalog, page, total, None) | ||||
| } | ||||
| pub fn paginate_param(catalog: &Catalog, page: i32, total: i32, param: Option<String>) -> Html<String> { | ||||
|     let mut res = String::new(); | ||||
|     let param = param.map(|mut p| {p.push('&'); p}).unwrap_or_default(); | ||||
|     res.push_str(r#"<div class="pagination">"#); | ||||
|     if page != 1 { | ||||
|         res.push_str(format!(r#"<a href="?page={}">{}</a>"#, page - 1, catalog.gettext("Previous page")).as_str()); | ||||
|         res.push_str(format!(r#"<a href="?{}page={}">{}</a>"#, param, page - 1, catalog.gettext("Previous page")).as_str()); | ||||
|     } | ||||
|     if page < total { | ||||
|         res.push_str(format!(r#"<a href="?page={}">{}</a>"#, page + 1, catalog.gettext("Next page")).as_str()); | ||||
|         res.push_str(format!(r#"<a href="?{}page={}">{}</a>"#, param, page + 1, catalog.gettext("Next page")).as_str()); | ||||
|     } | ||||
|     res.push_str("</div>"); | ||||
|     Html(res) | ||||
| } | ||||
| 
 | ||||
| pub fn encode_query_param(param: &str) -> String { | ||||
|     param.chars().map(|c| match c { | ||||
|         '+' => Ok("%2B"), | ||||
|         ' ' => Err('+'), | ||||
|         c   => Err(c), | ||||
|     }).fold(String::new(), |mut s,r| { | ||||
|         match r { | ||||
|             Ok(r) => s.push_str(r), | ||||
|             Err(r) => s.push(r), | ||||
|         }; | ||||
|         s | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| #[macro_export] | ||||
| macro_rules! icon { | ||||
|     ($name:expr) => { | ||||
|  | ||||
| @ -23,5 +23,5 @@ | ||||
|             } | ||||
|         </div> | ||||
|     } | ||||
|     @paginate(ctx.1, page, n_pages) | ||||
|     @paginate_param(ctx.1, page, n_pages, Some(format!("q={}", encode_query_param(query_str)))) | ||||
| }) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user