update to master
[fanfix.git] / library / web / templates / WebLibraryServerTemplates.java
CommitLineData
83001824
NR
1package be.nikiroo.fanfix.library.web.templates;
2
8639c60d
NR
3import java.util.List;
4
5import be.nikiroo.fanfix.Instance;
6import be.nikiroo.fanfix.bundles.UiConfig;
7import be.nikiroo.fanfix.library.Template;
8import 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 15public 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}