]> wagner.pp.ru Git - oss/stilllife.git/commitdiff
Added form to dynamically add new file input while entering message
authorVictor Wagner <vitus@wagner.pp.ru>
Tue, 1 Apr 2008 10:10:31 +0000 (10:10 +0000)
committerVictor Wagner <vitus@wagner.pp.ru>
Tue, 1 Apr 2008 10:10:31 +0000 (10:10 +0000)
templates/basicset/TODO
templates/basicset/common.js
templates/basicset/reply.html
templates/basicset/topic.html

index a4500d7823de65a137acb7ec44edcd6bc3febd26..06741f5b120413f314981a597457f98342fe12a1 100644 (file)
@@ -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
index 7f54c75a8996c0ece62526d09cc89be475478908..30377b5b32f8ebe8c63d9a701ebae8d63792e409 100644 (file)
@@ -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;
+}      
+// 
index 50efcbe5e00e2157f5f8c999a759d6afef997d26..d1ed9dd9f1a138b7904e6cb40695688a5a0b41dc 100644 (file)
@@ -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>
index 69f9f8896e7d6351b431a33e87284107fc1c81d3..936ad679ca3b21e0ef1f79b8719d3867b6606180 100644 (file)
@@ -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>