Commit | Line | Data |
---|---|---|
83001824 NR |
1 | package be.nikiroo.fanfix.library.web.templates; |
2 | ||
8639c60d NR |
3 | import java.util.List; |
4 | ||
5 | import be.nikiroo.fanfix.Instance; | |
6 | import be.nikiroo.fanfix.bundles.UiConfig; | |
7 | import be.nikiroo.fanfix.library.Template; | |
8 | import be.nikiroo.utils.Version; | |
9 | ||
977f60a2 NR |
10 | /** |
11 | * Utility class to retrieve and fill HTML templates for Fanfix web server. | |
12 | * | |
13 | * @author niki | |
14 | */ | |
83001824 | 15 | public class WebLibraryServerTemplates { |
8639c60d NR |
16 | static private WebLibraryServerTemplates instance = new WebLibraryServerTemplates(); |
17 | ||
977f60a2 NR |
18 | /** |
19 | * Get the (unique) instance of this {@link WebLibraryServerTemplates}. | |
20 | * | |
21 | * @return the (unique) instance | |
22 | */ | |
8639c60d NR |
23 | static public WebLibraryServerTemplates getInstance() { |
24 | return instance; | |
25 | } | |
26 | ||
27 | public Template bookline(String luid, String href, String title, | |
28 | String author, boolean cached) { | |
29 | ||
30 | String cachedClass = "cached"; | |
31 | String cachedValue = "◉"; | |
32 | if (!cached) { | |
33 | cachedClass = "uncached"; | |
34 | cachedValue = "○"; | |
35 | } | |
36 | ||
37 | return new Template(getClass(), "bookline.html") // | |
38 | .set("href", href) // | |
39 | .set("cachedClass", cachedClass) // | |
40 | .set("cached", cachedValue) // | |
41 | .set("luid", luid) // | |
42 | .set("title", title) // | |
43 | .set("author", author) // | |
44 | ; | |
45 | } | |
46 | ||
379a497e NR |
47 | public Template index(boolean banner, boolean fullscreen, |
48 | List<Template> content) { | |
074a8325 NR |
49 | String favicon = "favicon.ico"; |
50 | String icon = Instance.getInstance().getUiConfig() | |
51 | .getString(UiConfig.PROGRAM_ICON); | |
52 | if (icon != null) { | |
53 | favicon = "icon_" + icon.replace("-", "_") + ".png"; | |
54 | } | |
55 | ||
56 | Template index = new Template(getClass(), "index.html") // | |
57 | .set("title", "Fanfix") // | |
58 | .set("favicon", favicon) // | |
379a497e | 59 | .set("mainClass", fullscreen ? "fullscreen" : "") // |
074a8325 NR |
60 | .set("content", content) // |
61 | ; | |
62 | ||
63 | if (banner) { | |
64 | index.set("banner", new Template(getClass(), "index.banner.html") // | |
65 | .set("favicon", favicon) // | |
66 | .set("version", Version.getCurrentVersion().toString()) // | |
67 | ); | |
68 | } else { | |
69 | index.set("banner", ""); | |
70 | } | |
71 | ||
72 | return index; | |
73 | } | |
74 | ||
75 | public Template login(String url) { | |
76 | return new Template(getClass(), "login.html") // | |
77 | .set("url", url) // | |
78 | ; | |
79 | } | |
80 | ||
81 | public Template message(String message, boolean error) { | |
82 | return new Template(getClass(), "message.html") // | |
83 | .set("class", error ? "message error" : "message") // | |
84 | .set("message", message) // | |
85 | ; | |
86 | } | |
87 | ||
8639c60d NR |
88 | public Template browser(String selectedValue, String filter, |
89 | List<Template> selects) { | |
90 | return new Template(getClass(), "browser.html") // | |
91 | .set("sourcesSelected", | |
92 | "sources".equals(selectedValue) ? "selected='selected'" | |
93 | : "") // | |
94 | .set("authorsSelected", | |
95 | "authors".equals(selectedValue) ? "selected='selected'" | |
96 | : "") // | |
97 | .set("tagsSelected", | |
98 | "tags".equals(selectedValue) ? "selected='selected'" | |
99 | : "") // | |
100 | .set("filter", filter) // | |
101 | .set("selects", selects) // | |
102 | ; | |
103 | } | |
104 | ||
105 | public Template browserOption(String name, String value, | |
106 | String selectedValue) { | |
107 | return new Template(getClass(), "browser.option.html") // | |
108 | .set("value", value) // | |
109 | .set("selected", | |
110 | value.equals(selectedValue) ? "selected='selected'" | |
111 | : "") // | |
112 | .set("name", name) // | |
113 | ; | |
114 | } | |
115 | ||
116 | public Template browserSelect(String name, String value, | |
117 | List<Template> options) { | |
118 | return new Template(getClass(), "browser.select.html") // | |
119 | .set("name", name) // | |
120 | .set("value", value) // | |
121 | .set("options", options) // | |
122 | ; | |
123 | } | |
124 | ||
977f60a2 NR |
125 | public Template viewerDesc(String title, String href, String cover, |
126 | List<Template> desclines) { | |
127 | return new Template(getClass(), "viewer.desc.html") // | |
128 | .set("title", title) // | |
129 | .set("href", href) // | |
130 | .set("cover", cover) // | |
131 | .set("details", desclines) // | |
132 | ; | |
133 | } | |
134 | ||
135 | public Template viewerDescline(String key, String value) { | |
136 | return new Template(getClass(), "viewer.descline.html") // | |
137 | .set("key", key) // | |
138 | .set("value", value) // | |
139 | ; | |
8639c60d NR |
140 | } |
141 | ||
379a497e | 142 | // href NULL means no forward link |
8639c60d | 143 | public Template viewerImage(String src, String href, String zoomStyle) { |
379a497e NR |
144 | return new Template(getClass(), |
145 | href == null ? "viewer.image.nolink.html" : "viewer.image.html") // | |
146 | .set("src", src) // | |
147 | .set("href", href) // | |
148 | .set("zoomStyle", zoomStyle) // | |
8639c60d NR |
149 | ; |
150 | } | |
151 | ||
977f60a2 | 152 | public Template viewerText(Template desc, String content) { |
8639c60d NR |
153 | return new Template(getClass(), "viewer.text.html") // |
154 | .set("desc", desc) // | |
155 | .set("content", content) // | |
156 | ; | |
157 | } | |
158 | ||
977f60a2 | 159 | public Template viewerLink(String name, String link, boolean selected) { |
8639c60d NR |
160 | return new Template(getClass(), "viewer.link.html") // |
161 | .set("link", link) // | |
977f60a2 | 162 | .set("class", selected ? "selected" : "") // |
8639c60d NR |
163 | .set("name", name) // |
164 | ; | |
165 | } | |
166 | ||
167 | public Template viewerNavbar(int current, List<Template> links, | |
168 | String hrefFirst, String hrefPrevious, String hrefNext, | |
169 | String hrefLast, boolean disabledFirst, boolean disabledPrevious, | |
170 | boolean disabledNext, boolean disabledLast) { | |
171 | return new Template(getClass(), "viewer.navbar.html") // | |
172 | .set("disabledFirst", | |
173 | disabledFirst ? "disabled='disabled'" : "") // | |
174 | .set("disabledPrevious", | |
175 | disabledPrevious ? "disabled='disabled'" : "") // | |
176 | .set("disabledNext", disabledNext ? "disabled='disabled'" : "") // | |
177 | .set("disabledLast", disabledLast ? "disabled='disabled'" : "") // | |
178 | .set("hrefFirst", hrefFirst) // | |
179 | .set("hrefPrevious", hrefPrevious) // | |
180 | .set("hrefNext", hrefNext) // | |
181 | .set("hrefLast", hrefLast) // | |
182 | .set("current", Integer.toString(current)) // | |
183 | .set("links", links) // | |
184 | ; | |
185 | } | |
186 | ||
379a497e | 187 | // supported numberOfButtons = 5 or 4 or 1 or the moment |
8639c60d NR |
188 | public Template viewerOptionbar(int numberOfButtons, |
189 | List<Template> buttons) { | |
190 | return new Template(getClass(), "viewer.optionbar.html") // | |
191 | .set("classSize", "s" + numberOfButtons) // | |
192 | .set("buttons", buttons) // | |
193 | ; | |
194 | } | |
195 | ||
196 | public Template viewerOptionbarButton(String value, String href, | |
197 | String className, boolean disabled) { | |
198 | return new Template(getClass(), "viewer.optionbar.button.html") // | |
199 | .set("disabled", disabled ? "disabled='disabled'" : "") // | |
200 | .set("class", className) // | |
201 | .set("href", href) // | |
202 | .set("value", value) // | |
203 | ; | |
204 | } | |
83001824 | 205 | } |