forked from fediversity/fediversity
		
	add event content type
This commit is contained in:
		
							parent
							
								
									d5b329ede9
								
							
						
					
					
						commit
						61b2d07b1d
					
				
					 1 changed files with 81 additions and 0 deletions
				
			
		
							
								
								
									
										81
									
								
								website/structure/event.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								website/structure/event.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,81 @@ | |||
| { config, options, lib, ... }: | ||||
| let | ||||
|   inherit (lib) | ||||
|     mkOption | ||||
|     types | ||||
|     ; | ||||
|   cfg = config; | ||||
| in | ||||
| { | ||||
|   content-types.event = { config, collection, ... }: { | ||||
|     imports = [ cfg.content-types.page ]; | ||||
|     options = { | ||||
|       collection = mkOption { | ||||
|         description = "Collection this event belongs to"; | ||||
|         type = options.collections.type.nestedTypes.elemType; | ||||
|         default = collection; | ||||
|       }; | ||||
|       start-date = mkOption { | ||||
|         description = "Start date of the event"; | ||||
|         type = with types; str; | ||||
|       }; | ||||
|       start-time = mkOption { | ||||
|         description = "Start time of the event"; | ||||
|         type = with types; str; | ||||
|         default = null; | ||||
|       }; | ||||
|       end-date = mkOption { | ||||
|         description = "End date of the event"; | ||||
|         type = with types; str; | ||||
|         default = null; | ||||
|       }; | ||||
|       end-time = mkOption { | ||||
|         description = "End time of the event"; | ||||
|         type = with types; str; | ||||
|         default = null; | ||||
|       }; | ||||
|       location = mkOption { | ||||
|         description = "Location of the event"; | ||||
|         type = with types; str; | ||||
|       }; | ||||
|     }; | ||||
|     config.name = lib.slug config.title; | ||||
|     config.summary = lib.mkDefault config.description; | ||||
|     config.outputs.html = lib.mkForce | ||||
|       ((cfg.templates.html.page config).override (final: prev: { | ||||
|         html.body.content = with lib; map | ||||
|           (e: | ||||
|             if isAttrs e && e ? section | ||||
|             then | ||||
|               recursiveUpdate e | ||||
|                 { | ||||
|                   section.content = [ | ||||
|                     { | ||||
|                       dl.content = [ | ||||
|                         { | ||||
|                           terms = [{ dt = "Location"; }]; | ||||
|                           descriptions = [{ dd = config.location; }]; | ||||
|                         } | ||||
|                         { | ||||
|                           terms = [{ dt = "Start"; }]; | ||||
|                           descriptions = [{ | ||||
|                             dd = config.start-date + lib.optionalString (!isNull config.start-time) " ${config.start-time}"; | ||||
|                           }]; | ||||
|                         } | ||||
|                       ] ++ lib.optional (!isNull config.end-date) { | ||||
|                         terms = [{ dt = "End"; }]; | ||||
|                         descriptions = [{ | ||||
|                           dd = config.end-date + lib.optionalString (!isNull config.end-time) " ${config.end-time}"; | ||||
|                         }]; | ||||
|                       }; | ||||
|                     } | ||||
|                   ] | ||||
|                   ++ e.section.content; | ||||
|                 } | ||||
|             else e | ||||
|           ) | ||||
|           prev.html.body.content; | ||||
| 
 | ||||
|       })); | ||||
|   }; | ||||
| } | ||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Valentin Gagarin
							Valentin Gagarin