1 package net.pterodactylus.sone.web
3 import com.google.inject.*
4 import freenet.support.api.*
5 import net.pterodactylus.sone.core.*
6 import net.pterodactylus.sone.data.*
7 import net.pterodactylus.sone.database.*
8 import net.pterodactylus.sone.freenet.*
9 import net.pterodactylus.sone.freenet.wot.*
10 import net.pterodactylus.sone.main.*
11 import net.pterodactylus.sone.template.*
12 import net.pterodactylus.sone.text.*
13 import net.pterodactylus.util.notify.*
14 import net.pterodactylus.util.template.*
16 import javax.inject.Singleton
18 class WebInterfaceModule : AbstractModule() {
22 fun getTemplateContextFactory(
23 soneAccessor: SoneAccessor,
24 postAccessor: PostAccessor,
25 replyAccessor: ReplyAccessor,
26 identityAccessor: IdentityAccessor,
27 profileAccessor: ProfileAccessor,
28 l10nFilter: L10nFilter,
29 parserFilter: ParserFilter,
30 renderFilter: RenderFilter,
31 linkedElementsFilter: LinkedElementsFilter,
32 unknownDateFilter: UnknownDateFilter,
33 imageLinkFilter: ImageLinkFilter,
36 TemplateContextFactory().apply {
37 addAccessor(Any::class.java, ReflectionAccessor())
38 addAccessor(Collection::class.java, CollectionAccessor())
39 addAccessor(Sone::class.java, soneAccessor)
40 addAccessor(Post::class.java, postAccessor)
41 addAccessor(Reply::class.java, replyAccessor)
42 addAccessor(Album::class.java, AlbumAccessor())
43 addAccessor(Image::class.java, ImageAccessor())
44 addAccessor(Identity::class.java, identityAccessor)
45 addAccessor(Trust::class.java, TrustAccessor())
46 addAccessor(HTTPRequest::class.java, HttpRequestAccessor())
47 addAccessor(Profile::class.java, profileAccessor)
49 addFilter("date", DateFilter())
50 addFilter("html", HtmlFilter())
51 addFilter("replace", ReplaceFilter())
52 addFilter("store", StoreFilter())
53 addFilter("l10n", l10nFilter)
54 addFilter("substring", SubstringFilter())
55 addFilter("xml", XmlFilter())
56 addFilter("change", RequestChangeFilter())
57 addFilter("match", MatchFilter())
58 addFilter("css", CssClassNameFilter())
59 addFilter("js", JavascriptFilter())
60 addFilter("parse", parserFilter)
61 addFilter("shorten", ShortenFilter())
62 addFilter("render", renderFilter)
63 addFilter("linked-elements", linkedElementsFilter)
64 addFilter("render-linked-element", LinkedElementRenderFilter())
65 addFilter("reparse", ReparseFilter())
66 addFilter("unknown", unknownDateFilter)
67 addFilter("format", FormatFilter())
68 addFilter("duration", DurationFormatFilter())
69 addFilter("sort", CollectionSortFilter())
70 addFilter("image-link", imageLinkFilter)
71 addFilter("replyGroup", ReplyGroupFilter())
72 addFilter("in", ContainsFilter())
73 addFilter("unique", UniqueElementFilter())
74 addFilter("mod", ModFilter())
75 addFilter("paginate", PaginationFilter())
76 addFilter("render-histogram", HistogramRenderer())
78 addProvider(TemplateProvider.TEMPLATE_CONTEXT_PROVIDER)
79 addProvider(loaders.templateProvider)
83 fun getSoneAccessor(core: Core, timeTextConverter: TimeTextConverter) =
84 SoneAccessor(core, timeTextConverter)
87 fun getPostAccessor(core: Core) =
91 fun getReplyAccessor(core: Core) =
95 fun getIdentityAccessor(core: Core) =
96 IdentityAccessor(core)
99 fun getProfileAccessor(core: Core) =
100 ProfileAccessor(core)
103 fun getL10nFilter(translation: Translation) =
104 L10nFilter(translation)
107 fun getParserFilter(core: Core, soneTextParser: SoneTextParser) =
108 ParserFilter(core, soneTextParser)
111 fun getRenderFilter(soneProvider: SoneProvider, soneTextParser: SoneTextParser, htmlFilter: HtmlFilter) =
112 RenderFilter(soneProvider, soneTextParser, htmlFilter)
115 fun getLinkedElementsFilter(elementLoader: ElementLoader) =
116 LinkedElementsFilter(elementLoader)
119 fun getUnknownDateFilter(translation: Translation) =
120 UnknownDateFilter(translation, "View.Sone.Text.UnknownDate")
123 fun getImageLinkFilter(core: Core) =
124 ImageLinkFilter(core)
127 @Named("toadletPathPrefix")
128 fun getPathPrefix(): String = "/Sone/"
132 fun getNotificationManager() =
133 NotificationManager()