1 package net.pterodactylus.sone.web
3 import com.google.common.eventbus.*
4 import com.google.inject.*
5 import freenet.support.api.*
6 import net.pterodactylus.sone.core.*
7 import net.pterodactylus.sone.data.*
8 import net.pterodactylus.sone.database.*
9 import net.pterodactylus.sone.freenet.*
10 import net.pterodactylus.sone.freenet.wot.*
11 import net.pterodactylus.sone.main.*
12 import net.pterodactylus.sone.template.*
13 import net.pterodactylus.sone.text.*
14 import net.pterodactylus.sone.web.notification.*
15 import net.pterodactylus.util.notify.*
16 import net.pterodactylus.util.template.*
18 import javax.inject.Singleton
20 class WebInterfaceModule : AbstractModule() {
24 fun getTemplateContextFactory(
25 soneAccessor: SoneAccessor,
26 postAccessor: PostAccessor,
27 replyAccessor: ReplyAccessor,
28 identityAccessor: IdentityAccessor,
29 profileAccessor: ProfileAccessor,
30 l10nFilter: L10nFilter,
31 parserFilter: ParserFilter,
32 renderFilter: RenderFilter,
33 linkedElementsFilter: LinkedElementsFilter,
34 unknownDateFilter: UnknownDateFilter,
35 imageLinkFilter: ImageLinkFilter,
38 TemplateContextFactory().apply {
39 addAccessor(Any::class.java, ReflectionAccessor())
40 addAccessor(Collection::class.java, CollectionAccessor())
41 addAccessor(Sone::class.java, soneAccessor)
42 addAccessor(Post::class.java, postAccessor)
43 addAccessor(Reply::class.java, replyAccessor)
44 addAccessor(Album::class.java, AlbumAccessor())
45 addAccessor(Image::class.java, ImageAccessor())
46 addAccessor(Identity::class.java, identityAccessor)
47 addAccessor(Trust::class.java, TrustAccessor())
48 addAccessor(HTTPRequest::class.java, HttpRequestAccessor())
49 addAccessor(Profile::class.java, profileAccessor)
51 addFilter("date", DateFilter())
52 addFilter("html", HtmlFilter())
53 addFilter("replace", ReplaceFilter())
54 addFilter("store", StoreFilter())
55 addFilter("l10n", l10nFilter)
56 addFilter("substring", SubstringFilter())
57 addFilter("xml", XmlFilter())
58 addFilter("change", RequestChangeFilter())
59 addFilter("match", MatchFilter())
60 addFilter("css", CssClassNameFilter())
61 addFilter("js", JavascriptFilter())
62 addFilter("parse", parserFilter)
63 addFilter("shorten", ShortenFilter())
64 addFilter("render", renderFilter)
65 addFilter("linked-elements", linkedElementsFilter)
66 addFilter("render-linked-element", LinkedElementRenderFilter())
67 addFilter("reparse", ReparseFilter())
68 addFilter("unknown", unknownDateFilter)
69 addFilter("format", FormatFilter())
70 addFilter("duration", DurationFormatFilter())
71 addFilter("sort", CollectionSortFilter())
72 addFilter("image-link", imageLinkFilter)
73 addFilter("replyGroup", ReplyGroupFilter())
74 addFilter("in", ContainsFilter())
75 addFilter("unique", UniqueElementFilter())
76 addFilter("mod", ModFilter())
77 addFilter("paginate", PaginationFilter())
78 addFilter("render-histogram", HistogramRenderer())
80 addProvider(TemplateProvider.TEMPLATE_CONTEXT_PROVIDER)
81 addProvider(loaders.templateProvider)
85 fun getSoneAccessor(core: Core, timeTextConverter: TimeTextConverter) =
86 SoneAccessor(core, timeTextConverter)
89 fun getPostAccessor(core: Core) =
93 fun getReplyAccessor(core: Core) =
97 fun getIdentityAccessor(core: Core) =
98 IdentityAccessor(core)
101 fun getProfileAccessor(core: Core) =
102 ProfileAccessor(core)
105 fun getL10nFilter(translation: Translation) =
106 L10nFilter(translation)
109 fun getParserFilter(core: Core, soneTextParser: SoneTextParser) =
110 ParserFilter(core, soneTextParser)
113 fun getRenderFilter(soneProvider: SoneProvider, soneTextParser: SoneTextParser, htmlFilter: HtmlFilter) =
114 RenderFilter(soneProvider, soneTextParser, htmlFilter)
117 fun getLinkedElementsFilter(elementLoader: ElementLoader) =
118 LinkedElementsFilter(elementLoader)
121 fun getUnknownDateFilter(translation: Translation) =
122 UnknownDateFilter(translation, "View.Sone.Text.UnknownDate")
125 fun getImageLinkFilter(core: Core) =
126 ImageLinkFilter(core)
129 @Named("toadletPathPrefix")
130 fun getPathPrefix(): String = "/Sone/"
134 fun getNotificationManager() =
135 NotificationManager()
139 fun getNotificationHandler(eventBus: EventBus, loaders: Loaders, notificationManager: NotificationManager) =
140 NotificationHandler(eventBus, loaders, notificationManager)