1 <%include include/head.html>
3 <div class="page-id hidden">image-browser</div>
5 <script language="javascript">
8 /* hide all those forms. */
9 hideAndShowBlock = function(blockElement, clickToShowElement, clickToHideElement) {
10 $(blockElement).hide();
11 $(clickToShowElement).removeClass("hidden");
12 $(clickToShowElement).click(function() {
13 $(blockElement).slideDown();
14 $(clickToShowElement).addClass("hidden");
15 $(clickToHideElement).removeClass("hidden");
17 $(clickToHideElement).click(function() {
18 $(blockElement).slideUp();
19 $(clickToHideElement).addClass("hidden");
20 $(clickToShowElement).removeClass("hidden");
31 <p><%= Page.ImageBrowser.Album.Error.NotFound.Text|l10n|html></p>
33 <%elseifnull album.title>
35 <p><%= Page.ImageBrowser.Album.Error.NotFound.Text|l10n|html></p>
39 <%if album.sone.local>
40 <script language="javascript">
42 /* ID of the image currently being edited. */
43 editingImageId = null;
46 * Shows the form for editing an image.
48 * @param imageId The ID of the image to edit.
50 function editImage(imageId) {
51 if (editingImageId != imageId) {
56 $(".show-data", "#image-" + imageId).hide();
57 $(".edit-data", "#image-" + imageId).show();
58 $(document).bind("click.sone", function(event) {
59 console.log("event: " + event);
60 console.log("closest: " + $(event.target).closest("#image-" + imageId));
61 if ($(event.target).closest("#image-" + imageId).size() == 0) {
68 * Cancels all image editing.
70 function cancelEditing() {
71 $(".show-data").show();
72 $(".edit-data").hide();
73 $("form.edit-image").each(function() {
76 $(document).unbind("click.sone");
77 editingImageId = null;
81 getTranslation("WebInterface.DefaultText.UploadImage.Title", function(text) {
82 $("#upload-image :input[name='title']").each(function() {
83 registerInputTextareaSwap(this, text, "title", false, true);
86 getTranslation("WebInterface.DefaultText.UploadImage.Description", function(text) {
87 $("#upload-image :input[name='description']").each(function() {
88 registerInputTextareaSwap(this, text, "description", true, false);
91 $("#upload-image label").hide();
92 getTranslation("WebInterface.DefaultText.CreateAlbum.Name", function(text) {
93 $("#create-album input[name='name']").each(function() {
94 registerInputTextareaSwap(this, text, "name", false, true);
97 getTranslation("WebInterface.DefaultText.CreateAlbum.Description", function(text) {
98 $("#create-album input[name='description']").each(function() {
99 registerInputTextareaSwap(this, text, "description", true, true);
102 $("#create-album label").hide();
103 getTranslation("WebInterface.DefaultText.EditAlbum.Title", function(text) {
104 $("#edit-album input[name='title']").each(function() {
105 registerInputTextareaSwap(this, text, "title", false, true);
108 getTranslation("WebInterface.DefaultText.EditAlbum.Description", function(text) {
109 $("#edit-album :input[name='description']").each(function() {
110 registerInputTextareaSwap(this, text, "description", true, false);
113 $("#edit-album label").hide();
115 hideAndShowBlock(".edit-album", ".show-edit-album", ".hide-edit-album");
116 hideAndShowBlock(".create-album", ".show-create-album", ".hide-create-album");
117 hideAndShowBlock(".upload-image", ".show-upload-image", ".hide-upload-image");
118 hideAndShowBlock(".delete-album", ".show-delete-album", ".hide-delete-album");
120 $(".image").each(function() {
121 $(".show-data", this).click(function() {
122 imageId = $(this).closest(".image").find(".image-id").text();
130 <h1 class="backlink"><%= Page.ImageBrowser.Album.Title|l10n|replace needle='{album}' replacementKey=album.title|html></h1>
132 <div class="backlinks">
133 <%foreach album.backlinks backlink backlinks>
134 <div class="backlink">
135 <a href="<% backlink.target|html>"><% backlink.name|html></a>
137 <%if ! backlinks.last>
138 <div class="separator">></div>
143 <p id="description"><% album.description|html></p>
145 <%if album.sone.local>
146 <div class="show-edit-album hidden toggle-link"><a class="small-link">» <%= Page.ImageBrowser.Album.Edit.Title|l10n|html></a></div>
147 <div class="hide-edit-album hidden toggle-link"><a class="small-link">« <%= Page.ImageBrowser.Album.Edit.Title|l10n|html></a></div>
148 <div class="edit-album">
149 <h2><%= Page.ImageBrowser.Album.Edit.Title|l10n|html></h2>
151 <form id="edit-album" action="editAlbum.html" method="post">
152 <input type="hidden" name="formPassword" value="<%formPassword|html>" />
153 <input type="hidden" name="album" value="<%album.id|html>" />
155 <%if ! album.images.empty>
157 <label for="album-image"><%= Page.ImageBrowser.Album.Label.AlbumImage|l10n|html></label>
158 <select name="album-image">
159 <option disabled="disabled"><%= Page.ImageBrowser.Album.AlbumImage.Choose|l10n|html></option>
160 <%foreach album.images image>
161 <option value="<% image.id|html>"<%if album.albumImage.id|match key=image.id> selected="selected"<%/if>><% image.title|html></option>
167 <label for="title"><%= Page.ImageBrowser.Album.Label.Title|l10n|html></label>
168 <input type="text" name="title" value="<%album.title|html>" />
171 <label for="description"><%= Page.ImageBrowser.Album.Label.Description|l10n|html></label>
172 <textarea name="description"><%album.description|html></textarea>
174 <button type="submit"><%= Page.ImageBrowser.Album.Button.Save|l10n|html></button>
179 <%foreach album.albums album>
180 <%first><h2><%= Page.ImageBrowser.Header.Albums|l10n|html></h2><%/first>
181 <%if loop.count|mod divisor=3><div class="image-row"><%/if>
182 <div class="album image">
183 <div class="image-container">
184 <a href="imageBrowser.html?album=<% album.id|html>" title="<% album.title|html>">
185 <%ifnull album.albumImage>
186 <img src="images/unknown-image-0.png" width="266" height="200" alt="<% album.title|html>" title="<% album.title|html>" style="position: relative; top: 0px; left: -33px;" />
188 <% album.albumImage|image-link max-width=200 max-height=200 mode=enlarge title==album.title>
192 <div class="show-data">
193 <div class="album-title"><% album.title|html></div>
194 <div class="album-description"><% album.description|html></div>
197 <%= false|store key=endRow>
198 <%if loop.count|mod divisor=3 offset=1><%= true|store key=endRow><%/if>
199 <%last><%= true|store key=endRow><%/last>
200 <%if endRow></div><%/if>
203 <%if album.sone.local>
204 <div class="show-create-album hidden toggle-link"><a class="small-link">» <%= View.CreateAlbum.Title|l10n|html></a></div>
205 <div class="hide-create-album hidden toggle-link"><a class="small-link">« <%= View.CreateAlbum.Title|l10n|html></a></div>
206 <div class="create-album">
207 <%include include/createAlbum.html>
211 <%foreach album.images image>
212 <%first><h2><%= Page.ImageBrowser.Header.Images|l10n|html></h2><%/first>
213 <%if loop.count|mod divisor=3><div class="image-row"><%/if>
214 <div id="image-<% image.id|html>" class="image">
215 <div class="image-id hidden"><% image.id|html></div>
216 <div class="image-container">
217 <a href="imageBrowser.html?image=<%image.id|html>"><% image|image-link max-width=200 max-height=200 mode=enlarge title==image.title></a>
219 <div class="show-data">
220 <div class="image-title"><% image.title|html></div>
221 <div class="image-description"><% image.description|html></div>
223 <%if album.sone.local>
224 <form class="edit-image" action="editImage.html" method="post">
225 <input type="hidden" name="formPassword" value="<%formPassword|html>" />
226 <input type="hidden" name="returnPage" value="<%request.uri|html>" />
227 <input type="hidden" name="image" value="<%image.id|html>" />
229 <div class="edit-data hidden">
231 <input type="text" name="title" value="<%image.title|html>" />
234 <textarea name="description"><%image.description|html></textarea>
237 <%notfirst><button type="submit" name="moveLeft" value="true"><%= Page.ImageBrowser.Image.Button.MoveLeft|l10n|html></button><%/notfirst>
238 <button type="submit"><%= Page.ImageBrowser.Image.Button.Save|l10n|html></button>
239 <%notlast><button type="submit" name="moveRight" value="true"><%= Page.ImageBrowser.Image.Button.MoveRight|l10n|html></button><%/notlast>
245 <%= false|store key=endRow>
246 <%if loop.count|mod divisor=3 offset=1><%= true|store key=endRow><%/if>
247 <%last><%= true|store key=endRow><%/last>
248 <%if endRow></div><%/if>
251 <%if album.sone.local>
252 <div class="show-upload-image hidden toggle-link"><a class="small-link">» <%= View.UploadImage.Title|l10n|html></a></div>
253 <div class="hide-upload-image hidden toggle-link"><a class="small-link">« <%= View.UploadImage.Title|l10n|html></a></div>
254 <div class="upload-image">
255 <%include include/uploadImage.html>
259 <div class="show-delete-album hidden toggle-link"><a class="small-link">» <%= Page.ImageBrowser.Album.Delete.Title|l10n|html></a></div>
260 <div class="hide-delete-album hidden toggle-link"><a class="small-link">« <%= Page.ImageBrowser.Album.Delete.Title|l10n|html></a></div>
261 <div class="delete-album">
262 <form id="delete-album" action="deleteAlbum.html" method="get">
263 <input type="hidden" name="album" value="<%album.id|html>" />
264 <button type="submit"><%= Page.ImageBrowser.Album.Button.Delete|l10n|html></button>
273 <%elseif imageRequested>
275 <h1 class="backlink"><%image.title|html></h1>
277 <div class="backlinks">
278 <%foreach image.album.backlinks backlink backlinks>
279 <div class="backlink">
280 <a href="<% backlink.target|html>"><% backlink.name|html></a>
282 <%if ! backlinks.last>
283 <div class="separator">></div>
292 <%if image.sone.local>
293 <script language="javascript">
295 getTranslation("WebInterface.DefaultText.EditImage.Title", function(text) {
296 $("#edit-image input[name='title']").each(function() {
297 registerInputTextareaSwap(this, text, "title", false, true);
300 getTranslation("WebInterface.DefaultText.EditImage.Description", function(text) {
301 $("#edit-image :input[name='description']").each(function() {
302 registerInputTextareaSwap(this, text, "description", true, false);
305 $("#edit-image label").hide();
307 hideAndShowBlock(".edit-image", ".show-edit-image", ".hide-edit-image");
308 hideAndShowBlock(".delete-image", ".show-delete-image", ".hide-delete-image");
313 <div class="single-image">
315 <a href="/<%image.key|html>"><% image|image-link max-width=640 max-height=480></a>
317 <a href="imageBrowser.html?image=<%image.id|html>"><% image|image-link max-width=640 max-height=480></a>
321 <p class="parsed"><%image.description|parse sone=image.sone></p>
323 <%if image.sone.local>
325 <div class="show-edit-image hidden toggle-link"><a class="small-link">» <%= Page.ImageBrowser.Image.Edit.Title|l10n|html></a></div>
326 <div class="hide-edit-image hidden toggle-link"><a class="small-link">« <%= Page.ImageBrowser.Image.Edit.Title|l10n|html></a></div>
327 <div class="edit-image">
328 <h2><%= Page.ImageBrowser.Image.Edit.Title|l10n|html></h2>
330 <form id="edit-image" action="editImage.html" method="post">
331 <input type="hidden" name="formPassword" value="<%formPassword|html>" />
332 <input type="hidden" name="returnPage" value="<%request.uri|html>" />
333 <input type="hidden" name="image" value="<%image.id|html>" />
336 <label for="title"><%= Page.ImageBrowser.Image.Title.Label|l10n|html></label>
337 <input type="text" name="title" value="<%image.title|html>" />
340 <label for="description"><%= Page.ImageBrowser.Image.Description.Label|l10n|html></label>
341 <textarea name="description"><%image.description|html></textarea>
344 <button type="submit"><%= Page.ImageBrowser.Image.Button.Save|l10n|html></button>
349 <div class="show-delete-image hidden toggle-link"><a class="small-link">» <%= Page.ImageBrowser.Image.Delete.Title|l10n|html></a></div>
350 <div class="hide-delete-image hidden toggle-link"><a class="small-link">« <%= Page.ImageBrowser.Image.Delete.Title|l10n|html></a></div>
351 <div class="delete-image">
352 <h2><%= Page.ImageBrowser.Image.Delete.Title|l10n|html></h2>
354 <form id="delete-image" action="deleteImage.html" method="get">
355 <input type="hidden" name="image" value="<%image.id|html>" />
356 <button type="submit"><%= Page.ImageBrowser.Image.Button.Delete|l10n|html></button>
364 <%elseif soneRequested>
367 <script language="javascript">
369 getTranslation("WebInterface.DefaultText.CreateAlbum.Name", function(text) {
370 $("#create-album input[name='name']").each(function() {
371 registerInputTextareaSwap(this, text, "name", false, true);
374 getTranslation("WebInterface.DefaultText.CreateAlbum.Description", function(text) {
375 $("#create-album input[name='description']").each(function() {
376 registerInputTextareaSwap(this, text, "description", true, true);
379 $("#create-album label").hide();
381 hideAndShowBlock(".create-album", ".show-create-album", ".hide-create-album");
388 <p><%= Page.ImageBrowser.Sone.Error.NotFound.Text|l10n|html></p>
392 <h1><%= Page.ImageBrowser.Sone.Title|l10n|replace needle='{sone}' replacementKey=sone.niceName|html></h1>
394 <%foreach sone.albums album>
395 <%if loop.count|mod divisor=3><div class="image-row"><%/if>
396 <div class="album image">
397 <div class="image-container">
398 <a href="imageBrowser.html?album=<% album.id|html>" title="<% album.title|html>">
399 <%ifnull album.albumImage>
400 <img src="images/unknown-image-0.png" width="266" height="200" alt="<% album.title|html>" title="<% album.title|html>" style="position: relative; top: 0px; left: -33px;"/>
402 <% album.albumImage|image-link max-width=200 max-height=200 mode=enlarge title==album.title>
406 <div class="show-data">
407 <div class="album-title"><% album.title|html></div>
408 <div class="album-description"><% album.description|html></div>
411 <%= false|store key=endRow>
412 <%if loop.count|mod divisor=3 offset=1><%= true|store key=endRow><%/if>
413 <%last><%= true|store key=endRow><%/last>
414 <%if endRow></div><%/if>
418 <div class="show-create-album hidden toggle-link"><a class="small-link">» <%= View.CreateAlbum.Title|l10n|html></a></div>
419 <div class="hide-create-album hidden toggle-link"><a class="small-link">« <%= View.CreateAlbum.Title|l10n|html></a></div>
420 <div class="create-album">
421 <%include include/createAlbum.html>
429 <%include include/tail.html>