From: Victor Wagner <vitus@wagner.pp.ru>
Date: Tue, 1 Apr 2008 10:10:31 +0000 (+0000)
Subject: Added form to dynamically add new file input while entering message
X-Git-Url: http://wagner.pp.ru/gitweb/?a=commitdiff_plain;h=363edb3c84c27c360426cabd42e2e8b553cde8ea;p=oss%2Fstilllife.git

Added form to dynamically add new file input while entering message
---

diff --git a/templates/basicset/TODO b/templates/basicset/TODO
index a4500d7..06741f5 100644
--- a/templates/basicset/TODO
+++ b/templates/basicset/TODO
@@ -1,15 +1,15 @@
   Roadmap для client-side скриптов и дизайна
 +  1. Нормальный полноценный CSS и более приличные шаблоны темы и форума.
-  2. Скрипт который по нажатию ссылки reply открывает форму прямо на
++  2. Скрипт который по нажатию ссылки reply открывает форму прямо на
 	странице (находящуюся в <div id="reply">). 
-	Форма должна открываться непосредственно под текущей ссылкой.
+	Форма должна открываться непосредственно под текущей ссылкой. vitus
 
-  3. Аналогичный скрипт для ссылки login
+-  3. Аналогичный скрипт для ссылки login. (нафиг не надо)
 + 4. client-side проверка прав доступа done, safir
 +  5  скрытие элементов управления,
 	недоступных текущему пользователю. done, vitus
   6. Шаблоны остальных операций - по мере реализации оных. 
   7. Операция цитирования реплики, на которую отвечаешь (вероятно, с
   	server-side поддержкой)
-  8. Скрипт который при заполнении очередного поля аплоада картинки в
-  форме реплики, добавляет следующее пустое поле.	
++  8. Скрипт который при заполнении очередного поля аплоада картинки в
+  форме реплики, добавляет следующее пустое поле.	vitus
diff --git a/templates/basicset/common.js b/templates/basicset/common.js
index 7f54c75..30377b5 100644
--- a/templates/basicset/common.js
+++ b/templates/basicset/common.js
@@ -16,3 +16,37 @@ function selectSite( element) {
   	password_field.disabled=0;
   }	
 }
+//
+// Вызывается при заполнении очередного поля аплоада картинки и
+// добавляет еще одно такое же.
+//
+function addPictureInput(tag) {
+	// Ищем вверх по дереву элемент с классом pictureinput
+	while (tag.className != "pictureinput") {
+		if (!tag.parentNode) {
+			// Не нашли
+			break;
+		}
+		tag=tag.parentNode;
+	}
+	// Теперь пошли вниз по сиблингам искать, есть ли пустое поле
+	var prev=tag;
+	while (tag && tag.className == "pictureinput") {
+		prev = tag;
+		tag=tag.nextSibling;
+	}
+	var inputs = prev.getElementsByTagName("input");
+	if (!inputs[0].value) {
+		// Последний элемент еще не заполнен. Новый не нужен.
+		return;
+	}	
+	var copy = prev.cloneNode(true);
+	inputs = copy.getElementsByTagName("input"); 
+	inputs[0].value = "";
+	inputs[0].name="image"+(parseInt(inputs[0].name.substring(5,
+		inputs[0].name.length))+1);
+	inputs[0].title = inputs[0].name;	
+	prev.parentNode.insertBefore(copy,tag);
+	return;
+}	
+// 
diff --git a/templates/basicset/reply.html b/templates/basicset/reply.html
index 50efcbe..d1ed9dd 100644
--- a/templates/basicset/reply.html
+++ b/templates/basicset/reply.html
@@ -33,7 +33,7 @@ cols=72></textarea></td></tr>
 selected>Без разметки</option>
 <option value="bbcode">BBCode</option>
 <option value="html">Html</option></select></td></tr>
-<tr><td>Картинка</td> <td><input onchange="addPictureInput(this);" type=file name="image1"></td></tr>
+<tr class="pictureinput"><td>Картинка</td> <td><input onchange="addPictureInput(this);" type=file name="image1"></td></tr>
 <tr><td colspan=2 align=right><input type=submit name="reply"
 value="Высказаться">
 </table>
diff --git a/templates/basicset/topic.html b/templates/basicset/topic.html
index 69f9f88..936ad67 100644
--- a/templates/basicset/topic.html
+++ b/templates/basicset/topic.html
@@ -75,7 +75,7 @@ cols=72></textarea></td></tr>
 selected>Без разметки</option>
 <option value="bbcode">BBCode</option>
 <option value="html">Html</option></select></td></tr>
-<tr><td>Картинка</td> <td><input onchange="addPictureInput(this);" type=file name="image1"></td></tr>
+<tr class="pictureinput"><td>Картинка</td> <td><input onchange="addPictureInput(this);" type=file name="image1"></td></tr>
 <tr><td colspan=2 align="right">
 <input type="button" value="Отмена" onclick="return hideForm('replyform');">
 <input type=submit name="reply" value="Высказаться"></td></tr>